简洁就是美。把问题说得简单、易懂是一种美德。
上文介绍了MD5和SHA-1函数,我现在来讲一讲这两个函数作为消息摘要函数的安全上的缺陷是什么。
一直到2005年,这两个函数都在国际密码学界被认为是理想的消息摘要函数,直到山东大学的王小云教授发现了这两个函数的致命缺陷:它们都易受冲撞攻击(collision attack)。
什么是冲撞攻击呢?
首先,摘要函数理想上应该符合:非常难找到两个不同的信息而他们的摘要是相同的。这里非常难是指实现上非常困难,理论上讲用穷举法当然可以做到,但是要求的运算量过大使得现实上是不可能的。所谓冲撞攻击是指一种相对“廉价”的方法能找到两个有相同摘要的不同信息。
实际上对于MD5来说,由于它的摘要信息位数比较短(128 bit),现在用普通的计算机可以在几小时甚至几分钟之内找到冲撞对,这就是相当“廉价”了。而对于SHA-1(160 bit)来说,王小云教授的成果证明可以在2的69次方次尝试后找到冲撞对(这个结果之后在被不断地被改进),但这个计算量仍然过大,以当代的计算机运算能力来说,现实上仍然很难实现(需要的运算量大意味着需要的资金大)。根据这篇文章https://www.schneier.com/blog/archives/2012/10/when_will_we_se.html,即使到2018年,找到一个SHA-1冲撞对所需要的资金是17