GM/T 0029-2014 密码模块安全检测实战:密评合规的材料准备与常见踩坑

实践教程 · 2026-08-02 · 68 阅读

1. 引言:密码模块检测为何是密评的"硬骨头"?

在密评(GB/T 39786-2021 密码应用评估)中,密码模块的安全检测是最容易翻车、整改成本最高的环节之一。GM/T 0029-2014《密码模块安全检测要求》与 GM/T 0028-2014《密码模块安全技术要求》配套,构成了密码模块检测的完整框架。

但实际测评中,大量企业在这个环节卡壳:要么不清楚自己的系统里到底哪些组件属于"密码模块",要么准备了材料却发现不符合检测机构的格式要求,要么对安全等级划分理解有误导致材料全部返工。

本文基于实战经验,帮你把 GM/T 0029-2014 的检测流程、材料清单、常见坑点一次性梳理清楚。

2. GM/T 0029-2014 标准框架

2.1 标准定位

GM/T 0029-2014 规定了密码模块安全检测的方法、流程和判定准则,与 GM/T 0028-2014 配套使用:

标准定位核心内容
GM/T 0028-2014技术要求密码模块应满足的安全要求(11个安全域、4个安全等级)
GM/T 0029-2014检测要求如何验证密码模块是否满足 GM/T 0028-2014 的要求

2.2 安全等级划分

GM/T 0028-2014 将密码模块分为 4 个安全等级(Security Level),等级越高要求越严格:

等级典型场景核心特征
SL1低成本、低风险环境最低要求,无需物理安全机制
SL2一般商业环境增加物理防拆封(tamper-evident)、基于角色的身份认证
SL3中高风险环境物理防篡改(tamper-resistant)、基于身份的身份认证、关键物理安全参数(CSP)的零知识化
SL4极高风险环境最高物理安全等级,模块在物理攻击下仍能保护 CSP
密评常见等级:大多数信息系统密码应用要求达到 SL2 或 SL3。

2.3 11 个安全域

GM/T 0028-2014/GM/T 0029-2014 将安全要求划分为 11 个安全域(Security Domains):

  • 密码模块规格:模块的类型、边界、批准的算法列表
  • 密码模块接口:数据输入/输出、控制输入/输出、状态输出
  • 角色、服务与身份认证:角色定义、服务提供、身份认证机制
  • 软件/固件安全:软件/固件的安全运行与更新
  • 操作环境:操作系统的安全性要求
  • 物理安全:物理保护/防篡改机制
  • 非入侵式安全:侧信道攻击防护(如功耗分析、电磁分析)
  • 敏感安全参数管理:密钥等 CSP 的生成、输入、输出、存储
  • 自检:上电自检、条件自检
  • 寿命保证:模块的设计、开发、测试、交付、使用、废弃
  • 其他:对旁路攻击的缓解措施

3. 检测流程实战拆解

3.1 检测前的自查清单

在送检或迎评前,先对照以下清单自查:

TEXT
□ 模块边界是否明确(硬件/软件/固件的物理和逻辑边界)
□ 模块类型是否明确(硬件/软件/固件/混合)
□ 安全等级目标是否确定(SL1/SL2/SL3/SL4)
□ 批准的算法列表是否完整(SM2/SM3/SM4 等)
□ 接口定义是否清晰(数据/控制/状态/电源接口)
□ 角色定义是否完整(用户/管理员/维护员等)
□ 身份认证机制是否满足等级要求
□ CSP 生命周期管理是否覆盖(生成/输入/输出/存储/销毁)
□ 物理安全是否满足等级要求
□ 自检机制是否完备(上电自检/条件自检)
□ 旁路攻击缓解措施是否到位

3.2 申请材料清单

GM/T 0029-2014 要求提交的检测材料通常包括:

基本文档:

  • 密码模块规格说明书(模块描述、边界、算法列表)
  • 接口规范(数据接口、控制接口、状态接口的详细说明)
  • 角色与服务文档(每个角色可访问的服务列表)
  • 敏感安全参数(CSP)管理文档
安全相关:
  • 物理安全设计文档(外壳/涂层/封条等物理保护机制)
  • 侧信道攻击防护设计文档
  • 自检机制说明(自检项目、失败后的处理策略)
  • 寿命保证文档(开发/测试/交付/维护流程)
测试相关:
  • 算法正确性验证报告(每个算法的已知答案测试)
  • 自检功能测试报告
  • 物理安全测试报告
  • 侧信道测试报告(如果适用)

3.3 检测流程

4. 密评实战中的常见踩坑

坑1:模块边界定义不清

现象:企业送检的模块边界模糊,软件模块包含了不属于密码模块范围的通用代码(如 GUI、数据库连接等)。

后果:检测机构要求重新定义边界,所有文档返工。

解决:模块边界应严格限定在密码功能相关的硬件、软件、固件组件。通用操作系统、数据库、Web 服务器等不属于密码模块边界。

坑2:安全等级"就高不就低"的误区

现象:企业为了"更安全"直接选择 SL3 甚至 SL4,但没有对应的物理安全措施。

后果:SL3 要求物理防篡改(tamper-resistant),如果模块是纯软件实现(如 Java/Python 应用),根本无法满足。

解决:

  • 软件密码模块最高只能达到 SL2(且需要安全的操作系统环境)
  • 硬件密码模块可以达到 SL3 或 SL4
  • 密码模块安全等级应与实际应用场景的安全需求匹配

坑3:CSP 管理文档缺失

现象:企业准备了大量的物理安全文档,但 CSP 的生成、输入、输出、存储、销毁流程描述不清。

后果:检测中 CSP 管理域(安全域8)大量不符合项。

解决:CSP(主要是密钥)的全生命周期管理必须有完整文档:

  • 密钥生成:使用的随机数生成器、生成算法
  • 密钥输入:密钥分量输入方式、加密传输机制
  • 密钥输出:密钥输出格式、加密保护
  • 密钥存储:存储介质、访问控制
  • 密钥销毁:销毁方法、销毁验证

坑4:自检机制不完整

现象:只实现了上电自检(POST),遗漏了条件自检。

后果:安全域9(自检)不达标。

解决:

  • 上电自检:模块上电时必须执行完整性校验(固件/软件签名验证)和算法正确性测试
  • 条件自检:在特定条件下(如定期、CSP 使用前、物理安全被触发后)执行的自检

坑5:侧信道防护文档"只有标题没有内容"

现象:文档声称有侧信道防护,但没有具体的防护设计描述或测试数据。

后果:安全域7(非入侵式安全)在 SL2+ 要求下被判不符合。

解决:至少应包含以下防护措施的描述:

  • 时间攻击防护:恒定时间算法、随机延迟
  • 功耗分析防护:掩码技术、随机化
  • 电磁分析防护:屏蔽设计
  • 故障注入防护:冗余计算、环境传感器

5. 检测失败的 TOP 5 不符合项

基于大量密评案例,以下是最常见的检测失败点:

排名安全域常见不符合项整改难度
1敏感安全参数管理密钥明文存储/传输中
2角色、服务与身份认证缺少基于身份的身份认证(SL3+)中
3物理安全缺少物理防篡改证据(SL3+)高
4自检缺少条件自检机制低
5旁路攻击缓解缺少侧信道防护文档或测试中

6. 与国密标准体系的关联

GM/T 0029-2014 在整个国密标准体系中的位置:

7. 实战建议:密评准备时间线

阶段时间关键任务
摸底密评前 3-6 个月盘点系统中所有密码模块,明确边界和类型
定级密评前 2-3 个月确定每个模块的安全等级目标
材料准备密评前 1-2 个月编制11个安全域的符合性文档
自查密评前 2-4 周模拟检测,识别不符合项
整改密评前 1-2 周修复不符合项,准备整改报告
送检密评前提交材料,配合检测

8. 总结

GM/T 0029-2014 是密评中密码模块安全检测的"游戏规则"。提前理解标准要求、明确模块边界、准备完整的文档材料,可以避免检测中的反复整改。

核心要点:

  • 模块边界要清晰,不要"越大越好"
  • 安全等级要匹配实际场景,不要盲目追高
  • CSP 管理是重中之重,贯穿11个安全域
  • 自检和侧信道防护不能"只有标题没有内容"
  • 文档准备宜早不宜迟,至少提前 3 个月启动

相关实践: