部署的 MAC 是否為 IND-CPA?
在實踐中使用了許多消息驗證碼(MAC)。它們在實踐中被高度使用(例如在 TLS 中),但(至少)有一個應用程序不能使用它們:全盤加密 (FDE)。
現在大多數 FDE 應用程序都不需要身份驗證。例如,TrueCrypt 沒有用於驗證批量數據的驗證機制。但是,它使用 CRC-32 (!) 來確保標頭中數據加密密鑰的完整性。這提供的優點是密文可能與隨機完全無法區分。
現在我想創建一個具有相同屬性的數據容器格式(完整的文件是隨機的),但想要對數據加密密鑰執行強身份驗證。這意味著我需要使用經過身份驗證的加密(AE)。
大多數 AE 方案都會在密文中附加一個標籤,為了確保整個文件的偽隨機性,這個標籤也必須是隨機的。理想的概念是 IND-CPA。
所以我的問題是:
在選擇的明文(或竊聽者?)攻擊下,常見 MAC/AE 模式的輸出標籤是否與隨機數據無法區分?
什麼被認為是常見的 MAC/AE 模式:
- GCM
- EAX
- 化學武器公約
- HMAC
- CMAC/CCM
您可能正在尋找的屬性是 MAC 是否為 PRF。
對於 HMAC,它取決於所使用的散列函式的偽隨機性。如果散列是 PRF,那麼 HMAC 也是如此。但是,這對於 HMAC 的 MAC 安全性來說不是必需的,因此即使使用安全的 HMAC 也不一定如此。請參閱NMAC 和 HMAC 的新證明:沒有防碰撞的安全性。
在 EAX 和 CMAC 中,MAC 是分組密碼的特定(唯一)輸出,只要分組密碼是 PRP 並且輸出不會被看到太多次以區分 PRP 和 PRF,就無法與隨機區分.
類似地,GCM 輸出一個獨特的分組密碼輸出與 GHASH 的異或,只要分組密碼是,PRF 也是如此。(您還必須假設 GHASH 輸出獨立於分組密碼輸出。)
CWC 有一個 Carter-Wegman MAC,只要分組密碼存在,它就無法區分,因為它輸出兩個獨立分組密碼輸出的 XOR。