3. 密码算法与协议基础

密码应用安全评估的第一步,不是直接看系统“有没有加密”,而是先识别它到底用了什么算法、算法被放在什么位置、承担什么安全目标。算法识别错了,后面的合规判定、风险定级和整改建议都会偏离方向。本节围绕国产商用密码算法 SM2、SM3、SM4、SM9 与国际主流算法 RSA、ECDSA、SHA-2、AES 的对应关系,梳理评估中“看什么、怎么判、判到什么程度”的要点。

一、四类国产算法各自解决什么问题

SM2 是基于椭圆曲线密码的公钥算法,包含数字签名、密钥交换和公钥加密三类用途,对应国际算法中的 ECDSA(签名)、ECDH(密钥交换)和 ECIES(加密)。评估时要特别注意:同一个 SM2 密钥对在不同用途下的使用约束不同,签名密钥不应被复用于加密或密钥交换。SM3 是密码杂凑算法,输出 256 位摘要,对应 SHA-256,用于完整性校验、数字签名中的消息摘要和口令派生等场景。SM4 是分组密码算法,分组长度和密钥长度均为 128 位,对应 AES-128,主要用于数据加解密。SM9 是基于标识的密码算法,以用户标识(如邮箱、手机号)作为公钥,省去证书体系,适用于标识认证、密钥封装和签名等场景,国际上没有完全对等的标准化算法,评估中要单独识别其密钥管理方式。

国产算法与国际算法对应关系及评估识别要点 安全目标 国产算法 国际对应 评估识别要点 数字签名 身份认证·不可否认 SM2 签名/验签 ECDSA P-256等曲线 曲线参数是否合规 签名密钥是否专用 摘要是否用SM3 完整性·摘要 杂凑·口令派生 SM3 256位输出 SHA-256 SHA-2家族 是否用MD5/SHA-1 摘要长度是否足够 是否用于签名前摘要 数据加解密 机密性保护 SM4 128位分组/密钥 AES-128 分组密码 工作模式是否安全 IV/计数器是否随机 密钥是否硬编码 标识认证 免证书·密钥封装 SM9 标识即公钥 无完全对等 IBC类方案 主密钥是否安全 标识是否可枚举 密钥生成中心是否可信 ⚠ 评估判定红线: ① 使用MD5/SHA-1做签名摘要 → 不合规;② RSA密钥长度<2048位 → 不合规;③ SM4使用ECB模式 → 需重点评估;④ 密钥硬编码或明文存储 → 高风险。

二、评估中的算法识别方法

识别算法不能只看文档声明,要从多个层面交叉验证。第一层是配置与代码层:查看 TLS/SSL 配置中的 cipher suite、数据库加密配置、密钥库类型(如 JKS、PKCS#12 或国密 SKF)、代码中调用的密码库接口。例如 Java 中 Cipher.getInstance("SM4/CBC/PKCS5Padding") 明确使用 SM4,而 "AES/GCM/NoPadding" 则使用 AES-GCM。第二层是协议与报文层:抓取握手报文,观察签名算法标识、证书公钥算法 OID。SM2 的 OID 为 1.2.156.10197.1.301,SM3 为 1.2.156.10197.1.401,SM4 为 1.2.156.10197.1.104,这些 OID 是判定国产算法真实使用的硬证据。第三层是密钥与证书层:查看证书签名算法、密钥用法扩展、密钥长度。若证书公钥算法为 id-ecPublicKey 且曲线 OID 为 sm2p256v1,则可判定为 SM2。

三、典型判定要点与常见误区

评估中常见的误区包括:把“支持国密”等同于“默认使用国密”。很多系统同时支持 SM2 和 RSA,但实际协商结果可能仍为 RSA,必须看实际生效的算法。另一个误区是只看算法名称不看参数。SM2 签名若未使用规定的用户标识默认值或未做 Z 值计算,验签可能失败或存在兼容性问题。SM4 若使用 ECB 模式,相同明文块会产生相同密文块,泄露数据模式,评估中应判定为不安全配置。SM3 用于口令存储时,若未加盐或迭代次数过低,仍存在彩虹表攻击风险。

判定红线:MD5、SHA-1 已不具备抗碰撞能力,不得用于数字签名和完整性保护;RSA 密钥长度低于 2048 位、SM2 曲线参数非标准、SM4 使用 ECB 模式、密钥硬编码或明文存储,均应判定为高风险或不合规项。

四、国际算法对比中的等效强度判断

在评估报告中,常需要给出“国产算法是否达到同等安全强度”的结论。可按以下对应关系判断:SM2 与 ECDSA P-256 安全强度相当(约 128 位),SM3 与 SHA-256 相当(256 位输出,128 位抗碰撞强度),SM4 与 AES-128 相当(128 位密钥)。SM9 的安全强度取决于底层椭圆曲线和双线性对参数,通常按 128 位安全强度设计。评估时不能简单说“SM4 比 AES 弱”,而应说明在相同密钥长度和工作模式下,两者抗穷举攻击强度一致,差异主要在实现成熟度、侧信道防护和生态支持上。

五、评估检查清单示例

检查项 合规要求 判定方法 常见问题
签名算法 SM2 或 ECDSA P-256 及以上 查看证书 OID、握手报文 仍使用 RSA-1024 或 SHA-1
摘要算法 SM3 或 SHA-256 及以上 检查签名前摘要、HMAC 配置 MD5 用于完整性校验
对称加密 SM4 或 AES-128 及以上,CBC/GCM 模式 查看 cipher suite、代码接口 ECB 模式、固定 IV
密钥管理 密钥不出密码模块,定期更换 检查密钥库、HSM/SKF 调用 硬编码、明文配置文件
协议版本 TLS 1.2 及以上,优先国密 TLS 抓包查看 ClientHello/ServerHello SSLv3、TLS 1.0 仍启用

实际评估时,建议先建立“算法清单—使用位置—安全目标—合规判定”四列台账,逐项核对。对于同时存在国密和国际算法的系统,要分别记录协商优先级和实际生效结果,避免被“支持国密”的声明误导。只有把算法识别、参数核查和实际生效验证三者结合,才能给出经得起复核的评估结论。