Integrity

CRC-then-XTS 作為經過身份驗證的加密有多令人放心?

  • October 24, 2019

眾所周知,“xz”壓縮格式會在壓縮文件中嵌入校驗和,以在解壓縮或獨立測試期間驗證完整性。校驗和的算法可以是CRC32、CRC64、SHA256之一,預設為CRC64。

現在,我們將“xz”文件放入 XTS 加密的磁碟映像中。XTS 模式是一種純機密模式,完全沒有真實性或完整性特徵。但其中的“xz”文件具有完整性功能。所以問題是:

當將“xz”的 CRC64 完整性與 XTS 操作模式的機密性相結合時,我們是否獲得了安全的確定性認證加密(DAE,又名密鑰包裝)方案?

**不,這不會產生確定性的經過身份驗證的密碼,**除非您使用秘密CRC 作為 MAC

你怎麼打破它?首先,找到一對消息 $ m = m_1 \mathbin| m_2 $ 和 $ m’ = m’_1 \mathbin| m’_2 $ 以便 $ m_i \ne m’_i $ 和 $ \operatorname{CRC}(m) = \operatorname{CRC}(m’) $ . (在 CRC 中查找衝突並不難。)然後:

  1. 查詢預言機 $ m_1 \mathbin| m_2 $ 找到密文 $ c_1 \mathbin| c_2 \mathbin| c_3 $ ; 假設 CRC 在塊的明文中 $ c_3 $ .
  2. 查詢預言機 $ m’_1 \mathbin| m_2 $ 找到密文 $ c’1 \mathbin| c_2 \mathbin| c{\mathit{garbage}} $ .
  3. 查詢預言機 $ m_1 \mathbin| m’_2 $ 找到密文 $ c_1 \mathbin| c’2 \mathbin| c{\mathit{garbage}} $ .

最後,產量 $ c’_1 \mathbin| c’_2 \mathbin| c_3 $ 作為偽造品,為了消息 $ m’_1 \mathbin| m’_2 $ 之前沒有發送到預言機。

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