《HTTPS终极指南:从加密原理到防御中间人攻击,一文彻底搞懂网络安全内核!》

前言

本篇博客将详细介绍HTTPS,在此之前介绍过HTTP,有关于HTTP的问题可以先去看《一网打尽HTTP协议:从报文格式到Header/状态码,附带经典面试题精讲》

💖 个人主页熬夜写代码的小蔡

🖥 文章专栏

若有问题 评论区见

🎉欢迎大家点赞👍收藏⭐文章 ​

d6b44a6e06316a12d6dec7f29fc29d7b.gif​​

 ca618b2856ce45c78a02cc2a85b3b0f6.gif

一.HTTPS是什么

当前网络上,主要都是 HTTPS 了,很少能见到 HTTP,实际上 HTTPS 也是基于 HTTP.(前面讲过的 HTTP 的各个方面的内容,对于 HTTPS 同样适用)
只不过 HTTPS 在 HTTP 的基础之上, 引入了"加密"机制,引入 HTTPS 防止你的数据被黑客篡改 (尤其是反针对 运营商劫持)

HTTP 当前很少有直接使用的了.一般都是使用 HTTP 的加强版 HTTPS.(加密)

二.加密是什么,怎么加密

说到底是怎么加密的呢???先举个栗子

在洋务运动时期,慈禧和恭亲王奕䜣都属于顽固派,有一天恭亲王奕䜣打听到有几个大臣要造反,这时候恭亲王奕䜣就给慈溪写了一篇折子,直接看就没什么不一样,就是普通的唠唠家常(也就是明文)

这时,只需要把带有窟窿的纸盖上,就得到了密文,带有窟窿的纸能够把密文还原成明文,也能够把明文转成密文,窟窿的纸也就是密钥

明文 + 密钥 => 密文
密文 + 密钥 => 明文

三.HTTPS 的⼯作过程

既然要保证数据安全, 就需要进⾏ "加密",⽹络传输中不再直接传输明⽂了, ⽽是加密之后的 "密⽂".加密的⽅式有很多, 但是整体可以分成两⼤类: 对称加密 和 ⾮对称加密

3.1对称加密:

加密和解密,使用的密钥 是同一个密钥,设密钥为key     明文 + key => 密文,密文 + key =>明文

事实上,这里的加密和解密,涉及到一系列复杂的数学运算 (密码学本质上是数学问题,这里不做深入研究)

仔细思考,上面的模型存在一个重要问题,服务器不是只和一个客户端通信, 而是和很多客户端通信,这些客户端使用的 对称密钥 是相同的嘛?
很明显,必须要求每个客户端的密钥都不相同,彼此之间才不知道对方的密钥是啥

此时要求每个客户端对应的密钥都不同.现在就需要每个客户端,在和服务器建立连接的时候,就把密钥给生成出来 (涉及到一些随机数机制在里面,保证每个客户端生成的密钥都不同)客户端再把自己的密钥通过网络传输给服务器

这时候有问题了,如果在网络传输过程中密钥被黑客截获了,这不也就凉了???

此时,黑客就知道了通信的密钥,后续传输的加密数据,黑客就可以很轻松的进行解密~,此时的加密过程,就没什么卵用了~~~

如何让密钥更安全的到达服务器呢??需要针对密钥进行加密~.
是否是再搞一个密钥2,使用密钥2 对上面的密钥进行加密呢??(此时,还得想办法把密钥2 也传输给服务器),无论引入多少个密钥,你套上几层娃,都有泄露的风险~~~

3.2非对称加密

为了解决上述安全传输密钥的问题,引入了"非对称加密"

有两个密钥(一对)这俩密钥,一个称为“公钥”,一个称为"私钥"(公钥就是可以公开的,私钥就是自己藏好的),明文 + 公钥 => 密文,密文 + 私钥 =>明文或者明文 + 私钥 =>密文 密文 + 公钥 =>明文,总的来说用一个钥匙加密,就用另一个要是解密

既然已经引入了非对称加密,为啥还需要引入对称加密呢?

进行非对称加密/解密,运算成本是比较高的.运算速度也是比较低的.对称加密,运算成本低, 速度快.使用非对称加密,只是用来进行这种关键环节 (传输密钥)(一次性的工作,体积也不大),成本就比较可控,后续要传输大量的业务数据,都使用效率更高的对称加密,比较友好的做法.引入安全性,引入加密,也势必会影响到传输效率,我们也是希望让这样的影响能尽可能降到最低~~

上述 对称加密+非对称加密 过程就是 HTTPS 的基本盘,但是光有这些还不够,上述流程还存在一个严重的漏洞,黑客利用这个漏洞,仍然可以获取到原始的明文数据~~~

3.3中间人攻击

 在客户端这边,不知道pub2是黑客的,以为就是服务器呢,于是就使用pub2针对对称密钥进行加密,接下来,客户端继续使用对称密钥进行上述数据传输。

在黑客入侵的设备这边,黑客自己也生成一对非对称密钥,其中公钥pub2,私钥pri2,黑客收到加密的对称密钥之后,因为这个密钥是pub2加密的,需要pri2进行解密,黑客手里当然有pri2(他自己生成的),黑客解密之后就拿到了对称密钥,并且使用服务器刚才的pub1重新对对称密钥进行加密,进一步的发送给服务器.

重新使用 pub1 加密, 就是为了 瞒天过海,不要让服务器发现其中的端倪~~,由于对称密钥,黑客在刚才的过程中,已经拿到了,所以此时加密传输的数据对于黑客来说已经一览无余了

3.4“证书”解决中间人攻击问题

如何解决上述的中间人攻击问题?

之所以能进行中间人攻击,关键要点在于客户端没有"分辨能力"客户端不知道当前这个公钥是不是黑客伪造的!!

这里的"分辨”不能靠"自证”(谁都是说自己是真的),引入第三方的可以被大家都信任的"公证机构"公证机构说这个公钥是正确的,不是被伪造的,我们就是可以信任的~~

这是 计算机 中的"证书"不是纸质的就是一段结构化的数据,这段数据中就会包含一些重要的信息,比如:域名,服务器公钥,证书的过期时间......

颁发证书的时候,公证机构,就会针对证书中的各个属性,计算出一个校验和,并且针对这个校验和进行加密,就得到了数字签名.这里面的加密也是非对称加密.公证机构,自己生成一对公钥和私钥(和服务器的公钥私钥不一样)公证机构就会自己持有私钥,公钥就会发布给各个客户端设备(往往公钥都是内置到系统中的,安装了操作系统, 就会自带公证机构的公钥)

客户端拿到了这个证书,也就拿到了证书中的公钥,客户端就需要验证这个公钥是否是服务器最初的公钥(是否是被黑客篡改了??)

这个过程, 就称为"证书的校验"如何进行校验?核心机制,就是"数字签名"=> 被 加密 后的校验和

拿着你数据的每个字节,带入公式,就能算出一个结果数字,称为校验和,把这个数据和校验和一起发送给对方.对方再按照同样的方式再算一遍校验和,
如果对方自己算的校验和和收到的校验和一致,就认为数据在传输过程中,没有改变过~

此时, 客户端拿到了数字签名,就可以通过系统内置的公证机构的公钥,进行解密,得到了最初的校验和,客户端再 重新 计算一遍 这里的校验和, 和解密出来的校验和进行对比如果校验和一致,就可以认为证书没有被篡改过,公钥就是可信的 (服务器原始的公钥)

在上述机制下,黑客就无法对证书内容进行篡改了.即使篡改,也很容易被发现.当黑客收到证书之后,如果直接修改里面的公钥,替换成自己的,客户端在进行证书校验的时候,就会发现校验和不一致了!! 客户端就可以认为是篡改过了.(客户端这边往往就会弹出一些对话框来警告用户,存在安全风险)

结合上述过程,证书就是可信的,通过了校验,就说明公钥就是服务器原始的公钥了

黑客是否能自己也申请一个证书,完全替换掉,服务器的证书呢??
行不通的!! 申请证书, 需要提交资料,其中就有网站的主域名~,认证机构自然就会认证这个域名是否是你所有的~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值