Replay-Attack

AES-GCM 加密和重放攻擊

  • November 6, 2018

我對 AES-GCM 如何避免重放攻擊有疑問。我們有 2 個使用者(Alice 和 Bob)。之後,實體協商加密參數並生成對稱密鑰,它們將交換加密消息。

可能的加密算法有兩種:AES-128-GCM 和 AES-128-CBC。通過使用 AES-128-GCM,Alice 和 Bob 選擇以下參數:

  • $ IV=nonce $ 在哪裡 $ nonce $ 是一個偽隨機數
  • $ AAD=“static-data” $
  • $ K $ , 128 位密鑰
  • $ D $ , 明文

現在我們假設為了避免重放攻擊,我想使用時間戳 $ t $ . Alice發送密文是否正確 $ CT=E_K(IV,AAD,D) $ 給 Bob 一個時間戳 $ t $ 喜歡 $ CT||t $ 或加密密文中的時間戳(在這種情況下為明文 $ D $ 變成 $ D||t $ ) 為了避免重放攻擊?

Alice發送密文是否正確 $ CT=E_K(IV,AAD,D) $ 給 Bob 一個時間戳 $ t $ 喜歡 $ CT||t $

那是行不通的;在這裡,GCM 不保護 $ t $ ; 攻擊者可以輕鬆地將其更改為他想要的任何內容,而 GCM 永遠不會注意到。

現在,您可以擴展 AAD 以包含該值 $ t $ ; ,也就是說,我們有 $ CT=E_K(IV,AAD || t,D) $ . 有了這種變化,這是安全的。這是加密綁定值 $ t $ 對於密文(GCM 標籤),如果攻擊者修改它,那麼標籤將不會生效。

或加密密文中的時間戳(在這種情況下為明文 $ D $ 變成 $ D||t $ )

這也有效;在這種情況下, $ t $ 以密碼方式綁定到密文,因此無法修改。

兩者的主要區別在於時間戳是否明文。

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