2023年7月27日发(作者:)
数字签名及散列⼀、数字签名1.简介如书信或⽂件是根据亲笔签名或印章来证明其真实性的。⽽计算机⽹络中,则使⽤数字签名。实现如下三种功能:1)接收者能够核实发送者对报⽂的签名。也就是说,接收者能够确信该报⽂的确是发送者发送的。其他⼈⽆法伪造对报⽂的签名。这叫做报⽂鉴别。2)接收者确信所收到的数据和发送者完全⼀样⽽没有被篡改过。这叫做报⽂的完整性。3)发送者事后不能抵赖对报⽂的签名。这叫做不可否认。2.数字签名及验证发送⽅使⽤⾃⼰的私钥进⾏数字签名;接收⽅使⽤发送⽅的公钥进⾏验证。3.数字签名⽣成流程由于对较长的报⽂进⾏数字签名,会对计算机造成⾮常⼤的负担,因此需要找出⼀种⾮常简单的⽅法对报⽂进⾏鉴别即使⽤密码散列函数(摘要),后⾯进⾏介绍1)数字签名过程:将待发送信息原⽂做摘要发送⽅使⽤⾃⼰的私钥对摘要进⾏签名签名附在信息原⽂后⾯⼀起发送2)验证数字签名:收到签名数据包对信息部分进⾏摘要对签名部分⽤发送⽅公钥解密,得到摘要⽐较两个摘要是否相同,相同则数字签名有效(原⽂信息⼀旦被篡改,⽣成相同摘要的概率⾮常低)4.为什么数字签名具有上述三种功能?1)报⽂鉴别:除发送⽅⾃⼰之外,没有⼈拥有它的私钥,所以除发送⽅外,没有⼈能产⽣⽤发送⽅私钥进⾏数字签名的密⽂;2)报⽂的完整性:若其他⼈篡改过报⽂,由于⽆法得到发送⽅的私钥⽽对报⽂进⾏数字签名,那么,接收⽅利⽤发送⽅的公钥对接收到的报⽂进⾏数字签名认证,则得到不可读的报⽂,就知道收到的报⽂被篡改过;3)不可否认:发送⽅要想抵赖发送报⽂给接收⽅,接收⽅可把报⽂及密⽂出⽰给进⾏公证的第三者,第三者很容易去证实发送⽅确实发送报⽂给接收⽅。5.安全性数字签名的安全性和有⽤性取决于两个关键因素:⽤户私钥的保护(没有其他⼈能拥有发送⽅⾃⼰的私钥)安全的哈希函数最常见的安全哈希函数:MD5:128bit校验和SHA:160bit校验和哈希函数是否安全:函数是单向的创建两条经过函数计算后获得相同校验和的信息⾮常困难⼆、密码散列函数1.简介两个特点:输⼊长度可以很长,但输出长度固定,且较短;单向函数,即计算上,不可能找到两个不同的报⽂,有相同的密码散列函数输出(摘要)也就是说,若⽹络⼊侵者截获了摘要,也⽆法伪造出⼀个报⽂,使得该报⽂的摘要与原报⽂的摘要相同,即保护了报⽂的完整性2.完整性验证原理单向摘要函数:信息原⽂的数字化摘要,不能根据概要推出原⽂摘要验证:对接收到的信息重做摘要,⽐较此摘要与原摘要3.两种密码散列函数(1)MD5(报⽂摘要的第5个版本,Message Digest 5)以任意长度的报⽂作为输⼊,产⽣⼀个128bit的报⽂输出MD5已被中国学者王⼩云团队证实是可逆的,即找到了⼀对报⽂,具有相同的MD5报⽂摘要最终被SHA所取代MD5算法的⼤致流程:1)先把任意长的报⽂按模计算其余数(64位),追加在报⽂的后⾯;2)在报⽂和余数之间填充1~512位,使得填充后的总长度为512的整数倍。填充的⾸位是1,后⾯都是0;3)把追加和填充后的报⽂分割为⼀个个512位的数据块,每个512位的报⽂数据再分成4个128位的数据块依次送到不同的散列函数进⾏4轮运算。每⼀轮⼜都按32位的⼩数据块进⾏复杂的运算。⼀直到最后计算出MD5报⽂摘要代码。(2)SHA-1(安全散列算法,Secure Hash Algorithm)总体思路与MD5有相似之处以任意长度报⽂输⼊,160bit输出(⽐MD5的128bit多了25%)SHA-1也是可攻破的,后被SHA-2和SHA-3所取代三、完整流程⽹上银⾏、电⼦商务使⽤的验证流程:A⽤户:利⽤哈希函数获得明⽂的信息摘要1,利⽤A的私钥对摘要1进⾏数字签名;将“明⽂+数字签名+A的数字证书”,以某种对称密钥进⾏加密,获得密⽂;利⽤B的公钥对此对称密钥进⾏加密,获得数字信封;将“数字信封+密⽂”,发送给B。B⽤户:将“数字信封+密⽂”,拆开;利⽤B的私钥进⾏解密,还原出需要的对称密钥;利⽤此对称密钥对密⽂进⾏解密,获得明⽂信息;(下⾯考虑能否信任这个明⽂,即该明⽂是否被篡改)对此明⽂进⾏哈希函数运算,得到信息摘要2;并进⾏数字签名验证,以A的数字证书(即A的公钥)操作,还原出信息摘要1;将信息摘要1与信息摘要2进⾏⽐较,若相同,则传送成功,中间未发⽣错误。问题:数字证书是怎么⽣成的?证书的安全性如何保障?见下篇。四、鉴别鉴别是要验证通信的对⽅确实是⾃⼰所要通信的对象,⽽不是其他的冒充者,并且所传送的报⽂是完整的,没有被其他⼈篡改过与授权不同,授权涉及的是所进⾏的过程是否被允许(如是否可对某⽂件进⾏读或写)可把鉴别细分为两种:报⽂鉴别:鉴别所收到的报⽂的确是报⽂的发送者所发送的,⽽不是其他⼈伪造的或篡改的,包含端点鉴别和报⽂完整性鉴别实体鉴别:仅仅鉴别发送报⽂的实体,实体可以是⼀个⼈,也可以是⼀个进程,即端点鉴别区别:报⽂鉴别是对每⼀个收到的报⽂都要鉴别报⽂的发送者(前⾯数字签名部分,是对每个报⽂的鉴别)实体鉴别是在系统接⼊的全部持续时间内对和⾃⼰通信的对⽅实体只需验证⼀次1.报⽂鉴别⽤上述使⽤摘要的数字签名技术即可实现对报⽂的鉴别2.实体鉴别最简单的实体鉴别:A向远端的B发送带有⾃⼰⾝份A(如姓名)和⼝令的报⽂,并且使⽤双⽅约定好的共享对称密钥收到此报⽂后,⽤共享对称密钥进⾏解密,从⽽鉴别了实体A的⾝份。如下:进⾏加密。B上述⽅法存在明显的漏洞。重放攻击:⼊侵者C从⽹上截获A发给B的报⽂,C并不需要破解这个报⽂,⽽是直接把这个由A加密的报⽂发送给B,使B误认为C就是A;然后B就向伪装成A的C发送许多本来应当发给A的报⽂。C甚⾄还可以截获A的IP地址,然后把A的IP地址冒充为⾃⼰的IP地址(IP欺骗),使B更容易受骗。为了对付重放攻击,可以使⽤不重数。不重数是⼀个不重复使⽤的⼤随机数,即“⼀次⼀数”。在鉴别过程中不重数可以使B能够把重复的鉴别请求和新的鉴别请求区分开。A⾸先⽤明⽂发送其⾝份A和⼀个不重数加密后发回给A,同时也给出了⾃⼰的不重数给B。接着,B响应A的查问,⽤共享的密钥对对。最后,A再响应B的查询,⽤共享密钥加密后发回给B。A和B的会话必须使⽤不同的不重数集。由于不重数不能重复使⽤,所以C在进⾏重放攻击时⽆法重复使⽤所截获的不重数。如下:在使⽤公钥密码体制时,可以对不重数进⾏签名鉴别。B⽤其私钥对不重数⼰原来发送的不重数钥核实签名,鉴别了A的⾝份。进⾏签名后发回给A。A⽤B的公钥核实签名,如能得到⾃进⾏签名后发送给B。B⽤A的公,就核实了和⾃⼰通信的对⽅的确是B。同样,A也⽤⾃⼰的私钥对不重数
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690460690a352562.html
评论列表(0条)