Mac

GCM 中的 GMAC 如何不取消可搜尋可解密流的效用

  • July 4, 2022

我一直在研究用於流加密的 Galois/Counter Mode (GCM)。我理解它是一種流密碼的想法,因此可以通過與密鑰流進行異或運算來一次加密一位,以及這比 CBC 之類的更好,因為您可以從流中間的任何位置開始,而無需計算先前的塊. 但我不明白的是,為了讓它有用,你需要對 GMAC 進行身份驗證,據我所知,這只能通過從一開始就知道整個流來計算,因為 GMAC 的每個塊都是源自上一個。

誰能解釋 GMAC 的要求如何不抵消能夠從流中的任何位置開始解密消息的有用性?

首先,可以使用模冪來組合伽羅瓦乘法。這確實使得在加密和解密期間使用並行處理成為可能,即使模冪運算的成本會在一定程度上降低任何速度增益。

此外,如果您只是想解密密文,那麼您可以在不計算 MAC 值的情況下執行此操作,只需使用帶有仔細計算的初始計數器塊的計數器 (CTR) 模式即可。


但是,GCM 的價值在於它是一種身份驗證模式,您需要驗證身份驗證標籤才能獲得 AEAD 密碼所承諾的完整性/真實性。從這個意義上說,僅解密部分密文可能並不是那麼有用:無論如何,您都必須處理所有密文字節以進行 MAC 計算。

不過,如果您只需要一個特定的部分,那麼它可能是有意義的;您將需要更少的 AES 計算。您也可能需要更少的記憶體。如果您可以將明文放在與密文相同的緩衝區中,則不會出現較低的記憶體要求,儘管在使用就地解密時。


然而,所有這些論點確實圍繞著您的問題的主要問題:“誰能解釋 GMAC 的要求如何不抵消能夠從流中的任何位置開始解密消息的有用性?”。事實是,CTR 的這一特殊屬性在很大程度上被 GCM 或任何其他使用它的 AEAD 構造所抵消。

CTR 還有許多其他優點:只需要加密方向的 AES,不需要填充,易於預計算密鑰流,並行處理,不需要不可預測的 IV 以及在 GMAC 中對最終值執行內聯加密的能力.

實際上,許多更高級別的 API 只是為 GCM 等 AEAD 密碼提供一次性加密和解密方法,如果您使用這些方法,那麼從某個偏移量進行解密的能力肯定會失效。

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