Encryption
使用“恆定”初始化向量的加密被認為是有害的
我試圖得到上述陳述背後的全部理由。首先,在閱讀了此處和維基百科的文章後,我了解到僅使用一次 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。正如您正確指出的那樣,它也是不安全的:它會洩漏有關明文中重複塊的資訊。
- OFB和CTR模式將分組密碼轉換為同步流密碼。因此,它們與其他流密碼具有相同的安全問題:如果相同的密鑰+IV 組合用於兩條消息,則擷取兩者的對手可以利用它們的差異來消除密鑰流,只留下兩個明文的差異(即通常足以恢復它們兩者的至少一部分)。如果他們可以使用相同的 key+IV 擷取兩個以上的消息,那就更糟了。
- CBC和CFB模式對簡單的 IV 重用更具彈性。然而,與所有其他常見操作模式一樣,使用相同的密鑰 + IV 加密共享公共前綴(一個或多個塊)的兩條消息將揭示該前綴的存在和長度,因為密文將相同直到第一個明文差異發生的點。CFB 模式還洩露了兩個消息中第一個不相同的明文塊的差異。