MD5作為文件校驗方法已經(jīng)不可靠了乏屯,可以人為制造碰撞。
JPEG圖片樣本
簡書會對上傳的圖片進行壓縮沦疾,參考鏈接(需翻墻):
- 兩張圖片绒怨,相同MD5
http://natmchugh.blogspot.com/2014/10/how-i-created-two-images-with-same-md5.html - 三張圖片,相同MD5
http://natmchugh.blogspot.com/2014/11/three-way-md5-collision.html
HEX樣本A
d131dd02c5e6eec4693d9a0698aff95c
2fcab58712467eab4004583eb8fb7f89
55ad340609f4b30283e488832571415a
085125e8f7cdc99fd91dbdf280373c5b
d8823e3156348f5bae6dacd436c919c6
dd53e2b487da03fd02396306d248cda0
e99f33420f577ee8ce54b67080a80d1e
c69821bcb6a8839396f9652b6ff72a70
d131dd02c5e6eec4693d9a0698aff95c
2fcab50712467eab4004583eb8fb7f89
55ad340609f4b30283e4888325f1415a
085125e8f7cdc99fd91dbd7280373c5b
d8823e3156348f5bae6dacd436c919c6
dd53e23487da03fd02396306d248cda0
e99f33420f577ee8ce54b67080280d1e
c69821bcb6a8839396f965ab6ff72a70
兩段數(shù)據(jù)的MD5均為:
79054025255fb1a26e4bc422aef54eb4
HEX樣本B
4dc968ff0ee35c209572d4777b721587
d36fa7b21bdc56b74a3dc0783e7b9518
afbfa200a8284bf36e8e4b55b35f4275
93d849676da0d1555d8360fb5f07fea2
4dc968ff0ee35c209572d4777b721587
d36fa7b21bdc56b74a3dc0783e7b9518
afbfa202a8284bf36e8e4b55b35f4275
93d849676da0d1d55d8360fb5f07fea2
兩段數(shù)據(jù)的MD5均為:
008ee33a9d58b51cfeb425b0959121c9
HEX樣本C
0e306561559aa787d00bc6f70bbdfe34
04cf03659e704f8534c00ffb659c4c87
40cc942feb2da115a3f4155cbb860749
7386656d7d1f34a42059d78f5a8dd1ef
0e306561559aa787d00bc6f70bbdfe34
04cf03659e744f8534c00ffb659c4c87
40cc942feb2da115a3f415dcbb860749
7386656d7d1f34a42059d78f5a8dd1ef
兩段數(shù)據(jù)的MD5均為:
cee9a457e790cf20d4bdaa6d69f01e41
評論
- MD5的優(yōu)點是快块攒,對于來源可靠的有限環(huán)境励稳,MD5依然是可用的。
- 對于封閉的內(nèi)部環(huán)境囱井,加鹽Hash依然是可用的驹尼,但這種“加強”是脆弱的。
- 以Wikipedia的舉例庞呕,幾種Hash方法的參考性能為:
MD5:335MiB/s
SHA-1:192MiB/s
SHA-256:139MiB/s
SHA-512:154MiB/s - 在公開的環(huán)境下新翎,比如網(wǎng)盤、內(nèi)容分發(fā)住练,MD5已經(jīng)變得非常危險地啰。
- 至于SHA-1,目前還沒有已知的讲逛、公開的碰撞案例髓绽,但在理論上已存在風(fēng)險。
- 生產(chǎn)工具妆绞,比如PowerShell顺呕,默認的文件Hash方法目前是SHA-256枫攀。
- Linux發(fā)行版,比如openSUSE株茶、Fedora来涨,其ISO文件的CHECKSUM目前是帶簽名SHA-256。
- 如果文件的數(shù)字簽名启盛,其摘要算法為MD5蹦掐,應(yīng)保持警惕。
一些參考
- 本文的樣本來源
http://crypto.stackexchange.com/questions/1434/are-there-two-known-strings-which-have-the-same-md5-hash-value - 百度網(wǎng)盤使用MD5來“秒傳”
https://www.zhihu.com/question/21275365/answer/22261983 - Nat McHugh的博客非常有意思僵闯,詳細記錄了制造碰撞的方法:
兩個相同MD5的可執(zhí)行文件
http://natmchugh.blogspot.com/2015/05/how-to-make-two-binaries-with-same-md5.html
兩個相同MD5的PHP文件
http://natmchugh.blogspot.com/2014/10/how-i-made-two-php-files-with-same-md5.html