Encryption

AES-GCM 長度擴展攻擊是否可以使用經過身份驗證的解密?

  • December 29, 2014

我希望使用帶有完整 16 字節 GCM 標籤的 AES-GCM 加密一段數據,並使用 UDP 通過網路發送。假設使用 AES-GCM 的 AEAD 特性執行經過身份驗證的解密將防止具有隱式長度的密文長度擴展攻擊,是否安全?

簡而言之,我想通過查看 UDP 數據包大小並刪除我的應用程序特定標頭來確定密文的長度。這避免了對明確密文長度的需要。顯式長度會增加每個數據包的成本,並且每個字節在網路上都很重要。

我可以推導出長度還是必須明確指定它?

https://eprint.iacr.org/2013/144.pdf的第 5.3 節(第 44 頁)表明,雖然 GCM 標籤包括長度,但它仍然容易受到至少一個弱點的影響。但是讀到這裡,我並沒有留下這樣的印象,即在 AD 中添加明確的長度會有所作為。

(注:最初在security.stackexchange.com 上問過這個問題,意識到這是錯誤的網站,所以在這裡重新發布)

我做了更多的研究,是的,它確實包括 AD 長度和密文長度,因此不易受到長度擴展攻擊,因為長度是 GCM GHASH 的一部分。

基於NIST SP-800-38D (PDF) 第 18 頁,len(A) 和 len(C) 都是 GHASH 函式輸入的一部分。

並在實現 gcm_finish 方法中對此進行了仔細檢查:兩個長度都在最後添加到雜湊中。 https://github.com/polarssl/polarssl/blob/master/library/gcm.c

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