HTTPS 原理及流程

发布于 2021-03-19 22:08:47   阅读量 33  点赞 0  

 HTTP 报文都是通过明文传输的,这将带来敏感数据泄露的风险。为解决这个问题,Netscape 公司制定了 HTTPS 协议。

 HTTPS协议 = HTTP协议 + SSL/TLS协议:

  • SSL:Secure Sockets Layer 安全套接层协议;

  • TLS:Transport Layer Security 安全传输层协议,是 SSL3.0 的后续版本。SSL3.0 与 TLS 存在显著差别,主要体现在所支持的加密算法不同,故两种协议不能互操作。

 在理解 HTTPS 时,可将 SSL/TLS 看成同一个协议。


密码学基础

  • 密钥:加密或解密过程中的参数;

  • 对称加密:私钥加密,信息的发送方和接收方使用同一个密钥去加密和解密数据。对称加密的特点是:算法公开、加密解密速度快。缺点是相对非对称加密,其安全性较差,由于通信双方使用相同的密钥,若一方的密钥遭泄露,整个通信过程将被破解。
     加密过程为:明文 + 私钥 + 加密算法 = 密文

     解密过程为:密文 + 私钥 + 解密算法 = 明文

  • 非对称加密:公钥加密,使用一对密钥:公钥和私钥。公钥公开,任何人都可获取;私钥则私密保存,不能泄露。使用公钥或私钥中的任何一个进行加密,用另一个进行解密。非对称加密的缺点是:加密解密速度慢,只适合对少量数据进行加密。
     公钥加密的密文只能被私钥解密:明文 + 公钥 + 加密算法 = 密文,密文 + 私钥 + 解密算法 = 明文

     私钥机密的密文只能被公钥解密:明文 + 私钥 + 加密算法 = 密文,密文 + 公钥 + 解密算法 = 明文



HTTPS 通信过程

 HTTPS 为了兼顾安全与效率,同时使用了对称加密与非对称加密。对数据进行对称加密,对称加密过程使用的密钥通过非对称加密传输。

 HTTPS 传输过程中使用到三个密钥:

  • 服务器端的公钥和私钥,用来进行非对称加密。私钥不得泄露,公钥可以发给任何人;

  • 客户端随机生成的私钥,用来进行对称加密

 一个 HTTPS 请求实际上包含了两次 HTTP 传输:

  1. 客户端发起第一次 HTTPS 请求,连接服务器的 443 端口;

  2. 服务端将自己的公钥发送给客户端;

  3. 客户端收到服务器端的证书后,会检查证书的合法性,若证书有问题,则 HTTPS 传输将无法继续;若证书合格,则客户端会生成一个随机值,这个随机值就是用于对称加密的私钥,我们将之称为客户端密钥。然后用服务器的公钥对客户端密钥进行非对称加密,将客户端密钥加密为密文;

  4. 客户端发起第二次 HTTP 请求,将加密后的客户端密钥发送给服务器;

  5. 服务器收到非对称加密后的客户端密钥后,会使用自己的私钥对其进行解密,获取客户端密钥。然后用客户端密钥对待响应的数据进行对称加密,返回给客户端

  6. 客户端收到加密后的数据,使用客户端密钥对其进行解密,获取数据


Last Modified : 2021-03-25 23:29:26