网络原理——HTTP/HTTPS —- HTTPS

作者 : admin 本文共2643个字,预计阅读时间需要7分钟 发布时间: 2024-06-3 共1人阅读

网络原理——HTTP/HTTPS —- HTTPS插图

T04BF

👋专栏: 算法|JAVA|MySQL|C语言

🫵 今天你敲代码了吗

目录

    • HTTPS
      • 加密与解密
      • HTTPS的工作流程
        • 使用对称密钥来加密
        • 使用非对称密钥 来对 对称密钥进行加密
        • 第三方公证
        • 总结

HTTPS

https本质上就是在http的基础之上 增加了加密层,抛开加密层之后,剩下的部分就和 http一样了

其中 S => SSL(安全相关的协议) 即HTTPS = HTTP + SSL

HTTPS引入的背景就是 臭臭名昭著的 运营商劫持事件
实际上,不只是运营商可以劫持,其他黑客也可以劫持,来窃取用户的信息,或者篡改请求里面的内容

试想一下,如果黑客在用户登录支付宝的时候,获取到账户余额,甚至获取到 用户的支付密码,那么后果不堪设想

因此,在互联网上,明文传输是很危险的的事情

HTTPS就是在HTTP的基础之上进行了加密,进一步来保证用户的信息安全

加密与解密

加密就是将明文(要传输的信息) 进行一系列变更之后 生成 密文
解密就是 把密文 在进行一系列变更之后 还原成 明文

这两种之间的相互转化,是通过 密钥 来实现的
即 将明文通过 密钥 转化为 密文 就是加密
将 密文 通过 密钥 转化为 明文 就是解密

而对于加密,又分为两种方式
(1)对称加密 ,指的就是 加密和解密使用的是同一个密钥.这种加密,后续进行解密的速度比较快
(2)非对称加密,指的是,此时加密解密使用的密钥是一对,分为公钥和私钥. 这种加密后续解密的速度比较慢,但是安全性更高
可以使用公钥加密,此时就是私钥解密;若通过私钥加密.此时就是公钥解密

实际上,所谓的安全都是相对的,指的实际上就是破解的成本比较高

HTTPS的工作流程

http通信本身是一个不安全的通信,为了能够保证安全,引入了加密

使用对称密钥来加密

这是相对简单的方法
网络原理——HTTP/HTTPS —- HTTPS插图(1)
此时黑客截获的数据,看到的是加密后的数据,无法看到原始的数据,更不用说篡改数据了

但是存在一个很大的问题

对称密钥,当存在很多个客户端的时候,客户端必须保证每一个客户端都有自己的一个密钥,与别人不一样
因为如果所有的客户端使用的都是同一个密钥,那么黑客通过自己的电脑不就也能拿到对称密钥了吗,就能够进行解密了

此时就应该让客户端自己生成一个密钥,告诉服务器就好了
网络原理——HTTP/HTTPS —- HTTPS插图(2)
那么问题就会出现,
这样的密钥,如果直接通过明文传输,那么后续的数据加密也就 形同虚设了
如果使用 对称密钥进行加密 ,那么就会暴露出和上面一样的问题,造成死循环

此时就要引入非对称密钥

使用非对称密钥 来对 对称密钥进行加密

实际上,为什么不直接使用非对称密钥来加密请求数据?? 本质上就是因为 非对称密钥的加密解密操作 的系统开销高很多
,消耗的时间,也比对称密钥要高很多,不太适合使用非对称密钥的方式来加密 业务数据

此时首先要做的就是对 对业务数据进行加密的对称密钥 使用非对称密钥 进行加密

此时的工作流程就是:
服务器生成一对公钥和私钥,当客户端连上服务器后,此时就将公钥告诉客户端,私钥就自己持有

网络原理——HTTP/HTTPS —- HTTPS插图(3)
此时,对于非对称密钥来说,所有客户端(包括黑客)拿到的公钥都是一样的,但是也是无法解密的,因为私钥在服务器手里

但是实际上,这样还是会存在问题 — 中间人攻击
网络原理——HTTP/HTTPS —- HTTPS插图(4)
此时关键环节就是,黑客可以自己生成一对 公钥 pub2 和 私钥 pri2
网络原理——HTTP/HTTPS —- HTTPS插图(5)
客户端无法区分出,当前的公钥 pub2 是不是 服务器,还是被掉包了的

客户端就会拿着pub2针对 对称密钥进行加密,并且发送给服务器

此时黑客就能拿到 密文,针对pub2 使用 pri2进行解密,从而拿到这里的 对称密钥

继续把拿到的对称密钥 通过 pub进行加密,发送给服务器

那么黑客 面对就能拿到对称密钥,扮演服务器的角色,面对服务器的时候,扮演客户端的角色,数据就泄露了

那么如何解决中间人攻击呢?? 就要引入第三方公证

第三方公证

实际上,解决中间人攻击最关键的一点就是 ,让客户端能够区分,当前来自服务器的公钥,是不是被伪造出来的公钥

解决办法就是引入第三方公证

公证机构正对客户端拿到的 公钥进行公证,此时客户端 看到这个公钥被公证了,就能认为 是这个公钥是合法的了

对于服务器,在自己的网站上线之后,就要去第三方公证机构 申请一个证书
网络原理——HTTP/HTTPS —- HTTPS插图(6)
其中证书里面就会包含一些信息
(1)发证机构
(2)证书的有效期
(3服务器的公钥
(4)证书的所有者
(5)持有者网站的主域名
(6)数字签名

在这里,最主要的就是这个数字签名

实际上,会根据前面的5点数据,形成一个校验和,就是基于MD5/CRC的方式,将原始数据的每个字节都带入进去,计算一遍,最终得到的一串数

数组签名就是针对这个校验和 再来一次加密,这个加密是通过 非对称密钥的形式

步骤就是,
(1)公证机构拿着一对非对称密钥 pub(公证) 和 pri(公证)
拿着pri(公证)对证书数据的校验和 进行了加密,得到了数字签名
网络原理——HTTP/HTTPS —- HTTPS插图(7)
此时服务器就会保存好自己申请到的证书

(2)客户端请求连接服务器的时候,服务器返回的响应里面就会包含证书
客户端就会 拿着公证机构的 公钥来进行解密
获取公证机构的公钥不是 通过网络的形式(如果通过网络的形式,就可能会出现中间人攻击)
而是操作系统内部会内置 真正的公证机构的公钥

接下来就可以拿着公证机构的公钥(来自操作系统) 来对证书里面的数字签名进行 解密了

解密之后就能拿到校验和,再自己根据证书里面的内容 计算一遍校验和

如果这两个校验和是一样的,那么就说明整个证书都是没有被篡改过的,此时证书里面的公钥就是可信的

那么为什么这种方式就能解决中间人攻击??
对于黑客来说,虽然能够和普通用户一样拿到数字签名背后的校验和
但是,拿到也没有用!!!

如果黑客修改了证书里面的公钥,那么客户端拿到经过黑客修改的证书后,计算出来的校验和 和 通过数字签名拿到的校验和 对比,就会发现不一样,判定证书非法
那如果黑客修改了公钥,并且通过修改后的内容自己计算一个新的数字签名 ??
如果这样做,由于黑客是拿不到公证机构的私钥的,只能通过自己的私钥来加密
那么用户拿到证书后,就会拿操作系统内置的公钥进行解密,.就会解密失败.因为压根就不是同一对密钥,也很会判定证书非法!!!

总结

为了保证数据的安全,不适用明文传输,而是使用对称密钥来进行加密后进行传输
那么就要保证每一个客户端都有自己对应的密钥,就可以让客户端自己生成后告诉服务器

但是这样的密钥在告诉服务器的过程,是通过网络传输的,就可能被黑客获取到
因此要进行加密,此时如果还是使用对称密钥来 对密钥进行加密,还是会暴露出上面的问题

于是引入了非对称密钥.来对 对称密钥 进行加密
但是还是会存在问题,就是 “中间人攻击”

为了解决中间人攻击,就引入了第三方公证机构

此时通过三层防护,就能保证网络数据的安全

感谢您的访问!!期待您的关注!!!

网络原理——HTTP/HTTPS —- HTTPS插图(8)

T04BF

🫵 今天记得敲代码

本站无任何商业行为
个人在线分享 » 网络原理——HTTP/HTTPS —- HTTPS
E-->