河北工程大学毕业设计论文
4 数字签名常见的算法及其数字签名
数字签名的方法有很多,现在主要应用的数字签名主要有:RSA,DSA以及椭圆曲线数字签名。
4.1 DSA数字签名算法
.DSA是SChnorr和ELGAmal签名算法的变种,被美NIST作为DSS是一种公开密钥算法,它不能用作加密,只能用作数字签名。DSA使用公开公钥,为接受者验证数据的完整性和数据发送者的身份。它也用作于由第三方去确定签名和所签收数据的真实性。信息交流中,接受方希望收到的信息未被篡改,还希望收到的信息确实是自己认定的发送方所发,那么接受方和发送方就可以约定,共同使用DSA来实现。
4.1.1 DSA数字签名实现的三个步骤
(1)参数与密钥生成 (2)签名的算法 (3)签名的验证算法 1.初始过程
(1) 系统参数:大素数p, q且q为p-1的因子, 并满足2^511
g ∈ Zp , 且满足 g =h ^(p-1)/q mod p,其中h是一整数, 1< h < p-1且h^(p-1)/q modp>1 。p,q,g 作为系统参数,供所有用户使用,在系统内公开? (2)用户私钥:用户选取一个私钥x,1 对待签消息m,设 0 (2)计算 r = (g^k mod p) mod q; (3)计算 s = k^-1*(h(m)+x*r) mod q?则(r,s)为签名人对m的签名? 3. 验证过程 (1)首先检查r和s是否属于[0,q],若不是,则 (r,s)不是签名; (2)计算t= s^-1mod q , r’=(g^h(m) t mod q (y^r*t mod q )mod p) mod q ; (3)比较r’= r 是否成立?若成立,则(r,s) 为合法签名,则(r,s) 为签名人对m的 12 河北工程大学毕业设计论文 签名 4.1.2 DSA的安全性 DSA的安全性主要依赖于整数有限域离散对数难题。其安全性与RSA相比差不多,DSA的一个重要特点是两个素数公开,这样,当使用别人的P和Q是,即使不知道私钥,你也能确认他们是否是随机产生的,还是做了手脚的。RSA算法是做不到的。素数P必须足够大,且p-1至少包含一个大素数因子以抵抗Pohlig&hellman算法的攻击。M一般都应采用信息HASH的值。DSA安全性主要依赖于p和g,若选取不当则签名容易伪造,应保证g对于p-1的大素数因子不可约。DSA的一个主要特点是两个素数公开,这样,当使用别人的p和g,即使不知道私钥,你也能确认他们是随机产生的。[9] 4.2 椭圆曲线代理签名体制 4.2.1椭圆曲线数字签名ECDSA 椭圆曲线签名算法ECDSA是基于椭圆曲线密码体制(ECC)的数字签名算法。DSA是美国国家标准局制定的数字签名算法,他是建立在有限域乘法群上的。对于有限域上的椭圆曲线密码系统,数字签名标准建议采用椭圆曲线数字签名算法ECDSA,下面给出该算法的过程。 假设一组椭圆曲线的参数组为(q,FR,a,b,G,n,h)。其中q是域的阶,FR指示域中元素的表示方法,a,b是两个系数,G是基点,G的阶为n,余因子h=#E(Fq)/n,他是一个小的素数。 1 ECDSA密钥对生成过程 (1)选择一个随机数d,d∈(1,n-1)? (2)计算Q,Q=d*G? (3)那么公钥为Q,私钥为整数d? 2 ECDSA签名过程 假设待签名的消息为,m; (1)选择一个随机数k,k∈(1,n-1)。 (2)计算k*G=(x1,y1)。 (3)计算r=x1 mod n;如果r=O,则返回到步骤(1)。 (4)计算s=k^-1(e+d*r) mod n,如果s=O,则返回到步骤(1)。 (5)对消息的签名为(r,s),最后签名者把消息m和签名(r,s)发送给接收者。 13 河北工程大学毕业设计论文 3 ECDSA密钥对验证过程 获得发送者的公钥Q开始验证: (1)检查r,s,要求r,s∈(1,n-1)。 (2)计算e=SHA1(m)。 (3)计算w=s-1mod n。 (4)计算u1=e*w mod n;u2=r*w mod n。 (5)计算X=u1G+u2Q。 (6)如果X=O,表示签名无效;否则,X=(x1,y1),计算v=x1 mod n。 (7)如果v=r,表示签名无效;否则表示签名有效。[10] 4.2.2椭圆曲线数字签名的安全性 ECDSA在安全性方面的目标是能抵抗选择明文(密文)攻击。而攻击A的攻击者的目标是在截获A的签名后,可以生成对任何消息的合法签名。尽管ECDSA的理论模型很坚固,但是人们仍研究很多措施以提高ECDSA的安全性。在ECDLP不可破解及哈希函数足够强的前提下,DSA和ECDSA的一些变形已被证明可以抵抗现有的任何选择明文(密文)攻击。在椭圆曲线所在群是一般群并且哈希函数能够抗碰撞攻击的前提下,ECDSA本身的安全性已经得到证明。 ECDSA可能面临的攻击: 1.对ECDLP的攻击。2.对哈希函数的攻击。3.其他攻击。 ECDMA的优点 (1)安全性能高(2)计算机量小和计算机速度快(3)存储空间占有量小(4)带宽要求低。 14 河北工程大学毕业设计论文 5 RSA算法及其数字签名 5.1 RSA简述 RSA加密体制是一种公开的密码体制。RSA公匙密码体制是又R.L.Rivest,A.Shamir和L.Adelman于1978年提出的。由于RSA算法很完善,即可用于数据加密,又可用于数字签名,安全性良好,易于实现和理解,所以已经成为一种应用极广的公匙密码算法,目前,RSA在许多场合有广泛的应用。 RSA 公钥密码算法是迄今为止在理论上最为成熟、完善的公钥密码体制。 从提出到现在已经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。它是第一个既能用于数据加密也能用于数字签名和密钥分配与管理的算法。它易于理解和操作,也很流行。因为它既可用于加密,又可用于签名,并为用户的公开密钥签发公钥证书、发放证书、管理证书等,提高了服务质量,所以, RSA 公开密钥密码在当今的信息交换过程中已得到广泛的应用和实践,RSA 公钥密码体制在世界许多地方已经成为事实上的标准。 该算法的加密密钥和加密算法分开,使得密钥分配更为方便。而且它特别符合计算机网络环境。对于网上的大量用户,可以将加密密钥用电话簿的方式印出。如果某用户想与另一用户进行保密通信,只需从公钥簿上查出对方的加密密钥,用它对所传送的信息加密发出即可。对方收到信息后,用仅为自己所知的解密密钥 [11]将信息解密,了解明文的内容。由此可看出,RSA 算法解决了大量网络用户密钥 管理的难题,这是公钥密码系统相对于对称密码系统最突出的优点。 RSA 是一个基于数论的非对称密码体制,是一种分组密码体制,是一种基于因子分解的指数函数作为单向陷门函数的公钥体制算法。它基础是数论的欧拉定理,素数检测,它的安全性是基于大数分解,后者在数学上是一个困难问题。 RSA 的安全性基于复杂性理论中的计算安全性, 依赖于大整数分解这一NP 难题。可靠性与所用密钥的长度有很大关系, 假如有人找到一种很快的分解因子的算法, 即从一个公钥中通过因数分解得到私钥, 那么用RSA 加密的信息的可靠性肯定会极度下降。但由于其工作量巨大,按目前计算机的处理能力是不可能实现的。实践证明,在当前的技术和方法下,密钥不小于1 024 bit的RSA算法仍然是安全的。这充分说明RSA 系统具有良好的保密性能。 因此,尽管先后出现了很多新的公钥体制算法,但RSA仍然在不同应用领域占 15
相关推荐: