Aes
AES 密鑰包裝算法的輸入是什麼?
我無法理解 AES 密鑰包裝算法的輸入,因為它在RFC3394的第 2.2.1 節中有說明。
語境:
- 我有一個帶有 CTR 的 AES-128 數據加密密鑰 (DEK),用於加密移動設備上的數據庫文件。DEK 是特定於設備的,並且在應用密鑰翻轉時具有有限的使用壽命(1 年)。當經過身份驗證的使用者提供一些隨機值時(只要安裝了移動應用程序就保持不變),DEK 是在伺服器上生成的鹽值和秘密值的幫助下生成的。
- 我有一個密鑰加密密鑰(KEK,AES-128),它源自使用者的密碼,用於加密 DEK(加密的 DEK 以明文形式儲存)。
- DEK 和 KEK 永遠不會離開設備。
上面的方案幫助我保持 DEK 不變,以防使用者更改她的密碼並允許使用者在離線模式下使用應用程序(正確的密碼重新創建 KEK,它解密 DEK,接下來允許使用數據庫)。
我的問題是我應該如何應用 AES 密鑰包裝?RFC 規定:
密鑰包裝過程的輸入是 KEK 和要包裝的明文。明文由 n 個 64 位塊組成,包含被包裝的密鑰數據。
這裡的明文和KEK是什麼?我的 DEK 是明文,我的 KEK 是 KEK?或者它應該是密碼(明文)和我的 DEK 作為 KEK?我很困惑,希望在這裡得到任何指導。謝謝!
DEK 確實是“明文”,而在您的情況下源自使用者密碼的 KEK 是 KEK。
密碼不是密鑰,不應直接用作密鑰;您應該使用基於密碼的密鑰派生函式(例如 PBKDF2)從密碼片語中派生密鑰。