当前位置: 首页 > news >正文

HTTPS的工作过程

我们不去研究加密算法是怎么去实现的这个属于数学问题

 1.引入对称加密

        生产一个密钥,明文到密文,通过这个密钥进行.

        密文到明文,也通过这个密钥来进行

比如

有一个数字 int a; 随便拿一个数字 int k; a ^ k = b; 网络上传输这个 b,收到 b ,拿着 b 再次进行异或b ^ k => a;(简单的对称加密)

此时客户端给服务器发送的是通过 key 进行对称加密的密文,黑客就算知道数据是啥,由于没有密钥,也就无法知道明文,然后服务器收到数据后,在对加密后的数据进行解密

HTTP协议来说,首行是不加密的,header 和 body 都是进行加密的

但是上述方案,不太可行

一个服务器要给很多的客户端提供服务,服务器和这些客户端的通信过程中,使用的密钥,是同一个,还是不同的呢?

答案很明显是不同的 每个通信的客户端,都需要有不同的密钥,不能都一样!

既然每个客户端的密钥是不同的,那就得有生成一个"随机的密钥"作为这次通信使用.可以是客户端负责生产,也可以是服务端生产,但是无论是谁生产,都需要去通知对方

客户端负责生成密钥,比如是 666 (真实的密钥是一段非常长的字符串)

上述的密钥传输,也经过了黑客的设备,黑客也就可以知道了

问题:需要告诉对方密钥是啥,但是密钥不能明文传输,比如如果在对密钥进行一次对称加密.

比如密钥是 key,使用另一个密钥 key2 针对 key 进行加密,把 key 密文传输给对端,但是如果不把 key2 告诉服务器,服务器也完成不了解密这个过程,拿不到 key,如果把 key2 传输给对方,这样黑客也就获取到了,成功完成套娃,脱裤子放屁,多此一举

2.引入非对称加密,

非对称加密右两个密钥,这两密钥其中一个可以公开出去,谁都可以获取,叫公钥,另一个不能公开自己持有,叫私钥

比如使用公钥加密,就使用私钥解密

       使用私钥加密,就使用公钥解密

对称加密保护数据,本身是比较安全的,关键是 对称密钥 要能安全的传输给对方,引入的非对称加密的主要目的,就是传输对称密钥的

为啥不直接拿非对称加密传输数据呢?

非对称加密,加密的计算成本,远高于对称加密

公钥私钥,是服务器生产的一个密钥对.私钥服务器自己持有,公钥公开出去,所有人都可以截取到

客户端就可以使用公钥,对对称密钥进行加密了

当前的数据,到达黑客的设备,黑客是没有任何办法,黑客手里面只有公钥,无法进行解密

服务器拿着私钥进行解密,获取到对称密钥是 666

问题

黑客问什么不直接入侵服务器,这样不就拿到私钥了吗?

有可能,但是是存在门槛的(nb的黑客都在公安机关备过的,不入流的也黑不进去),入侵运营商的设备,大概率是比入侵一个企业的机房要更加容易一些的,直接入侵了,不需要监听任何数据了,直接拖数据库

3.中间人攻击

黑客是有办法解决刚才这一套方案的

客户端:客户端不知道公钥是不是对的,就只能选择相信,拿着 pub2 对对称密钥 666 进行加密

黑客入侵的设备:黑客自己生产了一对公钥密钥 pub2/pri2 ,此时的数据是通过 pub2 加密的所以黑客就可以拿到 pri2 对数据进行解密从而拿到 666,黑客手里拿到了服务器的 pub1 公钥 拿着 pub1 对 666 从新加密

服务器:服务器拿着 pri1 解密当然是解密成功了 服务器拿到了 666

4.引入证书,通过证书解决中间人攻击

证书解决的核心问题,就是让客户端,能够识别出当前公钥,是不是服务器本身创建的,还是黑客伪造的

引入第三方公正机构,通过公正机构的认证就可以认为密钥是不是可信的

证书中的结构化数据构成的字符串包含以下属性

1.证书的发布机构

2.证书的有效期

3.证书的所有者

4.证书对应服务器的地址/域名

5.公钥(服务器生成的 pub1/pri2)

6.数字签名(数字签名是验证证书有效的关键要素)

客户端需要验证证书的合法性(依靠数字签名)

数字签名的生产:(数字签名,就是加密后的校验和)

公证机构,生产证书之后,针对证书,算一个校验和

公证机构,拿着自己生成的非对称密钥对(pub3/pri3),使用其中的私钥 pri3 对校验和进行加密 得到了数字签名

数字签名的验证:
客户端拿到证书后,需要按照同样的校验和算法,对证书这些字段再进行一次校验和,得到 checksum1(客户端自己算的)

使用公证机构的 pub3 公钥对证书中的数字签名,进行解密,得到 checksum2(公证机构算的)

如果两者相等,说明证书没有被篡改过,证书中的公钥就是科学的(服务器原始生产的)

如果黑客篡改了证书中的 公钥,算出来的 ckecksum1 一定是不等于 checksum2的

如果不匹配,客户端/浏览器弹出的提示框!!!!

针对上述问题中

1)黑客能不能篡改公钥?
不能,一旦篡改公钥,ckecksum 对不上,客户端就可以识别出来

2)黑客能不能自己搞一个证书,整个替换掉服务器返回来的证书?
不能,证书包含了服务器的 地址/域名

3)黑客是否可以篡改公钥同时,也把数字签名改了

不能,数字签名是通过公证机构的私钥来进行加密的,这个私钥黑客拿不到

4)公证机构的公钥任何被客户端拿到?黑客是否可能伪渣公证机构的公钥呢?
不能的,公证机构的公钥不是通过网络获取的,而是内置在操作系统里面的(镜像操作系统是有危险的)

http://www.xdnf.cn/news/509887.html

相关文章:

  • 低延迟与高性能的技术优势解析:SmartPlayer VS VLC Media Player
  • 贪心、分治和回溯算法
  • 当AI自我纠错:一个简单的“Wait“提示如何让模型思考更深、推理更强
  • MySQL(21)如何查询表中的所有数据?
  • ffmpeg -vf subtitles添加字幕绝对路径问题的解决方法
  • 吴恩达机器学习(1)——机器学习算法分类
  • NetApp FAS存储系统的加密Encrytpion解决方案介绍
  • 西门子1200/1500博图(TIA Portal)寻址方式详解
  • 从零开始实现大语言模型(十五):并行计算与分布式机器学习
  • 【深度学习基础】从感知机到多层神经网络:模型原理、结构与计算过程全解析
  • java中sleep()和wait()暂停线程的区别
  • 算法题(149):矩阵消除游戏
  • 计算机系统---TPU(张量处理单元)
  • k6学习k6学习k6学习k6学习k6学习k6学习
  • 一文读懂软链接硬链接
  • 5.18 打卡
  • npm与pnpm--为什么推荐pnpm
  • 【Vue】路由1——路由的引入 以及 路由的传参
  • 相机基础常识
  • PrimeVul论文解读-如何构建高质量漏洞标签与数据集
  • HarmonyOS 与 OpenHarmony:同根而不同途
  • 低代码AI开发新趋势:Dify平台化开发实战
  • 张 心理问题的分类以及解决流程
  • @JsonProperty和@JSONField 使用
  • JetBrains IDEA,Android Studio,WebStorm 等IDE 字体出现异常时解决方法
  • Vue百日学习计划Day28-32天详细计划-Gemini版
  • 李臻20242817_安全文件传输系统项目报告_第12周
  • Docker配置容器开机自启或服务重启后自启
  • 算法岗实习八股整理——深度学习篇(不断更新中)
  • 字符串相乘(43)