HTTPS 原理和分析

这里用到了对称加密和非对称加密,详情看这里对称加密,非对称加密,Hash算法

HTTP协议的问题

HTTPS协议的出现,是因为HTTP协议存在安全问题:

  • 通信使用明文( 不加密), 内容可能会被窃听
  • 不验证通信方的身份, 因此有可能遭遇伪装
  • 无法证明报文的完整性, 所以有可能已遭篡改

针对这些问题,可以 进行通讯层的加密和 报文的加密。HTTPS协议属于对通讯层对加密

HTTPS协议:安全超文本传输协议,是在 TCP 之上进行了加密之后,再基于 HTTP 传输。HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的加密密钥。

通常,HTTP 直接和 TCP 通信。当使用 SSL 时,则演变成先和 SSL 通信,再由 SSL和 TCP 通信了。简言之,所谓 HTTPS,其实就是身披 SSL 协议这层外壳的HTTP。

HTTPS协议,兼顾了 对称加密的速度和 非对称加密的安全性,并结合了CA证书验证用户身份。

HTTPS 流程

  • 1:客户端向服务器发起HTTPS请求,连接到服务器的443端口。
  • 2:服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人
  • 3:服务器将自己的公钥发送给客户端
  • 4:客户端收到服务器端的公钥之后,这里应该是验证服务器发送的数字证书的合法性。
  • 5:证书合法时,客户端生成一个客户端密钥,并用服务器的公钥对客户端密钥进行加密。至此第一次HTTP请求结束(客户端密钥用来进行之后的对称加密,并解决对称加密密钥泄漏问题)
  • 6:客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端密钥发送给服务器。
  • 7:服务器接收到客户端发来的密文之后,会用自己的私钥对其进行非对称解密,解密之后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文。
  • 8:然后服务器将加密后的密文发送给客户端。
  • 9:客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成。

客户端如何校验证书对合法性:

证书中包含了公钥颁证机构、网址、失效日期等等。客户端可以校验证书是否过期,是否吊销等。同时,系统中保留了所有受信任的根证书。 浏览器会调用系统的证书管理器接口对证书路径中的所有证书一级一级的进行验证,只有路径中所有的证书都是受信任的,整个验证的结果才是受信任的。

简单总结

  • HTTPS协议混合使用了 对称加密,非对称加密,数字证书核对 三种校验方式。
  • HTTPS协议发起了两次HTTP请求,第一次用来获取服务器等证书和公钥,第二次用来交互加密的数据
  • HTTPS协议交互过程中,非对称加密使用的服务器的公钥,对称加密使用的客户端随机生成的密钥。通过非对称加密保护客户端密钥的安全性。

参考自:

HTTPS协议解析及验证原理

https原理

HTTPS理论基础及其在Android中的最佳实践

HTTPS 的概念、原理及工作机制

随机浏览