1/34第1章密码学概述第2章古典密码技术第3章分组密码第4章公钥密码体制第5章散列函数与消息鉴别第6章数字签名技术第7章密钥管理技术第8章身份鉴别技术第9章序列密码基础第10章密码技术应用课程主要内容四川大学电子信息学院2/34本章主要内容6.1数字签名概述6.2基于公钥密码体制的典型数字签名方案RSA数字签名方案ElGamal数字签名方案数字签名标准DSS基于椭圆曲线密码的数字签名算法ECDSA6.3特殊数字签名方案不可否认签名盲数字签名群签名四川大学电子信息学院3/34数字签名的主要作用:将消息和拥有消息的实体可信地联系起来。数字签名在信息安全,包括鉴别、数据完整性、抗抵赖性等方面,特别是在大型网络安全通信中的密钥分配、鉴别及电子商务系统中,具有重要作用。6.1数字签名概述数字签名普通签名特殊签名代理签名、不可否认签名、盲签名、公平盲签名、群签名、门限签名、一次性签名等。四川大学电子信息学院4/341.传统签名及其应用:手写签名与印章。(1)对其所签署的文件进行确认;(2)如果日后签署文件的双方针对文件的内容发生争执,根据签署文件时留下的签名,第三方可以对签名进行检查以便对争执进行调解。2.数字签名是一种作用类似于传统的手书签名或印章的电子标记,它可以达到与手写签名类似的作用,即使用数字签名。定义:数字签名是这样一种鉴别机制,它可以使一个报文附加上一段起到签名作用的代码。这个代码可保证报文的来源和完整性。数字签名概述(续)四川大学电子信息学院5/34(1)签名是不可伪造的;除了合法的签名者之外,任何其他人伪造其签名是困难的。(2)签名是不可抵赖的:签名者事后不能否认自己的签名。(3)签名是可信的:任何人都可以验证签名的有效性。(4)签名是不可复制的:对一个消息的签名不能通过复制变为另一个消息的签名。如果对一个消息的签名是从别处复制得到的,则任何人都可以发现消息与签名之间的不一致性,从而可以拒绝签名的消息。(5)签名的消息是不可篡改的:经签名的消息不能被篡改。一旦签名的消息被篡改,则任何人都可以发现消息与签名之间的不一致性。3.数字签名应具有的特性四川大学电子信息学院6/34(1)数字签名:签名与消息是分开的,需要一种方法将签名与消息绑定在一起。手写签名:签名认为是被签名消息的一部分。(2)数字签名:在签名验证的方法上,数字签名利用一种公开的方法对签名进行验证,任何人都可以对签名进行验证。手写签名:验证是由经验丰富的消息接收者通过同以前的签名相比较而进行的。(3)数字签名:有效签名的容易被复制(拷贝)。因此,在数字签名方案的设计中要预防签名的再用。手写签名:签名的复制是无效的。4.数字签名与传统手写签名的比较7/34验证算法返回的结果为布尔值,“真(true)”或“假(false)”,即:Ver(M,S)=truefalse;S=Sig(M);S≠Sig(M)验证算法的结果表示了签名是否真实可靠。签名算法(SignatureAlgorithm):签名密钥一定是秘密的。签名者A对消息M使用签名算法,记作S=Sig(M),有时为了强调用户A或所使用的签名密钥k,签名算法也记为S=SigA(M)或S=Sigk(M)验证算法(VerificationAlgorithm):验证算法及有关参数一定是公开的。验证者可以通过验证算法,记作Ver(M,S),有时为了强调用户A或所使用的签名密钥k,也记为VerA(M,S)或Verk(M,S)判断其真实性。5.数字签名方案的组成部分8/34签名必须依赖于被签名消息的比特模式(签名与消息应该是一个不可分割的整体);签名必须使用某些对发送者是唯一的信息,以防止伪造和抵赖;数字签名的产生、识别和验证应该相对容易;伪造一个数字签名在计算上是不可行的;(无论是通过对已有的数字签名来构造新报文,还是对给定的报文伪造一个数字签名)6.数字签名的设计要求9/34为了保证签名的有效性,对消息进行签名的签名者与对签名进行验证的验证者绝对不能拥有完全相同的用于签名和验证的信息,因为一旦验证者能够用与签名者相同的信息(参数和算法)来验证报文与签名,那么他同样可以伪造报文与签名。公开密钥密码体制很好地满足了这一要求。7.基于公开密钥密码体制的数字签名带有消息恢复的数字签名方案MEEKRa(M)KRaDKUaM公钥加密:鉴别和数字签名四川大学电子信息学院10/34思考:该方法的问题?解决方案:将签名信息与报文分离,形成一个独立的签名块,无论报文多长,这个签名块的长度都是固定的。ME||MKRaH比较HEKRa(H(M))DKUaME||MKRaH比较HDKUaEKEKRa(H(M))EK[M||EKRa(H(M))]DK数字签名数字签名+机密性保护四川大学电子信息学院11/346.3数字签名的执行方式数字签名的执行方式有两类:直接数字签名方式和具有仲裁的数字签名方式。1.直接数字签名方式直接方式是指数字签名的执行过程只有通信双方参与,并假定双方有共享的秘密密钥,或者接收一方知道发方的公开密钥。直接数字签名的局限性:方案的有效性依赖于发送方秘密密钥的安全性。四川大学电子信息学院12/34数字签名的执行方式(续)具有仲裁的数字签名是在通信双方的基础上引入了第三方仲裁者参与。2.具有仲裁的数字签名方式(略)(1)应用对称加密,仲裁者可以看到消息内容该方案的前提是每个用户都有与仲裁者共享的秘密密钥。数字签名过程如下:(1)S→A:M||EKSA[IDS||H(M)](2)A→R:EKAR[IDS||M||EKSA[IDS||H(M)]||T]其中E是对称密钥加密算法,KSA和KAR分别是仲裁者A与发送方S、接收方R的共享密钥,H(M)是M的散列值,T是时间戳,IDS是S的身份标识。下面给出几个需要仲裁者的数字签名方案。其中S表示发送方,R表示接收方,A是仲裁者,M是传送的消息。四川大学电子信息学院13/34数字签名的执行方式(续)2.具有仲裁的方式(续)(2)应用对称加密,仲裁者不能看到消息内容该方案的前提是每个用户都有与仲裁者共享的秘密密钥,而且两两用户间也有共享密钥。数字签名过程如下:(1)S→A:IDS||EKSR[M]||EKSA[IDS||H(EKSR[M])](2)A→R:EKAR[IDS||EKSR[M]||EKSA[IDS||H(EKSR[M])]||T]其中KSR是S,R的共享密钥。(3)应用公钥加密,仲裁者不能看到消息内容该方案的前提是每个用户都能安全获取仲裁者和其它用户的公开密钥。数字签名过程如下:(1)S→A:IDS||EKRS[IDS||EKUR[EKRS[M]]](2)A→R:EKRA[IDS||EKUR[EKRS[M]||T]其中KRS和KRA分别是发送方S和仲裁者A的私钥,KUR是接收方R的公钥。四川大学电子信息学院14/346.3典型数字签名方案数字签名方案的三个过程:(1)系统的初始化过程:产生的数字签名方案中用到的一切参数,有公开的,也有秘密的。(2)签名产生过程:在此过程用户利用给定的算法对消息产生签名,这种签名过程可以公开也可以不公开。(3)签名验证过程:验证者利用公开验证方法对给定消息的签名进行验证,得出签名的有效性。四川大学电子信息学院15/341.RSA数字签名体制(算法略讲,注意不要滥用术语“加密”)RSA数字签名体制使用了RSA公开密钥密码算法进行数字签名。鉴于RSA算法在实践中已经被证明了的安全性,RSA签字体制在许多安全标准中得以广泛应用。ISO/IEC9796和ANSIX.30-199X以及美国联邦信息处理标淮FIPS186-2已经将RSA作为推荐的数字签名标准算法之一。另外,美国RSA数据安全公司所开发的安全标准PKCS#l也是以RSA数字签名体制作为其推荐算法的。RSA数字签名体制的安全性决定于RSA公开密钥密码算法的安全性。由RSA体制可知,由于只有签名者才知道用于签名的秘密密钥d,虽然其他用户可以很容易地对消息M(明文)的签字S(密文)进行验证,但他们将无法伪造签名者的签名。典型的数字签名体制(续)16/342.ElGamal数字签名体制ElGamal数字签名体制是T.ElGamal在1985年发表关于ElGamal公开密钥密码时给出的两个体制之一(另外一个用于加密)。它的安全性主要基于求解离散对数问题的困难性。ElGamal数字签名体制具有许多变体,其中重要的有美国NIST于1991年公布的数字签名标准(DSS)中所使用的数字签名算法DSA,17/34ElGamal数字签名算法描述:(1)系统初始化:选取大素数p,∈Zp*是一个本原元。p,作为系统参数公开。每个用户U随机选取整数dU,2≤dU≤p-2。计算:eU=dUmodp将eU作为用户U的公开密钥,dU作为用于签名的秘密密钥,并严格保密。(2)签名变换:给定消息M,签名方A将进行下述签名计算:①选择随机数k∈Zp*,且k与(p-1)互素②用单向散列函数H对消息M进行压缩。签名方A计算H(M),并计算:r=kmodps=(H(M)-dA·r)k-1(modp-1)③用户A将Sig(M)=(r,s)作为自己对消息M的数字签名,与消息M一起传送给接收方。四川大学电子信息学院18/34(3)验证签名:接收方在收到消息M与数字签名(r,s)后:①计算H(M);②计算eArrs(modp)和H(M)(modp)若两式相等,即eAr·rs(modp)=H(M)(modp)则确认(r,s)为有效签名。由于eAr·rs≡(dA)r·(k)s≡dA·rk·s≡dA·r+k·s(modp)eA=dAmodp,r=kmodps=(H(M)-dA·r)k-1(modp-1)又由s=(H(M)-dA·r)k-1(modp-1)由模运算规则,上式为:k·s+dA·r=H(M)(modp-1)即:dA·r+k·s=H(M)(modp-1)再由模运算的指数性质有:dA·r+k·s≡H(M)(modp)所以有:eAr·rs(modp)=H(M)(modp)四川大学电子信息学院19/34完整地,验证算法可表述如下:Ver(M,(R,S))=(eARRS(modp)=H(M)(modp))?True:false在ElGamal签名方案中,签名过程需要保密的密钥dA和一个秘密的随机数r,而对签名进行验证则只需要公开的参数(eA,p,)。验证签名算法(续)四川大学电子信息学院20/34ElGamal数字签名算法举例设p=11,=2是Z11*的一个本原元。用户A选择随机整数dA=8,计算:eA=dAmodp=28mod11=3系统参数p,和用户A的公钥eA公开,签名私钥dA保密。假设用户A要对消息M进行签名,且H(M)=5。(1)用户A选择随机数k=9;因为(9,10)=1,所以9模10的逆一定存在,根据扩展的Euclid算法,有:k-1(modp-1)=9-1(mod10)=9。用户A计算:r=kmodp=29mod11=6s=(H(M)-dA·r)k-1(modp-1)=(5-8×6)×9(mod10)=3四川大学电子信息学院21/34用户A将(r,s)=(6,3)作为自己对H(M)=5的消息M数字签名,与消息M一起传送给接收方:M||(r,s)=M||(6,3)(2)设用户B要对消息M及签名进行验证,只需计算:eAr·rs(modp)=36×63mod11=10和H(M)(modp)=25mod11=10两者相等,则确认(6,3)为M的有效签名。ElGamal数字签名算法举例(续)四川大学电子信息学院22/34ElGamal数字签名的安全性:ElGamal数字签名体制是一个“非确定性的”数字签名体制,对于同一个报文M,它所产生的签名依赖于随机数k。ElGamal数字签名体制的安全性建立在求解Zp上的离散对数的困难性上,当敌手在不知道用户的签名密钥的情况下伪造签名时,需要求解离散对数问题。需要注意的是,在签名时使用的随机数k不能被泄露,这是因为