Hash
將文件的雜湊用作 IV 是否安全?
我在 CBC 模式下使用 AES 加密一些文件。
我還使用文件摘要 (SHA-1) 來檢查數據是否正確解密(因此我需要將其與文件一起儲存)。
將此摘要用作AES的IV並將其儲存在文件頭中是否安全?或者它有安全問題?
通過將文件的雜湊用作 IV,您還可以洩露文件的雜湊。這允許攻擊者對文件內容進行詳盡的搜尋。不難想像只有幾百萬或幾十億個可能的文件內容的情況(例如文件內容是加密的 SAN 或密碼),在這種情況下顯示數據散列是無法容忍的洩漏。
您可以用作 IV 的是 HMAC 對文件的結果,使用與加密相同的密鑰作為密鑰(或者,最好使用合適的 PRF 派生 HMAC 密鑰和加密密鑰)。結果可能很難以任何方式證明是安全的,所以不要在生產中這樣做;但這似乎是實現無上下文確定性加密的一種有前途的方法。
“上下文無關”的意思是“沒有任何記憶”。一些加密模式需要隨機的、不可預測的 IV,而另一些只需要隨機數(例如計數器);您可以通過使用分組密碼加密隨機數從後者獲得前者,為此使用特定的密鑰。計數器仍然需要一點記憶體,根據具體情況,這些記憶體可能不容易獲得,也可能不容易獲得。一些嵌入式系統將難以更新儲存的計數器(永久儲存更新會消耗一點電流,這是無源 RFID 系統上的稀缺資源)。由於嵌入式系統很少擁有可靠的隨機源,它們需要確定性加密。因此,上下文無關的確定性加密是一個重要的利基功能。使用 HMAC 計算 IV 進行加密可能是實現這一目標的一種方法(在獲得需要開始加密它的 IV 之前,需要對整個文件進行第一次傳遞的重要缺點)。