【Https】工作流程

HTTPS 也是⼀个应用层协议。是在 HTTP 协议的基础上引入了⼀个加密层。

前言

由于Http是明文传输,因此如果有人想修改/截获数据都是非常容易,因此就出现了运营商劫持问题。

加密基础知识

明文+密钥=>密文

加密

密文+密钥=>明文

解密

对称加密和非对称加密

有的场景,加密和解密,使用的是相同的密钥

对称密钥

还有的场景,加密和解密,使用的是不同的密钥

非对称密钥

对称加密

加密和解密使用同一个密钥的方式

非对称加密

加密和解密使用一对非对称密钥 , 称为 公钥和私钥

可以使用公钥来加密,私钥就能解密;

也可以使用私钥加密,公钥来解密;


HTTPS的工作过程

引入对称密钥

最简单的保证安全的做法:引入对称密钥。针对传输的数据(httpheader

body)进行加密

比如:

每个客户端,都需要有一把自己的对称密钥,如果客户端生成了密钥,就需要把

密钥传输给服务器

这就又产生了一个问题:黑客同样可以截获到密钥,后续使用这个密钥加密传输,传输的数据还是可以被黑客解密.

解决方法:使用非对称加密对称密钥进行加密

用非对称加密对对称密钥加密

理解的重点是:

服务器用公钥加密,因此要解密就必须用私钥;而黑客只能截获到公钥和密文,不会截获到私钥,因此无法进行解密。

中间人攻击

然后,中间还存在一个严重的问题:中间人攻击 , 中间人攻击的方式,仍然可以拿到对称密钥

这个过程中,实际上这个对称密钥已经被黑客知道了,后续服务端和客户端之间的加密通信,黑客都可以通过这个对称密钥解密获得数据!!!

所以这种情况下:仍然是不安全的!

解决中间人攻击的关键是:需要让客户端能够确定当前收到的公钥,确实是服务器返回的,而不是黑客伪造的

引入数字证书

于是就需要引入证书机制 , 通过第三方机构来确保当前的公钥是有效的.也就是确保公钥确实是服务器返回的,而不是黑客篡改的.

工作过程

1.客户端发送自己支持的加密规则给服务器,告诉服务器自己要连接了.

2.服务器从中选出一套加密算法和hash算法以及自己的身份信息以证书的形式发送给浏览器,我们可以把证书理解为一个结构化的字符串 . 证书中会包含 颁发证书的机构 + 证书的有效期 + 公钥 + 签名 + 等 . 

注意: 这里的公钥就是服务器自动生成的用于加密对称密钥的密钥之一, 私钥在保留在服务器这里,而公钥就是通过证书来传递的.

数字签名

这张证书是CA认证机构来发放的, 认证机构会有一对公钥和私钥 , 私钥是机构的,公钥是客户端系统内置,并且不是通过网络传输 . 发放证书的时候 , 第三方机构会用它的私钥根据证书的信息使用hash算法和加密算法生成一个数字签名 ,  也就是一个哈希密文,包含在证书中一起发送给客户端 . 

3.服务器收到证书之后, 会做一下事情 : 

        3.1 验证证书的合法性 ( 证书是否过期 / 发布机构是否是操作系统受信任的机构 / 验证证书是否被篡改 

        验证是否被篡改:

客户端从系统中拿到这个机构的公钥 , 对签名解密 , 得到一个hash值, 假如是hash1 ; 再重新根据这个证书的摘要信息使用约定好的hash算法,计算这个证书的hash值, 假设是 hash2 ; 对比hash1和hash2 , 如果相同, 说明证书没有被篡改过 . 

        3.2 如果验证通过 , 浏览器会生成要给对称密钥, 并且根据证书中的公钥进行加密 ; 

        3.3 用约定好的hash算法计算握手信息, 然后用对称密钥进行加密 , 然后一起发送给服务器 ; 

4.服务器接收到客户端发来的信息 ,会做以下事情:

        4.1 用私钥解析出对称密钥 , 在用对称密钥解析握手信息, 计算握手信息的hahs值, 再对比和浏览器发过来是否一致 . 如果一致, 那么握手成功 ;

5.后续客户端和服务器之间的通信都会通过这个对称密钥进行加密通信 . 

问题1:如果黑客把证书中的公钥替换成自己的

行不通 ! 客户端拿到证书会重新计算hash值 , 一对比就知道被篡改了 . 证书就会验证失败. 

问题2:如果黑客想把数字签名替换

也是行不通的 ! 因为数字签名是使用认证机构的私钥加密的,黑客当然无法获得公证机构的私钥. 

总结

Https协议是由SSL (安全套接层) + HTTP协议 构建的可进行加密传输 , 身份认证的网络协议 , 要比HTTP协议安全 , 可有效防止数据在传输过程中被篡改. 虽然不是绝对安全的 , 但是它大幅度增加了黑客进行中间人攻击的问题.

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/246062.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ssm基于HTML5的OA办公系统论文

基于HTML5的OA办公系统 摘要 随着信息技术在管理上越来越深入而广泛的应用,作为一个一般的企业都开始注重与自己的信息展示平台,实现基于HTML5的OA办公系统在技术上已成熟。本文介绍了基于HTML5的OA办公系统的开发全过程。通过分析企业对于博客网站的需…

【Proteus仿真】【51单片机】视力保护仪

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器,使LCD1602液晶,按键、HC-SR04超声波、PCF8591 ADC、光敏传感器、蜂鸣器、LED等。 主要功能: 系统运行后,LCD1602显示…

Linux基本操作

常用快捷键 按键 作用 Ctrld 键盘输入结束或退出终端 Ctrls 暂停当前程序,暂停后按下任意键恢复运行 Ctrlz 将当前程序放到后台运行,恢复到前台为命令fg Ctrla 将光标移至输入行头,相当于Home键 Ctrle 将光标移至输入行末&#xf…

LeetCode Hot100 146.LRU缓存

题目: 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值&…

编译Sqlite3记录

下载源文件: 下载地址:SQLite Download Page 打开QtCreator创建新的工程,选择纯C工程,将main.c删除,将下载的源码解压后的文件复制到并添加到工程中,其中的文件包括:sqlite3ext.h、sqlite3.h、…

威睿三合一电驱动系统斩获“2023汽车新供应链百强-金辑奖”

10月19日,2023第五届“金辑奖”颁奖盛典在上海圆满落幕。威睿公司“高效低噪碳化硅电驱动系统”在动力总成电气化领域脱颖而出,荣获“2023中国汽车新供应链百强”荣誉称号。 “金辑奖”由盖世发起,旨在“发现好公司推广好技术成就汽车人”&a…

iPhone 16 的电池供应可能来自印度

据英国《金融时报》报道,据报道,苹果已通知其供应链,包括中国德赛公司和台湾新普科技等电池供应商,其倾向于将 iPhone 16 的电池供应转移到印度。苹果鼓励供应商将现有产能迁往印度,以扩大该地区的生产规模。 鉴于电池…

ShenYu网关注册中心之Zookeeper注册原理

文章目录 1、客户端注册流程1.1、读取配置1.1.1、用于注册的 ZookeeperClientRegisterRepository1.1.2、用于扫描构建 元数据 和 URI 的 SpringMvcClientEventListener 1.2、扫描注解,注册元数据和URI1.2.1、构建URI并写入Disruptor1.2.2、构建元数据并写入Disrupto…

防火墙在网络安全中的作用有什么?部署模式有什么?

防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。 防火墙在网络安全中的作用主要有以下几个方面: 1.保护网络安全——…

设计模式——适配器模式(结构型)

引言 适配器模式是一种结构型设计模式, 它能使接口不兼容的对象能够相互合作。 问题 假如你正在开发一款股票市场监测程序, 它会从不同来源下载 XML 格式的股票数据, 然后向用户呈现出美观的图表。 在开发过程中, 你决定在程序…

Process On在线绘制流程图

目录 一.ProcessOn 1.1.介绍 1.2.直接网上使用 二.绘制门诊流程图 三.绘制住院流程图 四.绘制药库采购入库流程图 五.绘制OA会议流程图 今天就到这里了哦!!!希望能帮到你哦!!! 一.ProcessOn 1.1.介绍 ProcessOn(流程&#…

使用podman管理容器

目录 1.安装及配置podman 2.镜像的命名 3.对镜像重新做标签 4.删除镜像 5.查看镜像的层结构 6.导出和导入镜像 7.创建容器 8.创建一个简单的容器 9.容器的生命周期 10.创建临时容器 11.指定容器中运行的命令 12.创建容器时使用变量 对于初学者来说,不太容易理…

机器学习算法---分类

当然,让我为您提供更详细的机器学习算法介绍,重点在于每种算法的原理、优缺点,并在注意事项中特别提到它们对非平衡数据和高维稀疏数据的适应性。 1. 决策树(Decision Trees) 原理: 决策树通过学习简单的…

【动态规划】路径问题_不同路径_C++

题目链接:leetcode不同路径 目录 题目解析: 算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 编写代码 题目解析: 题目让我们求总共有多少条不同的路径可到达右下角; 由题可得: 机器人位于…

C# 字符串格式化

写在前面 在日常编程中,经常需要对字符串进行格式化操作,以便呈现为不同的格式,满足各种各样的显示需求,C#的字符串格式化参数是非常丰富的,这里做个简单的列举,以供后续参考和延伸。 代码实现 var curr…

WPF 显示PDF、PDF转成图片

1.NuGet 安装 O2S.Components.PDFView4NET.WPF 2.添加组件 工具箱中&#xff0c;空白处 右键&#xff0c;选择项 WPF组件 界面&#xff0c;选择NuGet安装库对面路径下的 O2S.Components.PDFView4NET.WPF.dll 3.引入组件命名空间&#xff0c;并使用 <Windowxmlns"htt…

关于ctf反序列化题的一些见解([MRCTF2020]Ezpop以及[NISACTF 2022]babyserialize)

这里对php反序列化做简单了解 在PHP中&#xff0c;序列化用于存储或传递 PHP 的值的过程中&#xff0c;同时不丢失其类型和结构。 serialize&#xff08;&#xff09; 函数序列化对象后&#xff0c;可以很方便的将它传递给其他需要它的地方&#xff0c;且其类型和结构不会改变…

nvm--node版本管理详细安装和使用教程

1&#xff09;nvm是什么? nvm全英文也叫node.js version management&#xff0c;是一个nodejs的版本管理工具。nodejs是项目开发时所需要的代码库&#xff0c;nvm是nodejs版本管理工具&#xff0c;npm是nodejs包管理工具&#xff1b;nodejs能够使得javascript能够脱离浏览器运…

PyCharm连接远程服务器

要求&#xff1a;PyCharm专业版才支持远程服务 一、创建远程连接 先建立本地与远程服务器之间的SSH连接 1、配置连接 2、建立SSH连接&#xff0c;选择文件传输协议 SFTP 3、设置服务器名&#xff08;可以随意命名&#xff09; 4、配置 SSH连接 点击 172.18.1.202 配置…

Python爬取旅游网站热门景点信息的技术性文章

目录 一、引言 二、准备工作 三、爬取热门景点信息 1、分析网页结构 2、发送HTTP请求 3、解析HTML文档 4、提取所需信息 5、保存数据到文件或数据库 四、优化爬虫程序性能和效率 五、异常处理与日志记录 1、异常处理 2、日志记录 六、安全性与合法性考虑 七、总结…