最容易理解的HTTPS总结

211 阅读4分钟

引言

HTTP的缺点在很多文章都有,他的通信使用的是明文,容易导致数据泄露,篡改等情况,HTTPS就是在HTTP基础上建立SSL加密层,对传输数据进行加密。但是如何进行加密,我用简单的话语总结了一下。

加密算法

其中SSL层功能实现主要依赖于三种加密算法

对称加密

对称加密的双方通过一个密钥来进行加密通信,对称加密的双方加密与解密都用同一种密钥。 举个A与B通信的例子

  • 首先A快开始将密钥发给B
  • 之后A会将信息先通过密钥进行加密,然后传给B
  • B在接收到信息后通过密钥进行解密

这样做的缺点很明显,密钥可能会被截获,这样中间人也可以通过密钥去解开A发送的加密后的信息

非对称加密(RSA)

非对称加密的双方不会再仅凭一个密钥进行加密通信,而是协议了一对密钥,这对密钥包括一个公钥和一个私钥,通过公钥加密的信息只能通过对应的私钥进行解密。我们再举个例子说明这两个密钥是怎么工作的

  • 首先A要与B通信,A会获得B手中的一对密钥中的公钥
  • A通过这个密钥对信息进行加密发送给B
  • B再通过一对密钥中的私钥进行解密

这样劫持方没有B的那个私钥,也就解密不了A发送的信息,这种加密算法的缺陷就是因为加密解密的操作而导致时间过长。并且还有一个缺陷,我们下面说。

对称加密+非对称加密(混合加密)

为了结合对称加密时间快,非对称加密安全的优点,就有了对称加密+非对称加密方案,举个例子

  • A需要和B进行加密通信,A通过RSA非对称加密算法获得B的公钥
  • A通过这个公钥将一个对称加密中的密钥进行加密并发给B
  • B通过私钥解密出这个密钥,
  • 接着A与B再通过这个密钥进行加密通信

现在我们结合了这两种加密算法的优点,但这种算法还是具有风险: 我们无法确认在1阶段时获得的公钥是对的,这也是上面说的非对称加密算法的缺陷。并且在传递信息过程中,虽然无法被解密,但是可以被篡改。

数字证书

解决的上面两个问题,此时就需要引入了证书颁发机构(Certificate Authority,简称CA)

数字签名

首先我们要解决的是校验数据完整性,以防止数据被篡改的可能,这时我们就要用到数字签名,这时通过混合加密算法不是在获得接收方的公钥,而是获得接收方的数字签名,具体获得过程如下

  • B不再直接给A自身的公钥,而是将B自身的公钥,自身的个人信息等通过Hash算法生成一段消息摘要
  • B将这段消息摘要通过CA的私钥进行加密获得数字签名
  • B将数字签名发送给A

于是我们发现本质区别是多加一步通过Hash算法生成消息摘要,但这也不足以验证数据是否被篡改,于是我们再多加一步,在数字签名的基础上添加公钥以及自身信息组成数字签名,至此我们的步骤变成

  • B不再直接给A自身的公钥,而是将B自身的公钥,自身的个人信息等通过Hash算法生成一段消息摘要
  • B将这段消息摘要通过CA的私钥进行加密获得数字签名
  • B在数字签名的基础上添加了自身的公钥、自身的个人信息等组成数字证书
  • B将数字证书发送给A

当A接受到数字证书后

  • A通过Hash算法将数字证书中B的公钥,B的个人信息重新生成一段新的消息摘要
  • A通过CA公钥将数字证书中的数字签名解密获得B生成到达消息摘要
  • A将解密的消息摘要与阶段1中生成的消息摘要进行比对,如果没有差异则表示没有被篡改
  • 至此A获得B的公钥

这其中,CA的作用是为了防止发送数字证书时被替换掉了公钥,消息摘要等

最后的最后,A终于如愿获得了B的公钥