MAC 大小:MAC 是否應該比密碼塊大小短?
許多消息來源聲稱(如果可能)MAC 的長度應該盡可能長。所以它應該與使用密碼塊的大小相同。
但是在 Bouncy Castle 原始碼 ( CMac.java ) 中有以下註釋:
“注意:MAC 的大小必須至少為 24 位(FIPS 出版物 81),或者如果用作數據驗證器(FIPS 出版物 113)則為 16 位,並且通常應小於分組密碼的大小,如它減少了窮舉攻擊的機會(參見應用密碼學手冊)。”
MAC 真的應該更短嗎?如果是,那麼“最佳位置”是什麼?
還是只有在某些特殊情況下才如此?
還是只有在某些特殊情況下才如此?
此聲明基於應用密碼學手冊(第 9 章的 PDF)的備註 9.60,在談論密切相關的 CBC-MAC 時讀為:
備註 *(截斷的 MAC 輸出)*根據 MAC 的唯一性距離,可以通過使用小於 $ n $ 最終輸出的位作為 m 位 MAC。(這必須與隨機猜測 MAC 的機率增加進行權衡: $ 2^{−m} $ 。) 為了 $ m = 32 $ 和 $ E = \operatorname{DES} $ ,窮舉攻擊將密鑰空間減少到大約 $ 2^{24} $ 可能性。然而,即使對於 $ m < n $ ,第二個文本-MAC 對幾乎可以肯定確定一個唯一的 MAC 密鑰。
所以這句話背後的想法似乎是:如果只給你一個消息標籤對,並且你截斷了標籤,你不可能找到產生這個標籤的正確鍵,因為很多鍵都會產生這個被截斷的標籤。但是,當您看到更多的消息標籤對時,這種優勢會逐漸消失,因為在所有這些對上產生正確標籤的密鑰越來越少。另請注意,假設您過濾第一個標籤的整個鍵空間以獲得第二次執行的候選者,您必須執行 $ 2^k $ 操作,將大大少於 $ 2^k $ 作為回報,另一個暴力攻擊應該花費可忽略不計的時間,因為時間由主要暴力控制,並且對於截斷和非截斷 MAC 保持不變。
TL;DR:在這種情況下截斷標籤會使蠻力變得更加困難,但這是“不可行”與“不可行”的情況,所以不要截斷並享受理想的防偽機率。