当前位置:文档之家› 现代密码学第八讲:数字签名

现代密码学第八讲:数字签名

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。

相关主题