【网络】HTTPS协议原理
目录
一、HTTPS是什么?
二、常见加密方式
2.1、只使用对称加密
2.2、只使用非对称加密
2.3、双方都使用非对称加密
2.4、非对称加密+对称加密(中间人攻击情况)
2.5、非对称加密+对称加密+证书认证
三、数据摘要&&数据指纹
四、CA证书
五、数字签名
六、HTTPS的工作过程
七、完整流程
八、总结
一、HTTPS是什么?
http协议是明文传输的,数据安全得不到保证,https是应用层协议,是在http协议基础上通过TLS/SSL软件层进行加密,到达对方主机通过TLS/SSL软件层解密。
二、常见加密方式
2.1、只使用对称加密
对称加密:采用单密钥系统的加密方式,同一个密钥可以同时用作信息的加密和解密,加密和解密所用的密钥是相同的,加密速度快,效率高。(例如按位异或)
2.2、只使用非对称加密
非对称加密:用两个密钥进行加密和解密,一个是公钥一个是私钥,缺点是运算速度非常慢。
可以通过公钥对明文进行加密,形成密文,通过密钥对密文进行解密,形成明文。
当然可以通过密钥对明文进行加密,公钥对明文进行解密,但是公钥是公开的,也就明文也随之公开了。
客户端服务器密钥协商过程
服务器生成公钥私钥,客户端首先向服务器发起请求,服务器发送公钥给客户端,客户端收到公钥后,将要发送的数据用服务端的公钥进行加密,保证了客户端到服务器的信道安全,但是服务器到客户端的信道是不安全的,因为公钥是公开的,而且公钥是一开始是明文传输给客户端的,如果这个公钥被中间人截获,也能通过公钥解密服务器发来的数据。
2.3、双方都使用非对称加密
客户端服务器密钥协商阶段
1、服务端有公钥S和私钥S',客户端有公钥C和私钥C。
2、客户端服务器交换公钥
3、客户端给服务端发信息:先用S对数据加密,再发送,只能由服务器解密,因为只有服务器有私钥 S'4、服务端给客户端发信息:先用C对数据加密,在发送,只能由客户端解密,因为只有客户端有私钥 C'
2.4、非对称加密+对称加密(中间人攻击情况)
密钥协商阶段
1. 服务端具有非对称公钥S和私钥S'2. 客户端发起https请求,获取服务端公钥S3. 客户端在本地生成对称密钥C, 通过公钥S加密, 发送给服务器.4. 由于中间的网络设备没有私钥, 即使截获了数据, 也五法还原出内部的原文, 也就无法获取到对称密钥(中间人在密钥协商完成后才截获数据,这时候中间人来已经晚了)。5. 服务器通过私钥S'解密, 还原出客户端发送的对称密钥C. 并且使用这个对称密钥加密给客户端返回的响应数据.
中间人攻击 - 针对上面的场景• Man-in-the-MiddleAttack,简称“ MITM攻击 ”
1. 服务器具有非对称加密算法的公钥S,私钥S'2. 中间人具有非对称加密算法的公钥M,私钥M'3. 客户端向服务器发起请求,服务器明文传送公钥S给客户端4. 中间人劫持数据报文,提取公钥S并保存好,然后将被劫持报文中的公钥S替换成为自己的公钥M, 并将伪造报文发给客户端5. 客户端收到报文,提取公钥M(自己当然不知道公钥被更换过了),自己形成对称秘钥X,用公钥M加密X,形成报文发送给服务器6. 中间人劫持后,直接用自己的私钥M'进行解密,得到通信秘钥X,再用曾经保存的服务端公钥S加 密后,将报文推送给服务器7. 服务器拿到报文,用自己的私钥S'解密,得到通信秘钥X8. 双方开始采用X进行对称加密,进行通信。但是⼀切都在中间人的掌握中,劫持数据,进行窃听甚至修改,都是可以的

2.5、非对称加密+对称加密+证书认证
上面方案被中间人截获的本质是中间人能够对数据的篡改以及Client无法验证收到的公钥是目标服务器的合法公钥。引入证书认证就能保证数据不被篡改和获取服务器的合法公钥。
• 判定证书的有效期是否过期• 判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构).• 验证证书是否被篡改: 从系统中拿到该证书发布机构的公钥, 对签名解密, 得到⼀个 hash 值(称为数 据摘要), 设为 hash1. 然后计算整个证书的 hash 值, 设为 hash2. 对比 hash1 和 hash2 是否相等. 如 果相等, 则说明证书是没有被篡改过的
三、数据摘要&&数据指纹
数据摘要(数据指纹)基本原理是利用单向散列函数(Hash函数)进行信息运算,生成一串固定长度的数字摘要。数据摘要(数据指纹)并不是一种加密机制,可以判断数据是否被篡改。因为加密机制是可以对密文信息进行解密和加密,所以不是一种加密机制。
四、CA证书

• 中间人篡改了证书的明文• 由于他没有CA机构的私钥,所以无法hash之后用私钥加密形成签名,那么也就没法办法对篡改后 的证书形成匹配的签名• 如果强行篡改,客户端收到该证书后会发现明文和签名解密后的值不⼀致,则说明证书已被篡改, 证书不可信,从而终止向服务器传输信息,防止信息泄露给中间人
• 因为中间人没有CA私钥,所以无法制作假的证书• 所以中间人只能向CA申请真证书,然后用自己申请的证书进行掉包• 这个确实能做到证书的整体掉包,但是别忘记,证书明文中包含了域名等服务端认证信息,如果整体掉包,客户端依旧能够识别出来。• 永远记住:中间人没有CA私钥,所以对任何证书都无法进行合法修改,包括自己的
五、数字签名

1. CA机构拥有非对称加密的私钥A和公钥A'。2. CA机构对服务端申请的证书明文数据进行hash,形成数据摘要。3. 然后对数据摘要用CA私钥A'加密,得到数字签名S 服务端申请的证书明文和数字签名S 共同组成了数字证书,这样⼀份数字证书就可以颁发给服务端了
六、HTTPS的工作过程
https的工作过程分为两个阶段:密钥协商阶段,通信阶段
客户端向服务器发送请求,服务端发送CA证书给客户端,客户端进行合法性验证,用CA机构的公钥对CA证书的数字签名进行解密得到数据摘要,再对服务端申请的证书明文进行hash散列得到数据摘要,如果两个数据摘要相等,服务端发送过来的CA证书中的公钥就是合法的,就可以生成对称密钥X,用服务端的公钥进行加密,发送给服务端,服务端对密文进行解密,得到对称密钥X,从此以后,双方就使用对称密钥X对数据加密来进行通信。
七、完整流程
八、总结
HTTPS工作过程涉及到三组密钥
第一组:CA机构的公钥和私钥
保证客户端拿到服务器的公钥
第二组:服务器持有的公钥和私钥
用于协商对称密钥的私钥,客户端拿到服务端的合法公钥,就会随机生成对称密钥并且加密,发送给服务端,服务端通过私钥进行解密获取到对称密钥
第三组:客户端生成的对称密钥
客户端和服务器后续数据传输都是通过这个对称密钥进行加密解密
总的来说,两组非对称密钥都是为了保证客户端拿到服务器的合法公钥
相关文章:

【网络】HTTPS协议原理
目录 一、HTTPS是什么? 二、常见加密方式 2.1、只使用对称加密 2.2、只使用非对称加密 2.3、双方都使用非对称加密 2.4、非对称加密对称加密(中间人攻击情况) 2.5、非对称加密对称加密证书认证 三、数据摘要&&数据指纹 四、CA证书 五、数字签名 六…...
C#常识篇(一)
面向对象的三大特性 继承:子类通过继承父类来获取基础特性,并且能够基于父类进行扩展以及提升代码的复用性。继承具有传递性,例如A继承自B,C继承自A,那么C就间接继承自B。在C#中,每个类仅允许继承一个父类。…...

Linux使用C语言获取进程信息
Linux使用C语言获取进程信息 Author: OnceDay Date: 2024年2月22日 漫漫长路,才刚刚开始… 全系列文章可查看专栏: Linux实践记录_Once_day的博客-CSDN博客 参考文档: Linux proc目录详解_/proc/mounts-CSDN博客Linux下/proc目录介绍 - 知乎 (zhihu.com)Linux内…...
tomcat通过JAVA_OPTS注入自定义变量 —— 筑梦之路
背景说明 tomcat部署的java应用在k8s集群或容器中,想要给tomcat传自定义变量,应该如何实现? 解决方法 1. 在k8s集群或容器环境中通过env或者configmap方式添加自定义的环境变量 比如: my_key: aaaa 2. tomcat下新增脚本&am…...

Linux——简单的Shell程序
📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、Shell程序思路二、Shell代码展示 一、Shell程序思路 用下图的时间轴来表示事件的发生次序…...

计算机网络-网络互联与互联网(一)
1.常用网络互联设备: 1层物理层:中继器、集线器2层链路层:网桥、交换机3层网络层:路由器、三层交换机4层以上高层:网关 2.网络互联设备: 中继器Repeater、集线器Hub(又叫多端口中继器…...

Android 解决后台服务麦克风无法录音问题
Android 解决后台无法录音问题 问题分析问题来源解决方案1. 修改清单文件:`AndroidManifest.xml`2. 修改启动服务方式3. 服务启动时创建前台通知并且指定前台服务类型参考文档最后我还有一句话要说我用心为你考虑黄浦江的事情,你心里想的却只有苏州河的勾当 问题分析 安卓9.…...

【计网】TCP的三次握手四次挥手
🍎个人博客:个人主页 🏆个人专栏:JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 三次握手(Connection Establishment) 四次挥手(Connection Termination) 结语 我…...
android pdf框架-4,分析vudroid源码2
继续分析源码 阅读器的入口 MainBrowserActivity,这个是主ui,由于代码较旧,所以没有处理sdcard的权限. 一般阅读器申请整个卡的读写. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {if (!Environment.isExternalStorageManager()) {Intent intent = new Intent…...
[算法沉淀记录] 排序算法 —— 希尔排序
排序算法 —— 希尔排序 算法介绍 希尔排序(Shell Sort)是一种基于插入排序的算法,由Donald Shell于1959年提出。希尔排序的基本思想是将待排序的序列划分成若干个子序列,分别进行插入排序,待整个序列中的记录基本有…...
conda 进入虚拟环境命令报错
问题描述 conda-script.py: error: argument COMMAND: invalid choice: activate 解决方案: 在终端命令先执行 conda init,重置conda环境。然后退出终端,重新进入终端即可conda activate env了。...

域名 SSL 证书信息解析 API 数据接口
域名 SSL 证书信息解析 API 数据接口 网络工具,提供域名 SSL 证书信息解析,多信息查询,毫秒级响应。 1. 产品功能 提供域名 SSL 证书信息解析;最完整 SSL 属性信息解析;支持多种元素信息抽取,包括主题的可…...

学习JAVA的第二天(基础)
目录 基本概念 关键字 class关键字 字面量 练习 变量 定义格式 变量使用 数据类型 基本数据类型 标识符 命名规则 键盘录入 1.导包 2.创建对象 3.接受数据 运算符 算术运算符 练习 隐式转换(自动类型提升) 强制转换 自增自减运算符 …...

代码随想录算法训练营第二十七天|93.复原IP地址、78.子集、90.子集II
93.复原IP地址 刷题https://leetcode.cn/problems/restore-ip-addresses/description/文章讲解https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html视频讲解https://www.bilibili.com/video/BV1XP4y1U73i/?vd_sourceaf4853e80f89e28094a5fe1e220d9…...

【蓝桥备赛】字串简写
字串简写 数据范围 字符串的长度为5*10的五次方,on方时间复杂度会很大。 才用动态规划的思想,dp[i]以i开头的的可能性,因为长度必须大于等于k,当i小于k的时候,如果等于第一个字符,s1时,dp[…...

nios ii开发随笔
错误一: d:/intelfpga/17.1/nios2eds/bin/gnu/h-x86_64-mingw32/bin/../lib/gcc/nios2-elf/5.3.0/../../../../../H-x86_64-mingw32/nios2-elf/bin/ld.exe: test.elf section .text will not fit in region ram_oc_xzs d:/intelfpga/17.1/nios2eds/bin/gnu/h-x86_6…...
SpringBoot项目嵌入RabbitMQ
在Spring Boot中嵌入RabbitMQ可以通过添加相应的依赖来完成。首先需要在pom.xml文件中引入spring-boot-starter-amqp依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</a…...

提升网络质量:UDPspeeder 实现网络优化与提速
提升网络质量:UDPspeeder 实现网络优化与提速 背景与意义原理与功能使用方法未来展望相关链接服务 在当今高度互联的网络环境下,网络质量的优化和提速对于用户体验至关重要。针对高延迟和丢包率较高的网络链路,UDPspeeder 提供了一种前向纠错…...

为什么前端开发变得越来越复杂了?这可能是我们的错
前端训练营:1v1私教,终身辅导计划,帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~ Hello,大家好,我是 Sunday。 最近有很多同学来问我:“Sunday 老师,前端学起…...

VR系统的开发流程
虚拟现实(Virtual Reality,VR)系统是一种通过计算机技术模拟出的具有三维视角和交互性的虚拟环境,使用户能够沉浸在其中并与虚拟环境进行交互。这种技术通常利用头戴式显示器和手柄等设备,使用户能够感觉到仿佛身临其境…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...