目录
一.什么是HTTPS💢
HTTPS和HTTP一样也是应用层协议,但是在HTTP的基础上 引入了一个加密层,探究何为HTTPS重点就是理解其加密过程。
在HTTP中服务器和客服端之间传输数据是“明文”进行的(我们用抓包工具都可以获得数据),那么这就会导致数据在传输过程中被篡改这个事件发生。
经典的例子就是,有时你在网页上下载软件,明明看网页是要下载的那个软件的,可是点击下载后,下载的却是别的软件..... 这就是“运营商劫持”,不止运营商可以劫持数据,黑客也可以通过类似手段进行劫持用户的信息(上网需谨慎....)。
二.何为加密💢
👁🗨 首先我们要知道几个概念
- 明文:就是任何人都能够看懂的数据。
- 密文:通过对明文进行一些处理后生成的数据(不是所有人都可以看懂)。
- 加密:将明文变为密文的过程。
- 解密:将密文变为明文的过程。
- 密钥:将密文变为明文的工具(某些算法)。
加密方式有很多类,这里我们介绍对称加密和非对称加密。
三.HTTPS的工作过程👁🗨
1.引入对称加密
对称加密就是通过同一个密钥对数据进行加密,解密的过程。
比如说我现在和服务器约定咱之间的密钥是“倒读”,那么我发送一个1234明文想要告诉服务器,我就先对1234进行“倒读”这个密钥的加密变成了4321,那么服务器收到后也用“倒读”这个密钥解密就变成了1234这个客户端传来的明文。
这就是对称加密,是不是觉得蛮不错的,其实这不现实,因为服务器面对的不止是你一个客户端,服务器同时面对庞大数量的客户端那么对于每个客户端的密钥也必须是不一样的,服务器压力太大了(若是一样的话,黑客也就可以很轻松的拿到密钥了)。
所以比较理想的做法是在第一次客户端与服务器建立链接的时候双方就定义好这次的密钥是啥。
但是如果把密钥当作明文一起传输,那么黑客不是轻易获取了吗,这个时候加密也就形如虚设了。
所以我们需要将密钥也加密,也就是密钥的密钥....这不是一直死循环了吗.......
这个时候就要引出此文的重点:非对称加密
2.引入非对称加密💥
什么是非对称加密。
这里我们先做一点理解的准备。
- 非对称加密有两个密钥:两个密钥只公开一个叫公钥,而另一个叫私钥。
- 公钥是客户端拥有的,而私钥是绝对不能泄露的在服务器那边。
- 当数据用公钥加密后就不能用公钥进行解密,只能由私钥解密。
这个时候让我们再回想一下上面的对称加密,我们就可以对密钥进行加密了,具体理解过程看图。
由于对称加密的效率比非对称加密高很多, 因此只是在开始阶段协商密钥的时候使用非对称密, 后续的传输仍然使用对称加密。
你以为这样就又安全了吗。我们还不知道客户端如何获得公钥呢。
接下来让我们来看看“中间人攻击”。(客户端请求服务器获得公钥)
那么该怎么办呢。
3.引入证书
在客户端与服务器建立连接的时候,服务器给客户端返回了一个证书
这个证书包含了公钥,和网页信息。
就好比作一个人的身份证,搭建HTTPS需要申请一个证书。
当客户端获取到证书后,就会对证书进行校验,防止证书是黑客伪造的。
(校验方法比较复杂这里不做过多介绍)。
那么客户端就可以拿到公钥了,那么整个HTTPS的工作过程也就是这样结束了。