Files
SeedPass/memory-update.md
T

36 lines
1.8 KiB
Markdown

# Memory Update (2026-02-25)
## Security Item 2 Progress
- Raised PBKDF2 default policy for new profiles from `50_000` to `200_000` via `ConfigManager.DEFAULT_PBKDF2_ITERATIONS`.
- Added policy-floor enforcement in `PasswordManager._get_kdf_iterations()` so downgraded configured values are ignored during normal seed-key derivation.
- Kept unlock backward compatibility for legacy profiles by preserving fallback attempts for `50_000` and `100_000` iterations.
## KDF Metadata Consistency
- Added `PasswordManager._build_seed_kdf_config(...)` and wired all seed re-encryption callsites to persist explicit KDF metadata (`pbkdf2` or `argon2id`) matching active derivation policy.
## Plaintext Export Safeguard
- Hardened `handle_export_database` interactive flow: plaintext export now requires explicit warning + second confirmation.
- Added audit metadata for backup exports (`encryption_mode` field).
## Nonce Lifecycle Decision
- Removed CRC32 nonce tracking from `EncryptionManager.encrypt_data`.
- Policy now relies on fresh random 96-bit AES-GCM nonces per encryption call to avoid CRC false positives and in-memory collision bookkeeping.
## Added/Updated Tests
- Expanded `src/tests/test_kdf_modes.py` with negatives for:
- wrong Argon2 params on unlock,
- tampered KDF wrapper payload,
- downgraded KDF policy attempt (floor enforcement).
- Added `src/tests/test_export_plaintext_policy.py` for double-confirm plaintext export guard.
- Updated expectations in `test_config_manager.py` and `test_kdf_strength_slider.py` for new PBKDF2 baseline.
## Validation
- Ran targeted suite:
- `src/tests/test_kdf_modes.py`
- `src/tests/test_export_plaintext_policy.py`
- `src/tests/test_config_manager.py`
- `src/tests/test_kdf_strength_slider.py`
- `src/tests/test_noninteractive_init_unlock.py`
- `src/tests/test_password_unlock_after_change.py`
- Result: `28 passed`.