在政务和金融领域的电子签章里,经常会看到"国密 SM2"、"SM3 摘要"这样的字眼。很多人知道它们和"加密"有关,却说不清具体怎么工作。本文尽量不堆公式,用通俗的方式讲清国密 SM2/SM3 是什么、电子签章是怎么用它们签和验的,以及为什么国产化场景偏要用国密算法。
一、国密算法 SM2/SM3 是什么
"国密"是国家密码管理局发布的一系列商用密码算法的统称。在电子签章里最常用到两个:
- SM2:一种基于椭圆曲线的非对称加密算法,用于数字签名、密钥交换等。它的角色类似国际上的 RSA / ECDSA,承担"用私钥签名、用公钥验签"的工作。
- SM3:一种密码杂凑(哈希)算法,把任意长度的数据压缩成固定长度的摘要。它的角色类似国际上的 SHA-256,用来给文档生成"指纹"。
简单说,SM3 负责"给文件算指纹",SM2 负责"给指纹盖章",两者配合完成一次电子签名。
二、电子签章如何用 SM2 签、SM3 摘要
一份文件被电子签章时,背后发生的事情大致是这样:
- 算摘要:先用 SM3 对文档内容计算出一段固定长度的摘要(指纹)。文件内容只要改一个字,摘要就会完全不同。
- 签摘要:再用签章人的 SM2 私钥对这段摘要做签名运算,得到"签名值"。私钥只有签章人持有,别人无法伪造。
- 组装签章:把签名值、签章人的数字证书(含 SM2 公钥)、印章图形、签署时间等打包,嵌入到 PDF 或 OFD 文件中。
这样形成的签章,既能证明"是谁签的"(私钥对应身份),又能证明"签完没被改过"(摘要绑定内容)。
打个比方:SM3 像是给文件拍了一张高清指纹照,SM2 私钥则像在指纹照上加了一个无法仿制的封印。只要文件被改,指纹就对不上;只要不是本人私钥,封印就盖不出来。
三、验签流程
验签就是把上面的过程反过来核对一遍。用 SM2 公钥和 SM3 算法,验签方会执行以下步骤:
- 取出公钥:从签章携带的数字证书中读取签章人的 SM2 公钥。
- 重算摘要:用 SM3 对当前文档内容重新计算一次摘要。
- 验证签名值:用 SM2 公钥对签名值做验证运算,还原出签署时的摘要。
- 比对摘要:把"重算摘要"与"还原摘要"比对,一致说明文件未被篡改且签名确由对应私钥生成。
- 核查证书:进一步确认证书在有效期内、未被吊销,且证书链可追溯到受信任的根 CA。
这一连串运算由阅读器自动完成,用户只需看结果。比如智数 PDF·OFD 阅读器会直接给出签名是否有效、文档是否被篡改、证书链是否可信的结论;临时核验也可用在线电子签名校验工具快速完成。
四、与 RSA/SHA 国际算法对比
从功能定位看,国密算法与国际算法是一一对应的关系:
- SM2 ↔ RSA / ECDSA:都用于非对称签名与验签。SM2 基于椭圆曲线,在相近安全强度下密钥更短、运算效率有优势。
- SM3 ↔ SHA-256:都是输出固定长度摘要的哈希算法,用途相同。
- SM4 ↔ AES:都用于对称加密(与签名关系较小,此处仅作参照)。
对用户而言,最实际的差别在于:使用国密签章的文件,必须用支持国密算法的软件才能正确验签。如果验签工具只支持 RSA/SHA,遇到 SM2/SM3 签章就会提示无法解析或验证失败,这并不代表签章本身有问题。
五、为什么国产化要求用国密
政务、金融、能源等关键领域推行国密算法,主要出于以下考虑:
- 自主可控:密码算法是信息安全的根基,采用自主算法可降低对外部技术的依赖。
- 合规要求:商用密码相关管理规定与行业规范,要求关键信息系统使用国密算法。
- 生态配套:国产 CA、国产操作系统、OFD 版式标准与国密签章形成完整链条,便于整体国产化替代。
六、给使用者的提醒
理解了原理,日常使用时记住几条就够:
- 签署后切勿编辑或重新保存文件,否则 SM3 摘要变化会让签章失效。
- 选择同时支持国密 SM2/SM3 与国际算法的阅读器,避免遇到国密签章无法验证。
- 验签结果要结合证书有效期与证书链一起看,不能只看"签名值有效"一项。
智数 PDF·OFD 阅读器内置国密 SM2/SM3 验签能力,可在本地完成签名值校验、文档完整性校验与证书链查看,无需联网、文件不上云。了解更多 →