MD5真的已靠不住?同样校验,不同文件!


先来扫盲:

  MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。为了让读者朋友对MD5的应用有个直观的认识,笔者以一个比方和一个实例来简要描述一下其工作过程:

   大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为公安机关鉴别罪犯身份最值得信赖的方法;与之类似,MD5就可以为任何文件(不管其大小、 格式、数量)产生一个同样独一无二的“数字指纹”,如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”都会发生变化。

   我们常常在某些软件下载站点的某软件信息中看到其MD5值,它的作用就在于我们可以在下载该软件后,对下载回来的文件用专门的软件(如 HashX 等)做一次MD5校验,以确保我们获得的文件与该站点提供的文件为同一文件。利用MD5算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系 统文件安全等方面。

  示范一下:

  我们先下载 HashX 1.0.1.2(504KB)以及 世界之窗浏览器(The World) 2.2 Beta(556KB),文件都很小,方便大家测试。

  之后如图所示:

点击在新窗口中浏览此图片

图1 将要检验的文件拖放到程序窗口,并按 Hash File

点击在新窗口中浏览此图片

图2 得出检验结果,可按 Copy Output 进行复制

点击在新窗口中浏览此图片

图3 可将发布者提供的MD5进行对比,另外还可使用其它算法(如SHA-1)进行检验

  大家可以尽管试一下:比如建立一个TXT文件,随便打些什么进去。检验一遍MD5之后记录下来。然后对TXT稍作改动,再检验一遍。就可以发现,原来只要稍微不同,出来的MD5就已经是完全不一样的了。

   这就是说,MD5校验的作用在于:可以知道自己从网络下载的文件,是否就是原发布者所提供的文件。很多人常抱怨使用迅雷下载的文件有问题,说到这里,相 信大家已经明白,那是文件来源不一样了。以及有时候,发布者的网站可能被黑客入侵篡改,那么校验一番MD5,就可以知道是否曾被恶意植入病毒或木马了(如 果网站服务器被入侵,通常发布者也不知情的)。

  但是!从今天起,上述一切,已变得不可靠了!

  原因在于两年前,王小云教授发布的破解算法开始,后来已经发展至可进行所谓的“MD5攻击”。

相关阅读:如何面对最强算法MD5被破译

老生常谈:从王小云教授成功破解MD5说起

  下面要说的“MD5碰撞”,简而言之就是:先得出一个字符串的MD5值,再根据这个值,逆算出另外一个不同的字符串——但是它们的MD5检验值是完全一致的!

  或许你会觉得,不同的字符串可以得出相同的MD5,也不算什么了不起的事情吧。这只不过是世上万千奇怪的数学题的一种而已。

  但是!你可曾想过,有没有可能,让两个程序文件的MD5一致,却又都能正常运行,并且可以做完全不同的事情么?

  答案是:还真的可以!

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

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

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

  通读其论文后摘要如下:

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

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

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

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

  这几位密码学家编写的“快速 MD5 碰撞生成器”:
  http://www.win.tue.nl/hashclash/fastcoll_v1.0.0.5.exe.zip
  源代码:http://www.win.tue.nl/hashclash/fastcoll_v1.0.0.5_source.zip

  思考题:

  为什么微软发布补丁程序的时候,所使用的校验方法,不是MD5,而是SHA-1呢?

点击在新窗口中浏览此图片

 

 

如何进行MD5校验

大家有没有注意到下载一些软件,它的信息里标注有MD5码?

       MD5在软件发布时经常使用,是为了保证文件的正确性,防止一些人盗用程序,加木马或者篡改版权,设计的一套验证系统。每个文件都可以用MD5验证程序算出一个固定的MD5码来。

        个人认为MD5验证是很有必要到,否则下载的软件很可能被篡改过,运行出错或具有一定的危险性。

工具/原料

  • Hash 1.0.4

方法/步骤

  1. 首先我们在网上找到一款带MD5码的软件进行下载,记下它的MD5码。

  2. 软件下载好后,我们需要用一款MD5验证工具进行校验。

    我使用的是“Hash 1.0.4”,这款软件大家可以在360软件管家里找到,当然大家也可以使用其他MD5校验工具。

  3. 然后我们打开“Hash 1.0.4”,它的界面如下图所示。

  4. 可以看出“Hash 1.0.4”是一款英文的软件,但大家不必畏惧,因为它的操作方法很简单,直接把下载的软件(下图中的‘GHO镜像安装器’)拖动到“Hash 1.0.4”的空白处就好了。

  5. 最后我们找到“Hash 1.0.4”测出的MD5码与步骤1中的MD5码进行对比,如果发现两者相同,那么说明,下载的软件未被篡改过,可以放心使用。

    大家可以看到步骤4中的MD5码和步骤1中的MD5是相同的(一个是大写一个是小写但字母相同),因此证明我下载的这款软件未被修改过。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM