17 六月, 2005

MD5算法冲突(collision)不意味着MD5失效

MD5,再熟悉不过了,这个摘要算法被广泛运用于加密和数字签名领域。2004年8月的Crypto'2004大会上,来自山东大学的王小云教授做了关于“Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD”的演讲,从理论上揭示MD5算法冲突的可演示性。也使得现有的MD5签名技术暴露出严重的安全漏洞。

所 谓冲突,就是两个明文对应同一个密文。摘要算法是一种HASH算法,是不可逆的,也就是说,密文丢失了许多明文的信息,从密文逆向得到明文是不可能的(至 多得到可能的明文)。但是,正因为是从一个大集合映射到一个小集合,从鸽笼理论可知,冲突是必然存在的。只是算法优劣不同,这种冲突的可能性也不相同。 MD5在王小云这篇论文出来之前,一直被认为安全性很高的,通过现有的技术很难找到这样的冲突,也就是说,不具备冲突的“可演示性”。(MD5CRK还特地设了一个寻找MD5冲突的项目,10年未果)

王小云的研究表明,可以在2^40次运算内发现这样的冲突对,它们的MD5结果是相同的。一台强劲的计算机(IBM P690)一个小时左右就可以计算完毕。

在实际应用中,Lenstra制造了两份不同的X.509 CertificatesCITS也发表了两份Postscript文档,它们的MD5数字签名是冲突的。

不 过,王小云的演讲中只是提到寻找这种冲突的可能性,这和根据一段密文(譬如数字签名)寻找产生这段密文的可能的明文还是有很大差距的。因为冲突的可演示 性,说明MD5算法有很大的安全漏洞,原来被认为几乎是唯一的结果,现在不被人相信了,所以不应当继续地广泛地用于电子签名领域。但是也不能就此认定 MD5算法就失效了,或者就此说“MD5 is dead”,毕竟,构建两份产成同一签名的数字公文和伪造一份通过数字签名认证的公文是两码事情。

强壮的摘要算法必须满足下列两个条件:

  1. Given a digest, it must be essentially impossible to figure out what data generated that digest
  2. It must be essentially impossible to find a "collision", that is, to find two different data values that have the same digest

现在MD5算法已经被证明不满足第二个条件,它被淘汰也是迟早的事情,在今后的应用开发中,使用更安全的算法替代MD5,这是明智的。

但是,使用哪种替代方法呢?这是个问题!


最新回复

不错

作者 Su 17 九月 2007, 21:42
发表评论


















Bold Italic Link