做密码学研究的人,都知道md5——曾经被认为是最安全的加密算法。其实任何一种加密算法都存在着这样或那样的漏洞,所以,还是尽量把自己的密码设计的足够长和足够复杂吧!】 在2004年召开的国际密码学年会上,来自中国山东大学王小云教授的一篇关于"破译md5、haval-128、md4以及ripemd-128算法"的报告引起了轰动,报告中提到的新破译方法几乎标志着世界通信密码标准——md5堡垒的轰然倒塌。一石激起千层浪,此前一直负责公开征集针对md5的攻击而设立的权威站点http://www.md5crk.com/宣布"由于md5破译获得突破性进展,md5破解项目(md5crk project)即日停止",并开始提供该站点以往技术资料的下载,预计该站点也将在不久的将来完全关闭。面对md5被破译,有人一声叹息,有人觉得不可思议,更有人忧虑甚至恐慌......那么究竟md5有什么来头?它被破译是否意味着"地球将不再旋转"?谁将成为它的继承者?一、md5是何方神圣? 所谓md5,即"message-digest algorithm 5(信息-摘要算法)",它由md2、md3、md4发展而来的一种单向函数算法(也就是hash算法),它是国际著名的公钥加密算法标准rsa的第一设计者r.rivest于上个世纪90年代初开发出来的。md5的最大作用在于,将不同格式的大容量文件信息在用数字签名软件来签署私人密钥前"压缩"成一种保密的格式,关键之处在于——这种"压缩"是不可逆的。 为了让读者朋友对md5的应用有个直观的认识,笔者以一个比方和一个实例来简要描述一下其工作过程: 大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为公安机关鉴别罪犯身份最值得信赖的方法;与之类似,md5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的"数字指纹",如果任何人对文件做了任何改动,其md5值也就是对应的"数字指纹"都会发生变化。 我们常常在某些软件下载站点的某软件信息中看到其md5值,它的作用就在于我们可以在下载该软件后,对下载回来的文件用专门的软件(如windows md5 check等)做一次md5校验,以确保我们获得的文件与该站点提供的文件为同一文件。利用md5算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面。 笔者上面提到的例子只是md5的一个基本应用,实际上md5还被用于加密解密技术上,如unix、各类bsd系统登录密码(在md5诞生前采用的是des加密算法,后因md5安全性更高,des被淘汰)、通信信息加密(如大家熟悉的即时通信软件myim)、数字签名等诸多方面。 二、md5的消亡之路 实际上,从md5诞生之日起,来自美国名为van oorschot和wiener的两位密码学专家就发现了一个暴力搜寻冲突的函数,并预算出"使用一个专门用来搜索md5冲突的机器可以平均每24天就找到一个冲突"。不过由于该方案仅仅从理论上证明了md5的不安全性,且实现的代价及其夸张(当时要制造这种专门的计算机,成本需要100万美米),于是md5自其诞生十多年来一直未有新版本或者被其它算法彻底取代。 在接下来的日子里,有关md5的破译又诞生了"野蛮攻击",也就是用"穷举法"从所有可能产生的结果中找到被md5加密的原始明文,不过由于md5采用128位加密方法,即使一台机器每秒尝试10亿条明文,那么要破译出原始明文大概需要10的22次方年,而一款名为"md5爆破工具"的软件,每秒进行的运算仅仅为2万次! 经过无数md5算法研究专家的努力,先后又诞生了"生日攻击"、"微分攻击"等多种破译方法(相关信息大家可以参考研究成果,大大推进了md5算法消亡的进程。尽管在研究报告中并没有提及具体的实现方法,我们可以认为,md5被彻底攻破已经扫除了技术上的障碍,剩下的仅仅是时间和精力上的问题。)此次山东大学几位教授的最新研究成果,大大推进了md5算法消亡的进程。尽管在研究报告中并没有提及具体的实现方法,我们可以认为,md5被彻底攻破已经扫除了技术上的障碍,剩下的仅仅是时间和精力上的问题。 三、md5完蛋了,放在银行的存款还安全吗? 由于md5应用极其广泛,即使是在银行数字签名证书中,它依然占据着比较重要的地位,此次md5被成功破译的新闻让不少不明所以的人感到"恐惧",认为这是对整个密码界的彻底颠覆,甚至有人开始担心"自己放在银行或者网络银行账户中的存款也有被盗取的可能"。