
3.2消息摘要和数字签名ppt课件.ppt
57页消息摘要和数字签名消息摘要和数字签名主讲人:裴士辉主讲人:裴士辉e_mail: shihui_pei sina::13694302598消息摘要和消息摘要和hash 函数函数Ø消息摘要消息摘要Ø单向散列函数单向散列函数Ø安全散列标准安全散列标准SHSØ其他的单向散列函数其他的单向散列函数消息摘要消息摘要Ø对任意长度的明文对任意长度的明文m,经由哈希函数,经由哈希函数(杂凑函数杂凑函数)h产生固定长度的哈希值产生固定长度的哈希值h(m),用来对明文作鉴别,用来对明文作鉴别(authentication)或数字签名或数字签名(digital signature)Ø哈希函数值是对明文的一种哈希函数值是对明文的一种“指纹指纹”(finger print)或是摘要或是摘要(digest)Ø对哈希函数值的数字签名,就是对此明文的数字签对哈希函数值的数字签名,就是对此明文的数字签名,可以用来提高数字签名的效率名,可以用来提高数字签名的效率单向散列函数单向散列函数 x = h (m) 使用在数字签名上的哈希函数必须满足:对任意长度的明文m,产生固定长度的哈希值h(m);对任意的明文m,哈希函数值h(m)可由硬件或软件容易得到;对任意哈希函数值x,要找到一个明文m与之对应, 即x = h(m),在计算上不可行;对一个明文m1,要找到另一个不同的明文m2,使之具有相同的哈希值,即h(m1) = h(m2),在计算上不可行;要找到任意一对不同的明文(m1, m2),具有相同的哈希值,即h(m1) = h(m2),在计算上不可行。
安全散列标准安全散列标准SHSØ2019由美国由美国NIST提出,提出,SHS(Secure Hash Standard),算法为,算法为SHAØ要求输入小于要求输入小于264位,位,Ø输出为输出为160位位(5个寄存器,个寄存器,A, B, C, D, E)Ø将明文分成若干将明文分成若干512位的定长块,每一块与当前的信位的定长块,每一块与当前的信息摘要值结合,产生信息摘要的下一个中间结果,直息摘要值结合,产生信息摘要的下一个中间结果,直到处理完毕到处理完毕SHA的运算过程的运算过程Ø将消息填充为将消息填充为512位的整数倍位的整数倍Ø5个个32位中间变量位中间变量a b c d e,起初值为常数起初值为常数Ø对对5个个32位的寄存器位的寄存器A、、B、、C、、D、、E,进行运算进行运算Ø A B C D E的初值为的初值为0Ø对每一个对每一个512位的消息进行如下处理:位的消息进行如下处理:Ø 将中间变量将中间变量a b c d e 赋给赋给A B C D E;;Ø 进行主循环进行主循环Ø 四轮,每轮四轮,每轮20次次Ø a=a+A, b=b+B,c=c+C,d=d+D, e=e+eØ最后输出为最后输出为a b c d e 的级联的级联a,b,c,d,e的初值的初值 a=0x67452301 b=0xefcdab89 c=0x98badcfe d=0x10325476 e=0xc3d2e1f0Ei-1Di-1Ci-1Bi-1Ai-1EiDiCiBiAi非线性函数非线性函数f<<<30<<<5 FtWt Kt非线性函数非线性函数FØFt(x,y,z)=(x&y)|((~x&z)) 0<=t<20ØFt(x,y,z)=x^y^z 20<=t<40ØFt(x,y,z)=(x^y)|((x^z))|(y^z) 40<=t<60ØFt(x,y,z)=x^y^z 60<=t<80Kt:常数常数ØKt=0x5a827999 0<=t<20ØKt=0x6ed9eda1 20<=t<40ØKt=0x8f1bbcdc 40<=t<60ØKt=0xca62c1d6 60<=t<80Wt:消息的变形消息的变形Ø消息:消息:512bit,16个个32bit字字 Ø M0~M15 ØWt: 32bit字字 Ø 0<=t<=15 Wt=Mt Ø 16<=t<=79Ø Wt=(Wt-3^Wt-8^Wt-14^Wt-16)<<<1其他的单向散列函数其他的单向散列函数ØRIPEMD-160Ø 欧洲欧洲RIPE项目的结果项目的结果 Ø RIPEMD为为128位位Ø 更新后成为更新后成为RIPEMD-160 Ø 基础是基础是MD5ØMD5Ø Ron Rivest于于1990年提出年提出MD4Ø 1992年年, MD5 (RFC 1321) developed by Ron Rivest at MITØ MD5把数据分成把数据分成512-bit块块Ø MD5的的hash值是值是128-bitØ 在最近数年之前在最近数年之前,MD5是最主要的是最主要的hash算法算法Ø 现行美国标准现行美国标准SHA-1以以MD5的前身的前身MD4为基础为基础王小云对王小云对MD5的攻击的攻击Ø方法:方法:Ø 差分攻击差分攻击Ø 模整数减法模整数减法Ø 异或运算异或运算王小云对王小云对MD5的攻击的攻击Ø目的:寻找如下条件的消息:目的:寻找如下条件的消息:Ø(a, b, c, d) = MD5(a0, b0, c0, d0,M0),Ø(a’, b’, c’, d’) = MD5(a0, b0, c0, d0,M0’ ),ØMD5(a, b, c, d,M1) = MD5(a’, b’, c’, d’,M1’ )Ø2019年的攻击结果年的攻击结果Ø找到找到(M0,M0’ )需要需要 239 次次MD5操作操作, IBM P690上上需要时间需要时间15分到分到1小时小时Ø找到找到 (M1,M1’)需要需要 232 次次MD5操作操作, IBM P690上上需要时间需要时间5分到分到15分分The Story of Alice and her Boss •Caesar's View•At the day Alice is supposed to leave, Caesar writes a letter of recommendation for Alice -- on paper. The same day, she asks Caesar to digitally sign the letter. For his convenience she presents an electronic copy of the document. Caesar opens the document -- it looks exactly like the original document. So he signs the document. •Months later, Caesar discovers that there has been a breach of secrecy with his French affair files. Will he ever find out who tricked him and how? The Story of Alice and her Boss•Alice's View •Being an intern, Alice does not have any access to secret documents. Not enough for her ... •... tricky Alice decides to fool Caesar. Because Caesar is still relying on the widely used MD5 hash function, she implements the attack from Wang and Yu [How to break MD5 and other hash functions. Eurocrypt 2019 ] to find MD5 collisions. When she receives her letter of recommendation (on paper), she prepares two postscript files with the same MD5 hash: •One to display the letter of recommendation, and •a second one, an order from Caesar to grant Alice some kind of a security clearance. The Story of Alice and her Bossa25f7f0b 29ee0b39 68c86073 8533a4b9 数字签名数字签名 Ø数字签名是手写签名的数字相似物。
消息的数字签数字签名是手写签名的数字相似物消息的数字签名其实是一个数值,它依赖于只有签名者知道的某名其实是一个数值,它依赖于只有签名者知道的某个秘密数和待签的消息内容数字签名应具有如下个秘密数和待签的消息内容数字签名应具有如下性质性质Ø能够验证签字产生者的身份,以及产生签字的日期能够验证签字产生者的身份,以及产生签字的日期和时间Ø能用于证实被签消息的内容能用于证实被签消息的内容Ø数字签字可由第三方验证,从而能够解决通信双方数字签字可由第三方验证,从而能够解决通信双方的争议Ø数字证书的用途包括认证、数据完整性和不可抵赖数字证书的用途包括认证、数据完整性和不可抵赖性而它最重要的一个应用是数字证书而它最重要的一个应用是数字证书数字签名法数字签名法•美国的犹他州于美国的犹他州于20192019年颁布的年颁布的< <数字签名法数字签名法> >是全世是全世界范围内第一部全面规范电子签名的法律美国界范围内第一部全面规范电子签名的法律美国20002000年开始实行年开始实行< <数字签名法》,数字签名法具有法数字签名法》,数字签名法具有法律效率美国目前已经建立了覆盖全国的律效率美国目前已经建立了覆盖全国的PKIPKI网络,网络,联邦、州和大型企业之间的联邦、州和大型企业之间的PKIPKI实现了桥接。
实现了桥接•欧洲各国已经建立了自己的欧洲各国已经建立了自己的PKIPKI20192019年欧盟建立了年欧盟建立了桥接的桥接的CACA,,20192019年欧盟开始实行年欧盟开始实行< <数字签名法》数字签名法》•亚洲范围内的日本、韩国和新加坡在亚洲范围内的日本、韩国和新加坡在PKIPKI建设方面起建设方面起步较早,这步较早,这3 3个国家目前已经实现了交叉认证个国家目前已经实现了交叉认证数字签名法数字签名法•我国的立法从我国的立法从20192019年开始的,形成了年开始的,形成了< <中华人民共和中华人民共和国电子签名法国电子签名法( (草案草案) )》•20192019年年8 8月月2828日中华人民共和国第十届全国人民代表日中华人民共和国第十届全国人民代表大会常务委员会第十一次会议通过了大会常务委员会第十一次会议通过了< <中华人民共和中华人民共和国电子签名法》国电子签名法》•20192019年年4 4月月1 1日起施行日起施行Hash()签名算法签名算法消息消息To Bob数字签名数字签名To Bob消息摘要消息摘要Alice 私钥私钥发送方:发送方: Alice用用RSA算法进行数字签名算法进行数字签名Hash()验证算法验证算法消息消息From Alice数字签名数字签名From Alice消息摘要消息摘要Alice 公钥公钥消息摘要消息摘要?=用用RSA算法进行身份验证算法进行身份验证数字签名标准数字签名标准•公布于1994年5月19日的联邦记录上,•并于1994年12月1日采纳为标准DSS•DSS为EIGamal签名方案的改进。
DSA的参数的参数Ø参数参数 Ø p: 512位到位到1024位的素数〔可有一组用户共享)位的素数〔可有一组用户共享)Ø q: 160位长,位长,p-1的素因子的素因子 (可有一组用户共享可有一组用户共享) Ø g=h(p-1)/q mod p, 其中其中h是一整数是一整数,1 体所拥有的一种方式Ø是绑定共钥和主体的数据结构是绑定共钥和主体的数据结构Ø 通常第三方称为通常第三方称为CA(证书授权机构证书授权机构)Ø CA(Certification Authorities)X.509 证书证书X.509是一个广泛应用的数字证书标准它有三个版本:是一个广泛应用的数字证书标准它有三个版本:V1: 1988年发布,得到了广泛使用;年发布,得到了广泛使用;V2: 引入了主体和发布者唯一标识的概念;引入了主体和发布者唯一标识的概念;V3: 2019年年发发布布,,支支持持扩扩展展的的概概念念,,这这使使得得任任何何人人可可定定义义一一个个扩扩展并将其包含在证书中展并将其包含在证书中X.509 v1证书的组成证书的组成Ø版本版本Ø序列号序列号Ø签名算法标识签名算法标识Ø发布者名称发布者名称Ø有效期有效期Ø主体名称主体名称Ø 主体的主体的X.500命名标准命名标准Ø主体的公钥主体的公钥Ø签名签名主体的主体的X.500命名标准命名标准ØCN 普通名字普通名字ØOU 机构单位机构单位ØO 机构机构ØL 机构的位置〔城市)机构的位置〔城市)ØST 机构所在的州机构所在的州ØC 国家国家签名算法签名算法验证信息验证信息(主体公钥主体公钥)证书证书证书机构私钥证书机构私钥数字证书的签发数字证书的签发Hash()验证算法验证算法证书信息证书信息证书中的证书中的签名签名消息摘要消息摘要CA的公钥的公钥消息摘要消息摘要?=数字证书的验证数字证书的验证数字证书的创建数字证书的创建利用利用J2SDK提供的提供的keytool工具进行创建工具进行创建1.创建批处理文件创建批处理文件 keytool -genkey -dname "CN=认认证证中中心心, OU=计计算算机机科科学学与与技技术术学学院院, O=吉吉林林大大学学, L=长长春春, ST=吉吉林林省省, C=CN" -alias lf -keyalg RSA -keysize 1024 -keystore lfkeystore -keypass ififif -storepass cacaca -validity 35002.在在dos下执行该批处理文件下执行该批处理文件数字证书的显示数字证书的显示 keytool -list -v -keystore lfkeystore -alias lf输入输入keystore密码:密码: cacaca别名名称:别名名称: lf创建日期:创建日期: 2019-9-6输入类型:输入类型:KeyEntry认证链长度:认证链长度: 1认证认证 [1]:Owner: CN=认认证证中中心心, OU=计计算算机机科科学学与与技技术术学学院院, O=吉吉林林大大学学, L=长长春春, ST=吉吉林林省省, C=CN 发发照照者者:: CN=认认证证中中心心, OU=计计算算机机科科学学与与技技术术学学院院, O=吉吉林林大大学学, L=长长春春, ST=吉吉林省林省, C=CN序号:序号: 413c68e0有效期间:有效期间: Mon Sep 06 21:40:48 CST 2019 至:至: Mon Apr 07 21:40:48 CST 2019认证指纹:认证指纹: MD5:: 37:B7:1C:76:A7:72:37:1B:38:7C:54:FE:25:EE:32:E1 SHA1:: 96:FF:EF:29:02:73:52:CC:9D:DF:1B:77:BF:7B:EF:98:5B:08:E0:0B 将数字证书导出到文件将数字证书导出到文件 keytool -export -alias lf -file lf.cer -keystore lfkeystore -storepass cacaca用用javajava程序显示证书的指定信息程序显示证书的指定信息 ØShowCerInfo.javaØ获取证书获取证书Ø显示证书的内容显示证书的内容版本号版本号 1序列号序列号 413c68e0全全名名 CN=认认证证中中心心, OU=计计算算机机科科学学与与技技术术学学院院, O=吉吉林林大大学学, L=长长春春, ST=吉林省吉林省, C=CN签发者全名签发者全名CN=认认证证中中心心, OU=计计算算机机科科学学与与技技术术学学院院, O=吉吉林林大大学学, L=长长春春, ST=吉吉林省林省, C=CN截至日截至日 Mon Apr 07 21:40:48 CST 2019有效期起始日有效期起始日 Mon Sep 06 21:40:48 CST 2019有效期签名算法有效期签名算法 MD5withRSA签名签名 61e7392226cf10b61bd4a834aac5b4d5ecce2e38eea813b4d08a59a9ffdb274382488264c187fa923b88c566d40de6df05cd456a313f30948747dbb40814522aea21fea030dbe553a43c29fdf35647c2daa47e23157c9678f2c4cdc7d3e88e1a9c3aeb9132d3b28a92eeee0da0dcfa0ef1e8570c8ddf95c776be8482c079c9a1公钥公钥 48,-127,-97,48,13,6,9,42,-122,72,-122,-9,13,1,1,1,5,0,3,-127,-115,0,48,-127,-119,2,-127,-127,0,-76,-91,-91,84,-102,-39,92,118,87,-12,57,-66,118,-46,-74,-115,-11,-97,29,27,82,-16,-75,89,52,-4,123,-9,30,114,-99,-66,37,107,-56,-104,36,20,13,-121,35,-66,1,102,43,-90,-117,-30,-55,-49,-27,-66,-18,-114,26,-28,0,105,-8,83,31,-89,-37,13,-2,25,-91,106,47,-107,-51,-48,30,41,30,-41,115,-50,102,11,-93,117,64,21,40,125,-80,83,50,24,61,-63,63,-116,61,-92,113,-10,33,77,-49,42,85,-2,21,100,5,-62,-22,-77,73,3,4,-96,-102,93,-94,-119,-108,65,-76,121,61,-99,98,-99,-2,-5,2,3,1,0,1,数字证书的签发数字证书的签发 •任任何何人人都都可可以以很很方方便便地地创创建建数数字字证证书书,,要要确确保保其其内内容容的的真真实实性,必须经过权威部门的检查。 性,必须经过权威部门的检查•数数字字证证书书的的签签发发是是指指::CA检检查查别别人人的的数数字字证证书书,,确确定定可可靠靠后后使用自己的私钥为证书签名使用自己的私钥为证书签名•用用户户收收到到证证书书后后,,用用相相应应CA的的公公钥钥进进行行检检验验,,若若检检验验通通过过,,说明证书是可靠的说明证书是可靠的确定确定CACA的权威性的权威性————安装安装CaCa的证书的证书把证书文件把证书文件lf.cerlf.cer安装在用户的机器中安装在用户的机器中 数字证书的签发数字证书的签发Ø建立被签发的用户的数字证书建立被签发的用户的数字证书 Ø将数字证书导出到文件将数字证书导出到文件 Ø执行执行SignCert.javaSignCert.java文件文件建立被签发的用户的数字证书建立被签发的用户的数字证书 keytool -genkey -dname "CN=刘刘大大有有, OU=计计算算机机科科学学与与技技术术学学院院, O=吉吉林林大大学学, L=长长春春, ST=吉吉林林省省, C=CN" -alias ldy -keyalg RSA -keysize 1024 -keystore lfkeystore -keypass ldyldy -storepass cacaca -validity 3500将数字证书导出到文件将数字证书导出到文件keytool -export -alias ldy -file ldy.cer -keystore lfkeystore -storepass cacaca执行执行SignCert.javaSignCert.java文件文件 用用CA的私钥对用户的证书进行签名的私钥对用户的证书进行签名 Version: V1 Subject: CN=刘大有刘大有, OU=计算机科学与技术学院计算机科学与技术学院, O=吉林大学吉林大学, L=长春长春, ST=吉林省吉林省, C=CN Signature Algorithm: MD5withRSA, OID = 1.2.840.113549.1.1.4 Key: com.sun.ssl.internal.ssl.JSA_RSAPublicKeyfffffc14 Validity: [From: Wed Sep 08 18:00:13 CST 2019, To: Sun Nov 25 18:00:13 CST 2019] Issuer: CN=认证中心认证中心, OU=计算机科学与技术学院计算机科学与技术学院, O=吉林大学吉林大学, L=长春长春, ST=吉林省吉林省, C=CN SerialNumber: [ 413ed82d] Algorithm: [MD5withRSA] Signature:0000: 70 C9 36 DD EA 86 54 9B 18 64 4D A1 A1 A9 8A 88 p.6...T..dM.....0010: CA F0 B9 7F 8A 96 51 EB E0 5C 9B 51 33 24 C2 80 ......Q..\.Q3$..0020: BD 91 D9 F0 89 36 27 F4 54 1D B2 55 07 A1 38 6F .....6'.T..U..8o0030: 0E C0 59 23 68 3E 26 3C CB 4E 9E 86 35 A7 8E A8 ..Y#h>&<.N..5...0040: 0A 63 35 2E 78 E6 42 AF 4C 62 AC DA 8B 63 FF 86 .c5.x.B.Lb...c..0050: 7D 0B F1 63 F9 84 4D 02 0D 68 20 F2 56 2E D6 C8 ...c..M..h .V...0060: ED C8 F0 CF 7B 6F 38 2F 2D 4E EF EC 49 BF E1 35 .....o8/-N..I..50070: 30 47 E7 64 C0 35 BD D8 8F 1E 13 BE 00 79 5B 89 0G.d.5.......y[.验证已签名的证书验证已签名的证书使用使用Ca的公钥验证已签名的证书的公钥验证已签名的证书编译并运行程序编译并运行程序CheckCertSign.java下次课再见!下次课再见!。












