HTTPS协议原理

  • 2020 年 1 月 27 日
  • 筆記

了解HTTPS的原理之前,我们要先理解下对称加密和非对称加密

在对称加密算法中,加密和解密使用的密钥是相同的。也就是说,加密和解密使用的是同一个密钥。因此,想要实现对称加密算法那么就必须要保证双方拥有同一个密钥,并且密钥不能泄漏

在非对称加密算法中,加密使用的密钥和解密使用的密钥是不相同的。一把是作为公开的公钥,另一把是作为谁都不能给的私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密

而这两种密钥中对称加密算法相比非对称加密算法效率要高、性能好,所以交互的场景下多用对称加密。但是如何能让之前毫无关联的客户端和服务端之间使用同一对私钥来进行交互呢?请看下方这个图:

  1. 在第一次通信的时候,客户端和服务端会互相交换一个随机数
  2. 同时服务端会返回一个它的公钥证书,这个公钥证书可以解密服务端使用自己的私钥进行的非对称加密的数据,同时也可以表明服务端的身份
  3. 客户端拿到服务端的公钥之后就会向权威机构来验证这个服务端的真实性
  4. 当客户端验证服务端真实性没问题后,就会把自己的公钥证书发送给服务端,同样这个公钥证书可以解密客户端使用自己的私钥进行的非对称加密的数据
  5. 现在客户端和服务端都有对方的公钥证书了
  6. 紧接着客户端会再次生成一个随机数pre-master
  7. 然后客户端使用自己的私钥加密随机数pre-master传输给服务端
  8. 现在客户端和服务端都拥有着一个自己的随机数、一个对方的随机数还有一个pre-master随机数。通过这三个随机数就可以分别在客户端和服务端生成一样的对称加密的私钥
  9. 接下来的交互过程中双方就可以使用使用这个私钥进行对称加密的交互了

根据对称加密和非对称加密两种算法的特点,假设你是一个黑客,在上面的这些过程中你可以攻破这个流程么