mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2026-10-30 17:32:04 +00:00
36 lines
1.8 KiB
Markdown
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`.
|