Collision-Resistance

PBKDF2-HMAC-SHA1 真的壞了嗎?

  • March 25, 2014

我剛剛通讀了這篇文章,它展示了 PBKDF2-HMAC-SHA1 中的實際(看似微不足道的)碰撞,並提供了一些碰撞範例。

我在這裡錯過了什麼嗎?PBKDF2-HMAC-SHA1 真的是這麼糟糕和微不足道的嗎?還是我錯過了一些更廣泛的背景?

密碼散列首先需要抗原像性,並且不應在典型密碼之間引起很多衝突(保留熵)。這種碰撞“攻擊”既不違反要求,也不引起實際的安全問題。

雖然這個問題可以找到微不足道的衝突,但它們不在常用密碼之間。SHA-1 雜湊(因此較短的衝突密碼)有 160 位,較長的至少有 65 個字元。兩個使用者不可能意外地遇到這樣的碰撞對。

故意這樣做也不會造成任何問題。這只意味著合法使用者知道他們自己帳戶的兩個有效密碼。

我敢肯定,密碼學家多年來都知道這個問題,但並不在意,因為如果按預期使用 PBKDF2 ,這不是真正的攻擊。我發布它主要是為了好玩,因為我更喜歡 PHC 競賽中出現的新密碼雜湊以防衝突。程序員希望這些函式具有抗衝突性,因此他們可能會以一種不尋常的方式使用它,與普通密碼散列不同,它依賴於抗衝突性。

令人驚訝的是,“MD5 作為密碼雜湊很糟糕,因為衝突”有點擁擠,因為在“正確選擇”中找到衝突同樣容易。(MD5 不好,因為它速度很快。它已知的加密弱點不適用於密碼散列。)


我們在密碼雜湊競賽郵件列表上對此進行了討論,我在其中發布了以下內容:

這是 PBKDF2 使用密碼作為 HMAC 密鑰而不是消息的結果。

HMAC 似乎設計有一個固定長度的均勻隨機密鑰(即它旨在成為一個 PRF),所以我考慮使用密碼作為密鑰而不是消息濫用。

HMAC 對於可變大小的密鑰有點奇怪:

  • 如果密鑰比塊大小短,則用零字節填充它
  • 如果密鑰長於塊大小,則對其進行散列

對於通常的 HMAC 執行緒模型(假設具有固定大小的均勻隨機密鑰)和 PBKDF2(密碼散列,只有第一個原圖像很重要),這通常不是問題。但這意味著存在微不足道的碰撞甚至第二個原像(在末尾添加一個 0 字節,如果原始密鑰短於塊大小,則不會有任何影響)。

作為兩個密碼中都有漂亮的可列印字元的範例:

plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmdeBkXQTfuBqp'cTcar&g*具有相同的 PBKDF2-HMAC-SHA1 雜湊(無論鹽或迭代次數)。

我發現那些有 CPU 和未優化程式碼的。我們的一位 GPU 雜湊朋友可以輕鬆找到 PBKDF2-HMAC-SHA-256 的類似對。

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