第 10 章 数字签名

32
第 10 第 第第第第

description

第 10 章 数字签名. 数字签名特点: 签名不可伪造; 签名是可靠的; 签名不可重用; 签名不可改变; 签名不可抵赖。. 定义 10.0.1 :一个签名方案是一个 5 元组( M,A, K,S,V ) , 满足如下的条件: ( 1 ) M 是一个可能消息的有限集; ( 2 ) A 是一个可能签名的有限集; ( 3 )密钥空间 K 是一个可能密钥的有限集; - PowerPoint PPT Presentation

Transcript of 第 10 章 数字签名

Page 1: 第 10 章 数字签名

第 10 章 数字签名

Page 2: 第 10 章 数字签名

数字签名特点:签名不可伪造;签名是可靠的;签名不可重用;签名不可改变;签名不可抵赖。

Page 3: 第 10 章 数字签名

定义 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 称作私钥,由用户秘密地保存。

2K

1K

)(y

)(

2

2

xSigFALSE

xSigyTRUE

K

K

当当

Page 4: 第 10 章 数字签名

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.

Page 5: 第 10 章 数字签名

带加密的签名先签名再加密先加密再签名

Page 6: 第 10 章 数字签名

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

Page 7: 第 10 章 数字签名

EIGAMAL 签名方案的安全性分析 ( 1 )本方案是基于离散对数问题的。 ( 2 )对于随机数 k 应注意两方面的情况 . 首先, k 不能泄

露,其次,随机数不能重复使用。( 3 )伪造签名攻击。 一般 ELGAMAL 签名方案( 1 )系统初始化( 2 )签名方程

Ax=Bk+Cmod(p-1) ( 3 )验证方程

yA=rBgC mod p

Page 8: 第 10 章 数字签名

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 qs=(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

Page 9: 第 10 章 数字签名

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)=TRUEf(ai)=zixi,1 ≦ i ≦ k

Page 10: 第 10 章 数字签名

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

qa mod1

Page 11: 第 10 章 数字签名

否认协议如下:1. A 随机选取 e1 , e2 Z.∈2. A 计算 c=ye1 βe2 mod p 且把它传给 B3. B 计算 d=c modp ,并将其传给 A .4. A 证实 d≠xe1αe2modp .5. A 随机选取 f1 ,f2 Z.∈6. A 计算 c’= yf1 βf2 modp 且把它传给 B7. B 计算 d’=c’ modp ,并将其传给 A8. A 验证 d’≠xf1αf2modp .9. A 推出 y 是伪造的当且仅当 (d α-e2)f1=( d’ α-f2 )e1mod p

qa mod1

qa mod1

Page 12: 第 10 章 数字签名

不可否认签名方案的安全性分析 定理 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 。

Page 13: 第 10 章 数字签名

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

Page 14: 第 10 章 数字签名

伪造证明算法

Page 15: 第 10 章 数字签名

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

Page 16: 第 10 章 数字签名

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 数字签名方案特别适合于智能卡的应用。

Page 17: 第 10 章 数字签名

10.2 群签名 一般说来,群签名方案由组、组成员(签名者)、

签名接受者(签名验证者)和权威 (Authority) 或GC(Group Center) 组成,具有如下特点:

(1) 只有组中的合法用户才能对消息签名,并产生群签名;

( 2 )签名的接收者能验证群签名的有效性;( 3 )签名的接收者不能辨认是谁的签名;(4) 一旦发生争论,群签名的权威或组中所有成员的

联合可以辨别出签名者。

Page 18: 第 10 章 数字签名

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) 并将消息 (ID

A,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=r2xA

e mod n 签名验证算法: e=h(V’,m), 这里的 V’= (IDG)egz1z2γ(mod n).

身份验证算法: gz1=(Vr2-γ)(gsA)e mod n ,其中 r2=z2xA-e(mod n)

Page 19: 第 10 章 数字签名

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-1

mod n 。对于任意的 sA,由于 A知道 IDG

-d 和 gd ,故可算出私钥( xA,sA ) . 对任意的消息,都可以产生有效的群签名,而权威无法辨认签名用户。如果组中两成员共谋,利用上述方法同样可产生有效的群签名 , 而权威无法辨认签名用户。

2')( fp

Page 20: 第 10 章 数字签名

10.3 多重数字签名方案广播多重数字签名方案( Broadcasting Mu

ltisignature )

消息发送者

U

U

U

签名收集者

签名验证 者

Page 21: 第 10 章 数字签名

有序多重数字签名方案 (Sequential Multisignature)

Page 22: 第 10 章 数字签名

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的签名是否有效。若等式成立则有效,反之无效。

1

1

i

j

rjjr

1

1

'i

j

mjy

Page 23: 第 10 章 数字签名

HARN广播多重数字签名方案 ( 1 )系统初始化 ( 2 )单用户签名的产生( 3 )单用户签名的验证( 4 )多重签名的产生 ( 5 )多重签名的验证

Page 24: 第 10 章 数字签名

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 和 m

M 都有 Ver(y,s,m)=TRUEs=Sig(,m); ( 5 )任何人在试图求出 x,x, 或时,任何数字签名 Sig(,

m) 都不会对他产生帮助。

Page 25: 第 10 章 数字签名

代理签名体制具有下面的特定的安全特性: 可区别性。任何人都可区别代理签名和正常的签名。 不可伪造性。只有原始签名者和指定的代理签名者能够产

生有效的代理签名。 代理签名者的不符合性。代理签名者必须创建一个能检测

到是代理签名的有效代理签名。 可验证性。从代理签名中,验证者能够相信原始的签名者

认同了这份签名消息。 可识别性。原始签名者能够从代理签名中识别代理签名者

的身份。 不可抵赖性。代理签名者不能否认他创立的且被认可的代理签名。

可注销性。如果原始签名者希望代理签名人只能在一定时间内拥有生成代理签名的能力,那么必须能让代理签名人的代理签名密钥在指定时间内失去作用。

Page 26: 第 10 章 数字签名

系统参数:(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.

Page 27: 第 10 章 数字签名

安全性分析 ( 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 生成的所有代理签名随之失效。

Page 28: 第 10 章 数字签名

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= 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

Page 29: 第 10 章 数字签名

安全性分析与改进 Harn 攻击 Alabhadi-Wieker 攻击

Page 30: 第 10 章 数字签名

10.6 批验证协议 安全的批验证协议需满足如下的条件: 签名者在签名过程中一次产生多个消息的签名; 多个签名的有效性由签名验证者一次验证完成; 多个有效的签名一定满足批验证协议中的批验证

原则; 在批验证协议中有效的多个签名一定是有效的签

名。

Page 31: 第 10 章 数字签名

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

Page 32: 第 10 章 数字签名

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