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

TLS加密流程

SSL/TLS加密

提示 C-S = Client To Server 客户端向服务器发送的报文 S-C = Server To Client 服务器向客户端发送的报文

1.加密流程

1.C-S Client Hello

​ 客户端支持的TLS版本+客户端随机数+支持的加密套件+会话ID

2.S-C Server Hello

​ 服务器选择个TLS版本+服务器随机数+选择个加密套件+会话ID

会话ID: 1.新建TLS连接时 客户端初始一个会话ID,发送给服务器,服务器返回也用这个ID 2.复用TLS连接时 1.可以复用 客户端使用要复用的会话ID,发送给服务器 2.不可以/不支持复用 1.服务器发送新的ID,客户端使用这个ID建连 2.服务器发送空的ID,客户端重新建立TLS连接
密码套件组成 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 1.密钥交换方法 ECDHE 2.签名认证方法 RSA 提示:ECDHE_RSA是一个合成方法,以前选择一个方法就能完成密钥交换,现在加上了使用RSA进行验证更安全 3.对称加密方法 AES_256_GCM 4.哈希校验方法 SHA384

3.S-C Certificate(数字证书)

​ 服务器发送数字证书给客户端,证书包含(服务器公钥+域名+有效期+CA签名)

数字证书 1.服务器公钥 2.域名 3.颁发者 4.有效期 5.CA对这份信息的数字签名 6.证书用途、公钥算法
CA Certificate Authority 证书颁发机构 1.根CA 2.中间CA
签名/验签 签名=哈希+私钥加密 验签=公钥加密+对比哈希 签名 证书的核心内容(公钥、域名等)用哈希算出字符串+CA的私钥加密=签名 验签 客户端也算一遍哈希字符串+CA的公钥解密=验签
为什么私钥加密,公钥能解密? 不要问,数学上的事少打听,你就当物理定律

4.C 客户端验证证书

​ 客户端步骤:
1.证书是否有效期;
2.域名是否匹配;
3.证书链是否完整;
4.用系统内置根证书公钥验证CA签名;
5.确认没有被吊销

证书链 1.根证书(Root CA) 2.中间证书(Intermediate CA) 3.服务器证书(End-Entity) 服务端发送证书时,会发送服务器证书和中间证书; 客户端收到后,首先拿服务器证书的签名,去中间证书验证,确认服务器证书的合法性;再拿中间证书的签名,验证自己系统内部的根证书公钥,确认中间证书是否为根CA授权的 客户端完成整个验证流程才会认为证书可信

5.S-C Server Hello Done

​ 服务端发送Hello完成

6.C-S Key Exchange(密钥交换)

​ 预主密钥Pre-Master Secret

1.RSA密钥交换

​ 1.客户端生成随机数:叫预主密钥Pre-Master Secret

​ 2.客户端用服务器证书公钥加密随机数,发送给服务器

​ 3.服务器用私钥解密,拿到随机数(预主密钥Pre-Master Secret)

​ 4.两端都有预主密钥Pre-Master Secret了

​ 5.两端用这个密钥+第一步的两端生成的随机数算出【master-secret(主密钥)】

​ 6.下一步根据主密钥进行加密通信

2.ECDHE密钥交换

​ 1.双方各生成【临时私钥】+【临时公钥】=【临时密钥】

​ 2.交换【临时公钥】+本地【临时私钥】计算出相同【共享密钥】

共享密钥为什么相等【简单来讲,数学公式】 双方选出临时私钥,根据椭圆曲线方程计算临时公钥,交换后可以计算出相同的密钥

​ 3.【共享密钥】+第一步的随机数=【主密钥】

PFS前向保密 就算连接复用,TLS1.3之后【共享密钥】也要重新计算
3.ECDHE_RSA密钥交换(ECDHE加密+RSA验证)

​ 1.服务器发送证书带RSA公钥(第三步)

​ 2.服务器用【RSA密钥】给【临时公钥】签名生成【临时公钥签名】

​ 3.服务器把【临时公钥】【临时公钥签名】发送给客户端

​ 4.客户端再证书的服务器【RSA公钥】验证【临时公钥签名】

​ 5.客户端验证通过后得到服务器【临时公钥】

​ 6.客户端发送自己的【临时公钥】

​ 7.剩下就是ECDHE算法的内容

7.C-S Change Cipher Spec

​ 客户端通知服务器开始密文通信

8.C-S Finished

​ 客户端把之前所有的握手消息做哈希、加密后发送,(发送加密校验)

9.S-C Change Cipher Spec

​ 服务器通知切换加密

10.S-C Finished

​ 服务器发送加密校验消息

http://www.jsqmd.com/news/497980/

相关文章:

  • openclaw(小龙虾)能够帮我实现复杂的业务系统吗
  • Comsol 探索变质量注浆理论:压力与沉积颗粒、渗透率的奇妙关联
  • 百考通AI:让毕业论文写作更高效、更省心
  • Git急救指南:误操作全攻略
  • FunASR:几行代码搞定语音识别全流程的开源工具包,GitHub已获15.2k Star!
  • 毕设程序java中天健身房 基于SpringBoot架构的健身会所智慧运营平台 Java驱动的体育场馆数字化服务系统
  • 为何抗体定制服务是解决特定研究需求的关键策略?
  • AI写论文有妙招!4款AI论文生成工具,解决毕业论文写作难题!
  • 问卷设计:从“手工匠人”到“书匠策AI智造”的华丽转身
  • 【Unity IL2CPP 项目逆向分析教程】从 Il2CppDumper 到 Ghidra
  • 解锁本科论文新姿势:Paperxie AI 初稿写作,把繁琐交给工具,把创意留给自己
  • 五星实测!2026年高效智能项目管理软件排行榜TOP10
  • 计算机毕业设计springboot新能源汽车服务管理系统 基于SpringBoot的新能源汽车全生命周期服务平台 基于SpringBoot的绿动出行汽车服务综合管理系统
  • OpenAI Codex CLI 通过 LiteLLM 代理接入指南
  • 基于stc单片机电动车多用户充电设计(有完整资料)
  • 高频正弦注入法抑制MMC驱动永磁同步电机变频中子模块电容电压波动
  • 量化交易入门
  • 大规模驱动企业 AI:Elastic 与 NVIDIA cuVS 集成
  • Python数据分析项目实战(025)——NumPy数据分析综合案例
  • 告别 Java 内卷苦海!Java 程序员转型大模型开发的 “躺赢” 密码,这波血赚
  • AI 智能体 vs AI 助手:核心差异与商业应用场景解析!
  • dll错误修复工具下载!msvcp110.dll,msvcp120.dll,msvcp140.dllregsvr32等下载!可以修复一些缺失文件 ,可以下载指定的dll文件
  • 聊聊AIC信息准则:模型选择与信号到达时间优化的利器
  • 【H5 前端开发笔记】第 15 期:CSS 元素(标签)之间的层次关系与代码注释(复盘)
  • 理论剖析:什么是 LT 水平触发模式?
  • Java入门第153课——XML 解析与应用(Dom4j)
  • pycharm安装教程
  • RK3588 Linux系统GPIO口测试方法及自动化测试脚本
  • 好写作AI:博士论文跨学科内容的AI知识补全方法——让陌生领域不再成为研究壁垒
  • spring-cloud-starter-openfeign现实中的运行逻辑