Encryption

使用“恆定”初始化向量的加密被認為是有害的

  • May 9, 2012

我試圖得到上述陳述背後的全部理由。首先,在閱讀了此處和維基百科的文章後,我了解到僅使用一次 IV 是一種很好的做法。

對於流密碼,不這樣做會導致安全性受損,因為

Cipher1 xor Cipher2 = Plain1 xor Plain2

對於使用相同 IV 的分組密碼,將降級為 ECB 模式。

但是,是否存在像流密碼這樣的真正攻擊(或者流密碼推理是否也適用)?例如,如果我有兩個(短)消息,創建一個 IV,使用 AES 加密並保存三個值以供以後解密 - 什麼是具體攻擊?

虛構的“首選項庫”實現的具體範例。有一個像

<vault>
   <items>
       <item iv="" name="f2e342435" value="2034b324">
       </item>
               ...
   </items>
</vault>

其中 iv 是用於加密名稱和值屬性的初始化向量,與擁有兩個 iv(始終假設 AES)相比,這是否會增加任何漏洞。

對於分組密碼,這取決於您使用的操作模式——沒有人只使用普通分組密碼來處理任何事情,至少除非他們的所有消息都短於單個密碼塊(通常為 8 或 16 個字節)。

  • ECB 模式僅相當於將消息分成塊並通過密碼輸入每個塊,它不使用 IV。正如您正確指出的那樣,它也是不安全的:它會洩漏有關明文中重複塊的資訊。
  • OFBCTR模式將分組密碼轉換為同步流密碼。因此,它們與其他流密碼具有相同的安全問題:如果相同的密鑰+IV 組合用於兩條消息,則擷取兩者的對手可以利用它們的差異來消除密鑰流,只留下兩個明文的差異(即通常足以恢復它們兩者的至少一部分)。如果他們可以使用相同的 key+IV 擷取兩個以上的消息,那就更糟了。
  • CBCCFB模式對簡單的 IV 重用更具彈性。然而,與所有其他常見操作模式一樣,使用相同的密鑰 + IV 加密共享公共前綴(一個或多個塊)的兩條消息將揭示該前綴的存在和長度,因為密文將相同直到第一個明文差異發生的點。CFB 模式還洩露了兩個消息中第一個不相同的明文塊的差異。

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