当前位置: 首页 > news >正文

【计算机网络】TLS中的对称加密和非对称加密的应用,应对第三方抓包的双向https认证

TLS工作流程简化版

  1. 证书验证流程
    客户端通过CA的公钥验证服务器数字证书的签名,确保服务器身份可信,防止中间人攻击。

  2. 预主密钥加密传输
    客户端生成预主密钥,用服务器证书中的公钥加密后发送给服务器,只有服务器(持有私钥)能解密

  3. 对称加密通信
    双方基于预主密钥生成会话密钥(对称密钥),后续通信使用对称加密(如AES)提高效率。

非对称加密用于密钥交换对称加密用于数据传输

补充的细节

  1. 随机数的作用
    预主密钥并非直接作为会话密钥,而是结合客户端和服务器各自生成的随机数(Client Random、Server Random),通过特定算法计算出最终的会话密钥。这增强了密钥的随机性和安全性。

  2. 加密套件协商
    客户端和服务器在握手初期会协商使用的加密算法(如ECDHE+AES-GCM),这决定了后续密钥交换和数据加密的具体方式。

  3. 证书链验证
    服务器证书可能是由中间CA颁发的,客户端需要验证完整的证书链(从服务器证书到中间CA,最终到根CA),确保每个环节都被信任。

  4. 前向安全性
    如果使用ECDHE等支持前向安全性的算法,即使服务器私钥日后泄露,过去的会话数据也无法被解密

简化流程图

客户端                                           服务器│                                                  │├─ Client Hello(发送支持的TLS版本、加密套件、Client Random)─→│                                                  ││  ←── Server Hello(选择加密套件、发送证书、Server Random)──┤│                                                  │├─ 验证证书(用CA公钥验证证书签名)                        ││                                                  │├─ 生成预主密钥 → 用证书中的公钥加密 → 发送给服务器 ───→│                                                  ││  ←──────── 服务器用私钥解密预主密钥 ────────────────┤│                                                  │├─ 双方基于预主密钥+Client Random+Server Random计算会话密钥 ──┤│                                                  │└─ 后续通信使用会话密钥进行对称加密 ──────────────────────┘

常见误解澄清

  1. 证书是否包含私钥?
    ❌ 证书只包含公钥,私钥由服务器严格保密,从不传输。

  2. CA的公钥从哪里来?
    🔑 浏览器/操作系统预装了知名CA的根证书(含公钥),无需额外传输。

  3. 预主密钥=会话密钥?
    ❌ 预主密钥是生成会话密钥的重要参数,但会话密钥还结合了双方的随机数,增加了安全性。


最终描述版

  • 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

http://www.xdnf.cn/news/448255.html

相关文章:

  • PLM系统如何实现跨部门数据共享?七项核心功能打通信息孤岛
  • Java项目拷打(外卖+点评)
  • lesson01-PyTorch初见(理论+代码实战)
  • AI数字人实现原理
  • std::ratio<1,1000> 是什么意思?
  • PYTHON训练营DAY25
  • WMS仓储管理系统可以跟哪些系统集成
  • ChatPromptTemplate创建方式比较
  • 2025 uniapp的请求封装工具类以及使用【拿来就用】
  • 虚拟机安装CentOS7网络问题
  • Java 日期解析与格式化:从标准格式到自然语言解析
  • 【Bootstrap V4系列】学习入门教程之 组件-分页(Pagination)
  • 如何利用 Java 爬虫获得京东(JD)商品详情:实战指南
  • windows10 安装 QT
  • 国产之光--腾讯云推出AI编程智能助手CodeBuddy
  • HPE ProLiant DL360 Gen11 服务器,配置 RAID 5 教程!
  • Linux篇 第2章Linux基础指令
  • 【FFmpeg】介绍+安装+VisualStudio配置FFMpeg库
  • 序列化和反序列化:从理论到实践的全方位指南
  • c++STL——哈希表封装:实现高效unordered_map与unordered_set
  • teneo自动机器人部署教程
  • 固定步长和变步长的LMS自适应滤波器算法
  • [Spring]-组件的生命周期
  • 【Linux网络】传输层协议TCP
  • TypeScript泛型:从入门到精通的全方位指南
  • Linux下的c/c++开发之操作Redis数据库
  • 上网行为审计软件系统说明书:上网行为审计是什么?是干啥的?哪家好?
  • AI世界的崩塌:当人类思考枯竭引发数据生态链断裂
  • new optimizers for dl
  • 在Unity中制作拥有36年历史的游戏系列新作《桃太郎电铁世界》