HTTPS的工作流程
1. 引子
HTTPS是在HTTP协议基础上引入了一个加密层(SSL),我们常见的http请求中的数据都是明文传输的,这样并不安全,很容易被截取到数据,对此我们需要引入密钥来将这些明文转换为密文!
- 明文:实际要传输的真实数据;
- 密文:加密后的数据,需要解密后才能拿到真实数据;
- 密钥:密钥可以用来对数据进行加密,也可以对数据进行解密;
2. 对称加密
客户端和服务端使用的密钥是同一个密钥,即对称密钥,双方通过这个密钥来对数据进行加密和解密,就是对称加密。
可以看到明文数据通过对称密钥加密后能够变成密文进行传输,并通过对称密钥进行解密拿到数据,这样我们的请求就不会"白晃晃"的暴露在网络上了!可是,有一些黑客将你传输的密钥截取了,你的明文数据对它来说就不在是密文了,它就能对你传输的数据进行篡改了!
图解流程如下:
这样看来对称加密此时也并不安全了,那该怎么做?有一个法子,就是给密钥再加个密!
3. 非对称加密
非对称加密,其实就是使用两个密钥来对数据进行加密和解密操作,分为公钥和私钥:
- 公钥:可以暴露给外界的密钥,一般用来对数据进行加密操作;
- 私钥:只由服务器掌握的密钥,一般用来对数据进行解密操作;
当然,也可以使用私钥来对数据进行加密,使用公钥来对数据进行解密,但私钥不能暴露在网络上;
图解流程如下:
通过上述流程可知对对称密钥加密后,黑客就无法直接拿到对称密钥来对你的密文进行解密操作拿到你的密文数据了!
不过,这样就能拦住黑客了吗?好像并没有,还有一种操作:中间人攻击!
黑客虽然拿不到服务器的私钥,但是他能够自己伪造公钥和私钥!将自己生成的公钥传给客户端,之后客户端拿到了黑客的公钥后通过这个公钥来给对称密钥加密,之后加密后的对称密钥到了黑客手里,它就能够用自己生成的私钥去解密以此拿到对称密钥,再将刚刚从服务器拿到的公钥对对称密钥加密发给服务器,服务器能够用它的私钥来解密,发现解密成功,就认为没有问题了,但其对称密钥已经被黑客拿到了(很像CAS的ABA问题),之后的对称加密过程对黑客来说也没有阻挡作用了!!
图解流程如下:
这样子,好像还是没有拦住黑客~~
那还得再引入第三方机构来解决问题-公证机构
4. 公证机构
服务器可以向公证机构申请一个证书,这个证书里面包括了证书的发布机构,证书有效时间以及服务器提供的公钥,证书签名等信息,证书的作用就相当于身份证,可以用来保证服务器公钥的权威性!
证书签名:可以理解为由公证机构将服务器提供的申请信息进行一系列的算法计算之后得出了一个校验和,然后公证机构用自己保存的私钥来对校验和进行加密,得到的加密数据就是证书签名。
通过公证机构提供的证书可以用来解决中间人攻击问题,核心流程就是:
服务器拿到公证机构签发的证书后,将证书传递给客户端,客户端通过算法计算出整个证书的hash值/校验和1,然后通过系统内部提供的公钥(公证机构向操作系统内部提供了用于解密的公钥)来对证书签名进行解密,拿到其中的校验和2,比较两个校验和是否相等,若不相等则代表传过来的信息可能已经被黑客篡改了,并得到响应提示,若相等则表示拿到的公钥是正确的,能够用来加密对称密钥,之后进行数据传输!!
图解流程如下:
通过上述加密流程确实可以有效的实现信息的安全传输!!
注:若证书被直接掉包了,客户端也可以通过判断证书中域名等服务端认证信息来判断证书是否被修改过!!
以上便是对HTTPS工作流程的介绍了,如果上述内容对大家有帮助的话请给一个三连关注吧💕( •̀ ω •́ )✧✨