【HTTPS加密协议】

点进来你就是我的人了
博主主页:戳一戳,欢迎大佬指点!

欢迎志同道合的朋友一起加油喔

​​​​​​​


目录

1.HTTPS 是什么

1.1 运营商劫持

1.2 关于加密过程中的名词

2. HTTPS 的工作过程

2.1 对称加密

2.2非对称加密

3. HTTPS执行流程总结



1.HTTPS 是什么

HTTPS 也是一个应用层协议 . 是在 HTTP 协议的基础上引入了一个加密层 ,称为SSL(旧的叫法)或TLS(新的叫法)

HTTP 协议内容都是按照文本的方式明文传输的 . 这就导致在传输过程中出现一些被篡改的情况 

1.1 运营商劫持

什么叫运营商劫持? 

由于我们通过网络传输的任何的数据包都会经过运营商的网络设备 ( 路由器 , 交换机等 ), 那么运营商的网络设备就可以解析出你传输的数据内容, 并进行篡改 .【HTTPS加密协议】_第1张图片

假如我用我的浏览器去下载 qq 音乐, 我的数据就经过了运营商设备, 结果运营商设备把这个下载链接进行了替换, 于是我下载的就是一个 qq 浏览器了, 像这种行为就叫做运营商劫持.

运营商为什么要劫持呢 ?   (被金钱蒙蔽了双眼)

不光是运营商可以劫持到咱们的数据, 黑客也是有可能劫持到的!!!

比如, 黑客黑入了某个路由器, 这个时候就可能获取到所有经过路由器的网络数据报!!

1.运营商路由器可能会受到攻击. 2. 公共场合的 wifi 也是被攻击的对象. 如果此时我们在公共场合继续在网络上进行明文传输, 那么你的账号密码就有可能被窃取了....

如何保证数据不被窃取?  我们无法阻止黑客入侵路由器, 但是可以想办法对数据进行加密, 即使被窃取,,, 他也不知道是什么意思.

1.2 关于加密过程中的名词

  • 明文就是传输的原始数据
  • 密文就是经过加密后的数据,别人看到了也看不出啥结果
  • 加密就是把明文经过一系列转换变成密文
  • 解密就是把密文经过一些列转换变成明文
  • 加密和解密过程需要一个辅助数据,该数据称为密钥

2. HTTPS 的工作过程

加密的方式有很多, 但是整体可以分成两大类: 对称加密 和 非对称加密.

如果加密和解密过程中, 使用的密钥是同一个, 就叫做 "对称加密".

如果加密和解密过程中, 使用的是不同的密钥, 就叫做 "非对称密钥".

2.1 对称加密

 客户端和服务器持有同一个密钥。客户端传入的数据(HTTP请求的header和body)都通过这个密钥进行对称加密,实际上在网络传输过程中,传递的是密文,服务器在收到密文后,接下来就可以根据刚才的密钥,来进行解密,从而拿到明文。

【HTTPS加密协议】_第2张图片

像上图中, 由于数据是加密的, 黑客并不知道明文是什么.

 但是黑客不知道明文是什么的前提是, 他不知道密钥是什么, 如果黑客知道了密钥是什么, 就还是能够破解的.

客户端和服务器使用的密钥, 是一个啥样的密钥? 服务器不只是和一个客户端交互, 是同时和一堆客户端进行交互的, 针对这么多客户端, 使用的是相同的密钥, 还是不同的密钥呢?

如果是相同的密钥, 黑客只要伪装成一个客户端就可以拿到这个密钥了..于是每个客户端, 在和服务器连接的时候, 就自己生成一个密钥.(每个客户端的密钥各不相同)

由于服务器同一时刻要给很多客户端提供服务, 并且每个客户端的密钥又是不同的, 因此服务器就需要维护与每个客户端的之间的密钥关系, 就显得相当麻烦....

【HTTPS加密协议】_第3张图片

 所以, 理想的做法是, 在客户端与服务器建立连接的时候, 双方就协商好这次的密钥是什么, 后续再进行数据传输的时候, 就都用这个密钥加密解密. 

【HTTPS加密协议】_第4张图片

在这里,是假设成为客户端生成的密钥,通过网络来告诉服务器的过程。客户端生成了密钥123456,客户端就告诉服务器,咱的密钥是123456。
但是这样同时存在着问题,要是设备早就被黑客入侵了,并且是明文传输的话,黑客很容易就拿到了,在黑客知道密钥之后,哪怕你后面加密,内容也很容易拿到,毕竟相当于已经有了破解密码一样。

因此,我们发现使用对称加密最大的问题在于密钥能够传的过去,并且不能是明文传递的,如果此时使用另一个密钥对该密钥进行加密, 那 密钥2 该如何传输? 此时密钥的传输再使用对称加密就行不通了, 就需要引入非对称加密了..

 2.2非对称加密

①什么是非对称加密:

非对称加密,有两个密钥,分别叫做公钥(pubic key)和私钥(private key)。

所谓公钥就是指人人都能够获取到的密钥。而私钥是指只有自己能够获取到的密钥。

在这里我们可以利用公钥加密,私钥解密,也可以利用公钥解密,私钥加密。

基于非对称加密,就是让服务器自己生成一堆公钥和私钥,公钥发出去(人人都可以拿到),私钥自己保存。
客户端生成一个对称密钥,客户端就可以使用服务器的公钥,对对称密钥进行加密,然后把数据传给服务器,服务器再通过私钥进行解密。
②具体过程图:【HTTPS加密协议】_第5张图片

 服务器自己持有私钥,客户端持有公钥,黑客可以拿到公钥,但是却拿不到私钥而客户端生成了对称密钥,就可以基于刚刚的公钥对对称密钥进行加密,如果黑客拿到了这个密文,由于他没有私钥,那么是不能够进行解密的,也就是不知道对称密钥是啥 。

由于对称加密的效率比非对称加密高很多, 因此只是在开始阶段协商密钥的时候使用非对称加密,后续的传输仍然使用对称加密.

③缺点:

在服务器把自己的公钥返回给客户端时,被黑客这个中间人进行拦截,他自己生成了一对公钥与私钥

正常情况如下:【HTTPS加密协议】_第6张图片

当黑客进行侵入时(中间人攻击时):【HTTPS加密协议】_第7张图片 

具体过程如下:

首先客户端发出请求知道公钥,这个时候服务器按道理来说应该返回公钥,但是却被黑客入侵了,黑客自己就生成了一对公钥和私钥public key2和private key2,把此时的public key2作为公钥返回给了客户端,此时客户端继续操作通过123456+public key2得到了对称密钥密文,并返回给服务器,这个时候被黑客再次拦截,并用private key2来进行解密,黑客就拿到了密匙123456,紧接着,为了不暴露身份,黑客又按照服务器开始返回的public key公钥对密钥123456重新加密返回给服务器,而此时服务器通过private key进行解密也能够得到密钥123456。并且其根本不知道黑客的存在。

后续客服端再传输数据都是使用对称密钥加密,黑客就可以通过获取的对称密钥解析数据.

 ④解决方式:

  • 在客户端和服务器刚建立连接的时候 , 服务器给客户端返回一个 证书 .
  • 这个证书包含了刚才的公钥 , 也包含了网站的身份信息.

"证书" 机制, 就相当于引入了一个认证机构 , 就像公安局一样是可信的, 然后服务器需要向认证机构申请一个证书, 认证机构就会审核服务器的资质. (此处的证书就是一个加过密的字符串 和服务器的域名)

这就好比你想开一家公司, 你得去工商局办理营业执照, 工商局就会审核你的资料, 看你符不符合国家要求, 审核资质通过后才会给你颁发证书.

【HTTPS加密协议】_第8张图片

【HTTPS加密协议】_第9张图片

尽管黑客在理论上可以尝试修改传输中的证书,但是由于签名的存在,他们不能成功地修改证书而不被发现。如果证书被篡改,客户端会在验证过程中检测到这一点,从而拒绝建立连接。

====================================================================

说到这, 其实抓包工具 Fiddler 也是在进行中间人攻击. 我们首次勾选 Fiddler 的 https 的时候, 提示是否要安装一个 XXX证书, 这个证书就是 Fiddler 为了进行中间人攻击, 自己生成的证书. 所以我们得安装了这个证书, 浏览器才会信任 Fiddler , 浏览器才不会弹框. 

上述这些过程, 并不是 HTTPS 独有的. 这个过程是 SSL / TLS 的加密流程. HTTPS 就是 HTTP + SSL, 其他的协议也可能使用 SSL.

3. HTTPS执行流程总结

  • 客户端生成的对称密钥.用来加密业务数据
  • 服务器生成的非对称密钥pub和pri,用来加密对称密钥
  • 颁布证书机构的非对称密钥(私钥机构自己持有,公钥客户端电脑系统内置),用来加密证书的签名~

 执行步骤:

  1. 客户端使用HTTPS协议访问服务器
  2. 服务器返回证书,该证书包含了使用非对称加密的公钥
  3. 客户端校验证书是否有效,如果无效终止访问,如果有效:
    a. 使用对称加密生成对称密钥
    b. 使用对称密钥加密数据
    c. 使用非对称加密的公钥加密对称密钥
    d. 发送加密后的数据和对称密钥给服务器
  4. 服务器使用私钥解密获取客户端生成的对称密钥,再使用对称密钥解析数据
  5. 之后客户端和服务器就可以使用对称密钥加密解密的方式进行数据的交互

你可能感兴趣的:(网络协议,https)