【计算机网络】TLS中的对称加密和非对称加密的应用,应对第三方抓包的双向https认证
TLS工作流程简化版
-
证书验证流程
客户端通过CA的公钥验证服务器数字证书的签名,确保服务器身份可信,防止中间人攻击。 -
预主密钥加密传输
客户端生成预主密钥,用服务器证书中的公钥加密后发送给服务器,只有服务器(持有私钥)能解密。 -
对称加密通信
双方基于预主密钥生成会话密钥(对称密钥),后续通信使用对称加密(如AES)提高效率。
非对称加密用于密钥交换,对称加密用于数据传输
补充的细节
-
随机数的作用
预主密钥并非直接作为会话密钥,而是结合客户端和服务器各自生成的随机数(Client Random、Server Random),通过特定算法计算出最终的会话密钥。这增强了密钥的随机性和安全性。 -
加密套件协商
客户端和服务器在握手初期会协商使用的加密算法(如ECDHE+AES-GCM),这决定了后续密钥交换和数据加密的具体方式。 -
证书链验证
服务器证书可能是由中间CA颁发的,客户端需要验证完整的证书链(从服务器证书到中间CA,最终到根CA),确保每个环节都被信任。 -
前向安全性
如果使用ECDHE等支持前向安全性的算法,即使服务器私钥日后泄露,过去的会话数据也无法被解密。
简化流程图
客户端 服务器│ │├─ Client Hello(发送支持的TLS版本、加密套件、Client Random)─→│ ││ ←── Server Hello(选择加密套件、发送证书、Server Random)──┤│ │├─ 验证证书(用CA公钥验证证书签名) ││ │├─ 生成预主密钥 → 用证书中的公钥加密 → 发送给服务器 ───→│ ││ ←──────── 服务器用私钥解密预主密钥 ────────────────┤│ │├─ 双方基于预主密钥+Client Random+Server Random计算会话密钥 ──┤│ │└─ 后续通信使用会话密钥进行对称加密 ──────────────────────┘
常见误解澄清
-
证书是否包含私钥?
❌ 证书只包含公钥,私钥由服务器严格保密,从不传输。 -
CA的公钥从哪里来?
🔑 浏览器/操作系统预装了知名CA的根证书(含公钥),无需额外传输。 -
预主密钥=会话密钥?
❌ 预主密钥是生成会话密钥的重要参数,但会话密钥还结合了双方的随机数,增加了安全性。
最终描述版
- TCP三次握手
- 客户端向服务端发送TLS加密通信请求,附带
TLS版本号,支持的密码套件列表,客户端随机数
- 服务端收到后返回
确认TLS版本号,使用的密码套件,服务端随机数,服务端的数字证书
- 客户端收到后使用
内置的CA公钥
,验证数字证书,避免第三方伪造,确认无误后,使用证书中附带的服务端公钥
,加密
生成的预主密钥
,返回给服务端,自己通过客户端随机数,服务端随机数,预主密钥
,生成用于加解密待传输数据的对称密钥–会话密钥
- 服务端收到用自身公钥加密的数据,使用保留的私钥解密,确认无误后,使用
客户端随机数,服务端随机数,预主密钥
生成用于加解密待传输数据的对称密钥–会话密钥
- 双方使用该
会话密钥
进行进行对称加密通信 - 断开连接,TCP四次挥手
应对第三方抓包
引自小林coding https://xiaolincoding.com/
-
这是单向https认证的一个抓包场景,在用户点击接收非受信任的CA证书时,可能出现上述情况,
-
或者自身电脑被植入,第三方的伪造CA公钥,则不会弹出非受信任警告
避免第三方抓包
- CA证书的权威性和唯一性:CA(证书颁发机构)是具有权威性和公信力的第三方机构。CA证书是基于严格的身份验证和审核流程颁发的,服务端的CA证书包含了服务端的公钥以及服务端的相关身份信息等,并由CA使用自己的私钥进行签名。第三方很难通过正常途径获得CA为特定服务端颁发的合法证书,因为CA会对申请证书的实体进行严格的身份验证,确保证书与真实的服务端对应。
- 数据加密传输:客户端与服务端在TLS握手过程中,通过一系列步骤协商出用于加密数据的会话密钥。这个过程中,预主密钥由服务端公钥加密传输,只有拥有对应私钥的服务端才能解密获取。而会话密钥是基于客户端随机数、服务端随机数和预主密钥生成的,即使第三方能截获传输中的随机数等信息,但由于没有服务端私钥来解密预主密钥,就无法计算出会话密钥。所以,第三方即使抓包也只能获取到加密后的数据,无法解密得到原始内容。
第三方难以申请到合法CA证书的原因
- CA的审核机制:CA对于证书申请有严格的审核流程。申请证书时,需要提供详细的身份信息、域名所有权证明、组织信息等资料,CA会通过多种方式进行验证,如域名验证、身份验证等。第三方如果没有合法的身份和相关权利,很难通过这些审核。
- CA的责任和信誉:CA要对颁发的证书负责,如果随意颁发证书,会损害自身的信誉和公信力,面临法律风险和行业制裁。所以CA会严格遵守规范和标准,不会为不符合要求的第三方颁发证书。
通过HTTPS双向认证增强安全性
- HTTPS单向认证的局限:在单向认证中,客户端验证服务端身份,确保连接的服务器是真实可靠的,但服务端不验证客户端身份。这意味着第三方有可能伪装成合法客户端与服务端通信,虽然无法篡改服务端返回给真正客户端的数据,但可以向服务端发送恶意请求。
- HTTPS双向认证的原理和优势:双向认证要求客户端和服务端都向对方提供数字证书进行身份验证。在客户端向服务端发送请求时,除了服务端返回证书供客户端验证外,客户端也会向服务端发送自己的证书,服务端使用相应的CA公钥验证客户端证书的合法性。这样可以防止第三方伪装成合法客户端与服务端通信,进一步增强了通信的安全性,避免中间人攻击。
https://github.com/0voice
相关文章:
【计算机网络】TLS中的对称加密和非对称加密的应用,应对第三方抓包的双向https认证
TLS工作流程简化版 证书验证流程 客户端通过CA的公钥验证服务器数字证书的签名,确保服务器身份可信,防止中间人攻击。 预主密钥加密传输 客户端生成预主密钥,用服务器证书中的公钥加密后发送给服务器,只有服务器(持有…...
Stable Diffusion WebUI 插件大全:功能详解与下载地址
Stable Diffusion WebUI 的强大之处在于其丰富的插件生态,这些插件可以大幅提升 AI 绘画的效率和质量。本文将详细介绍 21 个常用插件,包括它们的功能、效果说明以及下载地址,帮助你更好地使用 Stable Diffusion WebUI。 插件的安装方式 直…...
【行为型之策略模式】游戏开发实战——Unity灵活算法架构的核心实现策略
文章目录 🎮 策略模式(Strategy Pattern)深度解析一、模式本质与核心价值二、经典UML结构三、Unity实战代码(动态伤害计算系统)1. 定义策略接口与上下文2. 实现具体策略3. 客户端使用 四、模式进阶技巧1. 策略组合2. 策…...
第二十九节:直方图处理-直方图均衡化
在数字图像处理中,直方图均衡化(Histogram Equalization)是一种经典的对比度增强技术。它通过重新分配图像像素的亮度值,使图像的灰度级分布更加均匀,从而显著提升图像的视觉效果。 一、直方图基础 1.1 什么是直方图? 直方图(Histogram)是图像处理中用于描述图像像素…...
性能比拼: Nginx vs. Envoy
本内容是对知名性能评测博主 Anton Putra Nginx vs. Envoy performance benchmark 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 Envoy 被设计为服务网格中的高性能代理。 你可以将它部署在虚拟机(VM)中,或作为 sidecar 方式部…...
在 C 语言中,U、UL、ULL、L、LL 等符号使用说明
在 C 语言中,U、UL、ULL、L、LL 等符号是用于明确指定整数字面量类型的后缀,其核心作用是避免数据类型隐式转换导致的溢出或未定义行为。以下是具体分类和使用场景: 一、整数字面量后缀分类 后缀全称适用场景示例说明Uunsigned100U无符号整数…...
一般枚举题目合集
一般枚举题目合集 枚举NOIP 2011 提高组 铺地毯P2327 [SCOI2005] 扫雷蓝桥真题 跑步蓝桥真题 猜年龄 二进制枚举常用的技巧整理子集 - 力扣P10449 费解的开关UVA11464 Even Parity通过Virtual Judge提交代码正解 日期枚举蓝桥真题 跑步NOIP 2016 普及组 回文日期日期统计 写这段…...
MCP(Model Context Protocol,模型上下文协议)
1. 起因, 目的: MCP, 貌似最近很火,简单了解一下, 跟上时代节奏。看似是一个工具,一个新概念,其实是个鸡肋(仅仅代表个人观点)。 2. 先看效果 这里插入图片 3. 过程: 问题1, 什么是 MCP h…...
MQTT 在Spring Boot 中的使用
在 Spring Boot 中使用 MQTT 通常会借助 Spring Integration 项目提供的 MQTT 支持。这使得 MQTT 的集成可以很好地融入 Spring 的消息驱动和企业集成模式。 以下是如何在 Spring Boot 中集成和使用 MQTT 的详细步骤: 前提条件: MQTT Brokerÿ…...
uniapp使用全局组件,
在 Uniapp 中,如果你的组件是应用层组件(例如全局悬浮按钮、全局通知栏等),并且希望它自动出现在所有页面而无需在每个页面模板中手动添加组件标签,可以通过以下两种方案实现: 方案一:通过 app.…...
【三维重建】三维场景生成:综述
标题:《3D Scene Generation: A Survey》 来源:新加坡南洋理工大学 项目:https://github.com/hzxie/Awesome-3D-Scene-Generation 文章目录 摘要一、前言二、准备工作2.1 任务定义2.2 三维场景表示2.3 生成模型 三、方法:分层分类…...
怎样将MM模块常用报表设置为ALV默认格式(MB52、MB5B、ME2M、ME1M等)
【SAP系统研究】 对SAP系统中的报表,最方便的格式就是ALV了,可排序、可导出,非常友好。 但有些常见报表却不是默认ALV界面的,譬如MB52: 是不是有点别扭?但其实是可以后台配置进行调整的。 现将一些常用报表修改为默认ALV的方法进行总结,便于大家使用。 一、MB52、MB5…...
Flutter 开发入门:从一个简单的计数器应用开始
在当今快速发展的移动应用开发领域,Flutter 框架以其高效、跨平台的特点脱颖而出,成为许多开发者的首选。本文将通过一个简单的 Flutter 项目代码,带你深入了解 Flutter 开发的基本概念和流程。这个项目是一个简单的计数器应用,它…...
Python解释器、REPL与脚本的区别
用ChatGPT做软件测试 “初学者写代码,高手理解运行。” 要成为真正理解代码的人,必须透彻理解:Python 是如何运行你的代码的?解释器、REPL 和脚本之间的界限与联系究竟是什么? 一、编程学习常见误区:把“运…...
总共76dp 空出20dp然后放一个控件的写法
<FrameLayout android:id"id/bt_user_agree" android:layout_width"120dp" android:layout_height"76dp" > <ImageView android: 这里里上一个 android:layout_width"wrap_content" android:layout_height"40dp" …...
【PmHub后端篇】PmHub集成 Sentinel+OpenFeign实现网关流量控制与服务降级
在微服务架构中,保障服务的稳定性和高可用性至关重要。本文将详细介绍在 PmHub 中如何利用 Sentinel Gateway 进行网关限流,以及集成 Sentinel OpenFeign 实现自定义的 fallback 服务降级。 1 熔断降级的必要性 在微服务架构中,服务间的调…...
C#扩展方法的入门理解
public static class CanGetModelExtension {public static T GetModel<T>(this ICanGetModel self) where T : class, IModel >self.GetArchitecture().GetModel<T>(); } 前言: 在学习QFramework时,看底层框架代码注意到这个函数&#…...
HTML应用指南:利用POST请求获取全国圆通快递服务网点位置信息
圆通快递作为国内物流行业的领军企业,自2000年成立以来,始终秉持 “客户要求,圆通使命” 的服务宗旨,致力于为客户提供高效、优质的物流服务。凭借其庞大的物流网络、先进的信息技术以及卓越的运营管理,圆通快递在激烈…...
vulnhub靶场——secarmy
靶机:secarmy靶机,IP地址为192.168.230.18 攻击:kali,IP地址为192.168.230.134 靶机和攻击机都采用VMware虚拟机,都采用NAT模式 端口扫描: nmap 192.168.230.18 -O -A -p- --reason -sV 21/tcp (ftp): 开…...
Daily AI 20250514 (迁移学习与元学习)
参考资料:神经网络与深度学习 目录 迁移学习 (Transfer Learning)归纳迁移学习转导迁移学习 元学习 (Meta Learning)基于优化器的元学习模型无关的元学习(Model-AgnosticMeta-Learning,MAML&am…...
牛市买卖数字货币逻辑
在牛市中进行数字货币交易,核心逻辑是顺势而为、控制风险、把握周期。以下是关键策略和逻辑框架: 一、牛市的核心逻辑 资金驱动 牛市由增量资金(新投资者、机构资金、杠杆资金)推动,流动性充裕时,市场情绪乐…...
7.DTH11和PWM波
目录 室内/本地温湿度检测 温湿度传感器介绍 获取手册和例程的方法 从手册中提取重要信息 传感器的分类 温度传感器类型 DHT11 的介绍 温湿度传感器的接口 温湿度传感器的时序 温湿度传感器电路介绍 IO 的配置 定时器输出 PWM 波 PWM 波介绍 PWM 波的作用&#x…...
在UI 原型设计中,交互规则有哪些核心要素?
在UI 原型设计中,交互规则主要有三个核心要素,分别为重要性、原则与实践,具体表现在: 一、交互规则在 UI 原型设计中的重要性 明确交互逻辑:设计阶段制定交互规则,清晰定义界面元素操作响应。 如社交应用…...
树的直径 | 树的最长路径
树的直径: 树上任意两节点之间最长的简单路径即为树的「直径」。 定理: 在一棵树上,从任意节点 u 开始进行一次 DFS,到达的距离其最远的节点 v 必为直径的一端。 B4016 树的直径 - 洛谷 思路: 由于这题中每条边的…...
AbMole解读:脂质体的关键组分和主要合成方法
脂质体(Liposome)是一种由磷脂等两性分子自发形成的封闭囊泡结构,随着纳米技术、材料科学等多学科的交叉发展,脂质体的研究与应用进入了一个新的阶段,并在肿瘤研究、疫苗研发、基因递送等多个领域发挥着关键作用。AbMo…...
Python爬虫之品牌口碑数据抓取
上一篇我们介绍了爬虫营销的优势,这次我就展开详细的说说,如何通过爬取社交媒体或电商平台的公开评论来分析自己或竞争对手的品牌声誉。 选择微博这样的平台,因为它的数据相对公开,而且有API支持,但要注意频率限制和反…...
【android bluetooth 协议分析 12】【A2DP详解 1】【车机侧蓝牙音乐免切源介绍】
“车机蓝牙音乐免切源” 是近年来车载系统(IVI,In-Vehicle Infotainment)中常见的一个用户体验优化功能。它主要是为了简化蓝牙音乐播放流程、减少用户操作,提升使用便捷性。 一、什么是“切源”? 在车机系统中&#…...
眼镜店哪个品牌好,你会选择哪一款眼镜
有些人买眼睛是为了耍帅,有些人买眼镜,可能就是为了调节视力。现在手机以及其他的电子产品越来越普及,近视眼的人群是越来越多了,那么要准备去配眼镜的话,就要找到一个正规的眼镜店,一起来了解一下眼镜店哪…...
基于EFISH-SCB-RK3576/SAIL-RK3576的畜禽养殖监控仪技术方案
(国产化替代J1900的农业物联网解决方案) 一、硬件架构设计 多源环境感知模块 空气质量监测: 集成NH₃/CO₂/H₂S三合一气体传感器(量程0-500ppm,精度2%FS),采样间隔≤1秒激光粉尘检测…...
linux - 权限的概念
目录 用户权限 超级用户与普通用户的区别 超级用户(root): 普通用户: 切换用户身份 使用sudo执行高权限命令 用户管理 用户组管理 文件权限 文件访问者类别 基本权限 权限表示方法 权限修改 chmod chown chgrp u…...
LeRobot 框架的核心架构概念和组件(中)
本文档概述构成 LeRobot 框架的核心架构概念和组件。它介绍主要的子系统,并解释它们如何相互作用以实现机器人学习。 。。。。。。继续。。。。。。 环境接口 环境系统提供与模拟环境交互的统一接口。这些环境允许在部署到物理机器人之前,在受控环境中…...
鸿蒙5.0项目开发——鸿蒙天气项目的实现(主页1)
【高心星出品】 文章目录 页面效果:页面功能:页面执行流程:1. 页面初始化阶段2. 定位获取阶段3. 天气数据加载阶段 这个页面是整个天气应用的核心,集成了天气查询、定位、搜索等主要功能,提供了完整的天气信息服务。 …...
虚幻引擎5-Unreal Engine笔记之摄像机与场景捕获相关概念的解析
虚幻引擎5-Unreal Engine笔记之摄像机与场景捕获相关概念的解析 code review! 文章目录 虚幻引擎5-Unreal Engine笔记之摄像机与场景捕获相关概念的解析1. UE中SceneCapture和UCameraComponent的关系是什么?Camera和SceneCapture2D的关系是什么1.1 UCameraComponen…...
【vim】--- vim 插件说明 超详细持续更新中
在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。【vim】--- vim 插件说明 超详细持续更新中 开发环境一、vim 插件管理器1、Vim-Plug2…...
医学影像系统的集成与工作流优化
🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…...
Vue 和 React 状态管理的性能优化策略对比
一、Vue 状态管理优化策略 合理使用 Vuex 模块化 将全局状态拆分为模块,按需加载,避免单一 Store 文件过大。通过命名空间隔离状态,减少状态冗余和无效更新。 const moduleA { namespaced: true, state: { /* ... */ } }; const store new …...
python打包exe报错:处理文件时错误:Excel xlsx file; not supported
背景:最近用python写一个excel解析工具,然后打包成exe可执行文件的时候,遇到这样的问题 1.在我自己编译器运行是可以正常将上传后的excel进行解析,但是在打包成exe后,就无法正常解析excel 问题排查: 1.切换…...
libmemcached库api接口讲解一
前言:好多接口的用法都不怎么会,得学习一下具体的用法 memcached_st ✅ 一个连接 memcached 服务集群的“客户端实例”对象,用于管理连接、执行读写操作、设置行为、维护哈希环等一切功能。 它在使用中通常通过下面的方式创建: …...
【RabbitMQ】发布确认机制的具体实现
文章目录 模式介绍建立连接单独确认代码实现逻辑运行结果 批量确认代码实现逻辑运行结果 异步确认实现逻辑介绍代码实现逻辑运行结果 三种策略对比以及完整代码 模式介绍 作为消息中间件,都会面临消息丢失的问题,消息丢失大概分为三种情况: …...
RabbitMQ是什么?应用场景有哪些?
RabbitMQ 是一款开源的消息代理中间件,基于 AMQP(高级消息队列协议)实现,用于在分布式系统中进行异步通信和消息传递。它通过将消息的发送者和接收者解耦,提高了系统的可扩展性、可靠性和灵活性。 核心特点 多协议支持:不仅支持 AMQP,还兼容 STOMP、MQTT 等多种消息协议…...
数学实验(Matlab符号运算)
一、符号对象的建立 Matlab符号运算特点 计算以推理方式进行,因此不受计算误差积累所带来的困扰 符号计算指令的调用比较简单,与数学教科书上的公式相近 Matlab符号运算举例 符号对象与符号表达式 在进行符号运算时,必须先定义基本的符号…...
使用 hover-class 实现触摸态效果 - uni-app 教程
目录 一、什么是 hover-class 二、常用组件支持 hover-class 三、基本 效果说明: 四、配合 hover-start-time 和 hover-stay-time 五、注意事项 六、实践建议 在移动端开发中,良好的用户交互体验尤为重要,点击或长按某个按钮时&#x…...
# 深度剖析LLM的“大脑”:单层Transformer的思考模式探索
简单说一下哈 —— 咱们打算训练一个单层 Transformer 加上稀疏自编码器的小型百万参数大型语言模型(LLM),然后去调试它的思考过程,看看这个 LLM 的思考和人类思考到底有多像。 LLMs 是怎么思考的呢? 开源 LLM 出现之后…...
Git仓库迁移
前言 前面我讲了GitLab搭建与使用(SSH和Docker)两种方式,那么就会延伸出来一个情况:Git仓库迁移虽然这种情况很少发生,但是我自己公司近期要把 阿里云迁移到华为云,那么放在上面的Git仓库也要全量迁移下面我就写了一个脚本演示&am…...
Windows避坑部署CosyVoice多语言大语言模型
#工作记录 前言 在实际部署与应用过程中,项目的运行环境适配性对其稳定性与功能性的发挥至关重要。CosyVoice 项目虽具备强大的语音处理能力,但受限于开发与测试环境的侧重方向,其对运行环境存在特定要求。 该项目在 Linux 和 Docker 生态…...
《实现模式》以Golang视角解读 价值观和原则 day 1
为什么阅读实现模式? 为什么阅读《实现模式》?Kent Beck 的《实现模式》其核心思想——编写清晰、易于理解且易于维护的代码,对于软件工程的新手而言,直接深入复杂的设计模式或架构理念可能会感到困惑。《实现模式》则弥合了设计…...
解决 PicGo 上传 GitHub图床及Marp中Github图片编译常见难题指南
[目录] 0.行文概述 1.PicGo图片上传失败 2.*关于在Vscode中Marp图片的编译问题* 3.总结与启示行文概述 写作本文的动机是本人看到了Awesome Marp,发现使用 Markdown \texttt{Markdown} Markdown做PPT若加持一些 CSS , JavaScript \texttt{CSS},\texttt{JavaScript} …...
LeetCode 820 单词的压缩编码题解
LeetCode 820 单词的压缩编码题解 题目描述 题目链接 给定一个单词列表,将其编码为一个索引字符串S,格式为"单词1#单词2#…"。要求当某个单词是另一个单词的后缀时,该单词可以被省略。求最终编码字符串的最小长度。 解题思路 逆…...
Windows软件插件-写wav
下载本插件 本插件,将PCM音频流写入WAV音频文件。或将PCM音频流压缩为ALAW格式,写入WAV文件。可以创作大文件(超过4字节所能表示的大小)。插件类型为DLL,可以在win32和MFC程序中使用。使用本插件创建的ALAW格式WAV音频…...
基于 Spring Boot 瑞吉外卖系统开发(十五)
基于 Spring Boot 瑞吉外卖系统开发(十五) 前台用户登录 在登录页面输入验证码,单击“登录”按钮,页面会携带输入的手机号和验证码向“/user/login”发起请求。 定义UserMapper接口 Mapper public interface UserMapper exte…...