第四章数字签名与认证对称加密算法Strongcryptographymakestheworldasaferplace!@$#^%$&*$#¥@!#¥%*!@#¥%&!@$#^%$&*$#¥@!#¥%*!@#¥%&Strongcryptographymakestheworldasaferplace优点:加解密速度快缺点:密钥传送非常重要密钥管理很复杂非对称加密算法原理Strongcryptographymakestheworldasaferplace!@$#^%$&*$#¥@!#¥%*!@#¥%&!@$#^%$&*$#¥@!#¥%*!@#¥%&Strongcryptographymakestheworldasaferplace又叫公钥密码算法。优点安全性高,不需要安全信道来传送密钥缺点算法复杂,加解密速度慢。目录4.1单向Hash函数4.2数字签名与认证4.3身份认证4.4公共密钥基础设施PKI4.1.1Hash函数相关概念哈希(Hash)函数及其性质把任意长度的输入消息数据转换成固定长度的输出数据的一种函数,也叫散列函数。公式表示形式:输出值又称为哈希值或消息摘要。性质1:输入任意长度性质2:输出固定长度()hHM哈希函数的性质-单向性性质3:对于任何给定的消息M,计算其哈希值h很容易。性质4:对于给定的哈希值h,寻找消息M,满足H(M)=h在。Iagreetopay$500forthesoftwared41d8c98f00b204H(●)?计算上不可行性质5-抗弱碰撞性:对于给定的消息M1,寻找另一个不同的消息M2,满足H(M1)=H(M2)在计算上是不可行的。性质6-抗强碰撞性:寻找任意一对不同的消息M1,M2,满足H(M1)=H(M2)在计算上是不可行的。哈希函数的性质-抗碰撞性h碰撞:M1≠M2,H(M1)=H(M2)MM1M2()H哈希函数的性质-抗碰撞性性质5-抗弱碰撞性:对于给定的消息M1,寻找另一个不同的消息M2,满足H(M1)=H(M2)在计算上是不可行的。性质6-抗强碰撞性:寻找任意一对不同的消息M1,M2,满足H(M1)=H(M2)在计算上是不可行的。M1M2hM()HhM()HM1M24.1.2常用的哈希算法-MD5常用的哈希算法MD5:Message-DigestAlgorithm5(信息-摘要算法)SHA-1RIPEMD-160MD5:麻省理工学院RonRivest提出,可将任意长度的消息经过变换得到一个128位的散列值。MD5算法描述第一步:填充消息MD5的输入数据的后面必须要填充1和若干个0,填充后的长度模512等于448,再在后面附加输入数据的长度值的低64比特,输入数据经填充和附加后,其长度是512的倍数,按512比特分组进行处理最后产生128比特Hash码.第二步:初始化32位寄存器A,B,C,D;A=0x67452301;B=0xEFCDAB89;C=0x98BADCFE;D=0x10325476第三步:数据压缩。把输入的128位向量和512位的数据通过四轮计算,压缩成128位数据输出,作为下一次压缩的128位向量。x0x1x2x3.......x511x512..........................................................................xn10000.....0512比特512比特512比特IVn的低64比特Hash码M[0]M[1]M[N]HMD5HMD5HMD5哈希函数的生日攻击生日问题一个教室中最少应有多少学生,可使得至少有两人生日相同的概率不小于50%?生日悖论如果一个教室中有23或23以上的学生,那么至少有两人生日相同的概率要大于50%。如果哈希值长度为n比特,那么任意m个随机消息产生碰撞的概率为。生日攻击隐含着哈希值长度的一个下界。从安全性的角度来看,哈希函数输出的哈希值长度越长,抗碰撞的安全强度越大。2()1()2nmmnpmC365()1(365)mmpmC哈希函数的生日攻击生日问题一个教室中最少应有多少学生,可使得至少有两人生日相同的概率不小于50%?生日悖论如果一个教室中有23或23以上的学生,那么至少有两人生日相同的概率要大于50%。Hashfunction消息M1哈希值h1消息M2哈希值h2消息M3哈希值h3消息M23哈希值h232()1()2nmmnpmC365()1(365)mmpmC4.1.3ATM4.1.4消息认证Hash算法作用或目的:实现消息认证(authentication)消息鉴别、报文认证、报文鉴别消息鉴别主要鉴别消息内容的真伪,即消息是完整的,没有被篡改过。消息鉴别的基本思想:消息的发送者用要发送的消息和一定的算法生成一个鉴别码(MAC),并将鉴别码与消息一起发送出去;消息的接收者收到消息和鉴别码后,用同样的算法与接收到的消息生成一个新的鉴别码;把新的鉴别码与接收到的鉴别码进行比较,如果相同,则说明消息是正确的,否则说明消息在传送中出现错误.F()F()M’MMAC’产生鉴别码的方式:使用对称密钥体制产生使用hash函数产生可以将任意长度的输入串转化成固定的输出串.121231.,,2.((()))ikkkmmmMACEEEmmm把消息分成4.2数字签名与认证数字安全证书就是标志网络用户身份信息的一系列数据,用来在网络通讯中识别通讯各方的身份,即要在Internet上解决我是谁的问题,就如同现实中我们每一个人都要拥有一张证明个人身份的身份证或驾驶执照一样,以表明我们的身份或某种资格。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效时间,发证机关(证书授权中心)的名称,该证书的序列号等信息。数字证书的生成过程数字证书是由认证中心(CA)颁发的数字证书颁发过程如下:用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。证书=个人信息+公钥信息+CA的签名信息CA的计算机用户的计算机数字证书的生成过程产生密钥主体名私钥公钥CA的公钥CA的私钥签名证书数字签名与认证的举例1问题:如果你有个很秘密的文件或视频,想从网上传给你的一个朋友.那你肯定是希望这个秘密的文件或视频只有你的朋友能看到.那怎么保证这一点呢?解决办法:让你朋友先到数字认证中心申请一个数字证书.你在数字证书认证中心下载了你朋友的公钥证书(就是一个含有公钥信息的文件),使用非对称加密算法对秘密文件进行加密,再将密文通过QQ传送给你朋友。然后,你就可以给你朋友打电话了:“喂?我给你发了个秘密文件呦,在QQ上,收到没?已经用你的公钥加密了。用你的私钥解密就行了.”数字签名与认证的举例2问题:你这个月手头有点紧,正巧在QQ上遇到了一个朋友:你自己:“我需要200两纹银,能否借给我?”你朋友:“没问题。我这就给你转账。请给我一张借条。”你自己:“太谢谢了,我这就用Word写一个借条给你。”然后,你新建一个Word文档,写好借条,存盘。然后,然后怎么办呢?你不能直接把借条发送给朋友,原因有:你无法保证你朋友不会在收到借条后将“纹银200两”改为“纹银2000两”。如果你赖账,你朋友无法证明这个借条就是你写的.普通的Word文档不能作为打官司的证据。解决办法:假设你早就申请了数字证书。你先用你的私钥对借条进行加密,然后将加密后的密文用QQ发送给你朋友。你朋友收到了借条的密文后,在数字证书认证中心的网站上下载你的公钥,然后使用你的公钥将密文解密,发现确实写的是“借纹银200两”,你朋友就可以把银子放心的借给你了.你也不会担心你朋友会篡改你的借条。由于你发给你朋友的是密文,你朋友无法进行修改。这就叫防篡改。由于用你的私钥进行加密的借条,有且只有你的公钥可以解密。这样你朋友就可以证明这个借条就是你写的,这就叫防抵赖。如果你一直赖着不还钱,你朋友把你告上了法庭,这个用你的私钥加密过的Word文档就可以当作程堂证供。因为我国已经出台了《中华人民共和国电子签名法》,使数字签名具有了法律效力。数字签名与认证的举例3问题:在QQ上,一个朋友和你联系,但你觉得你这个朋友今天有点奇怪,你怎么确定和你聊天肯定是你朋友本人呢?解决办法:在QQ上给你朋友发:”uent9385jrmt32”他会把“uent9385jrmt32”粘贴到Word里,然后用他的私钥对这个Word文档加密,再将这个Word文档发送给你。你用你朋友的公钥将Word文档解密,打开,发现里面写的就是“uent9385jrmt32”,就知道QQ那边的确就是真正的你朋友本人了。4.2.1数字签名概述数字签名的引入是为了应对以下的攻击方式否认,发送信息的一方不承认自己发送过某一信息。伪造,接收方伪造一份文件,并声称它来自某发送方的。冒充,网络上的某个用户冒充另一个用户接收或发送信息。篡改,信息在网络传输过程中已被篡改,或接收方对收到的信息进行篡改。数字签名的概念:利用一套规则对数据进行计算的结果,用此结果能确认签名者的身份和数据的完整性数字签名应满足三个基本条件:签名者不能否认自己的签名;接收者能够验证签名,而其他任何人都不能伪造签名;当签名的真伪发生争执时,存在一个仲裁机构或第三方能够解决争执数字摘要数字签名是指用户用自己的私钥对原始数据的哈希摘要进行加密所得的数据。信息接收者使用信息发送者的公钥对附在原始信息后的数字签名进行解密后获得哈希摘要,并通过与自己用收到的原始数据产生的哈希摘要对照,便可确信原始信息是否被篡改。这样就保证了数据传输的不可否认性。数字信封信息发送者首先利用随机产生的对称密码加密信息,再利用接收方的公钥加密对称密码,被公钥加密后的对称密码被称之为数字信封。在传递信息时,信息接收方要解密信息时,必须先用自己的私钥解密数字信封,得到对称密码,才能利用对称密码解密所得到的信息。F()F()M’MMAC’4.2.2数据签名和认证流程对称密钥对称密钥A的私钥4.2.3SET协议电子支付的安全性则依靠电子交易协议获得保证SSL(SecureSocketLayer)安全套接层协议SET(SecureElectronicTransaction)安全电子交易协议SET中的核心技术主要有公开密钥加密、数字签名、数字信封、数字安全证书等。SET协议(SecureElectronicTransaction,安全电子交易)是由VISA和MasterCard两大信用卡公司联合推出的规范。。SET主要是为了解决用户、商家和银行之间通过信用卡支付的交易而设计的,以保证支付命令的机密、支付过程的完整、商户及持卡人的合法身份,以及可操作性。SET购物流程持卡人使用浏览器在商家的Web主页上查看在线商品目录浏览商品。持卡人选择要购买的商品。持卡人填写定单,包括:项目列表、价格、总价、运费、搬运费、税费。持卡人选择付款方式。此时SET开始介入:1.持卡人发送给商家一个完整的定单及要求付款的指令。在SET中,定单和付款指令由持卡人进行数字签名。同时利用双重签名技术保证商家看不到持卡人的帐号信息。2.商家接受定单后,向持卡人的金融机构请求支付认可。3.支付认可请求通过支付网关到银行,再到发卡机构确认,批准交易后,返回确认信息给商家。4.商家发送定单确认信息给顾客,顾客端软件可记录交易日志,以备将来查询。商家给顾客装运货物,或完成订购的服务。到此一个购买过程已经结束。5.商家可以立即请求银行将钱从购物者的