Mac
MAC-then-encrypt 與流密碼是否安全?
在考慮最近這個關於雜湊然後加密設計的問題時,我重新閱讀了 MAC-encrypt 與 encrypt-MAC 問題,並註意到這個答案引用了一篇論文,表明 MAC-then-encrypt 使用流密碼是安全的,即使不是一般的.
但是,當 MAC 是確定性的並且密碼是流密碼(或 CTR 或 OFB 模式中的分組密碼,甚至是 OTP)時,就會出現這種攻擊:
- 假設攻擊者知道兩個不同的等長消息的經過身份驗證的明文: $ m_1||MAC(m_1) $ 和 $ m_2||MAC(m_2) $ .
- 攻擊者截獲第三條等長消息的密文: $ E_k(m_3) = S_k(n) \oplus (m_3||MAC(m_3)) $ , 在哪裡 $ S_k(n) $ 是來自 nonce 的唯一密鑰流 $ n $ .
- 攻擊者現在可以將飛行中的消息修改為 $ S_k(n) \oplus (m_1||MAC(m_1)) \oplus (m_2||MAC(m_2)) \oplus (m_3||MAC(m_3)) $ .
- 很有可能,這只是一個有效的消息,當 $ m_3 $ 匹配任一 $ m_1 $ 或者 $ m_2 $ ,攻擊者可以從接收者是否請求新消息(假設損壞)或接受它來學習。如果它是這兩個消息之一,它會變成另一個。
這似乎都為攻擊者提供了有關原始消息的資訊 $ m_3 $ 並允許他們偽造通信。
攻擊是否有問題(例如我是否假設太多)或者這只是比該答案中的論文(pdf)考慮的更小?
正如評論中正確指出的那樣,經過身份驗證的加密模型假設
- 攻擊者知道算法;
- 攻擊者可以使用任何明文查詢加密預言機 $ P $ (和一個獨特的隨機數 $ N $ ) 並獲得 MAC-then-Encrypt 密文 $ C $ ;
- 攻擊者可以使用任意字元串查詢解密預言機 $ C $ 偽裝成密文。
攻擊者沒有其他數據可用。您做出的僅 MAC 可用的假設太強了。