可以使用 RFC 5649 用相同的 KEK 包裝多個密鑰嗎?
當使用相同的 KEK 儲存多個密鑰時,我無法說服自己RFC5649是安全的。我的觀點是:RFC5649 使用 AES-ECB,因此該方法的通常弱點適用,即觀察者可以推斷出包裝密鑰部分之間的相等性。
但是,包裝內容的大小使其不太可能發生衝突(AIV 除外,但我不認為這可能是一個問題),因為有效負載將是 256 位隨機數據。
因此,我的問題是,用同一個 KEK 包裝多個密鑰是否安全?如果答案是否定的,那麼 RFC5649 的意義何在?有哪些替代方案可用?
(我相信同樣的疑問也適用於RFC 3394)
是的,如果這樣做,使用相同的密鑰加密密鑰 (KEK) 包裝多個密鑰是安全的
- 作為聚合在一起的密鑰的單個包裝,
- 或者作為多個包裝,每個密鑰與不同的密鑰標識符 (KIF) 聚合。
否則,可以判斷兩個單獨包裝的鍵是否具有相同的值(至少在使用固定初始值時)。
RFC 3394旨在(強調我的)
使用任何相關的完整性資訊和數據安全地加密明文密鑰,以便組合可能比 AES 塊大小(128 位)的寬度更長。每個密文位應該是每個明文位的高度非線性函式,並且(在展開時)每個明文位應該是每個密文位的高度非線性函式。
RFC 5649是一個擴展,旨在
消除了要包裝的密鑰長度為 64 位的倍數的要求,允許包裝任何實際長度的密鑰。
與問題的陳述相反,RFC 都沒有在電子密碼本模式(ECB) 中使用 AES。那將不符合所強調的目標。他們使用 AES作為電子密碼本,或者說作為分組密碼,對密鑰進行多次傳遞(唯一的例外是 RFC 5649 中的八位字節密鑰)。
RFC 3394(因此它的擴展)明確允許
將其他數據包含在密鑰中,將多個密鑰包裝在一起,或者包裝不是嚴格意義上的密鑰的數據。
使用唯一的 KIF 聚合多個密鑰中的每一個使它們不同,即使它們共享相同的值,並且由於強調的目標,使用相同的 KEK 將它們分開包裝變得安全。
另外:如其他答案中所述,我們不知道滿足所述目標的正式證據;這只是推測,沒有反駁。
另外:雖然我不建議這樣做,但似乎使用 KIF 作為 RFC 5649 的替代初始值 (AIV) 可以做到並允許在沒有 KIF 的情況下升級現有系統,而不會破壞與傳輸固定大小包裝密鑰的層的兼容性。