Authenticated-Encryption

認證加密模式和AEAD

  • October 21, 2019

我正在研究使用關聯數據 (AEAD) 進行身份驗證的加密。

我的問題是

  1. 關於 AE - 我聽說在 Encrypt-then-MAC 方面,如果攻擊者偽造密文,那麼他會得到錯誤的 MAC 值,並且無法將密文解密為明文。這個對嗎?如果是這樣,Encrypt-and-MAC 和 MAC-then-Encrypt 發生了什麼?是不是有像 Encrypt-then-MAC 這樣的過濾器來過濾掉無效的密文?
  2. 關於AE和AEAD歷史的問題。我想知道AE的局限性是什麼導致了AEAD的出現。在一些論文中,AE 的局限性在於它不能通過將關聯數據綁定到密文來有效地進行身份驗證。如果是這樣,我想問以下問題:“我必須將關聯數據綁定到密文嗎?”
  3. 關於 AEAD。加密過程的輸入是密鑰、隨機數、純文字和相關數據,並經過某種算法返回一個密文和一個標籤進行認證。解密過程的輸入是密鑰、隨機數、密文、關聯數據、標籤、明文,如果認證成功,則返回錯誤。然而,對於攻擊者來說,在解密過程中密鑰是未知的。此外,我認為攻擊者甚至不知道 nonce。在我看來,攻擊者在解密過程中唯一知道的資訊是密文、相關數據和標籤。那麼,攻擊者是否在不知道密鑰和隨機數的情況下進行攻擊?那麼AEAD是否被稱為強密碼算法?

我聽說在 Encrypt-then-MAC 方面,如果攻擊者偽造密文,那麼他會得到錯誤的 MAC 值,無法將密文解密為明文。

事實上,偽造的密文會立即暗示使用的 MAC 是偽造的,因此如果 MAC 是安全的,則係統是不可偽造的。

如果是這樣,Encrypt-and-MAC 和 MAC-then-Encrypt 發生了什麼?

如果處理得當,它們也都可以實現經過身份驗證的加密(也就是說,如果實現了“整潔”並且您明確地對待隨機數)。然而,在其他情況下,這些結構的 AE 安全性有一個簡單的反例:即選擇一個 CPA 安全加密方案並附加一個未經檢查的隨機位。現在對於攻擊,只需翻轉該位,您就會得到一個“不同”的密文,解密預言機將很樂意解密。

我必須將關聯數據綁定到密文嗎?

不,您不必關聯數據綁定到密文。但是,如果存在需要公開發送的上下文(例如路由資訊)或雙方都知道並且對協議狀態很重要(例如目前數據包索引),則使用關聯數據是一種簡潔的機制來傳達目前狀態的正確性。

那麼,攻擊者是否在不知道密鑰和隨機數的情況下進行攻擊?

不,通常假設對手可以看到並更改隨機數,如果他們願意(這就是為什麼它也必須是 MAC 的)。同樣在常見的安全定義中,攻擊者可以訪問預加密/解密功能,因此儘管不是直接的,但他們可以“訪問密鑰”。

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