1、第10章 数字签名n数字签名特点:签名不可伪造;签名是可靠的;签名不可重用;签名不可改变;签名不可抵赖。n定义10.0.1:一个签名方案是一个5元组(M,A,K,S,V),满足如下的条件:(1)M是一个可能消息的有限集;(2)A是一个可能签名的有限集;(3)密钥空间K是一个可能密钥的有限集;(4)对每一个k=(k1,k2)K,都对应一个签名算法Sig S和验证算法Ver V。每一个Sig:MA和Ver:M ATRUE,FALSE是一个对每一个消息x M和每一个签名y A满足下列方程的函数:Ver(x,y)=(5)对每一个k,函数Sig和Ver都是多项式时间可计算的函数。Ver是一个公开函数,k
2、1称作公钥;而Sig是一个秘密函数,k2称作私钥,由用户秘密地保存。2K1K)(y)(22xSigFALSExSigyTRUEKK当当10.1基于基于RSA和离散对数的签名体制和离散对数的签名体制 10.1.1RSA签名方案签名方案n 系统参数:设n=pq,且p和q是两个大素数,则 M=A=Zn,定义=(n,d,p,q,e)这里e和d 满足ed 1(mod(n)(是欧拉函数)公开密钥 n,e.私有密钥 p,q,d.签名算法:Sigk2(x)=y=xd mod n 验证算法:Ver(x,y)=TRUEye x(mod n).(x,y)ZnZn.n带加密的签名先签名再加密先加密再签名10.1.2
3、EIGAMAL签名方案及其一般化的模型签名方案及其一般化的模型 系统参数:设p是一大素数,g是Z的一个生成元,定义=(p,g,y,x):y=gx mod p其中xZ。公开密钥 y,p,g 私有密钥 x签名算法:对于=(p,g,y,x)、随机数kZ和待签消息m,定义Sig(x,k)=(r,s).这里的r=gkmod p;s=(m-xr)k-1 mod(p-1).(r,s)即为生成的签名。验证算法:Ver(m,r,s)=TRUEyrrs=gmmod pnEIGAMAL签名方案的安全性分析签名方案的安全性分析(1)本方案是基于离散对数问题的。(2)对于随机数k应注意两方面的情况.首先,k不能泄露,其
4、次,随机数不能重复使用。(3)伪造签名攻击。n一般ELGAMAL签名方案(1)系统初始化(2)签名方程Ax=Bk+Cmod(p-1)(3)验证方程yA=rBgC mod p 10.1.3 DSS 系统参数:设p是一512位到1024位的大素数,它满足Zp中的离散对数问题是难解决的,q是160位长的素数,且q|p-1,gZp是Zp域中的q次单位根。定义=(p,q,g,y,x):y=gx mod p公开密钥:p,q,g,y 私有密钥:x签名算法:对于随机数kZ和待签消息mZ,计算r=(gk mod p)mod qs=(h(m)+xr)k-1mod q,消息对(r,s)即为生成的签名。验证算法:Ve
5、r(m,r,s)=TRUE (ye2 ge1 mod p)modq=r 其中 e1=h(m)s-1modq,e2=r s-1 modq10.1.4Lamport签名方案签名方案系统参数:设k是一个正整数,P=0,1k,假设f:YZ是一单向Hash函数,A=Yk,随机选择yijY这里1i k,j=0,1且zij=f(yij),1 i k,j=0,1.私有密钥:yij,1i k,j=0,1公开密钥:zij,1 i k,j=0,1签名算法:Sig(x1,xk)=(y1x1,ykxk)验证算法:Ver(x1,xk,a1,ak)=TRUEf(ai)=zixi,1 i k10.1.5不可否认签名方案不可否
6、认签名方案 系统参数:设p=2q+1是一个素数,这里的q是素数且Zp中的离散对数问题是难解决的,是 Z域中的q次单位根,a q-1,设G表示阶为q的Z的乘法子群,M=A=G,且定义=(p,a):a mod p 私有密钥a,公开密钥 p,。签名算法:设待签消息为xG,y=Sig(x)=xamodp,这里y G。验证协议:.A随机选取e1,e2 Z。.A计算c=ye1 e2 mod p且把它传给B.B计算d=c modp,并将其传给A.A接受y,并将它作为一有效签名当且仅当 d=xe1 e1mod pqamod1n否认协议如下:nA随机选取e1,e2 Z.nA计算c=ye1 e2 mod p且把它
7、传给BnB计算d=c modp,并将其传给AnA证实dxe1e2modpnA随机选取f1,f2 Z.nA计算c=yf1 f2 modp且把它传给BnB计算d=c modp,并将其传给AnA验证dxf1f2modp nA推出y是伪造的当且仅当 (d-e2)f1=(d-f2)e1mod p qamod1qamod1n不可否认签名方案的安全性分析不可否认签名方案的安全性分析n定理定理10.1.1:当:当yxamod p时,则时,则A接受接受y作为作为x的真正签名的概率为的真正签名的概率为1/q。n定理定理10.1.2:若:若yxamod p 且且A和和B都遵守都遵守否认协议,则否认协议,则(d-e2
8、)f1=(d-f2)e1mod p n定理定理10.1.3:若若y=xamod p且且A遵守否认协遵守否认协议,又议,又 dxe1e2mod p,dxf1f2modp 则则(d-e2)f1=(d-f2)e1mod p成立的概率为成立的概率为1-1/q。10.1.6故障停止式签名方案n系统参数n签名算法签名算法:对于k=(1,2,a1,a2,b1,b2)和待签消息x Z,定义Sig(x)=(y1,y2),y1=a1+xb1 modq y2=a2+xb2 modq 消息对(y1,y2)即为生成的签名。n验证算法验证算法:对y=(y1,y2)ZZ,我们有Ver(x,y)=TRUE12x=y1y2mo
9、dp n伪造证明算法10.1.7 Schnorr数字签名方案数字签名方案 n系统参数n签名算法 对于待签消息mZ,选择随机数k(1k2160),在此阶下,基于离散对数问题的体制是否安全有待进一步研究。(2)Schnorr系统的签名文较短,e的长度由函数h决定。s的长度小于|q|。若h的输出长度为128位,|q|为160位,则其签名长度为288位,比EIGAMAL系统的1024位小.(3)Schnorr首先提出r=gkmod p可以事先计算,由于k是与m无关的随机数,故Schnorr系统在签名中只需一次乘法及减法(模运算),比EIGAMAL系统快很多。因此,Schnorr数字签名方案特别适合于智
10、能卡的应用。10.2 群签名群签名 n一般说来,群签名方案由组、组成员(签名者)、签名接受者(签名验证者)和权威(Authority)或GC(Group Center)组成,具有如下特点:(1)只有组中的合法用户才能对消息签名,并产生群签名;(2)签名的接收者能验证群签名的有效性;(3)签名的接收者不能辨认是谁的签名;(4)一旦发生争论,群签名的权威或组中所有成员的联合可以辨别出签名者。K-P-W可变群签名方案 系统参数;选择 n=pq=(2fp+1)(2fq+1),这里的p,q,f,p和q为相异的大素数,g的阶为f,和d为整数,且d=1mod(n),gcd(,(n)=1,h为安全的hash函
11、数,IDG为GC的身份消息。签名组的公钥:(n,g,f,h,IDG),签名组的私钥:(d,p,q)。设IDA为组成员A的身份消息,A随机选取sA(0,f)并将消息(IDA,gsA mod n)发送给GC。GC计算xA=(IDG)-dmod n,并将xA秘密地传送给成员A。则A的私有密钥:(xA,sA)。签名算法:对于待签消息m:组中成员A随机选择整数(r1,r2),计算V=gr1r2 mod n,e=h(V,m)则群签名为(e,z1,z2),其中z1=r1+sAe(mod f),z2=r2xAe mod n 签名验证算法:e=h(V,m),这里的V=(IDG)egz1z2(mod n).身份验
12、证算法:gz1=(Vr2-)(gsA)e mod n,其中 r2=z2xA-e(mod n)nK-P-W可变群签名方案的安全性分析可变群签名方案的安全性分析(1)当p和q具有相同的比特位时,攻击者可以采用对参数n进行因子分解的方法。分解n=pq=(2fp+1)(2fq+1)只需要 2 次整数乘法,这里的x为x的比特位数。(2)在组中成员诚实的情况下,虽说权威能辨别出签名者签名。可是当组中的成员伪造或共谋伪造时,仍能生成有效的签名。设组中成员A随机选取整数a和b,计算 sA=ab mod f 和 sA=sA+b mod f,将(sA,sA)作为A的私钥,公钥为yA=gsAmod n,yA=gsA
13、 mod n,从GC处秘密地收到私钥 xA和xA,则有gbd=xA(xA)-1 mod n,IDG-d=xA(gbd)a mod n,于是可以得到gd=(gbd)b-1mod n。对于任意的sA,由于A知道IDG-d 和gd,故可算出私钥(xA,sA).对任意的消息,都可以产生有效的群签名,而权威无法辨认签名用户。如果组中两成员共谋,利用上述方法同样可产生有效的群签名,而权威无法辨认签名用户。2)(fp10.3 多重数字签名方案多重数字签名方案n广播多重数字签名方案(Broadcasting Multisignature)消息发送者UUU签名收集者 签名验证 者n有序多重数字签名方案(Sequ
14、ential Multisignature)nEIGAMAL有序多重数字签名方案(1)系统初始化(2)签名算法签名者Ui(i=2,n)收到上一签名者发送的待签消息(m,(si-1,ri-1)(s=0)后做如下的工作:首先随机选取ki 1,p-1,计算ri=gkimodp,si=si-1+mxi-rikimod(p)这里的 m=h(m),最后将签名消息(m,(si,ri)发给下一个签名者Ui+1,并将ri发给Ui以后的签名者和签名验证者。(3)验证算法 验证包括两方面的要求:签名者Ui(i=2,n)要对U1,U2,Ui-1的签名的有效性进行验证;验证者Uv要对所有签名者U1,U2,Un的签名进行
15、验证.对于Ui(i=2,n)通过验证等式g =modp是否成立,来判断U1,U2,Ui-1的签名是否有效。若等式成立则有效,反之无效。对于验证者Uv通过验证等式是否成立来判断U1,U2,Un的签名是否有效。若等式成立则有效,反之无效。11ijrjjr11ijmjynHARN广播多重数字签名方案(1)系统初始化(2)单用户签名的产生(3)单用户签名的验证(4)多重签名的产生(5)多重签名的验证 10.4代理数字签名体制代理数字签名体制 n定义10.4.1:设A,B是某个数字签名体制(M,A,K,S,V)的两个用户,他们的私钥和公钥对分别是(x,y),(x,y).如果满足下列条件:n(1)A利用它
16、的秘密密钥x计算出一个数,并将秘密交给B;n(2)任何人(包括B)在试图求出x时,不会对他有任何帮助;n(3)B可以用和x生成一新的签名密钥;n(4)存在一个公开的验证算法Ver,使得对任何s和mM都有Ver(y,s,m)=TRUEs=Sig(,m);n(5)任何人在试图求出x,x,或时,任何数字签名Sig(,m)都不会对他产生帮助。n代理签名体制具有下面的特定的安全特性:n可区别性。任何人都可区别代理签名和正常的签名。n不可伪造性。只有原始签名者和指定的代理签名者能够产生有效的代理签名。n代理签名者的不符合性。代理签名者必须创建一个能检测到是代理签名的有效代理签名。n可验证性。从代理签名中,
17、验证者能够相信原始的签名者认同了这份签名消息。n可识别性。原始签名者能够从代理签名中识别代理签名者的身份。n不可抵赖性。代理签名者不能否认他创立的且被认可的代理签名。n可注销性。如果原始签名者希望代理签名人只能在一定时间内拥有生成代理签名的能力,那么必须能让代理签名人的代理签名密钥在指定时间内失去作用。系统参数:(M,A,K,S,V)是一基于离散对数问题的签名体制,其参数p,q,g满足p是一大素数,它满足Z中的离散对数问题是难解决的。q是大素数,且q,g Z是Z域中的q次单位根。用户A和B的私钥和公钥对分别是(x,y),(x,y),这里的y=gmodp,y=gmodp。委托过程:A随机选择一整
18、数k Z,计算K=gmodp,=x+kKmodq,将(,K)秘密传给B.B收到消息后验证等式g=yKmodp是否成立。代理签名的生成算法:对于待签消息m,B生成普通的数字签名s=Sig(,m),将(s,K)作为他代表A对消息m的数字签名,即代理签名。代理签名的验证算法:当代理签名的接收者收到了消息m和代理签名(s,K)后,计算v=yKmodp;验证 Ver(y,(s,K),m)=TRUE Ver(v,s,m)=TRUE.n安全性分析安全性分析 n(1)基本的不可伪造性.在这个代理签名体制中,B难以根据所得到的(,K)计算出x,从而不能伪造A的普通数字签名。由此说明任何其他的攻击者都难以伪造A的
19、普通数字签名.n(2)代理签名的不可伪造性。由于A和B都知道(,K),所以,A和B都能生成代理签名。但是除了A和B以外,其他任何人都难以伪造一个有效的代理签名。n(3)代理签名的可区分性。代理签名(s,K)有两部分组成,一部分是普通数字签名s,另一部分是某个数K.由于代理签名比普通签名多出一部分,所以,容易将代理签名与普通的数字签名区分开。假如除了B以外,还有另外一个代理签名人C,A在委托过程中发送给C的消息是(,K).这里的K=gmodp,k,于是C生成的代理签名体制的形式一定为(s,K),可以看出,由于k,所以K,从而将B和C生成的代理签名区分开。n(4)不可抵赖性。由于任何人都不能伪造A
20、的普通数字签名,所以A不能否认他的一个有效的普通签名。由于除了A和B外,任何人都不能伪造B的代理签名,所以A和B都不能否认一个有效的代理签名(s,K)是由他们中的某个人生成的。但是,A和B可以互相对有效的代理签名进行抵赖,声称它是由对方而不是由自己生成的。n(5)身份证实性。在这个代理签名体制中,如果A向B发送了(,K)的时候,将K和B的身份保存在一起,那么当A看到一个有效的代理签名(s,K)的时候,就可以通过K确认B的身份。n(6)密钥依赖性。在这个代理签名体制中,代理签名密钥是A的秘密密钥x的函数值,即它依赖于x。n(7)可注销性。A如果想注销B拥有的代理签名密钥,那么就可以向大家“广播”
21、一条消息(这个消息应该由A签名),宣布K不再有效,从而B生成的所有代理签名随之失效。10.5基于纠错码的数字签名体制 系统参数:用户选择一个可纠t个错误的GF(2)上的n,k,d 既约Goppa 码C,这里的d2t+1,或者有大码类的其它码。码C的生成矩阵和校验矩阵分别为kn 阶的G和(n-k)n 阶的H。用户的公开密钥:J=,=,=,H,.用户的私有密钥:S,G,PG和满足关系式G=I,这里的I是kk阶单位矩阵,P和S分别是GF(2)上的nn阶和kk阶满秩的随机矩阵,和分别是它们的右逆阵.签名算法:若待签的消息MF,用户1随机选取EF且 w(E)t,则签名如下:Sig(M)=(E+MSG)P
22、=C验证算法:由于信道中可能存在干扰,因此用户2收到的消息为 C=C+E=(E+MSG)P+E,(EF)计算D(C)=CT=(E+MSG)P+EPH=EH,这里的E=E+EP,运用已知的译码算法如Berlekamp-Massy算法译码。当译码器发现w(E)t,则要求用户重发签名,当E=0时,正确译码得到C和E.Ver(M,C)=TRUE M=CJ+EWn安全性分析与改进安全性分析与改进 nHarn攻击 nAlabhadi-Wieker攻击 10.6 批验证协议批验证协议 n 安全的批验证协议需满足如下的条件:n签名者在签名过程中一次产生多个消息的签名;n多个签名的有效性由签名验证者一次验证完成
23、;n多个有效的签名一定满足批验证协议中的批验证原则;n在批验证协议中有效的多个签名一定是有效的签名。nHARN非交互式批验证协议n系统参数:设p是一512位到1024位的大素数,它满足Z中的离散对数问题是难解决的,q是160位长的素数,且q,g Z是Z域中的q次单位根。定义n=(p,q,g,y,x):y=gmodp,n公开密钥p,q,g,y,私有密钥x。n签名算法:对于待签的消息m(i=1,2,t),签名者i随机选取kZ,计算r=gmodp,s=rk-h(m)x modq,r,s(i=1,2,t)即为生成的签名。n批验证算法:验证者收到消息的签名r,s,r,s,r,s后,验证nVer(m,s,
24、r)=TRUE=gymodp modq nN-M-R-V交互式批验证协议 n系统参数:设p是一512位到1024位的大素数,它满足Z中的离散对数问题是难解决的,q是160位长的素数,且q,g Z是Z域中的q次单位根。定义n=(p,q,g,y,x):y=gmodpn公开密钥p,q,g,y,私有密钥x。n签名算法:对于消息m(i=1,2,t),签名者i随机选取kZ,计算r=gmodp,并将r发送到验证者;验证者随机选取一个e比特位的随机数b,并将b发送到签名者i;n签名者计算s=k(h(m,b)+rx)mod q,(s,r,b)即为i对消息m的签名。n批验证算法:验证者收到签名(s,r,b)后,验证nVer(m,s,r,b)=TRUE=gymod p
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。