概述

本文简要介绍HTTPS协议是如何保证数据在传输过程中的安全的。

由于是以介绍为主,所以不会涉及细节,而且肯定会有一些错误。如果想要详细了解可自行查阅资料。

正文

在HTTPS协议出现前大家用的都是HTTP协议,这种协议传输的都是明文信息,任何人都可以窃取并篡改,毫无安全性可言。

HTTP协议的简要通信流程如下图:

图片加载失败HTTP协议简要通信流程

由于传输的信息都是明文的,所以攻击者就可以窃取并篡改信息,如下图:

图片加载失败中间人攻击


你可能会想,我们把信息加密不就可以了么,比如像下图一样

图片加载失败使用对称密钥加密信息

对称加密:双方持有同一个对称密钥,任何一方通过对称密钥加密的信息,对方可以通过相同的对称密钥解密出原文。

但是攻击者依然可以通过各种方式获取到对称密钥:

  • 如果密钥是通过服务器下发给客户端,则直接截取服务器的消息就行了。
  • 如果对称密钥是提前保存在双方的电脑上,那就可以通过某种手段入侵客户端或者服务器来窃取对称密钥。
  • 其它方式。

截取到密钥后攻击者仍然可以进行攻击

图片加载失败中间人攻击


那么我们就需要对“对称密钥”进行保护了,如下图

图片加载失败保护对称密钥

非对称加密:一方持有私钥,一方持有公钥,使用公钥加密的信息只能被私钥解密。私钥不会用于加密,不过通常会用于加一段签名代表信息是完整,即信息是否丢失了一部分或者因为某种原因而发生的改变。

这次攻击者看似无法通过截取信息来获得对称密钥了,但是攻击者依然有机会发起攻击。

不过先说明一点,目前公钥都是通过服务器下发的证书获得的,所以更接近下图相对来说更接近真实的通信流程

图片加载失败服务器下发证书

那么攻击者会怎样攻击呢?如下图(图片如果看不清可以右键图片选择“在新的标签页中打开图像”或类似选项)

图片加载失败中间人攻击


这时显然不能对公钥再次加密了,因为无法判断客户端得到的证书是真的,还是攻击者伪造的。

这时就需要第三方介入了

  1. 合法服务器的证书都是经过审核机构审核的,服务器在下发证书的时候就会下发经过审核的证书。
  2. 客户端会存有经过审核的证书的列表。
  3. 客户端收到服务器下发的证书后会验证收到的证书是否经过了审核。
  4. 如果经过了审核则继续通信,反之断开连接或者弹出警告。

现在的通信流程图下图,也是HTTPS的大致通信流程

图片加载失败更接近于HTTPS的通信流程


不过HTTPS的一大软肋就是第三方证书审核机构,如果审核不严将攻击者的证书列入了合法证书列表,那么HTTPS所作的努力将全部白费。

总的来说,HTTPS增加了攻击者的攻击成本,使得数据的传输过程变得更加完全。