Aes
Encrypt-then-MAC:完全隨機密鑰或從主密鑰派生的密鑰?
我有這種情況,我使用 Encrypt-then-MAC(AES256-CBC 和 HMAC-SHA256)和由 CSPRNG(特別是 Java 中的 SecureRandom)生成的密鑰。我想知道哪個更好:
- 使用 CSPRNG 生成兩個不同的密鑰,每個密鑰為 32 字節
或者
- 使用 CSPRNG 生成 32 字節的主密鑰,然後使用 HKDF 導出加密和認證密鑰
我想補充一點,不涉及人工互動:這些密鑰儲存在數據庫中,僅供機器使用。
非常感謝你!
如果您關心數據庫大小,使用 HKDF 時只需要儲存主密鑰。將其發送到另一台電腦時同上。否則,兩個獨立的隨機密鑰顯然是安全的並且更易於實現,因此您應該這樣做。
如果您確定 SecureRandom 是受信任的、經過驗證的 CSPRNG,您可以在沒有 HKDF 的情況下使用它而不會出現問題。