GM/T 0028-2014 密码模块安全技术要求:安全等级划分、技术域解读与合规实践
概述
GM/T 0028-2014《密码模块安全技术要求》是我国商用密码领域的核心安全标准之一,由国家密码管理局发布。该标准针对用于保护计算机与电信系统内敏感信息的安全系统所使用的密码模块,规定了全面的安全要求。
密码模块在标准中被定义为:硬件、软件、固件或其组合的集合,该集合至少使用一个经国家密码管理局核准的密码算法、安全功能或过程来实现一项密码服务,并且包含在定义的密码边界以内。
该标准于 2014 年发布,对应的国家标准为 GB/T 37092-2018《信息安全技术 密码模块安全要求》。2024 年 12 月发布了 GM/T 0028-2024(修订版),将于 2025 年 7 月实施,对术语定义、安全要求等进行了优化。本文以 2014 版为基础进行解读,同时标注与 2024 版的主要差异。
配套标准:
| 标准编号 | 标准名称 | 用途 |
|---|---|---|
| GM/T 0028-2014 | 密码模块安全技术要求 | 规定安全要求 |
| GM/T 0039-2015 | 密码模块安全检测要求 | 规定检测方法和流程 |
| GM/T 0008-2012 | 安全芯片密码检测准则 | 安全芯片专用检测标准 |
密码模块的分类
按形态分类
GM/T 0028-2014 将密码模块按物理形态分为四类:
| 模块类型 | 密码边界 | 典型产品 | 运行环境 |
|---|---|---|---|
| 硬件密码模块 | 硬件边线 | 服务器密码机、PCI-E 密码卡 | 包含在硬件边界内的固件/软件 |
| 软件密码模块 | 可执行文件/文件集 | 密码算法库、软件密码组件 | 通用操作系统(Windows/Linux 等) |
| 固件密码模块 | 可执行文件/文件集 | 嵌入式密码固件 | 受限/不可修改的运行环境(Java Card 等) |
| 混合密码模块 | 软/固件 + 分离硬件 | 智能密码钥匙 + 驱动软件 | 分离的运行环境 |
核准的安全功能
GM/T 0028-2014 核准的安全功能包括:
- 分组密码算法(如 SM4)
- 流密码算法(如 ZUC)
- 公钥密码算法和技术(如 SM2)
- 消息鉴别码(MAC)
- 杂凑函数(如 SM3)
- 实体鉴别
- 密钥管理
- 随机比特生成器
安全等级体系
GM/T 0028-2014 定义了四个安全等级,从一级到四级安全性逐次增强。高等级必须满足低等级的全部要求,并新增强化措施。
安全等级递增
┌────────────────────────────────────────────────────────────┐
│ 一级 ──────> 二级 ──────> 三级 ──────> 四级 │
│ (最低) (最高) │
│ │
│ 基础加密 增强防护 物理攻击 完整封套 │
│ 功能+文档 环境失效 检测响应+ 保护+抗错误 │
│ 测试能力 环境异常防护 注入能力 │
└────────────────────────────────────────────────────────────┘安全一级(最低)
安全一级适用于密码模块在受信任环境中使用的场景。核心要求:
- 密码算法:必须使用经国家密码管理局核准的商用密码算法
- 随机数生成:至少 2 个随机数源
- 敏感安全参数(SSP)管理:SSP 不能以明文形式出现在模块外部
- 自测试:模块上电时必须执行自测试,验证密码算法和关键功能的正确性
- 文档要求:提供基本的安全策略文档和使用说明
- 角色鉴别:至少支持一种身份鉴别机制
安全二级
在安全一级基础上增加:
- 随机数生成:至少 4 个随机数源
- 物理安全:具备防篡改封套或防篡改涂层
- SSP 管理:SSP 以密文形式存储,核心运算需要专用硬件
- 环境失效测试:密码模块需通过环境失效测试(如高低温、电压波动等极端条件下的功能验证)
- 角色与服务鉴别:支持基于身份的角色鉴别
- 审计:记录关键安全事件
安全三级
在安全二级基础上增加:
- 随机数生成:至少 8 个随机数源
- 物理安全:具备物理攻击检测和响应机制(如主动屏蔽层、传感器)
- 环境失效保护:必须具备环境失效保护机制(而非仅测试)
- 可信信道:管理员与模块之间需建立可信信道
- SSP 零化:SSP 使用后必须立即安全零化
- 抗错误注入:具备抗错误注入攻击的能力
- 生命周期保障:完整的生命周期管理,包括安全销毁
安全四级(最高)
在安全三级基础上增加:
- 完整封套保护:密码模块必须被完整的防篡改封套包围
- 环境失效保护:必须实施环境失效保护机制(强制要求)
- 抗错误注入:必须实施抗错误注入能力
- 最高等级物理安全:抵御所有已知的物理攻击手段
安全等级对比表
| 安全域 | 一级 | 二级 | 三级 | 四级 |
|---|---|---|---|---|
| 密码模块规格 | 基本 | 增强 | 增强 | 最高 |
| 密码模块接口 | 基本 | 增强 | 增强 | 最高 |
| 角色、服务和鉴别 | 较弱 | 中等 | 高 | 最高 |
| 软件/固件安全 | 较弱 | 中等 | 高 | 最高 |
| 运行环境 | 较弱 | 中等 | 高 | 最高 |
| 物理安全 | 可选 | 封套/涂层 | 检测+响应 | 完整封套 |
| 非入侵式安全 | 可选 | 环境失效测试 | 环境失效保护 | 环境失效保护 |
| SSP 管理 | 较弱 | 中等 | 高 | 最高 |
| 自测试 | 能够 | 能够 | 能够 | 能够 |
| 生命周期保障 | 较弱 | 中等 | 高 | 最高 |
| 攻击缓解 | 较弱 | 中等 | 高 | 最高 |
11 个安全域详解
1. 密码模块规格
规定密码模块的算法实现、参数选择和文档要求。
- 算法必须符合国家标准或行业标准(如 GM/T 0001-2012、GM/T 0002-2012)
- 参数选择必须符合推荐值(如 SM2 使用 sm2p256v1 曲线)
- 必须提供安全策略文档,描述模块的安全功能、SSP 管理和操作限制
2. 密码模块接口
规定模块与外部环境的接口规范。
- 必须明确定义所有输入/输出接口
- 数据在接口上的表示格式必须标准化
- 必须区分数据端口、控制端口和状态端口
- 接口必须防止未授权访问和信息泄露
3. 角色、服务和鉴别
规定访问控制和身份鉴别机制。
- 必须定义明确的角色(如用户、管理员、安全管理员)
- 每个角色必须关联特定的服务和权限
- 身份鉴别必须基于密码技术(如数字证书、口令)
- 高等级要求多因素鉴别
4. 软件/固件安全
规定软件/固件的安全要求。
- 软件/固件必须经过完整性校验
- 必须防止未授权的修改
- 高等级要求代码签名和安全启动
5. 运行环境
规定模块运行环境的安全要求。
- 必须评估运行环境的安全风险
- 运行环境不能破坏模块的安全功能
- 高等级要求运行环境具备特定的安全能力
6. 物理安全
规定物理防护措施。
| 等级 | 要求 |
|---|---|
| 一级 | 可选 |
| 二级 | 防篡改封套或涂层 |
| 三级 | 物理攻击检测 + 响应机制 |
| 四级 | 完整封套保护 |
7. 非入侵式安全
规定抗非入侵式攻击的能力。
- 环境失效测试(二级):验证模块在极端环境条件下(高温、低温、电压波动、电磁干扰等)不会泄露 SSP
- 环境失效保护(三级/四级):模块在检测到环境异常时自动采取保护措施(如清零 SSP)
- 抗错误注入(四级):抵御通过激光、电磁脉冲等方式注入错误以提取密钥的攻击
8. 敏感安全参数管理
规定 SSP(如私钥、主密钥等)的全生命周期管理。
- SSP 不能以明文形式出现在模块外部
- SSP 在模块内部必须安全存储
- SSP 必须支持安全销毁(零化)
- 高等级要求 SSP 使用后立即清零
- SSP 的导入/导出必须使用加密方式(如数字信封)
9. 自测试
规定模块的自我检测能力。
- 上电自测试:每次上电必须执行,验证密码算法正确性
- 条件自测试:在特定条件下触发(如定期、操作前)
- 自测试失败处理:自测试失败时模块必须进入错误状态,不能继续提供密码服务
- 测试内容包括:已知答案测试(KAT)、软件/固件完整性测试、随机数生成器测试
10. 生命周期保障
规定模块从生产到销毁的全生命周期安全。
- 安全开发和生产过程
- 安全的运输和交付
- 安全的初始化和配置
- 安全的维护和更新
- 安全的退役和销毁
11. 对其他攻击的缓解
规定抗已知攻击的能力。
- 抗侧信道攻击(时间分析、功耗分析、电磁分析)
- 抗故障注入攻击
- 抗重放攻击
- 抗中间人攻击
与 FIPS 140-3 的对比
GM/T 0028-2014 与国际通用的 FIPS 140-3(Federal Information Processing Standard)在框架上高度相似,但存在重要差异:
| 维度 | GM/T 0028-2014 | FIPS 140-3 |
|---|---|---|
| 发布机构 | 国家密码管理局 | NIST(美国) |
| 安全等级 | 四级 | 四级 |
| 算法要求 | 必须使用国密算法(SM2/SM3/SM4) | 必须使用 NIST 核准算法(AES/SHA/ECDSA) |
| 物理安全 | 三级要求检测+响应 | 三级要求防篡改+零化 |
| 非入侵式安全 | 环境失效测试/保护 | 非入侵式攻击缓解 |
| 适用范围 | 中国商用密码产品 | 全球(美国主导) |
| 认证机构 | 国家密码管理局认可的实验室 | NIST CMVP 认可的实验室 |
| 对应国标 | GB/T 37092-2018 | ISO/IEC 19790:2012 |
- 算法体系不同:GM/T 0028 强制要求国密算法,FIPS 140-3 强制要求 NIST 算法。两者在对方体系中均不被认可。
- 安全域划分不同:GM/T 0028 有 11 个安全域,FIPS 140-3 有 11 个安全域,但具体内容和侧重点不同。
- 混合模块:GM/T 0028 明确定义了混合密码模块类型,FIPS 140-3 在 2019 年修订版中也增加了类似概念。
检测认证流程
认证依据
密码模块的检测认证依据以下标准:
- GM/T 0028-2014:规定安全要求
- GM/T 0039-2015:规定检测方法和流程
- GM/T 0039-2015 附录:送检材料要求
检测流程
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 申请 │───>│ 送检 │───>│ 检测 │───>│ 认证 │
│ │ │ │ │ │ │ │
│ ·提交申请 │ │ ·提交样品 │ │ ·文档审查 │ │ ·颁发证书 │
│ ·确定等级 │ │ ·提交文档 │ │ ·功能测试 │ │ ·公告发布 │
│ ·选择实验室│ │ ·签署协议 │ │ ·渗透测试 │ │ ·定期监督 │
└──────────┘ └──────────┘ │ ·环境测试 │ └──────────┘
│ ·物理测试 │
└──────────┘送检材料要求
送检单位需向检测机构提交以下材料:
- 密码模块安全策略文档:描述模块的安全功能、SSP 管理、操作限制等
- 设计文档:模块的架构设计、接口定义、算法实现说明
- 源代码/固件:用于代码审查和漏洞分析
- 测试报告:内部测试结果
- 样品:用于实际检测的硬件/软件样品
检测项目
| 检测类别 | 检测内容 | 适用等级 |
|---|---|---|
| 安全功能检测 | 密码算法正确性、密钥管理、随机数质量 | 一级至四级 |
| 接口安全检测 | 接口定义完整性、输入验证、错误处理 | 一级至四级 |
| 角色鉴别检测 | 身份鉴别强度、访问控制有效性 | 一级至四级 |
| 物理安全检测 | 防篡改能力、攻击检测响应 | 二级至四级 |
| 环境测试 | 高低温、电压波动、电磁干扰 | 二级至四级 |
| 渗透测试 | 侧信道分析、故障注入、软件漏洞 | 三级至四级 |
| 生命周期检测 | 开发过程、交付安全、销毁机制 | 一级至四级 |
认证后监督
获得认证后,密码模块还需接受定期监督:
- 年度监督:每年进行一次简化检测
- 变更申报:模块设计、算法、固件发生重大变更时需重新检测
- 证书有效期:一般为 3-5 年,到期需重新认证
合规实践要点
等保与密评要求
在网络安全等级保护(等保)和商用密码应用安全性评估(密评)中,密码模块的安全等级是关键评估要素:
| 等保等级 | 密码模块最低要求 | 典型场景 |
|---|---|---|
| 二级 | 安全一级 | 一般信息系统 |
| 三级 | 安全二级 | 重要信息系统 |
| 四级 | 安全三级 | 关键信息基础设施 |
- 物理和环境安全层面:应采用符合 GM/T 0028 相应安全等级的密码模块
- 网络和通信安全层面:VPN 设备中的密码模块应满足相应安全等级
- 设备和计算安全层面:服务器密码机等设备应通过 GM/T 0028 认证
- 应用和数据安全层面:签名验签服务器应通过 GM/T 0028 认证
密码法要求
2020 年 1 月 1 日实施的《中华人民共和国密码法》规定:
- 涉及国家安全、国计民生、社会公共利益的商用密码产品,应当依法列入网络关键设备和网络安全专用产品目录,经认证合格后方可销售或者提供
- 商用密码产品检测认证适用《中华人民共和国认证认可条例》
- GM/T 0028 是商用密码产品安全认证的核心依据
产品选型建议
选择密码模块时,应考虑以下因素:
- 运行环境:运行环境越不安全,应选择越高等级的密码模块
- 信息资产重要程度:保护的信息越重要,应选择越高等级的密码模块
- 合规要求:满足等保、密评、行业监管的最低等级要求
- 成本平衡:高等级模块成本更高,需在安全和成本之间取得平衡
- 供应链安全:选择有资质、信誉好的厂商产品
与 GM/T 0008 安全芯片标准的对比
GM/T 0008-2012《安全芯片密码检测准则》是专门针对安全芯片的检测标准,与 GM/T 0028 形成互补关系:
| 维度 | GM/T 0028-2014 | GM/T 0008-2012 |
|---|---|---|
| 适用范围 | 所有密码模块 | 安全芯片专用 |
| 安全等级 | 四级 | 三级 |
| 安全域 | 11 个 | 9 个 |
| 检测要求 | 通用 | 芯片专用(含 EMC、ESD 等) |
| 典型产品 | 密码机、软件模块 | 金融 IC 卡芯片、安全芯片 |
参考来源
- GM/T 0028-2014《密码模块安全技术要求》
- GM/T 0039-2015《密码模块安全检测要求》
- GB/T 37092-2018《信息安全技术 密码模块安全要求》
- GM/T 0008-2012《安全芯片密码检测准则》
- GM/T 0054-2018《信息系统密码应用基本要求》
- FIPS 140-3: Security Requirements for Cryptographic Modules (NIST)
- ISO/IEC 19790:2012: Security requirements for cryptographic modules
- 《中华人民共和国密码法》(2020 年)
- 《商用密码管理条例》(2023 年修订)
相关实践
- 如需了解国密 TLS 协议中密码模块的具体应用,请参阅《国密 TLS 1.1 协议详解:GM/T 0024 与 RFC 8998》
- 如需了解 PKI 体系中证书链验证与信任锚机制,请参阅《PKI 体系中证书链验证与信任锚机制》
- 如需了解国密标准体系的整体架构,请参阅《国密标准体系解读:GM/T、GB/T 与 ISO/IEC 的映射关系》