Hash
MD5 碰撞攻擊解釋
在我的一項任務中,我遇到了這個:
由於 MD5 的長度擴展行為,我們可以為兩條消息附加任何後綴,並且知道較長的消息也會發生衝突。這讓我們可以構造僅在中間的二進制“blob”不同並且具有相同的 MD5 散列的文件,即前綴 || 斑點|| 後綴和前綴 || 斑點B || 後綴。
我不太明白在這種情況下“二進制 blob”是什麼意思。blob 是否必須是特別的東西才能確保這兩個文件將繼續發生 MD5 衝突?
在這裡,我認為 BLOB 是為了解釋為二進制大對象,它指的是兩個文件之間不同但產生相同 MD5 雜湊輸出的 128 字節數據。這些是兩個程序之間不同但產生相同 MD5 部分結果的文件的兩個部分。
所以這樣看。您從一開始就對每個文件進行雜湊處理,並通過前綴計算臨時雜湊值。顯然,此時兩個雜湊值將相同,因為兩個文件中的前綴相同。
現在,使用上述結果和新的數據塊計算新的臨時雜湊結果,它們稱為 BlobA 和 BlobB 的部分。這些數據塊不同,但被構造為產生相同的 MD5 輸出。所以在這些中間部分被散列之後,每個文件的部分散列仍然是相同的。
然後通過後綴在每個文件上繼續雜湊過程,後綴與前綴一樣,對於兩個文件都是相同的。因此輸出(最終)MD5 雜湊值將是相同的。在這一點上,我對您引用的段落的理解是,如果您有 2 個雜湊到相同 MD5 值的文件,您現在可以將任何您喜歡的內容附加到這些文件的末尾(只要兩者的數據相同文件),並且兩個文件的 MD5 雜湊值將以完全相同的方式更改,因此它們將繼續具有彼此相同的雜湊值。