Encryption

CBC和GCM模式有什麼區別?

  • July 25, 2021

我正在嘗試更多地了解 GCM 模式以及它與 CBC 的不同之處。我已經知道 GCM 提供了一個 MAC,用於消息認證。從我讀過的內容和我看到的程式碼片段來看,GCM 做了一個異或很像 CBC,但我不確定異或反對什麼。

在 CBC 模式下,異或是與前一個密文塊的明文,但第一個塊除外,它使用隨機 IV。GCM 是做同樣的事情,還是做排斥或反對其他事情?如果是這樣,有人可以簡要解釋GCM如何使用IV以及異或是如何完成的。

GCM 和 CBC 模式在內部的工作方式完全不同;它們都涉及分組密碼和異或,但它們以不同的方式使用它們。

在 CBC 模式下,您通過獲取目前明文塊並與前一個密文塊(或 IV)異或,然後通過塊密碼發送結果來加密數據塊;分組密碼的輸出是密文分組。

GCM 模式提供隱私(加密)和完整性。為了提供加密,GCM 維護了一個計數器;對於每個數據塊,它通過分組密碼發送計數器的目前值。然後,它將分組密碼的輸出與明文異或形成密文。

請注意兩個關鍵區別:

  • 什麼是異或;在 CBC 模式下,明文與攻擊者知道的數據(IV 或先前的密文塊)進行異或運算;因此,這本身並沒有提供任何內在的安全性(相反,我們這樣做是為了最大限度地減少我們通過塊密碼發送相同塊兩次的機會)。在 GCM 模式下,明文與分組密碼的輸出進行異或運算;攻擊者無法猜測該輸出是安全模型固有的(除非他已經知道明文和密文)。
  • 通過分組密碼發送的內容;在 CBC 模式下,明文通過分組密碼發送(在使用異或“隨機化”之後);在 GCM 模式下,通過分組密碼發送的內容實際上並不取決於被加密的數據,而僅取決於內部狀態。

至於 GCM 如何使用 IV(我個人認為“nonce”是 GCM 使用的更好術語,因為這強調了使用 GCM,您不能對同一個鍵使用相同的 nonce 兩次),嗯,它用於初始化計數器。

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