Mac

當消息長度固定時,CBC-MAC 如何保證安全?

  • November 14, 2014

我正在做一些關於摘要、簽名和 hmacs 的自發知識收集,我發現你可以使用 CBC 作為 MAC,但如果消息大小不固定;那麼它是不安全的。

通俗地說,為什麼會這樣?假設 Johnnyboy 向伊麗莎白女王發送了一條消息,因此a是 MAC,m是消息(m由三個塊組成)。如果對手看到傳輸,數據看起來像 $ (a,m) $ 在這種特殊情況下。

攻擊者不知道 CBC-MAC 算法中使用的密鑰(仍然未知),但已知標籤是 $ a $ , 資訊 $ m $ 和塊數。

攻擊者如何生成另一個有效的 MAC 值 $ a’ $ 為了 $ m’ $ 如果 $ m’=m_1||m_2||m_3||m_1 \oplus a||m_2||m_3 $ 不知道 $ K $ ? 固定長度如何解決這個問題?

據我了解,您需要做的就是採取 $ m_1 \oplus a \oplus a $ 這將導致 $ x_1 $ 然後連接其餘的 - $ m_2 || m_3 $ - 會導致 $ a’ == a $ 因為最後一個塊與 $m_1 的輸出相同。

最後,為了防止這種攻擊,接收傳輸的應用程序或系統應該檢查特定大小的消息以防止這種存在性攻擊,但我也猜測這只有在消息塊 == 1 時才是安全的?

您想到的稱為擴展攻擊,事實證明,如果您想在消息長度不固定的情況下破壞通用的 CBC-MAC,則可以採用這種方法。

對手需要做的就是發起選定的消息攻擊。假設他要消息上的標籤 $ m=m_1||m_2||…||m_l $ . 得到的 CBC MAC 將是 $ MAC_k(m)=t $ . 但是現在攻擊者可以通過擴展他的原始消息輕鬆找到具有有效標籤的另一條消息 $ m $ 經過 $ m_1\oplus t||m_2||…||m_l $ . 通過查看 CBC-MAC 結構,很容易看出新消息上的標籤 $ m’=(m||m_1\oplus t||m_2||…||m_l) $ 也是 $ t $ ,其實是一種 存在主義的贗品

這就是為什麼 CBC MAC 在消息長度固定時才安全的原因。CBC MAC的詳細安全分析以及消息長度不固定的情況下的一些變通方法可以在這篇論文中找到:

  • Mihir Bellare、Joe Kilian、Phillip Rogaway,密碼塊連結消息驗證碼的安全性,電腦與系統科學雜誌,第 61 卷,第 3 期,2000 年 12 月,第 362-399 頁http://dx.doi.org/ 10.1006/jcss.1999.1694

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