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

HTTPS的工作流程

.

HTTPS是什么?

https是应用层中的一个协议,是在http协议的基础上引入的一个加密层。

为什么需要HTTPS

由于http协议内容都是按照文本的方式明文传输的,这就导致传输过程中会出现一些被篡改的情况。
运营商劫持事件
最开始百度,搜狗等浏览器是使用http传输数据的,总所总之,百度是靠广告赚钱的,广告主那边的服务器会统计http中的reference的地址是谁的,如果是百度的,会给百度一定费用。但是在传输过程中,需要经过运营商的交换机,路由器,会解析出当前传输的数据,把reference的百度地址,改成自己,让广告主给自己付钱。从此以后,互联网公司纷纷升级成https。

HTTPS的加密过程

引入对称加密

对称加密就是通过同一个“密钥”,把明文加密成密文,并且也能把密文解密成明文。

最简单的对称加密:按位与
假设明文 a=1234,密钥 key=8888
经过加密a^key得到密文b = 9834
然后针对密文9834再进行运算b^key,得到的就是原来的明文1234
当然https肯定不是采用这种方式

image.png
引入对称加密后,即使数据被截取,由于黑客不知道密钥是什么,因此就无法进行解密。

但是事情并没有那么简单,服务器同一时刻需要给多个客服端提供服务,每个客户端使用的密钥是不相同(如果相同,密钥容易扩散,黑客很容易拿到),因此服务器需要维护每个客户端和每个密钥之间的关联。将每个客服端的密钥都存在服务器,不现实。
比较理想的做法,就是在客户端和服务器建立连接的时候,双方协商确定这次密钥是什么
image.png
但是如果直接将密钥明文传输,那么黑客也就能获得到密钥了。
因此密钥的传输必须加密传输!
如果是使用对称加密,那就是掩人耳目。需要引入非对称加密。

非对称加密

非对称加密会使用两个密钥,一个是公钥,一个是密钥。公钥和密钥是配对的,可以通过公钥给明文加密,在通过密钥对密文解密;也可以反过来使用。
让服务器生成一对非对称密钥,一个是公开出来的,任何人都能获取到公钥;另外一个是私密的,只有服务器自己知道。
image.png

  1. 客户端在本地生成对称密钥, 通过公钥加密, 发送给服务器.
  2. 由于中间的网络设备没有私钥, 即使截获了数据, 也无法还原出内部的原文, 也就无法获取到对称密钥
  3. 服务器通过私钥解密, 还原出客户端发送的对称密钥. 并且使用这个对称密钥加密给客户端返回的响应数据.
  4. 后续客户端和服务器的通信都只用对称加密即可. 由于该密钥只有客户端和服务器两个主机知道, 其他主机/设备不知道密钥即使截获数据也没有意义.

但是黑客还是有办法入侵的,即中间人攻击!
image.png

这就类似于,A喜欢B,不好意西开口,叫C帮他传话,结果C嫉妒B,本来B同意,却跟A说B拒绝你了。

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

引入证书

解决中间人攻击的关键,就是要能够证明这个公钥,是服务器自己的公钥,而不是伪造的。
image.png

http://www.lryc.cn/news/227503.html

相关文章:

  • C++语言的广泛应用领域
  • Lambertian模型(完美漫反射)
  • MATLAB的编程与应用,匿名函数、嵌套函数、蒙特卡洛法的掌握与使用
  • NFS服务器的搭建
  • 安卓Frida 常用脚本
  • 机器学习数据预处理——Word2Vec的使用
  • 面试算法常考题之-------逆波兰式合集
  • 独热编码和Word2Vec的区别
  • RestTemplate.postForEntity 方法进行 HTTP POST 请求
  • 盘点双11!阿里妈妈助这些品牌短视频赢增长!
  • 内网可达网段探测netspy- Mac环境
  • Liunx命令汇总
  • 自动控制原理--面试问答题
  • Word2Vec的缺点
  • vue如何解决跨域?原理?
  • Conda executable is not found 三种问题解决
  • Thinkphp8 - 连接多个数据库
  • Linux如何修改主机名(hostname)(亲测可用)
  • 银河麒麟等 Linux系统 安装 .net 3.1,net 6及更高版本的方法
  • Unity 使用INI文件存储数据或配置参数预设
  • clouldcompare工具使用
  • 在vue3中使用Element-plus的图标
  • 图扑智慧农业:农林牧数据可视化监控平台
  • js 加解密 jsencrypt(非对称加密 rsa)
  • xlua游戏热更新(lua访问C#)
  • 04-Spring中Bean的作用域
  • xlua游戏热更新(C#访问lua)
  • 【数据结构】二叉树经典例题---<你真的掌握二叉树了吗?>(第一弹)
  • 基于springboot实现桥牌计分管理系统项目【项目源码】
  • 机器学习——朴素贝叶斯