商用密码应用安全性评估—能力验证考试考点总结

admin 2026-06-13 04:35:30 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文系统总结商用密码应用安全性评估能力验证考试核心考点,重点解析SM4分组密码算法的七种工作模式特征、推断方法及安全风险(如CTR模式计数器重叠攻击、CBC模式PaddingOracle漏洞),详细说明SM3_HMAC正确实现方式与常见错误,强调密码算法在完整性保护中的规范应用。文档涵盖密码产品接口、密钥管理、量化评估等实操要点,为密码安全测评提供明确技术指导。 综合评分: 87 文章分类: 技术标准,解决方案,安全培训,应用安全,数据安全


cover_image

商用密码应用安全性评估 — 能力验证考试考点总结

原创

利刃信安 利刃信安

利刃信安

2026年6月8日 04:04 北京

在小说阅读器读本章

去阅读

商用密码应用安全性评估 — 能力验证考试考点总结

覆盖范围:密码算法、密钥管理、密码产品接口、网络和通信安全、身份鉴别、量化评估、安全风险分析、测评实施、管理测评、物理和环境安全、设备和计算安全。


一、SM4 分组密码算法 — 七种工作模式

1.1 各模式特征对比

| 工作模式 | 确定性加密 | 明文扰动扩散 | 错误扩散 | 填充要求 | 典型考点 | | — | — | — | — | — | — | | ECB | 是 | 仅影响当前分组 | 仅当前分组 | 需要 | 密文重复→数据模式泄露 | | CBC | 否 | 当前及后续所有分组 | 当前分组+下一分组对应位 | 需要 | IV固定、Padding Oracle | | CFB | 否 | 当前及后续若干分组 | 一定长度后恢复 | 可选 | 密钥流与密文相关 | | OFB | 否 | 仅当前比特位 | 仅当前比特 | 可选 | 密钥流独立,点对点映射 | | CTR | 否 | 仅当前比特位 | 仅当前比特 | 不需要 | 计数器重叠→密钥流重用 | | BC | 否 | 类似CBC | 类似CBC | 需要 | 考察较少 | | OFBNLF | 否 | OFB非线性变体 | 类似OFB | 需要 | 考察较少 |

1.2 工作模式推断方法(核心考点)

步骤一:看密文长度是否分组整数倍(16字节)

  • • 不是整数倍 → 排除 ECB、CBC、BC、OFBNLF(这些都需要填充),缩小到 CTR、CFB、OFB
  • • 是整数倍 → 所有模式都可能,需进一步分析

步骤二:看密文是否有重复分组

  • • 有重复密文分组 → 大概率 ECB(相同明文→相同密文)
  • • 无重复 → 排除 ECB

步骤三:看明文/密文对比(对比差异扩散范围)

  • • 修改明文中某字节,观察密文变化范围:

  • • 仅对应位置变化 → OFB 或 CTR(流模式,点对点映射)

  • • 当前整个分组变化 → ECB

  • • 当前及后续分组变化 → CBC 或 CFB(链式反馈)

步骤四:看明文长度和密文长度关系

  • • 明文长度 = 密文长度,且非16的整数倍 → CTR 或 OFB 或 CFB(可选不填充)
  • • 密文长度 > 明文长度,且为16的整数倍 → 需要填充的模式(ECB/CBC/BC/OFBNLF)
  • • 密文比明文多7字节(5593→5600)→ 暗示填充了7字节 PKCS#7

步骤五:看相同明文块的密文是否相同

  • • 明文中有重复的16字节块,对应密文块也重复 → ECB
  • • 明文中有重复的16字节块,对应密文块各不相同 → 非ECB(CBC/CTR等)

1.3 CTR 模式计数器重叠攻击(高频考点)

漏洞原理: 多个条目使用连续的 entryIndex 作为计数器初值,导致不同条目的计数器序列重叠,产生相同的密钥流。

攻击方法:

C1 = P1 XOR KS(密钥流)
C2 = P2 XOR KS(相同密钥流)
→ C1 XOR C2 = P1 XOR P2
→ 已知 P1 可推导 P2

关键: CTR 模式的安全前提是同一密钥下计数器永不重复。

CTR模式下密文伪造(高频考点): 在CTR/OFB等流式模式下,密钥流与明文无关,可直接修改密文:

new_ct[i] = ct[i] XOR pt[i] XOR new_pt[i]

只需知道目标字段在明文中的偏移量,即可伪造该字段的密文值,其余字段保持不变。

1.4 CBC 模式核心考点

  • • IV 必须随机且不可预测,每次加密生成新 IV
  • • IV 固定 → 相同明文头部分组产生相同密文
  • • Padding Oracle 攻击:解密方向对端返回明确的填充错误信息(如”Padding error detected!”),攻击者可利用错误响应逐字节推断明文
  • • 防御:Encrypt-then-MAC,先验证 MAC 再解密,不暴露填充校验结果;对填充错误与MAC错误返回相同的通用错误信息

1.5 SM4-ECB 模式风险判定(FAQ)

  • • ECB 模式无法隐藏数据模式,相同明文分组→相同密文分组
  • • 不能抵抗分组的重放、嵌入、删除等攻击
  • • 超过一个分组长度的明文一般不建议使用 ECB
  • • 若输入分组绝不重复且可单独/随机访问,可酌情考虑允许,但需采取风险缓解措施

二、SM3 密码杂凑算法 / SM3_HMAC

2.1 基本参数

  • • SM3 输出长度:256 比特(32 字节)
  • • 内部压缩函数分组大小:512 比特(64 字节)
  • • SM3_HMAC 输入数据长度上限:2^64 – 512 比特

2.2 HMAC 正确实现方式

关键区分:SDF_HashInit vs SDF_HMACInit

| 接口 | 用途 | 说明 | | — | — | — | | SDF_HashInit | 普通杂凑/三步式杂凑第一步 | 不可用于 HMAC | | SDF_HMACInit | HMAC 专用初始化 | 传入密钥句柄,内部完成 ipad/opad 处理 |

错误做法: 手动调用 SDF_HashInit 搭配 ipad/opad 异或来模拟 HMAC 流程 → 不符合 GM/T 0018 规范,且容易出错

正确做法: 直接调用 SDF_HMACInit(hSessionHandle, hKeyHandle, SGD_SM3)。SDF_HMACInit 可传入的算法标识符为 SGD_SM3(0x00000001)或 SGD_SHA256(0x00000004)。

2.3 HMAC 截断风险

  • • HMAC 截断输出(如截取前 2 字节,即 memcpy(hmac, full_hmac, 2))→ 安全性降为 2^16 暴力破解,完整性保护失效
  • • 生日攻击仅需 2^8 次尝试即可伪造

2.4 仅使用 SM3/SHA256 做完整性保护(无密钥)

  • • 仅使用 SM3(或 SHA256)做数据存储完整性保护 → 判定为不符合
  • • 原因:入侵者篡改数据后,可重新计算杂凑值并覆盖,无法检测篡改
  • • 应使用 HMAC-SM3、基于 SM4 的 MAC(CBC-MAC/CMAC)或数字签名方式

三、SM2 椭圆曲线公钥密码算法


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:利刃信安 利刃信安 利刃信安《商用密码应用安全性评估 — 能力验证考试考点总结》

评论:0   参与:  0