@shellex说: 对对,他们上辈子都是折翼的新奥尔良鸡翅

Pages

Topics

随便看看

路边社评论员

  • Keith:
    还能用不. »
  • deepblue:
    测试一下浏览器和系统 »
  • abettor:
    “就和CPU特权级别一样”——这的哥难道是Linus的表弟?! »
  • 董英男:
    为什么总提示确认是相册首页呢 到底哪个才是相册首页啊 »
  • kendisk:
    作为一个轻度Linuxer,刚分手后,感觉木有鸭梨。 »
  • MS IE:
    THIS SITE REALLY SUCK! »
  • Alex:
    gnome-women... »
  • liangsuilong:
    GNOME 自己也有鼓励女性参与项目的计划啊.. »
  • infinte:
    对不起,你的“解ban”版本算得有点问题,可以下(9)pp4 测试。ACID3可有95分啊……另外同... »
  • Alex:
    »
  • Randee Saadat:
    Glad you solved your problem, but what is your que... »
  • LinuxRock:
    没想到你也有一台和我一样的破机子......还好现在高三没怎么用,受不了它的发热量.. »

自己试试MD5碰撞生成器

N久以前,王小云同学找到了能构造出能导致MD5碰撞的算法,也就是不同的明文,所得的md5值是一样的。貌似很难,原理上是这样的,特别是对我这样没有搞过密码学的同学来说。但是看看这里吧,其实体验一下很容易。

这些同学基于王小云同学的理论,加以改动,有了如下我可以体验的成果。

这里给出了一个快速生成碰撞的程序,叫MD5 Collision Generator。啊,这个生成器根据所谓的构造前缀碰撞法可以生成两个不同的文件,而这两文件的md5 sum却是一样的。

MD5 Collision Generator(win32 .exe)

MD5 Collision Generator(source)

需要boost库,我没有,就没有编译了。直接wine。

$ wine cmd5.exe
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

$ wine cmd5.exe -p a.txt -o 1.out 2.out
MD5 collision generator v1.5
by Marc Stevens (http://www.win.tue.nl/hashclash/)

Using output filenames: '1.out' and '2.out'
Using prefixfile: 'a.txt'
Using initial value: 1ff51986786fcd387467c376774e77b8

Generating first block: ...
Generating second block: S00....................
Running time: 4.409 s
$ md5sum 1.out
6b6a97ba4b60721f6d3a7cba989bdb3f  1.out
$ md5sum 2.out
6b6a97ba4b60721f6d3a7cba989bdb3f  2.out
$ diff 2.out
diff: 在`2.out'后缺失操作数
diff: 用 `diff --help' 来获得更多的信息
$ diff 1.out 2.out
二进制文件1.out和2.out有差异

唔,看吧。1.out 和 2.out的md5 sum都是6b6a97ba4b60721f6d3a7cba989bdb3f,但是它们是不一样的文件。a.txt是前缀文件,具体是起什么作用的我就不知道咯,但是我知道a.txt里面的内容会被copy到两个输出文件里面去。

这些同学还构造出了两个可执行文件(http://www.win.tue.nl/hashclash/SoftIntCodeSign/),两个文件执行的动作完全不一样,但是通过这个构造前缀碰撞法,就可以通过添加一段附加数据使最后它们的md5校验一样。方法具体是什么嘛…他们给了论文,可以看看(估计看不懂)。

受此影响的同学:

  • 使用md5作为文件/通讯安全校验的同学(因为改动可以被伪造了,赶紧换别的算法)

不受此影响的同学:

  • 使用md5作为口令加密的同学(因为从数学上证明md5是不可逆的,当然不是我证明的)
  1. On July 21, 2008 at 1:29 pm
    abettor: Mozilla Firefox 3.0.1 / Windows 2000

    不错,在开源世界里,还是大有用途的。

  2. On July 21, 2008 at 2:38 pm
    回忆: Internet Explorer 6.0 / Windows XP

    能不能做个在 DOS下的啊 wine很不了解
    如果我那2个不同的程序 能不能通过这个软件来进行MD5碰撞

  3. On July 21, 2008 at 2:50 pm
    shellex: Mozilla Firefox 3.0.1 / Linux

    [quote comment="221"]能不能做个在 DOS下的啊 wine很不了解
    如果我那2个不同的程序 能不能通过这个软件来进行MD5碰撞[/quote]
    1. 这本来就是windows下的控制台程序(我纠正你一点,控制台程序不是dos程序)。wine是linux下运行windows PE可执行文件的程序。你在windows下直接在cmd执行就好
    2. 貌似,要做到这一点,你需要去看看他们的论文。

  4. On July 21, 2008 at 2:51 pm
    shellex: Mozilla Firefox 3.0.1 / Linux

    [quote comment="220"]不错,在开源世界里,还是大有用途的。[/quote]
    怎么说呢,我觉得影响不是很大吧

  5. On July 21, 2008 at 8:55 pm
    回忆: Internet Explorer 6.0 / Windows XP

    我是说 wine 下语法不是怎么清楚 所以没看懂 如果是DOS 对我们常耍windos的人直观些

  6. On July 21, 2008 at 9:15 pm
    shellex: Mozilla Firefox 3.0.1 / Linux

    [quote comment="225"]我是说 wine 下语法不是怎么清楚 所以没看懂

    如果是DOS 对我们常耍windos的人直观些[/quote]
    ….看起来你没搞清楚…

  7. On July 21, 2008 at 10:14 pm
    TualatriX: Safari 525.20.1 / Mac OS X

    回忆同学,你就把它当DOS程序好了,效果是一样的。

    nl是荷兰的吧?刚看了一下那PDF文档,里面的数学公式把我吓得立马关掉了。哈哈!

    ShelleX同学,你看的懂吗?

  8. On July 21, 2008 at 10:37 pm
    shellex: Mozilla Firefox 3.0.1 / Linux

    [quote comment="229"]回忆同学,你就把它当DOS程序好了,效果是一样的。

    nl是荷兰的吧?刚看了一下那PDF文档,里面的数学公式把我吓得立马关掉了。哈哈!

    ShelleX同学,你看的懂吗?[/quote]

    那个….我没看懂。呵呵…不是搞这行的。

  9. On July 21, 2008 at 11:34 pm
    回忆: Internet Explorer 6.0 / Windows XP

    也就是说那个软件只是演示用的 不能让2个不同的程序生成一样的MD5码 是这样吗?

  10. On July 22, 2008 at 11:08 am
    shellex: Mozilla Firefox 3.0.1 / Linux

    [quote comment="232"]也就是说那个软件只是演示用的 不能让2个不同的程序生成一样的MD5码 是这样吗?[/quote]
    貌似是这样的

  11. On January 13, 2010 at 12:26 am
    清风剑: Mozilla Firefox 3.5.7 / Ubuntu Linux

    其实既然可以伪造程序,理论上也可以伪造密码,前提是密码的前缀被猜中

Leave a Reply