最流行模式通常不是最先进的

举报
码乐 发表于 2026/01/09 06:46:25 2026/01/09
【摘要】 一 简介文章标题适用大多数技术的发展。同样的传统 SM4 应用早于 GCM 在国密中的普及。SM4 标准:GB/T 32907-2016SM4 在政务 / 金融系统中的大规模部署:2010 年前后GCM 在国密体系中明确标准化:TLS 中的 SM4-GCM:RFC 8998(2021)工程级规范成熟:近几年已广泛应用、已有历史沉淀的流行模式 ECB / CBC / CFB / OFB / ...

一 简介

文章标题适用大多数技术的发展。

同样的传统 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 确保数据在传输/存储中既保密又防篡改,是现代加密通信的核心选择。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。