资源描述:
《第十章数字签名与认证协议》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十章数字签名与认证协议1EIGamal签名方案该方案是特别为签名的目的而设计的。1985年提出,很大程度上为Diffe-Hellman密钥交换算法的推广和变形。这个方案的改进已被美国NIST(国家标准和技术研究所)采纳作为数字签名标准。方案:P为素数,FP中的离散对数问题是难处理的。取本原元Fp*,消息集合M=Fp*,签名集合A=Fp*Zp-1,定义K={(p,,a,)
2、=a(modp)},值p,和是公开的,a是保密的。对K=(p,,a,)和一个(秘密)随机数kZp-1*,对消息xM进
3、行签名:SigK(x,k)=(,),其中,=k(modp),=(x-)k-1(modp-1)对x,Fp*和Zp-1,验证签名定义为Ver(x,,)=真(true)x(modp)对EIGamal签名方案安全性的讨论:若Oscar在不知道a的情况下企图伪造一个给定消息x的签名:Sigoscar(x,k)=(,)(1)Oscar先选定一个,然后企图找,这样,他就必须解一个关于未知数的方程:x(modp)这个方程是一个已知无可行解法的难处理问题!(2)Osca
4、r先选定一个,使其满足:x(modp),于是,-x(modp),这样,他就必须计算离散对数log(-x)=?,这自然是难处理的问题!(3)若两者,都被Oscar首先选定,然后企图解出一个随机消息x,使得x(modp),于是Oscar利用这种方式也不能伪造随机消息的签名。(4)Oscar同时选择,和x来伪造签名问题:假设i和j是整数,0<=I<=p-2,0<=j<=p-2,且(j,p-1)=1,先完成下列计算:ij(modp)-j-1(modp-1
5、)x=-ij-1(modp-1)(其中j-1是用模p-1来计算的)可以证实(,)是一个消息x的有效签名:例子:假设p=467,=2和=132,它们为Bob公开的签名方案中的参数。Oscar利用这些参数伪造对一随机信息x的签名:选择i=99和j=179,那么j-1(modp-1)=151,计算出下列的x,,:那么(117,41)是消息331的一个有效签名。验证:因此,这个伪造的签名有效!(5)其他类型的伪造签名:Oscar依据Bob已签名的消息来做伪签名。假设(,)是一个消息x的有效签名,那么Os
6、car可以用此来伪签其它消息:设h,i,j为整数,0<=h,i,j<=p-2且,计算(其中是模p-1算出)然后可验证出因此,为假消息的一个有效签名讨论两个问题:(1)用EIGamal方案计算一个签名时,使用的随机数k为什么不能泄露?(2)若Bob用相同的值来签名不同的两份消息,Oscar能否攻破这个体制?2数字签名标准公布于1994年5月19日的联邦记录上,并于1994年12月1日采纳为标准DSS。DSS为EIGamal签名方案的改进。DSS:p为512bit的素数,q为160比特的素数,且q
7、p-1,Fp*
8、,且为模p的q次单位根。消息集合P=Fp*,签名集合A=FqFq,定义K={(p,,a,)
9、=a(modp)},值p,q,和是公开的,a是保密的。取xP,对K=(p,q,,a,)和一个(秘密)随机数k(1<=k<=q-1),定义SigK(x,k)=(,),其中,=k(modp)(modq),=(x+)k-1(modq)对xFp*和,Fq来说,按下述计算来验证签名的真伪:注:1*.DSS的使用涉及到Smart卡的使用,要求短的签名。DSS以一个巧妙的方法修改了EIGama
10、l方案,使得签名160bits消息产生一个320bit的签名,但是计算使用了512比特的模p.2*.要求在整个签名算法中,如果计算了一个值,程序自动拒绝,并且产生一个新的随机值计算新的签名,事实上,的发生概率大约为2-160.3*.DSS是一个产生签名比验证签名快得多的方案,验证签名太慢!4*.Smart卡的应用!!Smart卡有有限的处理能力,但是能与计算机进行通信。人们企图设计一种让Smart卡仅作小量运算的签名方案。该方案必须完成签名、验证签名两部分,而且方便安全。用DSS签名的例子:假设取q=101,p=
11、78*9+1=7879,3为F7879的一个本原元,所以能取=378(mod7879)=170为模p的q次单位根。假设a=75,那么a(mod7879)=4567.现在,假设Bob想签名一个消息x=1234,且他选择了随机值k=50,可算得k-1(mod101)=99,签名算出:=(17050(mod7879)(mod101)=2518(mod101)=94=