现代密码学第八讲:数字签名
- 格式:pdf
- 大小:366.15 KB
- 文档页数:45
数字签名一.基本理论数字签名(又称工钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。
一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。
数字签字由公钥密码发展而来,它在网络安全,包括身份认证、数据完整性、不可否认性以及匿名性等方面有着重要应用。
特别是在大型网络安全通信中的密钥分配、认证以及电子商务系统中都有重要的作用,数字签名的安全性日益受到高度重视。
数字签名的实现通常采用非对称密码体系。
与对称密码体系不同的是,非对称密码体系的加密和解密过程分别通过两个不同的密钥来实现,其中一个密钥以公开,称为公开密钥,简称公钥,另一个有用户自己秘密保管,称为保密密钥,简称私钥。
只有相应的公钥能够对用私钥加密的信息进行解密,反之亦然。
以现在的计算机运算能力,从一把密钥推算出另一把密钥是不大可能的。
所以,数字签名具有很大的安全性,这是它的一个优点。
数字签名的基本方式主要是:信息发送方首先通过运行散列函数生成一个欲发送报文的信息摘要,然后用其私钥对这个信息摘要进行加密以形成发送方的数列签名,这个数字签名将作为报文的附件和报文一起发送给报文的接收方。
接收方在收到信息后首先运行和发送相同的散列函数生成接收报文的信息摘要,然后再用发送方的公钥进行解密,产生原始报文的信息摘要,通过比较两个信息摘要是否相同就可以确认发送方和报文的准确性。
当然,上述过程只是对报文进行了签名,对其传送的报文本身并未保密。
为了同时实现数字签名和秘密通信,发送者可以用接收方的公钥对发送的信息进行加密,这样,只有接收方才能通过自己的私钥对报文进行接么,其它人即使获得报文并知道发送者的身份,由于没有接收方的密钥也无法理解报文。
公钥加密、认证和签字流程图:二.数字签名的优点1.很大的安全性:表现在(1)鉴权公钥加密系统允许任何人在发送信息时使用公钥进行加密,数字签名能够让信息接收者确认发送者的身份。
摘要数字签名是现代密码学的主要研究课题之一,它是实现认证的重要工具,保证了数据的可靠性。
数字签名在金融、商业、军事等领域,尤其是在电子支票、电子邮件、电子贸易、电子购物、数据交换、电子出版以及知识产权保护等方面有着重要作用。
近些年来随着对数字签名的不断深入研究,产生了许多特殊的数字签名,例如盲签名、群签名、代理签名、多重签名、前向安全签名。
正是由于特殊数字签名具有的独特功能和实际用途,在一些特殊行业有广泛应用,特别是在数据完整性检验、身份证明、身份鉴别和防否认等方面功能独特。
关键词:盲签名1 盲签名的研究现状盲签名是一种特殊的数字签名,其特殊性体现在签名者并不知道签署的内容,即便签名者知道了签名与消息对,也无法将它们联系起来。
因此,盲签名技术应用广泛,尤其是电子投票和电子货币系统等。
盲签名的概念首先被David Chaum提出来,Chaum给出了一个基于RSA的盲签名方案,此后人们分别基于因子分解问题、离散对数问题、二次剩余问题等提出各种盲签名方案。
1992年,Okamoto基于Schnorr签名体制提出了第一个基于离散对数问题的盲签名方案[2]。
1994年,Camenisch等提出了基于离散对数的两个离散方案。
第一个方案是由DSA变形得出,第二个方案建立在Nyberg-Ruep pel签名体制之上。
1996年,Fan等基于二次剩余方根的难解性提出了一个盲签名方案,之后两年,Fan又提出一个部分盲签名方案,可以减少电子现金系统的计算量。
同年再次提出可以增强计算效率的一个盲签名方案。
2000年,姚亦峰等以Harn和Xu提出的十八种安全广义ElGamal型数字签名方案为基础,利用二元仿射变换,通过分析得到其中十二种方案是强盲签名方案。
2001年,Ch-ien 等根据RSA公钥密码系统提出一个部分盲签名方案,它能减少数据库的大小以及避免电子现金的重复花费。
2002年,黄少寅等基于Schnorr体制提出了一个必须经过多人同时盲签名才可生效的新方案,可以方便应用在电子现金需银行多个部门同时进行盲签名才可生效的情形中。
1数字签名《现代密码学》第八讲2上章内容回顾公钥密码体制的提出及分类公钥密码体制的基本概念单向陷门函数的概念设计公钥加密算法--背包密码体制RSA算法及攻击方法ElGmal算法椭圆曲线密码体制3本章主要内容数字签名的基本概念一般数字签名算法Z RSA数字签名技术Z 数字签名标准Z 基于离散对数的数字签名Z 椭圆曲线数字签名4数字签名的基本概念手写签名与数字签名的区别手写签名是一种传统的确认方式,如写信、签订协议、支付确认、批复文件等.手写签名是所签文件的物理组成部分;数字信息没有固定的物理载体,如何使数字签名与所签文件捆绑在一起?手写签名通过与标准签名比较或检查笔迹来验证,受验证人主观影响大;二进制数字信息无法用人眼辨识,但可以使用数学算法来验证数字签名,不受验证人主观影响。
手写签名不易复制;二进制数字信息,十分容易复制,所以必须防止数字签名重复使用。
5数字签名和消息认证码的异同:消息完整性验证、消息源认证.消息认证的作用是保护通信双方以防第三方的攻击,然而却不能保护通信双方中的一方防止另一方的欺骗或伪造.①B伪造一个消息并使用与A共享的密钥产生该消息的认证码,然后声称该消息来自于A.②由于B有可能伪造A发来的消息,所以A就可以对自己发过的消息予以否认.数字签名的基本概念6数字签名技术则可有效解决这一问题, 类似于手书签名,数字签名应具有以下性质:①能够验证签名产生者的身份,以及产生签名的日期和时间.②能保证被签消息的内容的完整性.③数字签名可由第三方公开验证,从而能够解决通信双方的上述争议.数字签名在网络安全中提供数据完整性、数据源认证性、数据不可否认性等性质数字签名的基本概念7所谓数字签名(Digital Signature ),也称电子签名,是指附加在某一电子文档中的一组特定的符号或代码,它是利用数学方法对该电子文档进行关键信息提取并与用户私有信息进行混合运算而形成的,用于标识签发者的身份以及签发者对电子文档的认可,并能被接收者用来验证该电子文档在传输过程中是否被篡改或伪造.81976,W Diffie 和M Hellman 在“New Directions in Cryptography ”, 首先提出了数字签名的思想并猜测存在这样的方案1978,R Rivest, A Shamir, 和L Adleman 发明了RSA 算法可以用作数字签名算法.1984, S Goldwasser, S Micali, 和R Rivest 首次粗略提出了数字签名算法的安全性要求. 2004,中国颁布电子签章法9一般签名算法包含密钥生成(公钥/私钥)消息签名S=Sig x (M)用私钥对消息(消息摘要)进行签名运算 消息验证用公钥验证消息的签名是否正确,输出“True ”或“False ”一般数字签名算法()()(),x x x True S Sig M Ver S M False S Sig M =⎧⎪=⎨≠⎪⎩10数字签名的攻击:惟密钥攻击:攻击者只有用户公开的密钥. 已知消息攻击:攻击者拥有一些消息的合法签名,但是消息不由他选择.选择消息攻击:攻击者可以自由选择消息并获取消息的签名.攻击结果:完全破译:攻击者恢复出用户的密钥. 一致伪造:攻击者对于任意消息可以伪造其签名. 选择性伪造:攻击者可以对一个自己选取的消息伪造签名.存在性伪造:攻击者可以生成一些消息的签名,但在伪造前对该消息一无所知.数字签名的基本概念11①参数和密钥生成选两个保密的大素数p 和q ,计算n=p ×q ,φ(n)=(p-1)(q-1);选一整数e ,满足1<e<φ(n),且gcd(φ(n),e)=1;计算d ,满足d ·e ≡1 mod φ(n);以{e,n}为公开钥, {d,n}为秘密密钥.一般数字签名算法--RSA12②签名过程设消息为m ,对其签名为s ≡m d mod n③验证过程接收方在收到消息m 和签名s 后,验证是否成立,若成立,则发送方的签名有效.?mod e m s n≡一般数字签名算法--RSA13加密算法和签名算法同用,攻击者可以方便解密一般攻击者是将某一信息作一下伪装( Blind),让拥有私钥的实体签署。
然后,经过计算就可得到它所想要的信息。
解决方法:不对自己一无所知的信息签名;不对陌生人送来的随机文档签名;签名时首先使用One-Way HashFunction 对文档作HASH 处理; 同时使用不同的签名算法。
14假设Alice 用RSA 算法签署消息,其公私密钥对为(e,n ;d ).攻击如下:Bob 选取消息(m1,m2),提交给签名预示,签名预示返回这两个消息的签名(s1,s2), 其中,s1=m1d mod n; s2=m2d mod n.Bob 可以伪造消息m1*m2的签名(s1*s2) mod n, 因为s1 * s2=m1d * m2d mod n = s2=(m1 * m2)d mod n.15解决方法:实际应用时,数字签名是对消息摘要加密产生,而不是直接对消息加密产生。
②签名过程设消息为M ,对其签名为s ≡h(M)d mod n③验证过程接收方在收到消息M 和签名S 后,验证h(M)=s e mod n是否成立,若成立,则发送方的签名有效.16实例初始化:设A 选取p = 13,q = 11,e = 13,则有n = pq = 143,φ(n) = (p-1)(q-1) = 12×10 = 120。
求解ed = 13d ≡1(mod 120) 得d = 37。
因此A 的公钥为(n = 143,e = 13);私钥为d = 37签名过程:假定消息m 的Hash 值h(m) = 16,则计算m 签名为s = h(m)d mod n = 1637mod 143 = 3 验证过程:接受者B 收到签名后,计算s e mod n = 313mod 143 = 16,h(m) mod n = 16 mod 143 = 16等式h(m) mod n = s e mod n 成立,因此,B 验证此签名有效17数字签名标准DSS (Digital SignatureStandard) 是美国NIST 公布的联邦信息处理标准FIPS PUB 186,其中采用了SHA 和新的签名技术--DSA (Digital SignatureAlgorithm). DSS 最初公布于1991年,在考虑了公众对其安全性的反馈意见后,于1993年公布了其修改版.18数字签名标准DSS (Digital SignatureStandard) 是美国NIST 公布的联邦信息处理标准FIPS PUB 186,其中采用了SHA 和新的签名技术--DSA (Digital SignatureAlgorithm). DSS 最初公布于1991年,在考虑了公众对其安全性的反馈意见后,于1993年公布了其修改版.一般数字签名算法-DSA19①参数p :满足2L-1<p<2L 的大素数,其中512≤L ≤1024且L 是64的倍数.q :p-1的素因子,满足2159<q<2160,即q 长为160比特.g :g ≡h (p-1)/q mod p ,其中h 是满足1<h<p-1且使得h (p-1)/q mod p>1的任一整数.用户秘密钥x (0<x<q 的随机数或伪随机数);用户的公开钥y :y ≡g x mod p.一般数字签名算法-DSA20②签名过程¾用户为待签消息选取的秘密数k ,k 是满足0<k<q 的随机数(伪随机数).¾用户对消息m 的签名为(r, s)r ≡(g k mod p) mod q,s ≡[k -1(h(m)+xr)] mod q ,H(M)是由SHA 求出的消息M 的杂凑值.一般数字签名算法-DSA21③验证过程设接收方收到的消息为M ’及其签名(r ’,s ’),计算w ≡(s ’)-1mod q, u 1≡[h(M ’)w] mod qu 2≡r ’w mod q, v ≡[(g u1y u2) mod p] mod q 检查若相等,则认为签名有效.?v r=一般数字签名算法-DSA22正确性证明因为若(m ´,r ´, s ´)=(m,r,s),则DSA 是在ElGamal 和Schnorr 两个签名方案的基础上设计的,其安全性基于有限域上求离散对数的困难性.1()(())[()mod ]mod [mod ]mod (mod )mod h m w xrw h m xr s k v g g p qg p qg p q r−+≡≡≡≡23攻击1:假定Alice 的公钥(p,q,y ),私钥x 签名方程:s=k -1(m+xr) ,攻击如下:攻击者选取r=g u y v ,u 和v 需要与p-1互素,然后求解(m,s )使得m-us=0; r-vs=0.则上面的(m,r,s )满足验证方程v=rw ≡(s)-1mod q, u 1≡[mw] mod qu 2≡r w mod q, v ≡[(g u1y u2) mod p] mod q24攻击2:若泄漏k ,则任何知道(m,r,s)和Alice 公钥的人可以通过计算[sk-H(M)]/r ≡x mod q ,求出用户的私人密钥x.25攻击3:k(r)重复使用26一般数字签名算法-DSA实例1)初始化:假设A 选取素数p = 23,q = 11 ,其中(p -1 ) / q = 2选择随机数h = 12,计算g ≡h (p -1)/q mod p ≡122 mod 23≡6。
既然g ≠1,那么g 生成中的q 阶循环子群。
选择随机数x = 10 满足1 ≤x ≤q -1,并计算y ≡g x mod p≡610mod 23 ≡4。
则公钥为(p = 23,q = 11,g = 6,y = 4),私钥为(x = 10)R pZ ∗∈R p Z ∗∈p Z ∗272)签名过程:选取随机数k = 9,计算r ≡(g k mod p ) mod q ≡(69mod 23) mod11≡5然后计算k -1mod q ≡5。
假设h(m ) = 13,计算s ≡[h(m )+xr ] k -1mod q ≡5×(13+10×5)mod11 = 7。
因此消息m 的签名为(r = 5, s = 7)283)验证过程:签名接收者B 计算w ≡s -1mod q ≡8,u 1 ≡[h(m )w ]mod q ≡13×8mod 11 ≡5,u 2 =rwmod q ≡5×8 mod 11 ≡7。