Aes

以 AES-GCM 或 ChaChaPoly 等模式加密 IV 和 MAC 有什麼好處?

  • August 16, 2019

在 AEAD 操作模式下對稱加密 IV 和 MAC 會有什麼好處嗎?更具體地說,這會阻止某人利用相同的密鑰意外使用重複的 IV 嗎?通常對於大多數 AEAD 模式(和基於 XOR 的流密碼),相同的 IV + 相同的密鑰 + 不同的消息 = 錯誤。

範例:假設您有帶有 64 位 IV 和 64 位 MAC/身份驗證標籤的 AES-GCM。現在假設在使用 AES-GCM 加密後,您將 IV 和 MAC 放在一起,並在 ECB 模式(一個 128 位塊)下使用 AES(使用相同的密鑰或派生密鑰)加密,然後發送 AES(IV|MAC)發送 IV 和 MAC。然後在解密時 AES 解密該塊,然後像往常一樣執行 GCM 並進行解密和身份驗證檢查。

如果您使用不同的消息複製 IV,則 AES(IV|MAC) 結果將不同,並且由於 IV 和 MAC 在明文中不可見,因此攻擊者無法使用它們……對嗎?(顯然,如果消息和 IV 相同,則攻擊者可以看到同一消息有重複,但這無助於他們攻擊其他消息的身份驗證。)

除了花費一點額外的 CPU 之外,這是否有助於安全性?我錯過了什麼嗎?這感覺太簡單了,不夠新穎。

如果 a(nonce, key)與兩個不同的消息一起重用AB攻擊者可以學習A⊕B = E(A)⊕E(B)

因此,如果其中一個明文已知,則可以立即解密另一個明文。

這就是為什麼抗隨機數誤用方案需要兩次傳遞:第一次傳遞計算消息的雜湊,第二次使用 IV 執行實際加密,可能還有從該雜湊派生的子密鑰。

在 AEAD 操作模式下對稱加密 IV 和 MAC 會有什麼好處嗎?

並不真地。MAC 已作為 GCM 模式的一部分進行加密。加密 IV 只是隱藏它,解密消息仍然需要密鑰。

更具體地說,這會阻止某人利用相同的密鑰意外使用重複的 IV 嗎?

不,加密消息的人會複製 IV,攻擊者不一定需要知道要恢復什麼 IV,他們也不需要知道 MAC。可能還有更多工作,但他們不必攻擊整個消息,只需幾個字節即可查看是否有問題。

如果您使用不同的消息複製 IV,則 AES(IV|MAC) 結果將不同,並且由於 IV 和 MAC 在明文中不可見,因此攻擊者無法使用它們……對嗎?

正確.. 除非你做錯了,否則對攻擊者來說可能更容易,但再次由於攻擊者沒有密鑰,他們不太可能使用這些來進行明文恢復。MAC 偽造攻擊是不同的,MAC 上的額外加密層可能有助於阻止這些攻擊。

除了花費一點額外的 CPU 之外,這是否有助於安全性?

隱藏 IV 可能會增加安全性,但僅是隱藏消息的密鑰……這是預設完成的。

我錯過了什麼嗎?這感覺太簡單了,不夠新穎。

想像一下,如果攻擊者不知道任何消息的 IV 或 MAC,但他們確實知道您正在使用修改模式,特別是因為您重用 IV 的可能性更高,他們將如何攻擊密文。還有一些方案是 1 次通過,這些方案是抗隨機數重用的,有些方案比其他方案快。

您要解決的問題有兩種解決方案。

不要重複使用 nonce,有很多方法可以保證唯一性。

使用不同的模式,有很多選擇。

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