https原理简介

简述:

以下内容忽略非常多细节,仅个人抽象理解,请理性阅读。

https是一种安全的协议。怎么才算安全?

  1. 通信内容加密
  2. 确认通信双方的身份

原理介绍:

​ https采用对称加密来加密通信的内容,比如密钥A,通信双方都持有A就能用来加密解密。

​ 提出问题:密钥A如何传输?

​ 密钥肯定不能明文传输,这里就要用到RSA非对称加密。RSA有一对钥匙,一个是私钥,一个是公钥,私钥自己保密,公钥是可以公开的。用私钥加密的数据,只有对应的公钥才能解密,用公钥加密的数据, 只有对应的私钥才能解密。

​ RSA的问题是效率慢,没有对称加密高效。解决的办法是分两步,(1) 我生成一个对称加密算法的密钥, 用RSA的方式安全发给你, (2) 我们随后就不用RSA了, 只用这个密钥,利用对称加密算法来通信。

​ RSA+对称加密解决了通信内容加密的问题,但是无法解决另一个问题,确认通信双方的身份。举个例子,如果有个中间人,分别截取通信双方的公钥,再分别把自己的公钥给双方,那就gg了,因为你收到的公钥,你怎么能确定这个公钥就是对方的?

解决方案就是数字证书。

  1. ​ 当客户端首次发送https请求时,服务器会生成数字证书返回给客户端。为了防止数字证书被篡改,会有特殊的证书生成步骤:
    1. 把服务器信息和非对称的公钥一起通过hash生成消息摘要,因为只要内容被篡改一点点,消息摘要就会产生巨大变化
    2. 服务器用CA的私钥对hash进行加密,生成数字签名。CA可以理解成第三方公信中心
    3. 把数字签名和(服务器信息和非对称的公钥)组合在一起形成数字证书,发给客户端
    4. 客户端使用同样的hash算法对(服务器信息和非对称的公钥)生成消息摘要
    5. 客户端使用内置的CA公钥(例如浏览器内置的)对数字签名进行解密出消息摘要
    6. 客户端对比两个消息摘要是否相同,相同,则说明非对称公钥是正确的
    7. 至此,客户端获得了正确的RSA公钥,就可以把正确的对称加密密钥发给服务器。双方就可以愉快加密通信了

你可能感兴趣的:(https原理简介)