Summary
A tranche of security-posture hardening items (documented tradeoffs, not exploitable 0-days — AES-GCM remains the real boundary):
Notes
Tenant mismatch and empty cache_key correctly fail closed; nonce design and HKDF are sound (verified). Related: #128 (auto-encryption convergence — a present master key turns all caching encrypted).
Fix
Add a distinct tamper/integrity metric + fail-closed option; harden the fingerprint-mismatch path; clarify the integrity-vs-tamper docs.
Summary
A tranche of security-posture hardening items (documented tradeoffs, not exploitable 0-days — AES-GCM remains the real boundary):
decorators/wrapper.py:1037-1048,encryption_wrapper.py:338encryption_wrapper.py:309-316!=on a non-cryptographic xxHash3; document explicitly that this is corruption detection, not tamper-resistance, and that the plaintext@cachepath stores attacker-forgeable bytes.cachekit-core/src/byte_storage.rs:134-139metadata.encryptedand falls back tosettings.master_key, decrypting or failing-open silently.cache_handler.py:680-691,497-498,encryption_wrapper.py:124-139Notes
Tenant mismatch and empty cache_key correctly fail closed; nonce design and HKDF are sound (verified). Related: #128 (auto-encryption convergence — a present master key turns all caching encrypted).
Fix
Add a distinct tamper/integrity metric + fail-closed option; harden the fingerprint-mismatch path; clarify the integrity-vs-tamper docs.