Gcm

GCM 中的身份驗證是否與 CRC32 具有相同的目的?

  • May 7, 2020

認證的目的是確保數據的完整性。讓我們只關注 GCM 的認證部分,它使用伽羅瓦域乘法來創建認證標籤。最終,該標籤將在接收方進行驗證。

假設今天我已經在我的系統中使用了一個 CRC32 方案。我可以知道他們是否為類似目的服務。我確實讀過一些文章說,黑客能夠改變數據,最終仍然可以產生相同的 CRC 計算值。

這是否意味著伽羅瓦域乘法在這方面做得更好?

我確實讀過一些文章說,黑客能夠改變數據,最終仍然可以產生相同的 CRC 計算值。

顯然,是的。CRC32 函式是完全公開的,沒有秘密輸入。因此,攻擊者可以計算他想要的任何修改數據的 CRC32,插入標籤,然後它就會驗證。相反,GCM 確實有一個秘密輸入(我們需要假設攻擊者不知道)。因此,攻擊者不能以同樣的方式在他修改的數據上評估 GCM。

實際上,真正的答案更深一些(並且使對比更加強烈);CRC32 具有許多對稱的內部屬性,可以輕鬆計算修改數據的標籤(即使攻擊者沒有看到所有數據)。此外,在 GCM 中,如果我們假設攻擊者不知道密鑰,也無法破解 AES(並且我們從不重複隨機數),那麼可以證明他通過任何修改成功的機率很小。

我可以知道他們是否為類似目的服務。

相似的?好吧,如果您想以相當不錯的機率檢測意外(不是由智能對手生成的)修改,那麼 CRC32 是一個很好的功能。事實上,如果大多數意外修改是突發錯誤(即錯誤僅限於幾個連續的位,而消息的其餘部分未修改),那麼實際上更好 - CRC32會檢測包含的所有錯誤在 32 個連續位的序列中。然而,一旦你開始談論對抗聰明對手的力量,那就完全不同了。

這是否意味著伽羅瓦域乘法在這方面做得更好?

本質上,這與乘法無關。實際上,您可以修改 CRC 以使其具有與 GCM 相似的完整性屬性(您需要擴展 CRC,使回饋多項式保密,並加入每個消息的秘密異或遮罩)。相反,它既是密鑰,又是結構(這使得如果攻擊者對現有消息進行修改,對標籤所做的更改是不可預測的)。

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