Encryption

AES-CCM 如何充當 AEAD 流密碼?

  • November 18, 2021

AESCCM- 帶有密碼塊連結消息的電腦。

因為它使用 cmac 生成 tag ,它在內部是 aes-cbc (塊密碼,需要塊大小,可能需要填充)並且使用 AES-CTR 完成加密(可以用作流密碼)

AES-CCM 如何表現為AEAD 流密碼,因為它使用 aes-cbc ?

而在用於標籤生成的 AES-GCM 的情況下,使用 GMAC 並使用 CTR 進行加密,這與塊大小無關。所以這可以用作流密碼。

您正在尋找的屬性是流密碼的“線上”屬性。然而,CCM 是為預先知道數據大小的數據包加密而開發的。因此,CCM 對線上密碼缺乏嚴格的線上要求。但是,由於下面的密碼仍然使用計數器模式,因此加密本身仍然可以以線上方式分別對每個字節執行(在大多數實現中執行每位線上加密/解密是不可能的)。

通常,您需要在解密任何 AEAD 密碼之前驗證身份驗證標籤的正確性。即一般不使用底層計數器模式的線上屬性。儘管如此,您仍然可以先線上驗證和解密,然後使用兩次密文傳遞。

此外,如果身份驗證標籤被視為密文的一部分——就像大多數庫所做的那樣——那麼這些庫不太可能在解密期間公開底層計數器模式的線上屬性。在確定它們是反模式加密明文的一部分或身份驗證標籤的一部分之前,實現必須記憶體至少與身份驗證標籤中存在的一樣多的位。這意味著在解密期間,記憶體始終保持滿,直到到達流的末尾。

CCM使用的CBC-MAC(不是CMAC)需要逐塊處理數據我們通常不認為是問題。無論如何,任何 MAC 都需要保持狀態,並且可以在處理完所有數據後簡單地進行驗證。請注意,GCM 中的 GMAC 還對 128 位塊執行乘法運算。因此,線上屬性僅考慮用於 AEAD 模式的密碼部分。

結論:CCM 尚未被定義為提供線上加密/解密,即使使用 AEAD 密碼進行線上加密/解密也存在嚴重問題。使用 CBC-MAC 結構與潛在問題幾乎沒有關係。


我希望您正在尋找具有更好線上屬性和基於分組密碼的 MAC 的 AEAD 模式,然後查看 EAX。EAX 基本上是一種使用 CTR 模式和 CMAC 身份驗證的標準化方式。

有兩個主要缺點:

  1. 它僅被 NIST 接受為草案標準;
  2. 由於與 CBC-MAC 相比 CMAC 的額外計算,它增加了一個恆定的成本預設消息。

當然,當涉及到線上解密時,您仍然會遇到所有提到的 AEAD 密碼的一般缺點。


通常,將明文消息分成多個部分(邏輯上,或通過定義特定的塊大小)更有意義。請注意,您必須將各種標籤連結在一起以完成隨機訪問,同時能夠確認完整密文的完整性是 keps(否則對手可以刪除/移動/複製塊)。

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