数字签名是指发送方用本身的私钥对数字指纹进行加密后所得的数据,其中包括非对称密钥加密和数字签名两个过程,在能够给数据加密的同时,也可用于接收方验证发送方身份的合法性。采用数字签名时,接收方须要使用发送方的公钥才能解开数字签名获得数字指纹。html
数字指纹又称为信息摘要,是指发送方经过HASH算法对明文信息计算后得出的数据。采用数字指纹时,发送方会将本端对明文进哈希运算后生成的数字指纹(还要通过数字签名),以及采用对端公钥对明文进行加密后生成的密文一块儿发送给接收方,接收方用一样的HASH算法对明文计算生成的数据指纹,与收到的数字指纹进行匹配,若是一致,即可肯定明文信息没有被篡改。算法
数字签名的加解密过程如图1-20所示。甲也要事先得到乙的公钥,具体说明以下(对应图中的数字序号):ide
图1-20 数字签名的加解密过程示意图
学习
(1)甲使用乙的公钥对明文进行加密,生成密文信息。加密
(2)甲使用HASH算法对明文进行HASH运算,生成数字指纹。spa
(3)甲使用本身的私钥对数字指纹进行加密,生成数字签名。视频
(4)甲将密文信息和数字签名一块儿发送给乙。htm
(5)乙使用甲的公钥对数字签名进行解密,获得数字指纹。blog
(6)乙接收到甲的加密信息后,使用本身的私钥对密文信息进行解密,获得最初的明文。get
(7)乙使用HASH算法对还原出的明文用与甲所使用的相同HASH算法进行HASH运算,生成数字指纹。而后乙将生成的数字指纹与从甲获得的数字指纹进行比较,若是一致,乙接受明文;若是不一致,乙丢弃明文。
从以上数字签名的加/解密过程当中能够看出,数字签名技术不但证实了信息未被篡改,还证实了发送方的身份。数字签名和数字信封技术也能够组合使用。可是,数字签名技术也还有一个问题,获取到对方的公钥可能被篡改,而且没法发现。
试想一下,若是***者一开始就截获了乙发给甲公钥的文件,而后就可用狸猫换太子的方法更改乙的公钥,最终可能致使甲得到的是***者的公钥,而非乙的。
具体过程是这样的:***者拦截了乙发给甲的公钥信息,用本身的私钥对伪造的公钥信息进行数字签名,而后与使用甲的公钥(***者也已获知了甲对外公开的公钥)进行加密的、伪造的乙的公钥信息一块儿发给甲。甲收到加密信息后,利用本身的私钥能够成功解密出获得的明文(伪造的乙的公钥信息),由于这个信息的加密就是用甲的公钥进行的,而且也能够经过再次进行HASH运算验证该明文没有被篡改。此时,甲则始终认为这个信息是乙发送的,即认为该伪造的公钥信息就是乙的,结果甲再利用这个假的乙的公钥进行加密的数据发给乙时,乙确定是总解密不了的。此时,须要一种方法确保一个特定的公钥属于一个特定的拥有者,那就是数字证书技术了。由于用户接收到其余用户的公钥数字证书时能够在证书颁发机构查询、验证的。
【经验之谈】许多人分不清非对称密钥加密和数字签名的区别,其实很好理解。非对称加密用的是接收方的公钥进行数据加密的,密文到达对方后也是经过接收方本身的私钥进行解密,还原成明文,整个数据加密和解密过程用的都是接收方的密钥;而数字签名则彻底相反,是经过发送方的私钥进行数据签名的,经签名的数据到达接收方后也是经过事先告知接收方的发送方的公钥进行解密,整个数据签名和解密的过程用的都是发送方的密钥。
以上内容摘自刚刚上市的华为官方著做——《华为×××学习指南》,是国家十三五重点规划图书,是华为官方指定的ICT培训教材!当当网、京东网等书店都可正式购买了!本书配套实战视频课程即将发布,敬请关注本人课程中心:http://edu.51cto.com/lecturer/user_id-55153.html