网络通信-公私钥、https与CA数字证书

公私钥、https与CA数字证书整理总结

Posted by Kang on September 16, 2019

公钥与私钥

简单公钥与私钥图文说明 简单公钥与私钥使用示意图
  从上图可以看出,公钥加密解决了通讯链路的安全,保证在通讯过程中不出错,这是因为公钥加密的数据只能私钥解密,这种情况下,即使黑客拿到双方公钥也没用,因为公钥加密的数据没法破解。私钥的签名验证了信息来源的正确性,这是因为数字签名是发送方私钥产生的,没有办法伪造。很好的防止了黑客通过自己持有的公钥进行数据伪造。

CA证书

  为了保证公钥的安全性,A发出的公钥B接收时不会被第三方替换掉,保证就是A的,使用第三方权威机构包装为CA证书发出的,从CA拿到的公钥可以认为一定是A发出的,随时可以到机构去校验当前CA证书是不是正确的。

HTTPS

Https流程和原理
  HTTPS协议通过TLS层和证书机制提供了内容加密,身份认证,数据完整性三大功能。
  简单理解为,在用户发出一个加密请求(HTTPS)时,服务器将加密后的内容和数字证书(不一定为CA证书?)一起发送给请求方,后面双方都通过私钥与公钥加密通信。
  作为私钥加密的摘要,以及根据摘要内容生成的唯一编号,当任意内容被修改时,可能造成摘要不能被客户端解析或者唯一编码验证不通过。


总结

一个遗留疑问

  目前实际中要完成一个相互的通讯,到底是不是两对公钥和私钥一起使用呢?如果是,那私人用户哪来私钥呢,不可能私人用户也去申请CA吧??
  https只能保证客户端到服务器端的数据安全??

为啥需要两道锁呢

  这是因为黑客虽然无法解开已存在的通信数据,但是其却可以拦截并通过持有的公钥进行身份伪装,内层的数字签名,因为黑客没有办法伪造,所以能确定身份。
  外层虽然可以伪造(也只能伪造,但不能破解),但是内层身份校验不通过。

为啥整个过程中不直接使用私钥加密,公钥解密呢

  若直接在外层进行私钥加密,公钥解密,那么根本没有数据安全性而言了,发送出去的数据基本上对所有人都是透明的。

公钥和私钥是成对的,它们互相解密。从数学角度,私钥和公钥并没什么区别。只选选择公开的叫公钥。选择保留的是私钥。所以公钥加密私钥解,私钥加密公钥解没有本质区别。

公钥加密,私钥解密。

私钥数字签名,公钥验证。

一种改进方式

参考
  由于非对称加密十分慢,所以可以进行改进:当客户端拿到服务器端的公钥后,生成一个对称秘钥,这样后面就能使用这个对称秘钥进行通信。当然前提是客户端和服务器端这个这两个秘钥在存储中不能丢失。