HTTPS 的加密流程

什么是 HTTPS

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

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

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


对称加密

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

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

在这里插入图片描述

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


非对称加密

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

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

在这里插入图片描述

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

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

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

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

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


中间人攻击

在这里插入图片描述

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

证书

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

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

在这里插入图片描述

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

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


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

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

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

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

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


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值