国密算法与国密 TLS 系列
国密不只是”换一套算法”。SM3 的消息扩展和 SHA-256 有什么区别?SM4 的 S 盒设计和 AES 走了不同路线意味着什么?SM2 的曲线参数和 NIST P-256 谁更可信?国密 TLS 握手和标准 TLS 1.3 差在哪几个字节?本系列从密码学原理出发,逐篇对比国密与国际主流方案的设计差异、性能表现和工程落地。
为什么要做对比? 纯讲国密标准太枯燥,纯讲国际标准又不解决合规问题。对着来看,你既能理解设计取舍,又能在项目里做出有依据的选型。最后两篇还覆盖了生态工具链和后量子迁移——这是很多团队即将面对的现实问题。
适合谁看
本系列假设你有基础的密码学概念(对称加密、非对称加密、哈希、数字签名、TLS 握手流程)。如果你的项目需要通过国密合规检测,或者你想搞清楚国密方案在技术层面到底怎么样,这个系列就是为你写的。
先修知识自测
开始之前,检验一下你的密码学基础:
- 你能解释对称加密和非对称加密的性能差距吗?(提示:通常差 2-3 个数量级,这就是为什么 TLS 用非对称加密交换密钥、用对称加密传数据)
- 你知道 AES 的 S 盒是怎么来的吗?(提示:有限域上的乘法逆元 + 仿射变换,不是随机选的)
- 你能说出 TLS 1.3 握手的 RTT 次数吗?(提示:1-RTT 全握手,0-RTT 恢复。和 TLS 1.2 的 2-RTT 对比)
- 你理解椭圆曲线密码学中”离散对数问题”的含义吗?(提示:给定 Q = kG,已知 Q 和 G 求 k 在计算上不可行)
- 你知道”等保”是什么,以及国密在等保中的角色吗?(提示:等保 2.0 三级及以上要求使用国密算法)
如果前三个问题答不上来,建议先补一下 TLS 1.3 深度拆解 和基础密码学知识。如果第五个答不上来没关系——第五篇(国密生态)会详细讲合规要求。
推荐阅读顺序: - 算法原理对比 → 01(SM3 vs SHA-256)→ 02(SM4 vs AES)→ 03(SM2 vs ECDSA) - 协议与工程 → 04(国密 TLS)→ 05(生态全景)→ 06(PQC 迁移) - 合规落地 → 05(GmSSL / 铜锁 / 硬件密码机)→ 04(国密 TLS 握手)→ 06(迁移规划) - 完整路径 → 按顺序 01-06,从算法到协议到工程一路打通
目录
算法篇:逐一对比
- SM3 vs
SHA-256:两个哈希函数的设计哲学与性能实测 ⏱ ~25 分钟 |
难度: ★★★☆☆ (密码学工程师 / 安全工程师)
- 消息扩展、压缩函数的结构差异
- 多平台性能基准测试
- SM4 vs
AES:分组密码的两条路线 ⏱ ~35 分钟 | 难度: ★★★☆☆
(密码学工程师 / 安全工程师)
- S 盒设计、轮函数结构对比
- AES-NI vs SM4 软件实现的性能差距
- SM2 vs
ECDSA/X25519:椭圆曲线的国产方案到底怎么样 ⏱ ~40 分钟 |
难度: ★★★★☆ (密码学工程师 / 后端开发)
- 曲线参数选择、签名算法流程对比
- 密钥交换与数字信封
协议篇:国密 TLS
- 国密 TLS(RFC 8998)vs
标准 TLS 1.3:握手报文逐字节对比 ⏱ ~30 分钟 | 难度:
★★★★☆ (安全工程师 / 后端开发)
- CipherSuite、扩展字段、证书链差异
- Wireshark 抓包实战解析
工程篇:生态与迁移
- 国密生态全景:GmSSL、铜锁、硬件密码机与合规落地
⏱ ~30 分钟 | 难度: ★★☆☆☆ (安全工程师 / 技术管理者)
- 开源库选型:GmSSL vs 铜锁(Tongsuo)vs OpenSSL 分支
- 硬件密码机对接与等保合规要点
- PQC
迁移工程指南:不是把 RSA 换掉就完了——国密怎么办 ⏱ ~35
分钟 | 难度: ★★★★★ (密码学工程师 / 架构师)
- NIST PQC 标准与国密的交汇点
- 混合证书、协议兼容性与分阶段迁移路线
配套代码
simple_gmsm — 纯 C 实现的国密算法库,覆盖 SM2、SM3、SM4、SM9、ZUC 以及 TLCP(国密 SSL)握手全流程。代码以可读性为优先(无硬件加速优化),适合对照文章逐行理解算法细节。嵌入式场景可直接集成,桌面/服务端场景建议使用 GmSSL。
| 模块 | 源文件 | 对应文章 |
|---|---|---|
| SM3 哈希 | sm3.c / hmac_sm3.c |
01 — SM3 vs SHA-256 |
| SM4 分组密码 | sm4.c / sm4_modes.c |
02 — SM4 vs AES |
| SM2 椭圆曲线 | sm2.c / p256.c |
03 — SM2 vs ECDSA/X25519 |
| TLCP 握手 | tlcp_handshake.c /
tlcp_record.c / tlcp_cert.c |
04 — 国密 TLS |
| SM9 标识密码 | sm9.c |
— |
| ZUC 序列密码 | zuc.c |
— |
相关阅读
密码学基础 - TLS 1.3 深度拆解 — 标准 TLS 1.3 的完整握手流程,与 04 对照阅读 - CBC 模式攻击 — 分组密码工作模式的安全陷阱 - 密码工程常见错误 — 工程实现中的典型踩坑
前沿方向 - 后量子密码(PQC) — PQC 算法本体的介绍,与 06 迁移指南搭配阅读 - 全同态加密(FHE) — 密码学的另一个前沿方向 - OPAQUE / OPRF — 密码认证协议,国密生态的潜在扩展点