Aes

CBC-MAC:驗證固定長度的密文是否安全?

  • February 11, 2015

假設我有一個固定長度的任意密文。

要驗證這樣的密文:

  • 我生成一個隨機的 AES 密鑰 $ K_{auth} $ .
  • 然後我計算密文的CBC-MAC標籤 $ K_{auth} $ .
  • 最後,我將密文和相關的標籤儲存在我的數據庫中。

對於解密過程:

  • 我從我的數據庫中獲取密文和相關標籤。
  • 然後我檢查密文長度,如果它符合預期,計算標籤 $ K_{auth} $ .
  • 最後,如果標籤匹配,我會處理密文。

在我的情況下,數據庫應該被認為是不可信的,因為對手可能會同時編輯密文和標籤。但是,由於密鑰仍然是私有的,這種 Encrypt-then-Mac 方法是否安全(即使標籤本身沒有加密)?

是的,如果您的加密算法是合理安全的。

給定固定長度的消息(在您的情況下為密文),CBC-MAC 是一種安全的 MAC 方案,這意味著攻擊者在不知道密鑰的情況下,無法以不可忽略的機率生成有效的消息標籤對。此外,根據本文,Encrypt-then-MAC 是最好的程序,而 MAC-then-Encrypt 和 MAC-and-Encrypt 容易受到選擇密文攻擊,後者甚至可能削弱加密方案本身的安全性。因此,您系統的安全性完全取決於您使用的加密算法。它產生的密文在選擇明文攻擊(IND-CPA)下應該是無法區分的。換句話說,向預言機發送兩條消息並獲得一個密文作為回報的攻擊者將不知道兩條消息中的哪一條被加密。

假定每次加密消息時隨機選擇初始化向量的 CBC 模式中的 AES具有此屬性。

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