数字签名及证书
一:对称加密与非对称加密
1)对称加密:即双方数据交互时采用 同一套规则"x" 进行加密解密;
2)非对称加密:即双方数据交互依赖于公钥和私钥;【公钥:公开;私钥:私有】
二:公钥与私钥作用

综上图:A使用B公钥加密后,仅能使用B私钥解密,而B私钥仅B持有,所以确保内容的保密性;但B公钥是公有的,任何人均发送该内容,从而无法确保该内容的来源是否可靠;

综上图:A使用A私钥加密后,任何人均有可能解密该文章,从而加密性差;但是可以确定内容所属对象,从而确保内容来源可靠;【私钥加密耗时较长】
数据交互时如何确保内容的保密性以及来源可靠呢?那么下面将引入数字签名。
三:数字签名与数字签名验证
数字签名流程:
- A对明文执行哈希运算得到Hash值,生成摘要;【常见摘要算法:SHA-1算法】
- A私钥对摘要加密,生成数字签名;
- 将摘要和正文一起发给B.【为防止内容被内容被窃听,可对内容公钥加密】
1)数字签名的关键是“摘要”,为何这么说呢?
消息摘要算法(杂凑算法,哈希算法)的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。【转自:https://blog.youkuaiyun.com/HackerSaillen/article/details/64906881 】
- 1.无论输入的消息有多长,计算出来的消息摘要的长度总是固定的;
- 2.消息摘要看起来是“随机的”,一般随机都是伪随机;
- 3.一般地,只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同(潜在意识是可以相同);但相同的输入必会产生相同的输出;
- 4.消息摘要函数是无陷门的单向函数,即只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息,甚至根本就找不到任何与原信息相关的信息;
- 5.好的摘要算法,没有人能从中找到“碰撞”,但是“碰撞”是肯定存在的。
从而保证数据内容的完整性【不可逆性,唯一性,固长性】
2)数字签名及数字签名验证流程分析

数字签名及数字签名验证过程分析:上述操作对明文存在2个操作,一是公钥加密,确保在传送过程中内容被窃听;二是数字签名的生成,确保在内容传递过程中内容没有被篡改,以及表明该内容的所属对象;确保数据的来源的可靠以及数据的完整性。
3):如果C将B电脑中的A公钥替换成C公钥,且B的公钥是公开的,那么C按照上述流程发送内容【C私钥加密】,B能判定该数据的来源吗?结果是不能的,该流程仅能确保数据的完整性以及来源是当前公钥所属的,却无法判定公钥被替换,最可怕的是B能够照常接收内容却无法识别发送者。

如何避免该问题呢?那么将引入数字证书!!!
四:数字证书
数字证书里存有很多数字和英文,当使用数字证书进行身份认证时,它将随机生成128位的身份码,每份数字证书都能生成相应但每次都不可能相同的数码,从而保证数据传输的保密性,即相当于生成一个复杂的密码。
数字证书绑定了公钥及其持有者的真实身份,它类似于现实生活中的居民身份证,所不同的是数字证书不再是纸质的证照,而是一段含有证书持有者身份信息并经过认证中心审核签发的电子数据,可以更加方便灵活地运用在电子商务和电子政务中。【数字签名相当于纸质版签字;数字证书相当于身份证】
为避免上述问题,在发送明文,数字签名的同时,将带有A公钥的数字证书同时发给B,从而确保内容来源【数字证书】及内容完整性。

数字签名及数字证书流程分析:仅在数字签名流程的基础上新增一个数字证书,从而确定指定对象【数字证书中提供的公钥】 ,避免由于接收方的公钥被替换。
总结:
- 对称加密:双方使用同一秘钥进行加密解密;
- 非对称加密 - 公钥 :通过公钥加密的目的是对内容本身加密,接收方仅能使用该公钥对应的私钥进行内容解密,但接收方无法确保该内容的来源是否可靠;【按照接收方的加密标准对内容本身进行加密,保证内容的保密性】
- 非对称加密 - 私钥:通过私钥加密的目的是确定当前内容所属对象/来源,但对内容加密性差;【按照自身加密标准对内容加密,表明该密文内容的来源】
- 数字签名:保证数据的完整性,一般采用私钥加密,从而确保内容的来源,但接收方电脑中的该私钥对应公钥易被篡改,导致对象不确定;
- 数字证书:确定指定对象【数字证书中提供对应公钥,防止接收方公钥被替换】