1、第七章 数字签名,7.1 基于公钥密码的数字签名,数字签名,主要用于对数字消息(digital message)进行签名,以防消息的冒名伪造和篡改,亦可以用于通信双方的身份鉴别。,数字签名(digital signature),数字签名具有以下特性:,签名是不可伪造的:除了合法的签名者之外,任何其他人伪造签名是困难的。签名是不可复制的:对一个消息的签名不能通过复制变为另一个消息的签名。如果对一个消息的签名是从别处复制得到的,则任何人都可以发现消息与签名之间的不一致性,从而可拒绝签名的消息。签名是可信的:任何人都可以验证签名的有效性。签名的消息是不可改变的:经签名的消息不能被篡改。一旦签名的消息
2、被篡改,则任何人都可以发现消息与签名之间的不一致性。签名是不可抵赖的:签名者事后不能否认自己的签名。,(1)Alice用其保密的解密密钥对消息m加密.密文s就是Alice对消息的签名。(2)Alice将签名的消息(m,s)传送给Bob。(3)Bob用Alice的公开密钥对s进行解密,得到m。如果mm,则确认s是消息的有效签名。,7.1 基于公钥密码的数字签名,基于公钥密码的一般数字签名方案的签名和验证过程,并不是每一个公钥密码体制都可以按上述方式来设计数字签名方案,只有满足,的公钥密码体制才可以按上述方式来设计数字签名方案,这里 和 分别是公钥密码的加密变换和解密变换,和 分别是公钥密码的加密
3、密钥和解密密钥。,基于RSA公钥密码体制的数字签名方案通常称为RSA数字签名方案。,(1)秘密选取两个大素数p和q。(2)计算n=pq,(n)=(p-1)(q-1).n公开,(n)保密。(3)随机选取正整数1e(n),满足 gcd(e,(n)=1.e是公开的密钥。(4)计算d,满足d1(mod(n).d是保密的密钥。(5)签名变换:对于消息 m Zn,签名为(6)签名验证:对于m,s Zn,如果 m=se mod n,则确认s为有效签名。,RSA数字签名方案:,RSA数字签名方案的缺陷,(1)因为对任意y Zn,任何人都可以计算 x=ye mod n,所以任何人都可以伪造对随机消息 x 的签名
4、 y。(2)如果消息 x1和x2的签名分别是y1和y2,则任何知道x1,y1,x2,y2的人都可以伪造对随机消息x1x2的签名y1y2,这是因为在RSA数字签名方案中,Sig(x1x2)Sig(x1)Sig(x2)。(3)由于在RSA数字签名方案中,要签名的信息xZn,所以每次只能对 位长的消息进行签名。一般说来,实际应用中要签名的消息都比较长,可能比n大。在这种情况下,我们先对消息进行分组,然后对每组消息分别进行签名,这样做的不良后果是签名变长,签名速度变慢。,克服方法:,对消息进行签名之前先对消息作Hash变换,然后对变换后的消息进行签名。,7.2 ElGamal 签名方案,由T.ElGa
5、mal于1985年提出,其安全性主要是基于有限域上离散对数问题的难解性。,ElGamal 签名方案描述如下:,(1)选取大素数 是一个本原元。P和g公开。,(2)随机选取整数x,1xp-2。计算 y是公开的密钥,x是保密的密钥。,(3)签名变换:设 是待签名的消息。秘密随机选取一个整数k,1kp-2,(k,p-1)=1,对消息m的签名为,如果,则确认了(,)为消息m的有效签名。,在ElGamal 签名方案中,签名过程需要保密的密钥x和一个秘密的随机数k,而对签名进行验证则只需要公开的参数。,期中,(4)签名验证:对于,例7.1 设p=11,g=2,x=3,求y=?,并对m=5签名。,7.3 数
6、字签名标准DSS,1991年8月,美国国家标准技术研究所提出了数字签名算法DSA(Digital Signature Algorithm)用于其数字签名标准DSS(Digital Signature Standard)。DSA的安全性主要是基于有限域上离散对数问题的难解性。,DSA中的参数为,(1)p是一个素数,2L-1p2L,其中L是一个指定的整数,L512+64j,0j8。显然,p的长度为L比特,L至少为512并且是64的倍数。,(2)q是p-1的一个素因子,2159q2160,即q的长度为160比特。,(3)g=h(p-1)/qmod p,其中h是一个整数,满足11.(4)随机选取整数x
7、,0 xq.(5)ygxmod p.在上述参数中,p和q以及g是公开的参数,x和y分别是用户的私钥和公钥,x保密,y公开。另外,根据Fermat定理,显然有 gq mod p=hp-1 mod p=1.,DSA的签名过程为,(1)Alice秘密随机选取整数k,0kq.(2)Alice计算 r=(gkmod p)mod q,S=(k-1(H(m)+xr)mod q.(r,s)为Alice对消息m的签名。在上述签名过程中,H是一个安全的Hash函数,m是要签名的消息,k是随机秘密选取的整数。为安全起见,每次签名应当选取不同的k。,DSA的签名验证过程为,(1)Bob计算 s-1 mod q u1=
8、H(m)mod q u2=rmod q(2)如果 则Bob确认(r,s)是Alice对消息m的有效签名;否则,签名无效。,7.4 基于离散对数问题的一般数字签名方案,(1)选取一个大素数p和q,q|(p-1).选取1gp满足 gq mod p=1.p,q以及g都公开。(2)Alice选取1xq,计算y=gx mod p.x保密,y公开。(3)签名过程:Alice秘密随机选取整数1kq,首先计算 r=gk mod p,再计算满足 ak=(b+cx)mod q(7.1)的s,则(r,s)就是Alice对消息m的签名。,式(7.1)中a,b,c的取值可以是表7.1中任一行的任意一个排列。表7.1中的
9、r=r mod q.,表 7.1 式(7.1)中a,b,c的取值,(4)签名验证过程:,如果 ra=gb yc mod p(7.2)成立,则Bob确认(r,s)就是Alice对消息的有效签名。,式(7.1)和式(7.2)分别称为签名方案的签名等式和验证等式。,表7.2列出了当 时的签名等式和验证等式。表7.2实际上是给出了6个不同的基于离散对数问题的签名方案。,表7.2 基于一些离散对数的签名方案,根据表7.1中列出的a,b,c的不同取值,可以得到120个不同的基于有限域上离散对数的签名方案。,基于有限域上离散对数问题的签名方案可以移植到椭圆曲线上。另外,我们还可以设计一些具有特殊性质的数字签名方案。譬如:盲签名(blind signature)、不可否认签名(undeniable signature)、防失败签名(fail-stop signature)以及群签名(group signature)等。,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1