1. 国密算法概述

各位同学好,我是老周。今天咱们聊聊国密算法。说实话,干网络安全这行十几年,我亲眼看着国密从「没人用」到「必须用」的转变。记得2018年我第一次在政务系统里集成SM2时,还被客户质疑「这玩意儿靠谱吗?」——现在呢?合规审查不过,项目直接黄。

国密算法不是某个单一算法,而是一整套密码体系。它包含公钥密码、对称密码、哈希算法,覆盖了加密、签名、密钥交换、完整性校验等所有核心场景。说白了,就是咱们国家自己的「密码工具箱」。

核心要点:国密算法(SM系列)是中国国家密码管理局发布的商用密码标准,具备自主知识产权,已纳入《密码法》和等保2.0合规要求。

1.1 国密算法体系介绍

国密家族主要有三个成员:SM2、SM3、SM4。我习惯把它们比作「三驾马车」——各司其职,又互相配合。

算法 类型 密钥长度 主要用途 对标国际算法
SM2 椭圆曲线公钥密码 256位 数字签名、密钥交换、加密 RSA / ECDSA
SM3 密码杂凑算法 256位输出 完整性校验、消息认证 SHA-256
SM4 分组对称密码 128位 数据加密、通信加密 AES

SM2 基于椭圆曲线密码体制(ECC),曲线参数是国密局定制的。我个人觉得它最大的优势是——同等安全强度下,密钥比RSA短得多。256位的SM2,安全等级相当于3072位的RSA。你想想看,密钥短意味着计算快、存储小,这对移动端和物联网设备特别友好。

SM3 的输出长度是256位,结构和SHA-256类似,但做了不少改进。我在项目中测试过,SM3的运算速度比SHA-256略快,大概快5%-8%。嗯,这里要注意:SM3不是SHA-256的简单复制,它的消息扩展和压缩函数都重新设计过,抗碰撞能力更强。

SM4 是分组密码,分组长度128位,密钥长度也是128位。它采用32轮非线性迭代结构。我曾经在嵌入式设备上移植SM4,发现它的S盒实现比AES更省资源——这对硬件实现是个加分项。

我的经验:做国密迁移时,别想着「一键替换」。SM2和RSA的接口差异很大,签名验签流程完全不同。我建议先做算法适配层,把业务代码和密码库解耦。

1.2 与国际算法的对比

很多同学问我:「国密到底比国际算法强在哪?」我的回答是——不是强不强的问题,是「不一样」的问题。咱们从几个维度对比一下:

  • 安全性:SM2/SM3/SM4都经过国家密码管理局的严格审查,理论上安全强度与国际主流算法相当。SM2的256位椭圆曲线,破解难度不低于RSA-3072。
  • 性能:SM2签名速度比RSA快,但验签稍慢。SM4在软件实现上略慢于AES,但硬件实现差距很小。SM3和SHA-256性能基本持平。
  • 合规性:这是最大的区别。等保2.0、密评、政务系统、金融核心系统,都明确要求使用国密。国际算法在这些场景下「不合法」。
  • 生态:国际算法生态成熟,OpenSSL、Bouncy Castle都支持。国密生态这几年发展很快,但第三方库的质量参差不齐。我踩过坑——有些开源SM2实现,曲线参数校验都没做全。

避坑指南:我曾经在一个项目中直接用了某开源库的SM2实现,结果签名验签偶尔失败。查了两天才发现——那个库没做「无效曲线攻击」防护。国密实现必须做点乘校验和密钥有效性验证,这是安全底线。

下面这张图,是我自己整理的国密与国际算法的对应关系,方便大家对照理解:

国密算法与国际算法对照体系 国密算法 SM2(公钥密码) SM3(哈希算法) SM4(对称密码) 国际算法 RSA / ECDSA SHA-256 AES 关键差异 SM2:256位ECC ≈ RSA-3072安全强度 SM3:256位输出,抗碰撞能力优于SHA-256 SM4:128位分组,32轮迭代,硬件实现更省资源

1.3 应用场景与合规要求

国密算法的应用场景,说白了就一句话:涉及国家安全、公民隐私、关键信息基础设施的地方,都得用国密。

我给大家列几个典型场景:

  • 政务系统:电子政务外网、政府OA、行政审批系统。等保2.0三级以上系统,必须使用国密。
  • 金融行业:网上银行、移动支付、证券交易。央行和银保监会都有明确要求,SM2用于数字签名,SM4用于交易数据加密。
  • 医疗健康:电子病历、医保结算、远程医疗。患者隐私数据必须用国密加密存储和传输。
  • 物联网:智能电表、车联网、工业控制。SM2的短密钥优势在这里特别明显。
  • 云计算:云上数据加密、密钥管理服务。等保三级以上的云平台,必须支持国密。

合规红线:《密码法》第二十七条明确规定——关键信息基础设施的运营者,应当使用商用密码进行保护。违反者,最高可处一百万元罚款,并追究直接责任人法律责任。

合规要求这块,我建议大家重点关注三个文件:

  1. 《中华人民共和国密码法》(2020年1月1日实施)——这是上位法,明确了商用密码的法律地位。
  2. 《信息安全技术 网络安全等级保护基本要求》(GB/T 22239-2019)——等保2.0,三级以上系统强制使用国密。
  3. 《商用密码应用安全性评估管理办法》——密评,每年至少一次,不通过要整改。

我的建议:做国密合规项目,别只盯着算法本身。密码模块的密钥生命周期管理、随机数生成、安全审计,这些才是密评专家重点查的地方。我曾经帮一个客户整改,他们SM2签名没问题,但私钥直接明文存在配置文件里——这比不用国密还危险。

最后说一句:国密不是「替代品」,而是「必需品」。尤其在当前国际形势下,自主可控的密码体系,是网络安全的基石。后面的章节,我会带大家一步步实战——从SM2密钥生成,到SM4加密通信,再到权限隔离的完整实现。咱们动手干起来。