HTTPS协议的加密流程

目录

一,HTTPS是什么

二,两种加密方式

三,HTTPS的加密过程

3.1 引入对称加密

3.2 引入非对称加密

3.3 引入证书


一,HTTPS是什么

HTTPS也是一个应用层协议,它是在HTTP协议的基础上引入了一个加密层。因为HTTP协议的内容都是按照文本的方式明文传输的,这就导致了在传输过程中会出现被篡改的情况。

也就是说使用HTTP协议进行网络传输是不安全的,所以现在使用HTTPS协议来进一步确保用户的信息安全。

二,两种加密方式

加密就是把明文通过一系列的变换,生成密文,解密就是把密文再通过一系列的变换,还原成明文

加密的两种方式:

1)对称加密:加密和解密使用的密钥是同一个密钥

  • 明文 + 密钥 => 密文
  • 密文 + 密钥 => 明文。

2)非对称加密:加密和解密使用的密钥是一对密钥,分为公钥和私钥,这两者是可以互换的,使用公钥加密,就使用私钥解密,使用私钥加密,就使用公钥解密

  • 明文 + 公钥 => 密文 / 明文 + 私钥 => 密文
  • 密文 + 私钥 => 明文 / 密文 + 公钥 => 明文

三,HTTPS的加密过程

3.1 引入对称加密

仔细思考,上面的模型还存在一个重大问题,服务器不是只和一个客户端通信,那么这些客户端使用的密钥是相同的吗?很明显,每个客户端的密钥必须是不同的,这样彼此之间才不知道对方的密钥是啥。

既然要求每个客户端的密钥都不相同,那么就需要在每个客户端与服务器建立连接的时候,把密钥生成出来(这里涉及到一些随机数机制来确保密钥互不相同),然后客户端再把生成出来的密钥通过网络发给服务器。

但是这里又出现了一个问题,客户端发送给服务器的密钥也是没有加密的,也就是说密钥是可以被黑客截获的,这样就又回到了最初的问题,如何加密?所以这时我们就引入了另一种加密方式 —— 非对称加密。

3.2 引入非对称加密

通过上述过程,客户端生成的密钥就不会被黑客获取到,接下来就可以通过密钥来进行通信了。这时候就会有人问了,既然可以使用非对称密钥加密,那为什么还要使用对称加密,直接全部使用非对称加密不就行了吗?

这是因为非对称加密/解密,运算成本是很高的,运算速度也比较慢,而对称加密/解密,运算成本低,速度快。所以非对称加密通常是在一些比较关键的环节使用(传递密钥),成本就比较可控,后续传输大量的业务数据,都是使用效率更高的对称加密。这样整体的传输效率也会得到提高。

但是上述流程还存在一个漏洞,画个图理解一下:

 在上述流程中,客户端的对称密钥就会被黑客获取到,之后客户端与服务器之间的通信也就会一览无余了。那么要如何解决这种 "中间人" 问题呢?这时候就需要引入第三方公正机构。

3.3 引入证书

会发生上述 "中间人" 问题的原因是客户端无法区分这个公钥究竟是不是黑客伪造的,因此在这里就要引入第三方,即一个被大家信任的"公正机构",如果公正机构说这个公钥是正确的,不是被伪造的,我们就可以使用这个公钥进行加密。

将这个流程画个图理解一下:

公正机构针对证书中的各个属性,计算出来的一个校验和,并对这个校验和进行加密,就得到了数字签名,这里的加密是指公正机构使用自己生成的一对非对称密钥加密,公正机构会使用自己持有的私钥对校验和进行加密,公钥会发布到各个客户端设备中(往往公钥是内置到系统中,安装了系统,就会自导公正机构的公钥)。

当客户端拿到数字签名,就可以通过系统内置的公正机构的公钥进行解密,得到最初的校验和,然后客户端在重新计算一遍校验和,看看和解密出来的校验和是否一样,如果一致,就说明证书没有被篡改,公钥是可信的。

在上述机制下,黑客就无法对证书内容进行篡改了,或者说篡改了也会被发现:

  1. 如果黑客篡改了里面服务器的公钥,替换成自己的,那么客户端在进行校验和验证的时候,就会发现校验和不一致,客户端就认为公钥被篡改了
  2. 如果黑客不止替换了公钥,还将数字签名给替换了,那么由于黑客没有私钥,无法对其篡改后的数据进行加密,或者说,使用自己的私钥加密后,客户端无法对其进行解密,而公正机构的公钥是客户端系统自带的,黑客无法替换
  3. 如果黑客自己申请一个证书,完全替换掉服务器的证书呢?这也是行不通的,因为申请证书是需要提交材料的,其中就有网站的主域名,认证机构会对这个域名是否归你所有进行认证。

综上所述,只要通过证书的检验,就说明公钥是服务器的公钥了

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

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

相关文章

边云协同架构设计

文章目录 一. "边云协同"是什么?二. "边云协同"主要包括6种协同2.1 资源协同2.2 数据协同2.3 智能协同2.4 应用管理协同2.5 业务管理协同2.6 服务协同 三. "边云协同"的优势 其它相关推荐: 系统架构之微服务架构 系统架构…

自动化测试学习指南

软件自动化测试的学习步骤 大概步骤如下: 1. 做好手工测试(了解各种测试的知识)-> 2. 学习编程语言-> 3. 学习Web基础(HTML,HTTP,CSS,DOM,Javascript)或者 学习Winform -> 4. 学习自动化测试工具 ->5.…

C++ Day04 this指针,友元函数,重载

this指针 概念 谁调用 this 所在的函数 ,this 就存储谁的地址 特点 1, 在当前类的非静态成员函数中调用本类非静态成员时 , 默认有 this 关键字 2, 静态成员函数 , 没有 this 指针。 示例 #include <iostream> #include <cstring> using namespace std; class S…

stm32定时器输入捕获模式

频率测量 频率测量有两种方法 测频法&#xff1a;在闸门时间T内&#xff0c;对上升沿或下降沿计次&#xff0c;得到N&#xff0c;则评率fxN/T测周法&#xff1a;两个上升沿内&#xff0c;以标准频率fc计次得到N&#xff0c;则频率fx fc/N中界频率&#xff1a;测频法和测周法误…

学习MySQL先有全局观,细说其发展历程及特点

学习MySQL先有全局观&#xff0c;细说其发展历程及特点 一、枝繁叶茂的MySQL家族1. 发展历程2. 分支版本 二、特点分析1. 常用数据库2. 选型角度及场景 三、三大组成部分四、总结 相信很多同学在接触编程之初&#xff0c;就接触过数据库&#xff0c;而对于其中关系型数据库中的…

【C++】类和对象——构造函数和析构函数

今天要学习两个特殊的函数&#xff0c;分别是构造函数和析构函数&#xff0c;它们究竟有什么用呢&#xff1f; 比如说&#xff0c;我们先写一个简单的日期的类 class Date { public:void Init() {_year 1;_month 1;_day 1;}void Print() {cout << _year << &qu…

JavaScript 运行机制

文章目录 JavaScript 运行机制目标知识要点一、进程与线程1.1 概念1.2 区别1.3 多进程与多线程1.4 JS 为什么是单线程1.5 浏览器1.5.1 浏览器包含哪些进程1.5.2 为什么浏览器要多进程1.5.3 渲染进程1.5.3.1 GUI 渲染线程1.5.3.2 JS 引擎线程1.5.3.3 事件触发线程1.5.3.4 定时触…

Windows权限维持方法论

Windows权限维持方法论 1.注册表自启动2.组策略设置脚本启动3.计划任务4.服务自启动5.dll劫持6.直接上远程控制木马 1.注册表自启动 通过修改注册表自启动键值&#xff0c;添加一个木马程序路径&#xff0c;实现开机自启动 常用的注册表启动键&#xff1a; # Run键 HKEY_CU…

echarts移动markline(拖拽单条markline)

echarts移动markline&#xff08;拖拽单条markline&#xff09; 效果 问题由来&#xff1a; 图表中需要一个移动的标线&#xff0c;辅助观察图表&#xff1b; 想法&#xff1a; 意思是在原来点或者原来标线上新增一个图层&#xff0c;拖动图层动态绘制新的点或者新的标线; 参考…

【C++初阶】STL详解(五)List的介绍与使用

本专栏内容为&#xff1a;C学习专栏&#xff0c;分为初阶和进阶两部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握C。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&…

万字解析:十大排序(直接插入排序+希尔排序+选择排序+堆排序+冒泡排序+快速排序+归并排序+计数排序+基数排序+桶排序)

文章目录 十大排序排序算法复杂度及稳定性分析一、 排序的概念1.排序&#xff1a;2.稳定性&#xff1a;3.内部排序&#xff1a;4.外部排序&#xff1a; 二、插入排序1.直接插入排序2.希尔排序 三、选择排序1.直接选择排序方法一方法二直接插入排序和直接排序的区别 2.堆排序 四…

这是大学生就业网站最基础的布局。

<!DOCTYPE html> <html> <head> <title>大学生就业网站</title> <style> /* Reset default margin and padding */ *, *::before, *::after { margin: 0; padding: 0; box-s…

算法刷题-动态规划2

算法刷题-动态规划2 珠宝的最高价值下降路径最小和 珠宝的最高价值 题目 大佬思路 多开一行使得代码更加的简洁 移动到右侧和下侧 dp[ i ][ j ]有两种情况&#xff1a; 第一种是从上面来的礼物最大价值&#xff1a;dp[ i ][ j ] dp[ i - 1 ][ j ] g[ i ][ j ] 第二种是从左…

FPGA设计时序约束九、others类约束之Group Path

目录 一、序言 二、Group Path 2.1 基本概念 2.2 设置界面 2.3 命令语法 2.4 命令示例 三、工程示例 四、参考文件 一、序言 在Vivado的时序约束窗口中&#xff0c;存在一类特殊的约束&#xff0c;划分在others目录下&#xff0c;可用于设置忽略或修改默认的时序路径分…

如何判断客户对你是不是真的满意

我们平时生活中打个滴滴、叫个外卖&#xff0c;都会让做星级评价&#xff0c;就算去银行办业务&#xff0c;也会让按个按钮&#xff0c;对窗口的服务做个评价…… 再问一个问题&#xff1a;客户满意了&#xff0c;您的生意就一定好吗&#xff1f; 一、满意度&#xff1a;质量监…

EDIFACT学习手册

EDIFACT 又名 UN/EDIFACT&#xff08;全称为 United Nations/Electronic Data Interchange For Administration, Commerce and Transport&#xff09;&#xff0c;是由联合国主导开发制定的国际通用 EDI 标准。EDI术语中的EDIFACT是指 EDIFACT 报文标准&#xff0c;本视频将为大…

python接口自动化封装导出excel方法和读写excel数据

一、首先需要思考&#xff0c;我们在页面导出excel&#xff0c;用python导出如何写入文件的 封装前需要确认python导出excel接口返回的是一个什么样的数据类型 如下&#xff1a;我们先看下不对返回结果做处理&#xff0c;直接接收数据类型是一个对象&#xff0c;无法获取返回…

Postman API Enterprise 10.18.1 Crack

适合您企业的 Postman API 平台 掌控您的 API 环境。构建更好的 API。加快产品开发。 无论您处于 API 之旅的哪个阶段&#xff0c;Postman 都会为您提供帮助 想让您团队的 API 更容易被发现吗&#xff1f;希望减少开发和质量检查之间的滞后时间&#xff1f;想要更快地让新开发…

2023年09月 Scratch(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 点击绿旗,运行程序后,舞台上的图形是?( ) A:画笔粗细为4的三角形 B:画笔粗细为5的六边形 C:画笔粗细为4的六角形 D:画笔粗细为5的三角形 答案:D 第2题 如下图所示,从所给…

AI一点通:卷积神经网络的输出节点大小如何计算?全连接层必要输入大小如何设置

在使用卷积网络&#xff08;CNN&#xff09;时&#xff0c;一个步骤是计算经过卷积和池化步骤后的输出大小&#xff0c;以便我们可以将输出连接到一个完全收集的线性层。 以Pytorch中的一维CNN为例&#xff0c; self.conv1 nn.Conv1d(in_channels1, out_channels64, kernel_s…