可执行文件的 MD5 碰撞

可执行文件的 MD5 碰撞

原来我总是很自信地以为:你有本事找到 MD5 的碰撞又如何?你难道还有本事让两个可执行文件的 MD5 一样,却又都能正常运行,并且可以做完全不同的事情么?
答:还真的可以.

http://www.win.tue.nl/hashclash/SoftIntCodeSign/HelloWorld-colliding.exe

http://www.win.tue.nl/hashclash/SoftIntCodeSign/GoodbyeWorld-colliding.exe

Try2本地打包下载:
http://try2.org/downloads/tools/11/[try2.org][20080628025934707]Goodbye_HelloWorld Test.rar

这两个程序会在屏幕上打印出不同的字符,但是它们的 MD5 都是一样的。

通读其论文后摘要如下:

这几位密码学家使用的是“构造前缀碰撞法”(chosen-prefix collisions)来进行此次攻击(是王小云所使用的攻击方法的改进版本)。

他们所使用的计算机是一台 Sony PS3,且仅用了不到两天。

他们的结论:MD5 算法不应再被用于任何软件完整性检查或代码签名的用途。

另:现在,如果仅仅是想要生成 MD5 相同而内容不同的文件的话,在任何主流配置的电脑上用几秒钟就可以完成了。

这几位密码学家编写的“快速 MD5 碰撞生成器” 其源码下载:
http://try2.org/index.php?act=viewer&module=tools&id=102

这个MD5 碰撞生成器 只能从文件A生成2个同文件A功能相同的文件B and C,比较后可以发现

B 和 C的md5是相同的。

MD5 collision generator v1.5
by Marc Stevens (http://www.win.tue.nl/hashclash/)

Allowed options:
-h [ --help ] Show options.
-q [ --quiet ] Be less verbose.
-i [ --ihv ] arg Use specified initial value. Default is MD5 initial
value.
-p [ --prefixfile ] arg Calculate initial value using given prefixfile. Also
copies data to output files.
-o [ --out ] arg Set output filenames. This must be the last option
and exactly 2 filenames must be specified.
Default: -o msg1.bin msg2.bin

留下回复