Replay-Attack
AES-GCM 加密和重放攻擊
我對 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 $ 以密碼方式綁定到密文,因此無法修改。
兩者的主要區別在於時間戳是否明文。