小蓝有两种钥匙:公钥和私钥。(公钥和私钥类似交流的暗号)。
小蓝想和小红互相写信,小蓝把自己的公钥给了小红。
通信场景:
(1)小红给小蓝写信。
过程:小红把信内容用小蓝给的公钥加密后发送给小蓝,小蓝用自己的私钥解密看到小红发送的内容。。
比如:小红:“明天吃饭”——>用小蓝的公钥加密——>小红:*******,信息发送给小蓝——>小蓝收到信息*******——>用自己的私钥解密——>小蓝看到小红说:“明天吃饭"。
注意:
只要小蓝的私钥没有丢失,该信别人拿到也无法解密。
(2)小蓝给小红写信。
过程:
小蓝发送:
1、小蓝在信纸上写好了信的内容(那明天在楼下食堂见),按上指纹(hash函数生成摘录(digest),生成的摘录用私钥加密),发送给小红。
小红接收:主要两步:①看看是不是小蓝发送的(验证指纹)②看看发送的内容中途有没有被改过。
2、小红收到信,看到指纹,用小蓝给的公钥解密,可以解密。说明这封信是小蓝发送的,解密后得到摘录。
3、小红把收到的信的内容用hash函数处理后,得到结果,结果和解密的摘录比较,一样说明没有被中途修改过。
注意:
如果小青看到了小红保存的公钥(这个公钥是小蓝给的那个),把公钥换成自己的,冒充小蓝给小红回复了信息(明天图书馆见)。
小红红感觉回信的内容很奇怪,要求小蓝加上证明自己身份的东西。
小蓝到CA(证书认证中心)办理,认证中心用自己的私钥给小蓝的公钥等信息加密,小蓝得到一个特别的身份证明,这个特殊的身份证明就是数字证书,小蓝把信的内容+特殊的身份证明+签名发送给小红,小红用认证机构的公钥解开了小蓝的公钥,证明是小蓝发的信息。
扩展:
一、https的协议,数字证书的实例。
客户端向服务端发送加密请求,服务端用自己的私钥加密返回消息,连同自己的数字证书一起返回给客户端,客户端(浏览器)证书管理器有个受到信任的列表,解开后公钥是不是在列表里。
参考文档http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
原文:https://www.cnblogs.com/xieZhao/p/13025258.html