HTTPS 的加密流程

HTTPS 的加密流程

  • 什么是 HTTPS
  • 对称加密
  • 非对称加密
  • 中间人攻击
  • 证书

什么是 HTTPS

HTTPS 协议就是在 HTTP 协议基础上,引入了加密层(SSL/TLS协议)。

HTTP 协议是明文传输的,传输的数据是不安全的,数据传输过程中,可能会被第三方获取到,甚至可能会篡改数据。

HTTPS 协议就是解决 HTTP 协议的安全问题,HTTPS 协议在数据传输之前,对数据进行加密,然后再进行传输,这样就算传输过程中,被第三方获取了,数据也是安全的。


对称加密

对称加密就是使用同一个密钥对数据进行加密和解密。

服务器和客户端使用相同的密钥进行加密和解密,服务器要服务很多个客户端,对每个客户端都要使用不同的密钥,但是如何让对方知道密钥呢,密钥进行网络传输,也可能被获取到

HTTPS 的加密流程_第1张图片

所以对称加密,还不足以解决问题,除非密钥不进行网络传输,在线下约定密钥,但这显然不太现实。


非对称加密

非对称加密有两个密钥,一个公钥,一个私钥,使用公钥加密,私钥解密,或者使用私钥加密,公钥解密。

公钥是公开的,每个人都可以获取到。私钥只有自己使用,不进行网络传输。

HTTPS 的加密流程_第2张图片

客户端: 首先获取服务器的公钥 pub,然后使用 pub 加密客户端自己生成的对称密钥 key,将这个加密后的对称密钥 key,发送给服务器,然后客户端就可以使用 key 对接下来要传输的数据进行加密。

服务器: 拿到加密后的 key,用自己的私钥 pri 进行解密,接下来就可以用 key 对客户端传输的数据进行解密了。

黑客: 虽然可以获取到传输的数据,但是数据都是加密过的,黑客不知道服务器的私钥 pri,也就无法获取到明文的 key,也就无法对客户端的数据进行解密。

为啥不直接用 pub 加密数据,而是用 pub 加密 key,再用 key 加密数据呢?

原因是非对称加密计算开销比较大,为了性能所以搭配对称加密使用。


中间人攻击

HTTPS 的加密流程_第3张图片

  1. 服务器传输给客户端的公钥 pub 被黑客用自己的公钥 pub2 替换了。
  2. 客户端使用 pub2key 进行加密,发送给服务器。
  3. 黑客用自己的 pri2key 进行解密,获取到明文的 key。
  4. 黑客为了隐藏自己,对明文的 key 使用服务器的 pub 进行加密,返回给服务器。
  5. 黑客悄无声息的拿到明文的key,接下来客户端和服务器的数据传输都是不安全的。

证书

为了解决中间人攻击,客户端必须确认收到的公钥是服务器的,而不是被黑客篡改后的。

引入第三方的公信机构,来证明这个公钥是合法的,服务器上线前需要去机构申请一个证书。

HTTPS 的加密流程_第4张图片

证书中有一个重要的数据,加密后的签名,这个就是用来验证证书的合法性。

加密后的签名: 由证书中所有数据计算得到的一个校验和(签名),然后再用公信机构的私钥加密得到的。


引入证书后,客户端首先获取服务器的证书,然后校验证书的合法性,如果证书合法,就说明没被篡改,证书中服务器的公钥是合法的。

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

  1. 客户端内置了公信机构的公钥,用这个公钥对证书中加密后的签名进行解密,得到明文签名。

  2. 然后用同样的算法计算校验和(签名)。

  3. 对比这两个签名,如果一致就证明了证书没有被篡改,是合法的,如果不一致,说明证书不合法。


你可能感兴趣的:(https,服务器,网络)