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.mzph.cn/news/138971.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云栖大会丨桑文锋:打造云原生数字化客户经营引擎

近日,2023 云栖大会在杭州举办。今年云栖大会回归了 2015 的主题:「计算,为了无法计算的价值」。神策数据创始人 & CEO 桑文锋受邀出席「生态产品与伙伴赋能」技术主题,并以「打造云原生数字化客户经营引擎」为主题进行演讲。…

CSS特效006:绘制不断跳动的心形

css实战中,怎么绘制不断跳动的心形呢? 绘图的时候主要用到了transform: rotate(-45deg); transform-origin: 0 100%; transform: rotate(45deg); transform-origin: 100% 100%; 动画使用keyframes 时间上为infinite。 效果图 源代码 /* * Author: 大剑…

迅为龙芯3A5000主板,支持PCIE 3.0、USB 3.0和 SATA 3.0显示接口2 路、HDMI 和1路 VGA,可直连显示器

性能强 采用全国产龙芯3A5000处理器,基于龙芯自主指令系统 (LoongArch)的LA464微结构,并进一步提升频率,降低功耗,优化性能。 桥片 桥片采用龙芯 7A2000,支持PCIE 3.0、USB 3.0和 SATA 3.0显示接口2 路、HDMI 和1路 …

web3 React dapp项目通过事件从区块链中拿到 已取消 已完成 和所有的订单数据 并存入redux中

好 上文web3通过antd 在React dapp中构建订单组件基本结构我们算是把一个基本的订单组件展示做出来了 然后 我们继续 起一下环境先 ganache 终端运行 ganache -dMetaMask 登录一下 然后 打开项目 发布一下合约 truffle migrate --reset然后 运行一下 测试脚本 转入交易所 E…

excel中超级表和普通表的相互转换

1、普通表转换为超级表 选中表内任一单元格,然后按CtrlT,确认即可。 2、超级表转换为普通表 选中超级表内任一单元格,右键,表格,转换为区域,确定即可。 这时虽然已经变成了普通表,但样式没有…

CSS知识点梳理(一)

CSS 是层叠样式表(Cascading Style Sheets)的缩写,它是一种用于描述 HTML 或 XML(包括如 SVG、MathML 等派生语言)文档呈现的语言。CSS 可以用来控制文档的布局、颜色、字体等外观属性。 CSS 的主要特点包括&#xff…

JVM关键指标监控(调优)

JVM 99%情况下不需要调优 使用性能更好的垃圾回收器 核心指标 针对单台服务器而言: jvm.gc.time: 每分钟GC耗时在1s以内 500ms以内最佳 jvm.gc.meantime: 每次YGC耗时在100ms以内,50ms以内最佳 jvm.fullgc.count: FGC(老生代垃圾回收)最多几小时1次&…

11.9 知识总结(三板斧、全局配置文件、静态文件的配置、request对象等)

一、 三板斧的使用 三个方法: HttpResponse render redirect def index(request): print(request) # return HttpResponse("request") # 它返回的是字符串 # return render(request, index.html) # 加载HTML页面的 # return redirect(ht…

数据库 关系数据理论

问题 数据冗余更新异常插入异常删除异常 一个好的模式应当不会发生插入异常、删除异常和更新异常,数据冗余应尽可能少 数据依赖 定义:一个关系内部属性与属性之间的一种约束关系(该约束关系是通过属性间值的相等与否体现出来数据间相关联…

iOS 17.2更新:15Pro支持拍摄空间视频!

苹果又为开发者预览版用户推送了iOS 17.2 Beta2测试版的更新,已经注册Apple Beta版软件计划的用户只需打开设置--通用--软件更新即可在线OTA升级至最新的iOS 17.2测试版。 本次更新包大小为750M左右,内部版本号为(21C5040g)&#…

设计模式--Command模式

命令模式(Command Pattern)是一种行为设计模式,它将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。 命令模式主要包含以下几个角色&…

『 MySQL数据库 』数据库基础之表的基本操作

文章目录 创建表🗡查看表🗡✒ 查看表内所有信息(描述\表结构等)✒ 根据条件查看表内数据✒ 查看表的具体详细信息: 修改表🗡✒ 修改表名:✒ 修改表的存储引擎、编码集(字符集和校验集):✒ 表内插入数据:insert into✒ 在表中新添一个字段(列)…

【react.js + hooks】使用 useLoading 控制加载

在页面上 loading(加载)的效果十分常见,在某些场景下,一个页面上甚至可能有特别多的 loading 存在,此时为每一个 loading 专门创建一个 state 显然太过繁琐,不如试试写一个 useLoading 来集中管理&#xff…

HarmonyOS应用开发-ArkTS基础知识

作者:杨亮Jerry 作为多年的大前端程序开发工作者,就目前的形式,个人浅见,在未来3-5年,移动端依旧是Android系统和iOS系统的天下。不过基于鸿蒙系统的应用开发还是值得我们去花点时间去了解下的,阅读并实践官…

【洛谷 P5019】[NOIP2018 提高组] 铺设道路 题解(模拟+双指针)

[NOIP2018 提高组] 铺设道路 题目背景 NOIP2018 提高组 D1T1 题目描述 春春是一名道路工程师,负责铺设一条长度为 n n n 的道路。 铺设道路的主要工作是填平下陷的地表。整段道路可以看作是 n n n 块首尾相连的区域,一开始,第 i i i …

【大学视听说上】网络学习计划清单

每单元建议学习时长为约2小时,每2-3周完成一个单元 视听说1: Online Self-Study Assignment (U校园) Week 2-9 Unit 3 3-2Sharing: Practice 2, 3, 4, 5 3-3 Listening: Use the skills 3, 4 3-4 Viewing: View it 1, 2 3-8 More practice in listening 3-10 …

MYSQL---基础篇

一、数据库操作 1.创建数据库:CREATE DATABASE db_test1; 2.使用数据库:use 数据库名; 3.删除数据库:DROP DATABASE [IF EXISTS] db_name; 4.创建表:CREATE TABLE table_name ( field1 datatype, field2…

win环境Jenkins高级配置各种插件和启动jar包

今天分享Jenkins高级配置各种插件,在看此篇之前必须先了解上一篇博客内容,因为此篇是在上篇的基础上完善的: 一、git仓库的多分支选择 想要多分支选择部署,需要全局安装Git parameter 插件 1、点击入口 来到 2、点击进入 安装一…

python flask_restful “message“: “Failed to decode JSON object: None“

1、问题表现 "message": "Failed to decode JSON object: None"2、出现的原因 Werkzeug 版本过高 3、解决方案 pip install Werkzeug2.0解决效果 可以正常显示json数据了 {"message": {"rate": "参数错误"} }

深入理解JVM虚拟机第二十三篇:详解JVM当中的栈顶缓存技术

大神链接:作者有幸结识技术大神孙哥为好友,获益匪浅。现在把孙哥视频分享给大家。 孙哥链接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻JVM 本文章简介:话不多说,让我们讲清楚JVM当中与操作数栈相关的字节码指令…