大数密码是无法破译的——王小云蓄意造假
看到了没有?这是一种有时间维度的方程:
A1000位数=X10000次试除Y10000次试除
这个方程奇怪吗?xy都是附带次数属性。
为什么?
王小云院士真地破解了 大数密码了 吗?
在 2004 年,王小云院士与其他研究人员合作发表了一篇名为《Collisions for Hash Functions》的论文,展示了如何通过碰撞攻击生成具有相同 MD5 哈希值的两个不同输入。
所谓的“破解”其实误导了很多人,并不是说扔给王小云一个 MD5 散列值,然后她马上就能算出一个原文来。从密文推算出明文理论上是不可能的,所以王小云的研究成果并不能通过 MD5 的散列值逆向推算出明文。即给定 Hash 值,王小云不能逆向计算出 M。
MD5(M)=Hash
1
其中 M 指密码的明文,Hash 表示密码散列后的密文。
实际上,王小云的研究成果如下:
MD5(M1)=MD5(M2)
1
即给定消息 M1,能够计算获取 M2,使得 M2 产生的散列值与 M1 产生的散列值相同。如此,MD5 的抗碰撞性就已经不满足了,使得 MD5 不再是安全的散列算法。这样一来,MD5 用于数字签名将存在严重问题,因为可以篡改原始消息,而生成相同的 Hash 值。
这里,简单地用王教授的碰撞法给大家举个简单的例子。假如用户 A 给 B 写了个 Email 内容为 Hello,然后通过王教授的碰撞法,可能得到 Fuck 这个字符串的摘要信息和 Hello 这个字符串产生的摘要信息是一样的。如果 B 收到的 Email 内容为 Fuck,经过 MD5 计算后的,B 也将认为 Email 并没有被修改!但事实并非如此。
王小云院士的研究报告表明,MD4,MD5,HAVAL-128 和 RIPEMD 均已被证实存在上面的漏洞,即给定消息 M1,能够找到不同消息 M2 产生相同的散列值,即产生 Hash 碰撞。
后来在 2005 年,王小云同其他研究人员又发布了一篇论文《Finding Collisions in the Full SHA-1》,理论上证明了 SHA-1 也同样存在碰撞的漏洞。
随着时间的推移,计算机计算能力不断增强和攻击技术的不断进步,SHA-1算法的安全性逐渐受到威胁。在2017年,Google研究人员宣布成功生成了第一个实际的SHA-1碰撞,这意味着攻击者可以通过特定的方法找到两个不同的输入,但它们具有相同的SHA-1哈希值。
5.结论
虽然 MD5、SHA1 已经被证实在数字签名存在安全问题,但是 MD5、SHA1 在密码的散列存储方面还是很安全的算法,只要密码足够复杂,加盐且迭代次数足够多,抗得住主流的口令破解方法,如暴力破解、彩虹表、字典攻击、词表重整攻击、概率上下文无关文法等。