大数跨境

国密算法 SM2、SM3、SM4 有啥区别?

国密算法 SM2、SM3、SM4 有啥区别? 网络技术干货圈
2026-11-14
0

在国产化信息系统、政务平台、金融系统以及网络安全设备中,经常能看到 SM2、SM3、SM4 这三个名字。它们都属于中国国家密码管理体系中的商用密码算法,但作用完全不同。

可以先记住一句话:

SM2 负责加解密和数字签名,SM3 负责计算数据摘要,SM4 负责对称加密。

更准确地说,SM2 是椭圆曲线公钥密码算法,SM3 是密码杂凑算法,SM4 是分组对称密码算法。三者配合起来,可以完成身份认证、数据完整性校验和数据机密性保护。

SM2:非对称加密,解决身份认证和密钥交换

SM2:非对称密码算法

公钥 + 私钥

基于椭圆曲线密码学(ECC),主要用于数据加密、数字签名和密钥交换。

先理解什么是非对称加密。

它与传统的对称加密不同,不是所有人共用一把密钥,而是有一对相互关联的密钥:

  • 公钥(Public Key):可以公开给别人。
  • 私钥(Private Key):由密钥所有者自己保管,不能随意泄露。

举个例子,张三需要向李四发送一份重要文件。

张三使用李四的公钥对文件进行加密,文件传输过程中即使被其他人截获,没有李四的私钥,也无法正常解密。

李四收到文件后,使用自己的私钥解密,就能还原原始内容。

SM2 还有一个重要用途,就是数字签名。

例如,张三发布了一份重要配置文件,可以使用自己的私钥生成数字签名,其他人拿到张三的公钥就能验证签名。

这样可以验证文件是否被篡改,以及签名是否来自对应的私钥持有者。

这里需要注意:加密和数字签名不是一回事。

加密主要解决数据机密性,数字签名主要解决身份真实性、数据完整性和不可否认性。

SM2 还支持密钥交换,通信双方可以通过协议协商出共同的会话密钥。国家密码管理局公布的 SM2 算法规范包含数字签名、密钥交换和公钥加密等部分。

SM3:密码杂凑算法,解决数据完整性校验

SM3:密码杂凑算法

单向计算

将任意长度的数据转换成固定长度的摘要,输出为 256 位,也就是 32 字节。

SM3 与 SM2、SM4 最大的区别是:它不负责加密,也不存在通过密钥解密还原原始数据的过程。

它主要用于计算数据摘要,可以把它理解成给文件生成一个数字指纹。

例如,服务器上有一个 config.yaml 配置文件,原始内容经过 SM3 计算后,会得到一串固定长度的摘要。

只要文件内容发生变化,重新计算出来的摘要通常就会完全不同。

SM3 摘要计算示意
SM3 摘要计算示意

SM3 的核心特点主要有三个:

第一,固定长度。 无论输入的是一段文字、一个配置文件,还是一个大型数据包,输出摘要都是 256 位。

第二,单向性。 理论上无法通过摘要直接还原原始数据。

第三,雪崩效应。 输入内容哪怕只改变一个比特,输出摘要也可能发生大幅变化。

在实际工作中,SM3 可以用于文件完整性校验、数字签名中的摘要计算、消息认证码等场景。

不过,有一个容易混淆的地方:单纯计算 SM3 摘要,并不能证明文件来自谁。因为攻击者如果能够修改文件,也可能同时重新计算摘要。需要身份验证时,通常还要配合 SM2 数字签名或 HMAC-SM3 等机制。

SM4:对称加密算法,解决数据机密性

SM4:分组对称密码算法

同一密钥

加密和解密使用同一把密钥,主要用于大量数据的加密保护。

前面介绍的 SM2 使用公钥和私钥,而 SM4 则采用更直接的方式:加密和解密使用同一把密钥。

例如,服务器需要保存用户的敏感数据。

系统先生成一把 SM4 密钥,使用它对数据进行加密。以后需要读取数据时,再使用对应的密钥解密。

这里最需要记住的是 SM4 的两个核心参数:

参数
数值
分组长度
128 位
密钥长度
128 位
加密轮数
32 轮
算法类型
分组对称密码

128 位相当于 16 字节。

SM4 采用分组加密结构,每次处理一个 128 位的数据块。对于超过一个分组的数据,还需要结合工作模式来处理,例如 CBC、CTR 等模式。实际应用时还需要正确处理 IV、填充以及数据完整性认证,不能只调用一个裸的加密函数就认为系统已经安全。

在企业环境中,SM4 可以应用于数据库敏感字段加密、文件加密、网络通信数据保护以及安全存储等场景。

它还有一个明显优势:在已经安全建立密钥的前提下,对称加密通常比公钥加密更适合处理大量数据。

SM2、SM3、SM4 到底有什么区别?

把前面三个算法放在一起,就比较容易理解了。

对比项目
SM2
SM3
SM4
算法类型
非对称密码
杂凑算法
对称密码
核心机制
公钥、私钥
单向计算
共享密钥
主要作用
加密、签名、密钥交换
摘要、完整性相关处理
数据加密
输出结果
密文或签名等
256 位摘要
密文
能否还原原文
加密场景可以
不可以
可以
主要解决的问题
身份认证、密钥安全
数据摘要
数据机密性

记忆起来其实很简单:

三种算法分工不同,实际应用中可以组合使用
三种算法分工不同,实际应用中可以组合使用

实际工作中,三个算法如何配合?

以企业服务器之间传输一份重要文件为例。

假设 A 服务器需要向 B 服务器发送一份包含业务数据的文件。

整个过程可以这样理解:

这个例子就是典型的混合密码应用。

SM2 解决密钥保护和身份认证问题,SM4 负责真正的大量数据加密,SM3 则参与摘要计算和签名等操作。

实际项目中,SM2 密钥加密与密钥协商可以根据具体协议选择,并不是每种通信场景都采用完全相同的流程。


对于网络工程师、Linux 运维人员以及安全设备管理员来说,不一定需要深入研究椭圆曲线的数学推导,但要知道这些算法在设备和系统中承担什么任务。

例如,部署支持国密算法的 SSL VPN、网关、防火墙或服务器时,可能会接触到国密证书、SM2 密钥对、SM3 摘要以及 SM4 加密套件。

尤其需要注意几个问题:

  1. 证书问题: 检查证书是否采用 SM2 公钥算法,证书链是否完整,信任关系是否正确。
  2. 密钥管理: 私钥需要妥善保存,不能直接写进代码或配置文件中。
  3. 算法协商: 通信双方需要支持兼容的密码套件,算法支持不代表一定能够成功建立连接。
  4. 加密模式: SM4 除了算法本身,还需要正确配置工作模式、IV、填充以及认证机制。
  5. 产品兼容性: 不能只看设备宣传支持国密,还要确认具体算法、协议和密码模块的实现是否符合要求。

这也是为什么在国产化替代、等保建设、金融信息系统以及政务信息化项目中,经常会遇到国密算法的相关要求。

建议记住这三个标准编号:

算法
密码行业标准
SM2
GM/T 0003-2012
SM3
GM/T 0004-2012
SM4
GM/T 0002-2012

对应的国家标准编号分别是 GB/T 32918-2016、GB/T 32905-2016 和 GB/T 32907-2016。

了解这三个算法,基本就掌握了国密密码体系中最常见的三个基础角色。

SM2 管密钥与身份,SM3 管摘要,SM4 管加密。 这句话值得记下来。

【声明】内容源于网络
0
0
网络技术干货圈
网络技术干货圈,旨在分享网络技术干货,帮您更快的学习网络知识,解决网络问题。同时还会分享网络技术周边技术栈,如网络安全、云计算、大数据、数据库、运维、开发等,关注我,带你成为大神!
内容 1313
粉丝 0
网络技术干货圈 网络技术干货圈,旨在分享网络技术干货,帮您更快的学习网络知识,解决网络问题。同时还会分享网络技术周边技术栈,如网络安全、云计算、大数据、数据库、运维、开发等,关注我,带你成为大神!
总阅读5.1k
粉丝0
内容1.3k