340 likes | 619 Views
第 10 章 数字签名. 数字签名特点: 签名不可伪造; 签名是可靠的; 签名不可重用; 签名不可改变; 签名不可抵赖。. 定义 10.0.1 :一个签名方案是一个 5 元组( M,A, K,S,V ) , 满足如下的条件: ( 1 ) M 是一个可能消息的有限集; ( 2 ) A 是一个可能签名的有限集; ( 3 )密钥空间 K 是一个可能密钥的有限集;
E N D
数字签名特点: • 签名不可伪造; • 签名是可靠的; • 签名不可重用; • 签名不可改变; • 签名不可抵赖。
定义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: M->A和Ver: M-> A{TRUE ,FALSE}是一个对每一个消息x M和每一个签名y A满足下列方程的函数: Ver(x,y)= (5)对每一个k,函数Sig和Ver都是多项式时间可计算的函数。Ver是一个公开函数,k1称作公钥;而Sig是一个秘密函数,k2称作私钥,由用户秘密地保存。
10.1基于RSA和离散对数的签名体制 10.1.1RSA签名方案 系统参数:设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)=TRUE ye=x(mod n). (x,y) ∈Zn×Zn.
带加密的签名 • 先签名再加密 • 先加密再签名
10.1.2 EIGAMAL签名方案及其一般化的模型 系统参数:设p是一大素数,g是Z的一个生成元,定义К={(p,g,y,x):y= gx mod p}其中x∈Z。 公开密钥 y,p,g 私有密钥 x 签名算法:对于К=(p,g,y,x)、随机数k∈Z和待签消息m,定义Sig(x,k)=(r,s). 这里的r=gkmod p; s=(m-xr)k-1 mod (p-1). (r,s)即为生成的签名。 验证算法:Ver(m,r,s)=TRUE yrrs=gmmod p
EIGAMAL签名方案的安全性分析 (1)本方案是基于离散对数问题的。 (2)对于随机数k应注意两方面的情况.首先,k不能泄露,其次,随机数不能重复使用。 (3)伪造签名攻击。 • 一般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,g∈Zp是Zp域中的q次单位根。定义К={(p,q,g,y,x):y=gx mod p} • 公开密钥:p,q,g,y • 私有密钥:x • 签名算法:对于随机数k∈Z和待签消息m∈Z,计算r= (gk mod p) mod q • s=(h(m)+xr)k-1mod q, 消息对(r,s)即为生成的签名。 • 验证算法:Ver(m,r,s)=TRUE • (ye2 ge1 mod p)modq=r • 其中 e1=h(m)s-1modq,e2=r s-1 modq
10.1.4Lamport签名方案 系统参数:设k是一个正整数,P={0,1}k,假设f:Y→Z是一单向Hash函数,A=Yk,随机选择yij∈Y这里1≦i ≦ k,j=0,1且zij=f(yij),1 ≦ i ≦ k, j=0,1. 私有密钥:yij, 1≦i ≦ k,j=0,1 公开密钥:zij,1 ≦ i ≦ k,j=0,1 签名算法: Sig (x1,…,xk)=(y1x1,…,ykxk) 验证算法: Ver( x1,…,xk,a1,…,ak)=TRUE f(ai)=zixi,1 ≦ i ≦ k
10.1.5不可否认签名方案 系统参数:设p=2q+1是一个素数,这里的q是素数且Zp中的离散对数问题是难解决的,α是 Z域中的q次单位根,1≦a ≦q-1,设G表示阶为q的Z的乘法 子群,M=A=G,且定义 К={(p,α,β,a): β= αa mod p } 私有密钥 a, 公开密钥 p, α,β。 签名算法:设待签消息为x∈G, y=Sig(x)=xamodp, 这里y ∈G。 验证协议:1.A随机选取e1 ,e2 ∈Z。 2.A计算c=ye1βe2 mod p且把它传给B. 3.B计算d=c modp,并将其传给A. 4.A接受y,并将它作为一有效签名当且仅当 d=xe1αe1mod p
否认协议如下: • A随机选取e1 ,e2∈ Z. • A计算c=ye1βe2 mod p且把它传给B • B计算d=c modp,并将其传给A. • A证实d≠xe1αe2modp. • A随机选取f1 ,f2 ∈ Z. • A计算c’= yf1βf2 modp且把它传给B • B计算d’=c’ modp,并将其传给A • A验证d’≠xf1αf2modp . • A推出y是伪造的当且仅当 (d α-e2)f1=( d’ α-f2 )e1mod p
不可否认签名方案的安全性分析 • 定理10.1.1:当y≠xamod p时,则A接受y作为x的真正签名的概率为1/q。 • 定理10.1.2:若y≠xamod p 且A和B都遵守否认协议,则(dα-e2)f1=(d’α-f2 )e1mod p • 定理10.1.3: 若y=xamod p且A遵守否认协议,又 d≠xe1αe2mod p ,d’≠xf1αf2modp 则(dα-e2)f1=(d’α-f2 )e1mod p成立的概率为1-1/q。
10.1.6故障停止式签名方案 • 系统参数 • 签名算法:对于k={(γ1,γ2,a1,a2,b1,b2)}和待签消息x ∈Z,定义Sig(x)=(y1,y2), y1=a1+xb1 modq y2=a2+xb2 modq 消息对(y1,y2)即为生成的签名。 • 验证算法:对y=(y1,y2) ∈ Z×Z,我们有 Ver( x,y)=TRUE γ1γ2x=αy1βy2modp
10.1.7 Schnorr数字签名方案 • 系统参数 • 签名算法 对于待签消息m∈Z,选择随机数k(1<k<q),计算r=gkmodp, e=h(r,m), 从签名方程s=k-xe modq中解出s,消息对(e,s)即为生成的签名。 • 验证算法 收方在收到消息m和数字签名(e,s)后 计算r’=gsyemodp则 Ver(m,(e,s))=TRUE h(r’,m)=e
Schnorr数字签名方案的安全性分析 (1)EIGAMAL系统中g为Zp中的本原元,而于Schnorr系统中则不是。从安全的角度来看,EIGAMAL安全性较高,这是因为本原元的阶为 p-1 ,而Schnorr系统中g的的阶为q(>2160),在此阶下,基于离散对数问题的体制是否安全有待进一步研究。 (2)Schnorr系统的签名文较短,e的长度由函数h决定。s的长度小于|q|。若h的输出长度为128位,|q|为160位,则其签名长度为288位,比EIGAMAL系统的1024位小. (3)Schnorr首先提出r= gkmod p可以事先计算,由于k是与m无关的随机数,故Schnorr系统在签名中只需一次乘法及减法(模运算),比EIGAMAL系统快很多。因此,Schnorr数字签名方案特别适合于智能卡的应用。
10.2 群签名 • 一般说来,群签名方案由组、组成员(签名者)、签名接受者(签名验证者)和权威(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函数,IDG为GC的身份消息。 签名组的公钥:(n, γ,g,f,h, IDG), 签名组的私钥:(d, p’,q’)。 设IDA为组成员A的身份消息,A随机选取sA∈(0,f)并将消息(IDA,gsAmod 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). 身份验证算法:gz1=(Vr2-γ)(gsA)e mod n ,其中 r2=z2xA-e(mod n)
K-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’ 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).对任意的消息,都可以产生有效的群签名,而权威无法辨认签名用户。如果组中两成员共谋,利用上述方法同样可产生有效的群签名,而权威无法辨认签名用户。
U 签名验证 者 签名收集者 消息发送者 U U 10.3 多重数字签名方案 • 广播多重数字签名方案(Broadcasting Multisignature)
EIGAMAL有序多重数字签名方案 (1)系统初始化 (2)签名算法 签名者Ui (i=2,…,n)收到上一签名者发送的待签消息(m,(si-1,ri-1))(s=0)后做如下的工作:首先随机选取ki∈ [1,p-1],计算ri=gkimodp,si=si-1+m’xi-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的签名进行验证. 对于Ui (i=2,…,n)通过验证等式g = modp是否成立,来判断U1,U2,…Ui-1的签名是否有效。若等式成立则有效,反之无效。 对于验证者Uv通过验证等式是否成立来判断U1,U2,…Un的签名是否有效。若等式成立则有效,反之无效。
HARN广播多重数字签名方案 (1)系统初始化 (2)单用户签名的产生 (3)单用户签名的验证 (4)多重签名的产生 (5)多重签名的验证
10.4代理数字签名体制 • 定义10.4.1:设A,B是某个数字签名体制(M,A,K,S,V)的两个用户,他们的私钥和公钥对分别是(x,y),(x,y).如果满足下列条件: • (1)A利用它的秘密密钥x计算出一个数,并将秘密交给B; • (2)任何人(包括B)在试图求出x时,不会对他有任何帮助; • (3)B可以用和x生成一新的签名密钥; • (4)存在一个公开的验证算法Ver,使得对任何s和mM都有Ver(y,s,m)=TRUEs=Sig(,m); • (5)任何人在试图求出x,x,或时,任何数字签名Sig(,m)都不会对他产生帮助。
代理签名体制具有下面的特定的安全特性: • 可区别性。任何人都可区别代理签名和正常的签名。 • 不可伪造性。只有原始签名者和指定的代理签名者能够产生有效的代理签名。 • 代理签名者的不符合性。代理签名者必须创建一个能检测到是代理签名的有效代理签名。 • 可验证性。从代理签名中,验证者能够相信原始的签名者认同了这份签名消息。 • 可识别性。原始签名者能够从代理签名中识别代理签名者的身份。 • 不可抵赖性。代理签名者不能否认他创立的且被认可的代理签名。 • 可注销性。如果原始签名者希望代理签名人只能在一定时间内拥有生成代理签名的能力,那么必须能让代理签名人的代理签名密钥在指定时间内失去作用。
系统参数:(M,A,K,S,V)是一基于离散对数问题的签名体制,其参数p,q,g满足系统参数:(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随机选择一整数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.
安全性分析 • (1)基本的不可伪造性.在这个代理签名体制中,B难以根据所得到的(,K)计算出x,从而不能伪造A的普通数字签名。由此说明任何其他的攻击者都难以伪造A的普通数字签名. • (2)代理签名的不可伪造性。由于A和B都知道(,K),所以,A和B都能生成代理签名。但是除了A和B以外,其他任何人都难以伪造一个有效的代理签名。 • (3)代理签名的可区分性。代理签名(s,K)有两部分组成,一部分是普通数字签名s,另一部分是某个数K.由于代理签名比普通签名多出一部分,所以,容易将代理签名与普通的数字签名区分开。假如除了B以外,还有另外一个代理签名人C,A在委托过程中发送给C的消息是(,K).这里的K=gmodp, k,于是C生成的代理签名体制的形式一定为(s,K),可以看出,由于k,所以K,从而将B和C生成的代理签名区分开。 • (4)不可抵赖性。由于任何人都不能伪造A的普通数字签名,所以A不能否认他的一个有效的普通签名。由于除了A和B外,任何人都不能伪造B的代理签名,所以A和B都不能否认一个有效的代理签名(s,K)是由他们中的某个人生成的。但是,A和B可以互相对有效的代理签名进行抵赖,声称它是由对方而不是由自己生成的。 • (5)身份证实性。在这个代理签名体制中,如果A向B发送了(,K)的时候,将K和B的身份保存在一起,那么当A看到一个有效的代理签名(s,K)的时候,就可以通过K确认B的身份。 • (6)密钥依赖性。在这个代理签名体制中,代理签名密钥是A的秘密密钥x的函数值,即它依赖于x。 • (7)可注销性。A如果想注销B拥有的代理签名密钥,那么就可以向大家“广播”一条消息(这个消息应该由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,P • G和满足关系式G=I,这里的I是kk阶单位矩阵,P和S分别是GF(2)上的nn阶和kk阶满秩的随机矩阵,和分别是它们的右逆阵. • 签名算法:若待签的消息MF, 用户1随机选取EF且 w(E)t,则签名如下: • Sig(M)=(E+MSG)P= C • 验证算法:由于信道中可能存在干扰,因此用户2收到的消息为 C=C+E=(E+MSG)P+E,(EF)计算 • D(C)= CT=[(E+MSG)P+E]PH= EH, • 这里的E=E+ EP,运用已知的译码算法如Berlekamp-Massy算法译码。当译码器发现w(E)>t,则要求用户重发签名,当E=0时,正确译码得到C和E. • Ver(M,C)=TRUE M =CJ+EW
安全性分析与改进 • Harn攻击 • Alabhadi-Wieker攻击
10.6 批验证协议 • 安全的批验证协议需满足如下的条件: • 签名者在签名过程中一次产生多个消息的签名; • 多个签名的有效性由签名验证者一次验证完成; • 多个有效的签名一定满足批验证协议中的批验证原则; • 在批验证协议中有效的多个签名一定是有效的签名。
HARN非交互式批验证协议 • 系统参数:设p是一512位到1024位的大素数,它满足Z中的离散对数问题是难解决的,q是160位长的素数,且q,g Z是Z域中的q次单位根。定义 • К={(p,q,g,y,x):y=gmodp}, • 公开密钥p,q,g,y, 私有密钥x。 • 签名算法:对于待签的消息m(i=1,2,…,t),签名者i随机选取kZ,计算r=gmodp, s= rk- h(m)x modq,{r,s}(i=1,2,…,t)即为生成的签名。 • 批验证算法:验证者收到消息的签名{r,s},{r,s},…,{r,s}后,验证 • Ver(m,s,r)=TRUE=gymodp modq
N-M-R-V交互式批验证协议 • 系统参数:设p是一512位到1024位的大素数,它满足Z中的离散对数问题是难解决的,q是160位长的素数,且q,g Z是Z域中的q次单位根。定义 • К={(p,q,g,y,x):y=gmodp} • 公开密钥p,q,g,y, 私有密钥x。 • 签名算法:对于消息m(i=1,2,…,t),签名者i随机选取kZ ,计算r=gmodp,并将r发送到验证者;验证者随机选取一个e比特位的随机数b,并将b发送到签名者i; • 签名者计算s=k(h(m,b)+rx)mod q,(s,r,b)即为i对消息m的签名。 • 批验证算法:验证者收到签名(s,r,b)后,验证 • Ver(m,s,r,b)=TRUE=gymod p