公钥密码体制总结及展望
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
公钥密码体制总结及展望
摘要:计算机网络的发展突飞猛进,与此同时产生了公钥密码体制,本文重点介绍了当前公钥密码体制的几种常见的算法以及公钥密码体制的未来发展趋势。
关键词公钥密码体制 RSA DSA ECDSA SHA-1 数字签名身份认证
1 引言
公开密钥密码体制的概念是1976年由美国密码学专家狄匪(Diffie)和赫尔曼(Hellman)[1]提出的,有两个重要的原则:第一,要求在加密算法和公钥都公开的前提下,其加密的密文必须是安全的;第二,要求所有加密的人和掌握私人秘密密钥的解密人,他们的计算或处理都应比较简单,但对其他不掌握秘密密钥的人,破译应是极困难的。随着计算机网络的发展,信息保密性要求的日益提高,公钥密码算法体现出了对称密钥加密算法不可替代的优越性。近年来,公钥密码加密体制和PKI、数字签名、电子商务等技术相结合,保证网上数据传输的机密性、完整性、有效性、不可否认性,在网络安全及信息安全方面发挥了巨大的作用。本文详细介绍了公钥密码体制常用的算法及其所支持的服务。
2 公钥密码算法
公钥密码算法中的密钥依性质划分,可分为公钥和私钥
两种。用户或系统产生一对密钥,将其中的一个公开,称为公钥;另一个自己保留,称为私钥。任何获悉用户公钥的人都可用用户的公钥对信息进行加密与用户实现安全信息交互。由于公钥与私钥之间存在的依存关系,只有用户本身才能解密该信息,任何未受授权用户甚至信息的发送者都无法将此信息解密。在近代公钥密码系统的研究中, 其安全性都是基于难解的可计算问题的。如:
(1)大数分解问题;(2)计算有限域的离散对数问题;(3)平方剩余问题;(4)椭圆曲线的对数问题等。
基于这些问题, 于是就有了各种公钥密码体制。关于公钥密码有众多的研究, 主要集中在以下的几个方面:
(1)RSA 公钥体制的研究;(2)椭圆曲线密码体制的研究;(3)各种公钥密码体制的研究;(4)数字签名研究。
公钥加密体制具有以下优点:
(1)密钥分配简单;(2)密钥的保存量少;(3)可以满足互不相识的人之间进行私人谈话时的保密性要求;(4)可以完成数字签名和数字鉴别。
2.1 RSA算法
RSA算法[2]是Ron Rivest, Adi Shamir和Len Adleman 在1978年提出的,是一种公认十分安全的公钥密码算法。RSA算法是目前网络上进行保密通信和数字签名的最有效安全算法。RSA算法的安全性基于数论中大素数分解的困难性。
所以,RSA需采用足够大的整数。因子分解越困难,密码就越难以破译,加密强度就越高。其公开密钥和私人密钥是一对大素数的函数。从一个公开密钥和密文中恢复出明文的难度等价于分解两个大素数之积。因式分解理论的研究现状表明:所使用的RSA密钥至少需要1024比特,才能保证有足够的中长期安全。
为了产生两个密钥,选取两个大素数p和q。为了获得最大程度的安全性,两数的长度一样。计算乘积:N=pq,然后随机选取加密密钥e,使e和互素。最后用欧几里得扩展算法计算解密密钥d,以满足:ed=1mod则 d=e-1mod注意:d和n也互素。e和n是公开密钥,d是私人密钥。两个素数p和q不再需要,可以舍弃,但绝不能泄漏。
加密消息m时,首先将它分成比n份小的数据分组。加密后的密文c,将由相同长度的分组ci组成。加密公式可表示为:ci=mie ×(mod n) 解密消息时,取每一个加密后的分组ci并计算:mi= cdi ×(mod n)。
由于:cdi= (mei ) d= medi = mi k (p - 1) (q- 1) + 1= m i×m i k (p - 1) (q- 1)= m i×1= m i (mod n)这个公式能恢复出全部明文。公开密钥 n:两个素数p和q的乘积;e:与互素。私人密钥 d:与n互素。加密 c=me×(mod n);解密 m=cd×(mod n)。
2.2 ECDSA算法
椭圆曲线数字签名算法(ECDSA) [5]设计的数学原理是基于椭圆曲线离散对数问题的难解性。EC点上离散对数的研究现状表明:所使用的ECDSA密钥至少需要192比特,才能保证有足够的中长期安全。椭圆曲线是指由韦尔斯特拉斯(Weierstrass)方程:
y2+a1xy+a3y=x3+a2x2+a4x+a6
所确定的平面曲线。定义F为一个域,其中ai∈F,i =1,2,…6。F可为有理解域、实数域、复数域,也可为有限域GF(q)。在椭圆曲线密码体制中,F一般为有限域。由有限域椭圆曲线上的所有点外加无穷远点组成的集合,连同按照“弦切法”所定义的加法运算构成一个有限Abel群。在此有限Abel群上,定义标量乘法(Scalar Multiplication)为:mP=P+P+…P(m个P相加);若mP=Q,定义: m=logpQ 为椭圆曲线点群上的离散对数问题,此问题无多项式时间内的求解算法。ECDSA的设计正是基于这一问题的难解性。
在此,我们讨论定义在有限域GF(2m)上的椭圆曲线数字签名算法。今定义椭圆曲线方程为:y2+xy=x3+ax2+b a,b ∈GF(2m);则椭圆曲线的域参数为 D(m,f(x),a,b,P,n) 其中,f(x)为GF(2m)的多项式基表示的不可约多项式。P 表示椭圆曲线上的一个基点,n为素数且为点G的阶。
ECDSA算法密钥对的生成过程为:在区间[1,n-1]上选择一个随机数d,计算Q=dP,则Q为公钥,d为私钥。
ECDSA算法的签名生成过程可简述如下:若签名的消息为e,则在区间[1,n-1]上选择一个随机数k,计算 kG=(xl,y1); r=xl mod n;s=k-1(e+dr) mod n。如果r或s为零,则重新计算,否则生成的签名信息为(r,s)。
ECDSA算法的签名验证过程可简述如下:若公钥为Q,签名的消息为e计算: w=s-1 mod n ;u1=ew mod n ;u2=rw mod n ;X=u1P + u2Q=(xl,y1)。如果X为无穷远点,则拒绝签名,否则计算:v=xl mod n;如果v=r,则接受签名,否则拒绝签名。
2.3 SHA-1算法
SHA-1杂凑算法[4]起初是针对DSA算法而设计的,其设计原理与Ron Rivest提出的MD2,MD4,尤其是MD5杂凑函数的设计原理类似。当输入长度<264bit的消息时,输出160bit的摘要,其算法分为5步:
(1)填充消息使其长度为512的倍数减去64,填充的方法是添一个“1”在消息后,然后添加“0”直至达到要求的长度,要求至少1位,至多512位填充位;
(2)完成第1步后,在新得到的消息后附加上64bit填充前的消息长度值;
(3)初始化缓存,SHA-1用5字的缓存,每个字均是32bit;
(4)进入消息处理主循环,一次循环处理512bit,主循