TLS 1.3 Post-Handshake 消息全面解析

TLS 1.3 在握手效率和安全机制上做了重大改进。除了优化的握手流程外,协议还定义了一系列 Post-Handshake 消息,在握手完成后处理会话恢复、密钥更新等重要功能。理解这些消息对于深入掌握 TLS 1.3 至关重要。 什么是 Post-Handshake 消息? 在 TLS 1.3 中,握手完成后双方进入加密通信阶段。此时协议定义了一组特殊消息,用于处理握手后的事务: NewSessionTicket:发送会话票据,用于后续会话恢复 KeyUpdate:更新加密密钥,保持前向安全性 CertificateRequest:请求客户端证书(握手后认证) Certificate:提供客户端证书 CertificateVerify:验证客户端证书 这些消息与主握手流程独立,通过独立的加密通道传输。 NewSessionTicket(会话票据) 原理 NewSessionTicket 是 TLS 1.3 会话恢复机制的核心。当客户端和服务器完成完整握手后,服务器可以发送一个加密的会话票据给客户端。下次连接时,客户端可以使用这个票据恢复会话,无需完整握手,从而实现 1-RTT 甚至 0-RTT 的快速连接。 工作流程 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 完整握手: 客户端 服务器 | | |--------------- ClientHello ----------------->| | (附 session_id / session_ticket) | |<-------------- ServerHello ------------------| |<-------------- Certificate ------------------| |<-------------- CertificateVerify ------------| |<---------------- Finished -------------------| |--------------- Finished -------------------->| | | |================ 加密通道 ====================| | | |<------------- NewSessionTicket -------------| | | 快速恢复(0-RTT): 客户端 服务器 | | |-------- ClientHello + EarlyData + Ticket -->| |<-------- ServerHello + EarlyData ------------| |<---------------- Finished -------------------| |--------------- Finished -------------------->| | | 实际验证 使用 OpenSSL 查看 TLS 1....

June 7, 2026 · 3 min · 黑豆子

OpenSSL SM4 加密算法使用指南

SM4 是中国国家密码管理局发布的分组密码算法,于 2006 年正式发布为行业标准。2012 年被采纳为国家标准(GB/T 32907-2016),2021 年成为 ISO/IEC 标准(ISO/IEC 18033-3:2010/Amd.1:2021)。 作为国密算法的重要组成部分,SM4 被广泛应用于政府、金融、电信等对数据安全有高要求的领域。本文介绍如何在 OpenSSL 中使用 SM4 算法进行数据加密。 环境要求 OpenSSL 3.0 及以上版本原生支持 SM4 算法,无需额外安装 GmSSL。 1 openssl version 输出: 1 OpenSSL 3.0.19 27 Jan 2026 (Library: OpenSSL 3.0.19) 查看支持的 SM4 模式: 1 openssl list -cipher-algorithms | grep SM4 输出: 1 2 3 4 5 6 sm4 => SM4-CBC SM4-CBC SM4-CFB SM4-CTR SM4-ECB SM4-OFB 支持的模式包括:CBC、CTR、CFB、OFB、ECB。 ⚠️ 注意:不推荐使用 ECB 模式,因为它会产生相同的密文块,容易泄露数据模式。 SM4-CBC 加密解密 SM4-CBC 是最常用的模式,结合 PKCS#5/PKCS#7 填充实现安全加密。...

June 6, 2026 · 3 min · 黑豆子

国密 SM2 证书详解:从生成到部署

国密 SM2 算法是中国国家密码管理局发布的椭圆曲线公钥密码算法,相比传统的 RSA 和国际通用 ECDSA 曲线,SM2 在国内有着特殊的应用场景和政策要求。本文详细介绍 SM2 证书的生成、验证和部署。 SM2 证书与 RSA/ECDSA 证书的区别 算法基础 特性 RSA ECDSA (secp256r1) SM2 密钥长度 2048/4096 bit 256 bit 256 bit 曲线类型 离散对数 椭圆曲线 椭圆曲线 (SM2 曲线) 签名算法 RSA + SHA-256 ECDSA + SHA-256 SM2 + SM3 国际认可 广泛认可 广泛认可 中国国密标准 性能 较慢 较快 与 secp256r1 相当 关键差异 签名算法:SM2 证书使用 SM3 哈希算法进行签名,而不是 SHA-256 曲线参数:SM2 使用特定的椭圆曲线参数(国家密码管理局指定) 兼容性:国际浏览器和设备默认不支持 SM2 证书,需要国密浏览器或支持国密的组件 生成 SM2 证书 环境要求 确保系统安装的是 OpenSSL 3....

June 4, 2026 · 3 min · 黑豆子

TLS 1.3 密钥更新机制解析

TLS 1.3 作为最新版本的传输层安全协议,在握手效率和安全性方面做了重大改进。其中,密钥更新(Key Update)机制是一个重要的安全特性,允许在不重新握手的情况下更新加密密钥,从而延长加密会话的生命周期,同时保持前向安全性。 什么是密钥更新机制? 密钥更新(Key Update)是 TLS 1.3 协议定义的 POST-HANDSHAKE 消息之一。在 TLS 1.3 中,握手完成后的加密通信使用两类密钥: 应用流量密钥(Application Traffic Keys):用于加密实际的应用数据 握手流量密钥(Handshake Traffic Keys):仅用于加密握手消息 传统的 TLS 1.2 想要更新密钥必须重新握手,这会增加延迟。TLS 1.3 引入了 KeyUpdate 消息,允许双方在不中断连接的情况下动态更新应用流量密钥。 为什么需要密钥更新? 1. 限制单密钥加密数据量 现代加密算法在加密大量数据后,理论上存在被破解的风险(尽管概率极低)。定期更新密钥可以: 减少每个密钥加密的数据量 降低潜在的安全风险 满足某些合规要求 2. 保持前向安全性 TLS 1.3 的密钥派生使用 HKDF,从原始握手密钥派生出应用流量密钥。即使某个会话密钥被破解,之前的通信仍然是安全的。密钥更新机制让这一特性在长会话中持续生效。 3. 减少握手开销 相比完整的重新握手,KeyUpdate 消息只包含几个字节,延迟几乎可以忽略不计。 KeyUpdate 消息格式 TLS 1.3 的 KeyUpdate 消息结构简洁高效: 1 2 3 4 5 6 7 8 9 struct { KeyUpdateRequest request; } KeyUpdate; enum { update_not_requested(0), update_requested(1), (255) } KeyUpdateRequest; update_not_requested(0):我已更新密钥,但不希望对方也更新 update_requested(1):我已更新密钥,并请求对方也更新 工作流程详解 密钥更新的完整流程如下:...

May 6, 2026 · 2 min · 黑豆子

后量子密码学与 NIST PQC 标准化

量子计算的快速发展对现代密码学构成了前所未有的威胁。当前广泛使用的 RSA、ECDSA 等公钥密码算法依赖于大整数分解或离散对数问题的计算难度,但量子计算机的 Shor 算法可以在多项式时间内解决这些问题。这意味着当大规模量子计算机成熟时,现有的 SSL/TLS 证书、SSH 密钥、数字签名都将面临被破解的风险。 什么是后量子密码学 后量子密码学(Post-Quantum Cryptography,PQC)是指能够在经典计算机上运行,但能够抵御量子计算机攻击的密码学算法。这些算法不依赖量子力学原理,而是基于量子计算机也难以高效求解的数学问题,如格密码(Lattice-Based)、编码密码(Code-Based)、多变量密码(Multivariate)等。 与量子密钥分发(QKD)不同,PQC 是软件层面的解决方案,可以在现有硬件和网络上部署,无需专门的量子通信设备。 NIST PQC 标准化进程 美国国家标准与技术研究院(NIST)自 2016 年启动后量子密码学标准化项目,经过多轮筛选,于 2024 年 8 月发布了首批三个最终标准。 首批发布的三个标准 标准名称 类型 底层技术 用途 ML-KEM 密钥封装机制 模块格(Module-Lattice) 密钥交换、TLS 握手 ML-DSA 数字签名 模块格(Module-Lattice) 证书签名、代码签名 SLH-DSA 数字签名 哈希(Hash-Based) 替代签名方案 ML-KEM(原 Kyber)是基于格理论的密钥封装机制,将取代传统的 Diffie-Hellman 密钥交换,用于 TLS 1.3 握手阶段的密钥协商。 ML-DSA(原 Dilithium)是基于格理论的数字签名算法,将作为主要的签名方案,用于 SSL/TLS 证书、代码签名等场景。 SLH-DSA(原 SPHINCS+)是基于哈希的签名算法,作为备份方案,安全性基于哈希函数的抗碰撞性。 正在标准化的候选算法 除了首批三个标准,NIST 还在评估以下算法: Falcon:基于格的高效签名算法,签名更短,适用于带宽受限场景 HQC:基于编码的密钥封装机制,提供额外的安全保障 实际影响与迁移时间线 对 TLS/SSL 的影响 当前的 TLS 协议使用 RSA 或 ECDSA 进行身份验证,使用 ECDHE 进行密钥交换。迁移到 PQC 后:...

April 29, 2026 · 2 min · 黑豆子

TLS 1.3 密钥派生:HKDF 原理与实战

深入解析 TLS 1.3 密钥派生机制,HKDF 工作原理以及在 OpenSSL 中的实际应用。

April 27, 2026 · 2 min · 黑豆子

TLS 密码套件命名规范解析

在配置 TLS/SSL 时,我们经常看到类似 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 这样的密码套件名称。对于初学者来说,这串字符可能令人困惑。本文将详细解析 TLS 密码套件的命名规范,帮助你理解每个部分的含义。 什么是密码套件 密码套件(Cipher Suite)是 TLS 协议的核心组件,它定义了一整套加密算法组合,包括: 密钥交换算法 身份认证算法 加密算法 哈希算法 一个密码套件决定了 TLS 握手期间如何协商安全参数,以及如何加密传输的数据。 TLS 1.2 密码套件命名格式 TLS 1.2 采用以下命名格式: 1 TLS_密钥交换算法_认证算法_加密算法_哈希算法 以 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 为例: 组成部分 含义 TLS 协议名称 ECDHE 密钥交换算法(Elliptic Curve Diffie-Hellman Ephemeral) RSA 身份认证算法 AES_256_GCM 加密算法(AES,256位,GCM模式) SHA384 哈希算法 各组件详解 密钥交换算法(Key Exchange) ECDHE:椭圆曲线临时 Diffie-Hellman(推荐,前向安全) DHE:临时 Diffie-Hellman(传统但性能较低) RSA:基于 RSA 的密钥交换(已被废弃,不提供前向安全) ECDH:椭圆曲线 Diffie-Hellman(静态) 认证算法(Authentication) RSA:RSA 公钥证书 ECDSA:椭圆曲线数字签名算法 DSS:数字签名标准(较老) 加密算法(Cipher) AES_256_GCM:AES 加密,256位密钥,GCM 模式(推荐) CHACHA20-POLY1305:Google 开发的流密码(移动设备友好) AES_128_CCM:AES 加密,128位密钥,CCM 模式 ARIA256-GCM:韩国标准加密算法 哈希算法(MAC/Hash)...

April 20, 2026 · 2 min · 黑豆子

AES 分组加密模式详解:ECB、CBC、CTR、GCM

深入解析 AES 分组加密的四种工作模式:ECB、CBC、CTR、GCM,理解各模式的原理、安全性和适用场景。

April 17, 2026 · 3 min · 黑豆子

ECDSA 数字签名算法详解

ECDSA(Elliptic Curve Digital Signature Algorithm)是基于椭圆曲线密码学的数字签名算法,广泛应用于比特币、区块链以及 TLS 证书中。本文介绍其原理及 OpenSSL 命令行操作。 什么是 ECDSA? ECDSA 是 DSA(Digital Signature Algorithm)的椭圆曲线版本,利用椭圆曲线离散对数问题的计算难度来保证签名安全性。相比传统 RSA,ECDSA 在相同安全强度下密钥更短,运算更快。 常见曲线 曲线 位数 应用场景 prime256v1 (P-256) 256 位 主流 TLS 证书、Web 应用 secp384r1 (P-384) 384 位 高安全场景、政府、金融 secp521r1 (P-521) 521 位 极高安全需求 生成 ECDSA 密钥对 生成私钥 1 2 3 openssl genpkey -algorithm EC \ -pkeyopt ec_paramgen_curve:prime256v1 \ -out ecdsa_private.pem 导出公钥 1 openssl pkey -in ecdsa_private.pem -pubout -out ecdsa_public.pem 查看密钥详情 1 openssl pkey -in ecdsa_private....

April 15, 2026 · 2 min · 黑豆子

RSA 填充方案:OAEP 与 PSS 安全实践

详解 RSA 加密和签名中的填充方案,解释为什么 PKCS#1 v1.5 不安全,以及如何使用 OAEP 和 PSS 提升安全性。

April 14, 2026 · 3 min · 黑豆子