了解数字签名
(1)什么是数字签名?
A发消息给B, A将消息用散列函数生成一个散列值确保信息不被修改,然后A用自己的私钥对散列值进行加密,A将加密后的散列值和消息一起发送给B
B接收到消息后,B也用散列函数生成一个散列值,然后用A的公钥将A发送来的加密的散列值进行解密,两个散列值进行对比,看消息是否被修改过
如下图:
(2)为什么需要数字签名? 如下图
A喜欢B,于是A一个消息"我爱你" 给B,
但C也喜欢B,C通过某种手段拦截到了A发送给B的消息,于是将消息改为"我不爱你".
结果A还傻傻的以为已经向B进行了表白.....
(3)数字签名存在的问题?
不能确保人与加密对的对等.如下图:
A将消息的散列值加密和消息体发送给B,结果被C拦截到,C事先将B中保存的A的公钥替换成了自己的公钥,
C修改消息并用自己的私钥加密散列值发送给B,B收到消息后用被C替换的公钥进行解密,结果散列值无误
(4)怎么解决数字签名存在的人与消息对不对等的问题?
PKI(公钥基础设施),通过颁发数字证书的方式将特定**对和特定人进行绑定.
如下图是A的数字证书:(类似于身份证)
A在发消息前将自己的数字证书发给了B, B用权威机构的公开**对该证书内容进行验证,发现就是A的证书,然后再用证书里A的公钥对A发来的消息中的散列值进行解密
查看消息的完整性,确保消息没被修改