為什麼 HMAC-SHA1 仍然被認為是安全的?
說 HMAC-SHA1 的安全性不依賴於抗碰撞?他們是專門針對 HOTP 或 HMAC-SHA1 說的嗎?
如果 HMAC-SHA1 用於驗證文件的完整性並且您可以發現衝突,您可以在文件中進行更改,對嗎?
https://www.rfc-editor.org/rfc/rfc2104#section-6
甚至 RFC 也表示抗碰撞是相關的
此處介紹的消息認證機制的安全性取決於散列函式 H 的加密屬性:對沖突發現的抵抗力(僅限於初始值是秘密和隨機的,並且函式的輸出不能明確提供給攻擊者),以及 H 的壓縮函式應用於單個塊時的消息認證屬性
我在這裡想念什麼?
在此答案的第一部分中,我將假設通過更好的硬體或/和算法改進,通過類似於王曉雲、Yiqun Lisa Yin 和 Hongbo的方法來展示 SHA-1 的碰撞已成為正常可行Yu的進攻,或者Marc Stevens的進攻。這已在 2017 年初公開實現,並且顯然是可行的(這項工作僅代表比特幣探勘所花費的雜湊工作數小時;但用於此的硬體不能重新用於對 SHA-1 的攻擊) .
與問題中考慮的相反,這不會允許攻擊者不知道 HMAC-SHA-1 密鑰在文件中進行未檢測到的更改;這包括攻擊者是否能夠準備他/她願意稍後更改的文件。
一種解釋是,我們正在考慮的對 SHA-1 的衝突攻擊需要了解 SHA-1 連結變數的狀態,而不知道密鑰的 HMAC 攻擊者會因為密鑰在消息在 HMAC 中的輪次迭代。要破解 HMAC,需要對 SHA-1 的輪函式進行更深入的破解。並非巧合的是,M. Bellare 的NMAC 和 HMAC 新證明:無碰撞抗性的安全性表明,HMAC 的安全性僅假設其輪函式的屬性比相應雜湊的抗碰撞性所需的屬性更弱。
對於知道 HMAC 密鑰的攻擊者來說,有可能準備一個她/他以後願意更改的文件,該文件可以在不更改 MAC 的情況下進行更改。但由於攻擊者持有 HMAC 密鑰,這不被視為 HMAC 中斷。
有評論詢問何時不應使用 SHA-1?
建議在需要防碰撞的應用程序中快速逐步淘汰 SHA-1(如圖所示:當您離開沒有煙霧時火警響起的建築物時迅速走開)。這包括對其他人準備的文件(即大多數文件)進行完整性檢查或數字簽名的散列。如果繼續使用 SHA-1 具有強大的運營優勢,則可以通過在對手可以影響的任何消息部分之前插入對手無法預測的內容來安全地將其作為例外。例如,通過在請求證書時強制執行不可預測的證書序列號,證書頒發機構仍然可以使用 SHA-1 作為其內部簽名安全地頒發證書。
如本答案第一部分所述,只要 HMAC-SHA-1 的密鑰被假定為機密,就沒有跡象表明 HMAC-SHA-1 不安全,因為它使用 SHA-1。如果密鑰被假定為公開的,或者它的洩漏被認為是一種操作可能性,其中它仍然需要 HMAC 的抗碰撞性,包括在密鑰公開後準備的消息,則適用上一段中討論的預防措施。