HTTPS加密流程

news2024/9/27 9:26:37

什么是HTTPS

HTTPS是加密后的HTTP,相当于:HTTPS = HTTP + SSL/TLS

HTTPS是基于"密钥"来实现的,客户端将发送的数据用密钥进行加密,服务器将收到的数据用密钥解密.

对称加密和非对称加密

对称加密是指:交互双方共同使用同一个密钥进行加密 或 解密.

如下(图中的客户端和服务器里面的key是同一个):

客户端将报文a通过密钥加密后形成报文b

服务器将报文b通过密钥解密后得到报文a

如果有黑客入侵了中间节点,获取传输的数据,但是黑客没有密钥(key),他就无法得知报文的真正内容.

但是密钥的商定也是需要进行双方交互的.

假如:客户端要生成一个密钥,此时就需要将密钥发送给服务器,但是发送密钥的报文不可以加密,因为此时客户端还不知道密钥的内容,所以就需要明文传输,如果黑客此时获取到了密钥,那么加密就显得毫无意义.

此时就非对称加密的作用就体现了.

非对称加密:交互双方使用两个密钥(公钥和私钥)分别进行 加密 或 解密

客户端: 报文a + 公钥 = 报文b

服务器: 报文b + 私钥 = 报文a

也就说:公钥用来加密但是不能用来解密,私钥可以用来解密但是不可以用来加密.

此时再回到上面的请况:

由于公钥和私钥是由服务器生成的,所以客户端的公钥是通过服务器获取的,而这个公钥的传输是没有加密的,黑客也可以知道,然后客户端使用这个公钥来对报文进行加密,服务器使用私钥进行解密,但是由于黑客不知道私钥,所以他就无法对报文进行解密,此时针对上面的请况就可以有效解决了.

那么非对称加密这么安全还为什么要用对称加密呢?

因为非对称加密进行解密的时候,而对称加密进行解密的时候.

所以实际操作的时候,同时是使用公钥和私钥约定好一个对称密钥(这个对称密钥黑客无法解析),然后在使用对称密钥来传递信息,此时既提高了效率,又增强了安全性.

中间人攻击

前面提到的对称加密和非对称加密,虽然在一定程度上避免了外界对于信息的盗取/修改,但是仍然会存在一些问题,比如现在说到的中间人攻击.

在非对称加密中,我们通过这种加密方式,使得黑客在正常通信传输的情况下无法获取到真正的信息,但是如果黑客将发送的数据掉包了呢?

如下图:

证书

基于上面的问题,我们可以引入"证书"来解决.

上面的情况,会别黑客成功的本质原因就是:客户端不知道当前的信息是不是服务器发过来的,那么我们解决了这个问题,中间人攻击的问题也就迎刃而解了.

证书,它其实就是第三方认证机构提供的一个资质,服务器可以通过这个证书将公钥进行传递,而客户端也可以对这个证书进行验证操作,判断这个证书是否被人篡改过了.

如下图:

在服务器设立之初, 就需要去专门的认证机构去申请证书.当审核通过后,就会给你颁发证书.

然后服务器就可以使用这个证书去传递公钥给客户端,客户端再对证书进行校验,然后再进行之后的交互.

那么黑客是否可以修改证书呢?

答案是不可以.

在证书中除了一些字段和公钥之外,还有一个签名,这个签名是认证机构使用它自己的密钥对证书的整体进行运算后得到的一个加密的字符串.如果里面有内容发生了改变,那么客户端使用认证机构提供的公钥解密后得到的签名就会不一样,此时客户端就知道这个证书的内容发生了改变,就不会轻易的将密钥发送过去了.

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

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

相关文章

还不会CAD批量打印图纸?学会这招再也不怕

各位工程师,相信大家在工作过程中,经常会遇到需要打印大量图纸文件的时候,那么多的图纸,一张张打印太麻烦,此时便需要用到CAD批量打印功能啦!可是,总有些新手设计师不直达奥CAD批量打印&#xf…

Spring事务及传播机制

概念 在MySQL中介绍过,当同一时间出现一起读写数据的情况,可能会导致最终的结果出错,因此可以使用事务来提高隔离级别 而Spring中也可以实现事务 手动添加事务 使用SpringBoot中的DataSourceTransactionManager对象可以获取事务&#xff0…

计算机科学导论笔记(六)

目录 八、算法 8.1 概念 8.1.1 非正式定义 8.1.2 示例 8.1.3 定义动作 8.1.4 细化 8.1.5 泛化 8.2 三种结构 8.2.1 顺序 8.2.2 判断 8.2.3 循环 8.3 算法的表示 8.3.1 UML 8.3.2 伪代码 8.4 更正式的定义 8.5 基本算法 8.5.1 求和 8.5.2 求积 8.5.3 最大和最…

Egg:使用joi进行参数校验以及注册接口小demo

目录 前言: 准备工作: 前端代码: 后端目录截图: 1.获取参数 2.校验参数 3.查询数据库中是否已经存在该用户 4.用户入库 5.测试一哈 添加用户成功 同样的用户名再注册一遍 ​编辑总结: 前言: 在阅…

C#基础之基础语法(一)

总目录 文章目录总目录前言一、C#简述1 C#是什么?2 .Net平台3. C# 和.Net的关系4. 集成开发环境(IDE)二、控制台应用程序1. 常用代码2.注意事项三、基础语法1.编写C#代码注意事项2.C#注释2. 变量&标识符&关键字4. 变量,字…

unity 面试汇总

1、什么是协同程序?答:在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。换句话说,开启协程就是开启一个可以与程序并行的逻辑。可以用来控制运动、序列以及对象的行为。2、Unity3D中的碰撞器和触发器的区别&#xff…

【C++进阶】四、AVL树(二)

目录 前言 一、AVL树的概念 二、AVL树节点的定义 三、AVL树的插入 四、AVL树的旋转 4.1 左单旋 4.2 右单旋 4.3 左右双旋 4.4 右左双旋 五、AVL树的验证 六、AVL树的性能 七、完整代码 前言 前面对 map/multimap/set/multiset 进行了简单的介绍,在其文…

2023年湖北武汉安全员C证报考条件是什么?考试题型是什么 启程别

2023年湖北武汉安全员C证报考条件是什么?考试题型是什么 启程别 武汉安全员C证报考条件: 1.注册地在本市的施工单位在职“三类人员”可申请参加安全生产考核; 2、职业道德良好,身体健康,年龄不超过60周岁&#xff08…

pdf多页合并为一页方法总结,你觉得哪个最好?

PDF格式的文件在现代办公中是不可或缺的,许多人在工作中需要频繁处理PDF文档。然而,当我们需要阅读多个PDF文件时,不断切换不同的文件并一个一个地打开查阅会非常麻烦。为了提高阅读效率,人们一般会将pdf多页合并为一页。那么&…

传输线的物理基础(四):传输线的驱动和返回路径

驱动一条传输线对于将信号发射到传输线的高速驱动器,传输线在传输时间内的输入阻抗将表现得像一个电阻,相当于线路的特性阻抗。鉴于此等效电路模型,我们可以构建驱动器和传输线的电路,并计算发射到传输线中的电压。等效电路如下图…

虹科分享 | 网络流量监控 | 数据包丢失101

什么是数据包? 数据包是二进制数据的基本单位,在网络连接的设备之间编号和传输,无论是在本地还是通过互联网。一旦数据包到达其目的地,它就会与其他数据包一起按编号重新组合,回到最初传输的较大消息中。 数据包是我们…

2022(二等奖)C2594江淮分水岭植被碳汇时空可视化系统

作品介绍 一、需求分析 1.1 设计背景 气候变化是全球性问题,随着二氧化碳排放的增加生物的生存与生命受到威胁。人类活动对自然界生态系统的破坏,不仅降低了地球生物圈的生产力,威胁到人类社会未来经济的发展,同时还破坏了陆地与…

WireShark如何抓包,各种协议(HTTP、ARP、ICMP)的过滤或分析,用WireShark实现TCP三次握手和四次挥手

WireShark一、开启WireShark的大门二、如何抓包 搜索关键字2.1 协议过滤2.2 IP过滤2.3 过滤端口2.4 过滤MAC地址2.5 过滤包长度2.6 HTTP模式过滤三、ARP协议分析四、WireShark之ICMP协议五、TCP三次握手与四次挥手5.1 TCP三次握手实验5.2 可视化看TCP三次握手5.3 TCP四次挥手5.…

【大数据处理与可视化】一 、大数据分析环境搭建(安装 Anaconda 3 开发环境)

【大数据处理与可视化】一 、大数据分析环境搭建(安装 Anaconda 3 开发环境)实验目的实验内容实验步骤一、下载Anaconda安装包二、安装Anaconda3三、验证Anaconda是否安装成功四、Jupyter Notebook的使用1. 启动Anaconda自带的Jupyter Notebook2. 在code…

Volatile关键字

Volatile关键字和JMM内存模型一JUC并发包API 包介绍二JMM(Java Memory Model)三 volatile关键字3.1.可⻅性3.1.1.问题演示3.1.1.1案例代码3.1.1.2.案例分析3.1.2.volatile 保证可见性演示3.1.2.1对number添加了volatile修饰3.1.2.2运⾏结果是&#xff1a…

Docker学习(二十一)构建 java 项目基础镜像

目录1.下载 JDK 包2.编写 Dockerfile3.构建镜像4.创建容器测试1.下载 JDK 包 JDK各版本官网下载地址: https://www.oracle.com/java/technologies/downloads/archive/#JavaSE 这里我们以 JDK 8u351 为例,点击 Java SE (8U211 and later)。 点击下载 jd…

Mysql问题:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause

1 问题描述 使用Navicat连接到MySQL(版本:8.0.18),执行查询: select * from t_user WHERE user_name admin查询结果没有问题,但是报错: [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY claus…

分布式 微服务

微服务学习 soa和微服务 业务系统实施服务化改造之后,原本共享的业务被拆分形成可复用的服务,可以在最大程度上避免共享业务的重复建设、资源连接瓶颈等问题。那么被拆分出来的服务是否也需要以业务功能为维度来进行拆分和独立部署,以降低业…

学习streamlit-4

st.slider 今天学习st.slider滑块组件的使用。 st.slider滑块组件通常被用来作为应用的输入,支持整数、浮点数、日期、时间和日期时间。 下面的示例程序包含以下简单功能,以演示st.slider滑块组件: 用户通过调整滑块选择值应用打印出所选…

C++面向对象编程之五:友元(friend)

C中,允许一个类的非共有成员被这个类授予友元(friend)关系的全局函数,另一个类,或另一个类中的成员函数访问。友元不是一个类中的成员,所以它们不受声明出现部分的访问权限(public,p…