Encryption

IV 安全說明

  • June 6, 2013

在閱讀了 SO 和其他與 AES 加密相關的網站後,我試圖了解圍繞 IV 的安全問題。

圍繞這個主題似乎有很多混亂和矛盾。

許多人說發布 IV 是安全的,因為它不是秘密,而其他人則說它應該保持安全和秘密,因為這轉化為使用 CBC 的 AES 加密引擎的起點。沒有IV,密碼塊的解密會損壞,所以預設情況下不應該通過保密來增加安全性嗎?

最後,有人可以幫我理解官方對 IV 的看法,所以我不會發布我的加密軟體,其中有一個巨大的漏洞。

在我看來,如果 IV 是 AES 引擎的初始化程序,那麼如果密碼分析員知道這一點,它肯定會給他一個攻擊密文的起點嗎?同樣,如果 IV 被保密,密文將更難被攻擊,因為使用 IV 對給定字元串(或文件)的每次加密都會產生完全不同的密碼塊,並且不知道“起點” .

將(初始)IV 保密只會增加密文第一個塊的安全性。根據定義,第二個塊的 IV 是第一個密文塊,依此類推。因此,如果我們有密鑰但沒有初始 IV,我們可以解密第一個塊之外的整個密文。所以它並沒有增加太多的安全性,但它確實增加了“管理”,因為您確實需要將初始 IV 傳達給您希望能夠解密的任何一方。

所以通常情況下,IV 只是附加在密文之前,而不是保密。只要 IV 對於我們使用該密鑰加密的每條消息或文件都是隨機且不可預測的,這沒有問題。這種模式下的 CBC 有一個標準的安全證明(當然,僅用於隱私,因為我們沒有完整性檢查)。

另一種選擇是使用散列或其他偽隨機函式,使用依賴於密鑰材料(接收者無論如何都應該知道能夠解密)的隱式 IV。這是在某些標準中完成的。這節省了 16(如果這是塊大小)字節擴展,用於顯式添加它。它增加了一些複雜性,並且對於文件加密之類的事情,如今擴展並不是一個真正的問題。我會避免它。

引用自:https://crypto.stackexchange.com/questions/8592