最流行模式通常不是最先进的
一 简介
文章标题适用大多数技术的发展。
同样的传统 SM4 应用早于 GCM 在国密中的普及。

SM4 标准:GB/T 32907-2016
SM4 在政务 / 金融系统中的大规模部署:2010 年前后
GCM 在国密体系中明确标准化:
TLS 中的 SM4-GCM:RFC 8998(2021)
工程级规范成熟:近几年
已广泛应用、已有历史沉淀的流行模式 ECB / CBC / CFB / OFB / CTR 是 SM4 早期与中期工程实践的“默认模式”,
而 GCM 属于后期引入的“现代 AEAD 模式,是“理论上最先进”。
二、流行现实:“先加密,后认证”的传统模式
国密生态的一个传统模式,很多国密系统仍然是:
SM4 + HMAC-SM3
而不是
SM4-GCM(AEAD)
原因包括:
早期标准中:
加密:SM4
摘要 / 认证:SM3
签名:SM2
是分离设计
监管、测评、等保规范:
明确写的是“加密算法 + 完整性算法”
很多规范 尚未完全 AEAD 化
工程师习惯于:
SM4-CBC + HMAC-SM3
SM4-CTR + SM3
而不是一次性使用 GCM。
三、实现与生态问题:GCM“好”,但“难”
GCM 在工程上有更高门槛
维度 传统模式 GCM
IV 管理 容错性强 Nonce 绝对不能复用
实现复杂度 低 GHASH + 计数器
硬件支持 普遍 依赖 GF(2¹²⁸)
审计难度 低 高
在国密环境中:
Nonce 复用 = 灾难性失败
很多系统:
没有全局随机数管理
没有计数器持久化
反而 CBC + MAC 更“稳妥”
- 这导致 GCM 在安全上更强,但在工程上更容易“用错”。
四、 现实“流行模式”的问题(非常关键)
- “流行”标准是:
使用频率 + 标准支持度 + 实际落地
而不是:
现代密码学推荐程度
所以:
ECB / CBC / CTR:
✔ 几乎所有库都支持
✔ 几乎所有老系统都在用
GCM:
❌ 不是所有国密库早期支持
❌ 很多存量系统没迁移
** “流行” ≠ “先进”
这是一篇工程实践导向的文章,而不是密码学最佳实践白皮书。
五、视角:SM4 ≠ AES
还有一个隐含但真实的因素:
- GCM 是“以 AES 为中心发展起来的”
AES-GCM:
有 CPU 指令(AES-NI + PCLMULQDQ)
性能极高
SM4-GCM:
硬件支持 相对较晚
很多环境中 性能优势不明显
这在实际中造成:
“既然没有 AES-GCM 那样的性能红利,
为什么一定要换?”
六、为什么后面补充了 GCM
国密前半部分:
“最流行的 5 种模式”(传统)
后半部分:
单独拉出 GCM 作为高级现代模式
这是一个典型结构:
匹配现实世界在用什么
再讲 安全世界应该往哪走
七 小结
GCM 并非不重要,而是“出现得晚、用得谨慎、迁移成本高”。在 SM4 的工程实践中,传统分组模式因历史、规范和实现生态的原因,长期占据主流,而 GCM 正在成为新一代推荐方案,但尚未完全取代传统模式。
生产环境:安全生成/存储密钥,使用安全随机源。
若需 SM4-GCM(国密),Python 可使用 tongsuopy 或 gmssl;Go 有第三方如 github.com/tjfoc/gmsm;Java 可使用 BouncyCastle 扩展。
通过以上机制,GCM 确保数据在传输/存储中既保密又防篡改,是现代加密通信的核心选择。
- 点赞
- 收藏
- 关注作者
评论(0)