论文部分内容阅读
1976年,Diffie和Hellman提出了公钥密码的观点,这是密码学的一次革命,有极其重要的历史里程碑意义。之前,几乎所有的密码系统都建立在代替和换位基础上,而公钥密码系统与以前截然不同,它基于一种特殊的数学函数的。在公钥密码系统中,每个用户都有自己的公钥和私钥,但是已知公钥推算私钥在计算上是困难的。此后,又有很多的公钥密码系统被提出来。它们的安全性都依赖于各自所基于的数学问题。这些公钥密码系统有些是成功的,有些被证明是不成功的。现在,只有3种类型的公钥密码系统被认为是安全、有效的。学术界将这些系统所依赖的数学问题分为:(1)整数因数分解问题(IFP);(2)离散对数问题(DLP);(3)椭圆曲线离散对数问题(ECDLP)。其中,椭圆曲线被认为是目前已知最安全的公钥密码系统。它163-bit的安全强度就相当于1024-bit的RSA。因此,随着计算能力的提高和所需密钥长度的增加,ECC相对其它公钥密码系统就更吸引我们的关注。密码编码学和密码分析学是矛盾事物的一体两面,它们相互促进相互发展,一方面密码分析对密码系统的安全性产生了挑战和威胁,另一方面为了应对各种各样的威胁挑战密码编码学也得到了长足的发展。从理想角度来说,密码系统的安全性仅应该依赖于密钥的保密性,而不是对其算法的保密,对于公钥密码学(如ECC)来说,就是私钥的保密性。1978年,Pollard提出一种被称之为Pollard’s Rho的算法,该算法最初用于解决DLP,不过它也可以用于解决ECDLP。在目前所有已知的解决ECDLP的算法中,Pollard’s Rho算法是速度最快效率最高的算法,因此可以说Pollard’s Rho算法决定了ECC的安全性。如果ECDLP在较短时间内就被Pollard’s Rho算法所破解,那么椭圆曲线密码系统的安全性就会大打折扣。因此本文的主要研究Pollard’s rho算法的原理和具体实现。在密码分析学中求点群的阶是很关键的。椭圆曲线的求阶算法有很多,主要包括:Schoof算法及其改进SEA算法、复乘(CM)算法、小步-大步算法(Baby-Step-Giant-Step, BSGS)、Satoh算法、Harley算法等。本文对其中的几种进行了研究,并实现了Schoof算法。其次,本文对常用的求解ECDLP的算法进行讨论。其中,对一般椭圆曲线的攻击算法,主要包括:大步小步算法、Pollard’s rho算法、Pohlig-Hellman算法、Pollard’s lambda算法;对特殊曲线的攻击方法有:MOV攻击、FR攻击、SSAS攻击、Weil下降攻击(GHS攻击)等。通过对各种攻击方法的分析,提出了安全椭圆曲线的产生标准。最后,本文按照椭圆曲线阶的位数(十进制),进行了分组试验。我们选择了迭代次数,时间,作为性能的评价标准。当阶的位数为4时,平均77.8次碰撞,1.0049秒就可以解决ECDLP。当阶的位数为5时,平均282.2次碰撞,3.2966秒就可以解决ECDLP。由此可证明对Pollard’s rho攻击算法的实现是正确有效的。接着本文对Pollard’s rho攻击算法的迭代函数进行了改进,原始的迭代函数包含2个点加运算和1个倍点运算,改进后的迭代函数包含r个点加运算和q个倍点运算。为了验证改进后算法的效果,对r和q进行选择,经过大量实验发现,当r=30,q=10时,算法的L值只有0.7125。而使用原始的迭代函数,L值为1.2216,性能提高了42.7%,极大的提高了算法效率。