论文摘要
最初的Hash函数并非用于密码学,到70年代末80年代初,开始有人将Hash函数应用于密码学,从那个时期开始,Hash函数成为了密码学一个极其重要的研究方向。在当今的信息社会,Hash函数起着越来越重要的作用,它们被广泛地应用在检测数据的完整性、数字签名方案、抛币协议、鉴别协议、密钥交换协议、群签名、电子钱币等方面,因此Hash函数的安全性日益受到人们的重视。近两年,王小云教授在[1]等论文中提出模差分攻击方法及明文修改技术,利用此攻击方法可以对现有的一系列Hash函数进行破解,使国际上对Hash函数的研究又成了一个热点。从这一段时期发表的论文来看,一些文章是应用模差分攻击方法及明文修改技术对另外的Hash算法进行分析,而另外一些文章则是在讨论MD5等Hash算法在被破解以后,基于它们的应用存在什么不安全因素,本文就是基于这两个方向对MD5和HAS-160进行深入研究和讨论的。本文共分三章:第一章,首先在§1.1中介绍了Hash函数的概念,性质及其迭代结构。在§1.2中介绍了三种主要的Hash函数,即基于分组密码的Hash函数、MDx系列Hash函数和安全Hash函数标准。第二章,介绍了针对Hash函数的主要攻击方法,其中重点介绍了模差分攻击方法和明文修改技术,在介绍的过程中重点引用了[1],详细介绍了如何寻找MD5碰撞。第三章,在第一节我们所做的工作是对[10]所做工作的补充,在[10]中给出了53步HAS-160的差分路线,但该差分路线的充分条件要求初始值的某些位置必须是固定的比特,这样才能保证该差分路线成立。我们经过研究发现完全可以有另外的一条差分路线是不需要对初始值有任何假定的,也就是说不需要固定的比特,在这里我们利用模差分攻击方法给出了一条差分路线和保证其成立的充分条件。在本章的第二节,介绍了A.K.Lenstra等人利用参考文献[1]中的MD5碰撞,构造了两个在公开密钥上不同,而CA签名相同的X.509证书,这种方法除了要求在公开密钥上有一些条件以外,其余各字段都可以是任意的,并且通过巧妙的方法构造出来的RSA密钥是安全的。在本章的第三节,我们重点研究了任意不同初值的MD5碰撞,如果该问题能够在可计算时间内解决,那么完全可以构造各域(包括主体域)不同的且CA签名相同的X.509数字证书,这将对基于MD5和RSA算法的X.509数字证书带来致命威胁。本节介绍了王小云教授解决该问题的思路,Marc Stevens等人在[13]中采纳了此思路,利用8个block构造了S1,S2,但是耗时非常长,也就是说计算量非常大,我们在这个攻击思路的基础上,提出了一种新的攻击模式,理想状态下可以降低计算量。