Hmac

如何在 GCM 中生成 Auth Data 和 tag?MAC 附加的 CTR 模式加密文本是否比 GCM 弱?

  • October 22, 2021

https://en.wikipedia.org/wiki/Galois/Counter_Mode中,有一個圖表告訴我們 GCM 通常是如何工作的。

我看過關於 ECB、CBC 和 CTR 模式如何工作的電腦發燒友影片,並且能夠自行實現它們,因為分組密碼 (SM4) 在像 BouncyCastle 這樣的庫中得到了正確實現。

我對圖表有幾個問題,身份驗證數據來自哪裡?如果沒有身份驗證數據,我實際上可以使用 HMAC-SHA 方法生成一個並一路異或嗎?

如果我使用計數器模式加密消息,鑑於計數器模式加密消息前面附加了 MAC,安全性會比 GCM 弱嗎?

身份驗證數據來自哪裡?

圖中標註的“Auth Data”是附加的經過身份驗證的數據,通常稱為“關聯數據”或“附加數據”,縮寫為 AAD 或 AD。它是 GCM 計算的輸入。你不生成它。GCM 始終採用 AD 輸入。可以是空的,空AD在計算或者安全方面沒有什麼特別的。

如何在 GCM 中生成 Auth Data 和 tag?

要生成 GCM 標記,請按照 GCM 規范進行計算。

如果我使用計數器模式加密消息,安全性會比 GCM 弱嗎

如果您在計數器模式下加密消息,則不會對其進行身份驗證。所以安全性與 GCM 完全不同。GCM 已通過身份驗證加密:既保證消息的機密性,又保證消息的真實性。成功解密 CTR 加密的消息沒有任何意義:如果消息是假的或損壞的,您只會得到損壞的數據。成功解密受 GCM 保護的消息可確保您收到由密鑰持有者生成的消息。注意我是如何寫“GCM-protected”而不僅僅是“GCM-encrypted”的;圍繞 AEAD 的術語有時會產生誤導。“GCM-encrypted”是正確的,但具有誤導性,因為 GCM 不僅僅是加密。使用 GCM(或任何其他 AEAD 算法)“加密”消息也可以對其進行身份驗證,“解密”消息也可以驗證其真實性。但是,動詞“加密”和“解密”是標準術語,因此請繼續使用它們,但請注意它們並不能說明全部情況。

MAC 附加的 CTR 模式加密文本是否比 GCM 弱?

如果操作正確,附加到 CTR 密文的 MAC,或明文加 MAC 的 CTR 加密,是有效的 AEAD 結構。事實上,這就是標準 AEAD 構造的工作量,包括 GCM。但是,有很多機會做錯了,例如加密密鑰和 MAC 密鑰之間的不良互動(破壞了OCB2)、錯誤的 nonce/IV 選擇等(另一個潛在的錯誤是使用 CBC 而不是 CTR,這為填充預言機攻擊提供了機會。)例如,“使用 HMAC-SHA 方法”是生成 MAC 的好方法,但“沿途異或”可能意味著很多事情,其中​​大部分都是不安全的。

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