ICS35.030
CCS L80
中华人民共和国密码行业标准
GM/T0039—2024
代替GM/T0039—2015
密码模块安全检测要求
Securitytestrequirementsforcryptographicmodules
2024-12-27发布2025-07-01实施
国家密码管理局发布
目 次
前言………………………………………………………………………………………………………… Ⅲ
1 范围……………………………………………………………………………………………………… 1
2 规范性引用文件………………………………………………………………………………………… 1
3 术语和定义……………………………………………………………………………………………… 1
4 缩略语…………………………………………………………………………………………………… 1
5 概述……………………………………………………………………………………………………… 1
6 安全检测要求…………………………………………………………………………………………… 2
6.1 通用要求…………………………………………………………………………………………… 2
6.2 密码模块规格……………………………………………………………………………………… 3
6.3 密码模块接口……………………………………………………………………………………… 12
6.4 角色、服务和鉴别………………………………………………………………………………… 22
6.5 软件/固件安全…………………………………………………………………………………… 38
6.6 运行环境…………………………………………………………………………………………… 43
6.7 物理安全…………………………………………………………………………………………… 53
6.8 非入侵式安全……………………………………………………………………………………… 75
6.9 敏感安全参数管理………………………………………………………………………………… 77
6.10 自测试…………………………………………………………………………………………… 88
6.11 生命周期保障…………………………………………………………………………………… 105
6.12 对其他攻击的缓解……………………………………………………………………………… 116
6.13 文档要求………………………………………………………………………………………… 117
6.14 密码模块安全策略……………………………………………………………………………… 117
6.15 核准的安全功能………………………………………………………………………………… 118
6.16 核准的敏感安全参数生成和建立方法………………………………………………………… 118
6.17 核准的鉴别机制………………………………………………………………………………… 118
6.18 非入侵式攻击及缓解方法检测指标…………………………………………………………… 118
附录A (规范性) 安全等级对应表…………………………………………………………………… 119
Ⅰ
GM/T0039—2024
前 言
本文件按照GB/T1.1—2020《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定
起草。
本 文件代替GM/T0039—2015《密码模块安全检测要求》,与GM/T0039—2015相比,除结构调整
和编辑性改动外,主要技术变化如下:
a) 增加了测评单元[02.05]软件密码模块非入侵式安全要求和物理安全要求(见6.2.2.3,2015年
版的6.2.2);
b) 更改了验证证书、数据和向量初始化、分片密钥信息、密钥核算信息、手动状态输出、产品级质
量的IC芯片的表述(见6.2.4.1.2、6.3.3.2、6.3.3.3、6.3.3.8、6.7.2.8,2015年版的6.2.4.1、6.3.3、
6.7.2);
c) 增加了“降级工作”的要求(见6.2.4.3);
d) 更改了测评单元[03.04]密码模块接口定义的安全要求,增加了密码模块接口定义的送检材料
要求和检测程序要求(见6.3.3.1,2015年版的6.3.3);
e) 更改了测评单元[03.06]密码模块数据输出接口关于输出内容的要求(见6.3.3.3,2015年版的
6.3.3);
f) 更改了测评单元[03.07]密码模块数据输出接口禁止通过数据输出接口输出数据的条件(见
6.3.3.4,2015年版的6.3.3);
g) 增加了测评单元[04.16]密码模块安全功能的检测程序要求(见6.4.3.1.9,2015年版的6.4.3.1);
h) 增加了测评单元[04.17]密码模块参数置零服务的检测程序要求(见6.4.3.1.10,2015年版的
6.4.3.1);
i) 更改了测评单元[04.25]和测评单元[04.26]自启动密码服务能力的送检材料要求和检测程序
要求(见6.4.3.3.2、6.4.3.3.3,2015年版的6.4.3.3);
j) 增加了测评单元[05.09]密码模块执行完整性技术的硬件密码模块接口类型(见6.5.9,2015年
版的6.5);
k) 更改了测评单元[05.16]和测评单元[05.19]软固件完整性验证的要求(见6.5.16、6.5.19,2015年
版的6.5);
l) 增加了测评单元[06.10]密码模块进程的要求(见6.6.3.6);
m) 更改了测评单元[07.41]密码模块涂层抗移除的检测程序要求(见6.7.3.1.8,2015年版的6.7.3);
n) 更改了测评单元[09.08]密码模块随机比特生成器最小熵值的要求(见6.9.2.3,2015年版的
6.9.2);
o) 增加了测评单元[09.30]密码模块敏感安全参数存储的要求(见6.9.6.4);
p) 更改了测评单元[10.14]密码模块运行前自测试的检测程序要求(见6.10.2.1.1,2015年版的
6.10.2.1);
q) 更改了测评单元[12.02]密码模块对其他攻击缓解机制验证的检测程序要求(见6.12.2,2015年版
的6.12);
r) 更改了密码模块非入侵式攻击及缓解方法检测指标(见6.18,2015年版的6.18)。
请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。
本文件由密码行业标准化技术委员会提出并归口。
本文件起草单位:商用密码检测认证中心、北京握奇智能科技有限公司、飞天诚信科技股份有限公
Ⅲ
GM/T0039—2024
司、北京华大智宝电子系统有限公司、北京海泰方圆科技有限公司、中国科学院数据与通信保护研究教
育中心、北京创原天地科技有限公司、格尔软件股份有限公司、中国科学院信息工程研究所。
本文件主要起草人:汪雪林、崔永娜、张渊、邓开勇、李红芳、牛路宏、谢亚丽、李勃、李大为、雷银花、
陈国、陈保儒、张一飞、胡伯良、朱鹏飞、罗鹏、张众、莫凡、林春、蒋红宇、谭武征、张万涛、高能、郑强、
屠晨阳。
本文件及其所代替文件的历次版本发布情况为:
———2015年首次发布为GM/T0039—2015;
———本次为第一次修订。
Ⅳ
GM/T0039—2024
密码模块安全检测要求
1 范围
本文件规定了密码模块的安全检测要求以及对应的送检材料要求。
本文件适用于检测机构对送检密码模块的检测,也可用于指导密码模块研制厂商的研制、生产和
测试。
2 规范性引用文件
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文
件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于
本文件。
GB/T25069 信息安全技术 术语
GM/T0028—2024 密码模块安全技术要求
3 术语和定义
GB/T25069和GM/T0028—2024界定的术语和定义适用于本文件。
4 缩略语
下列缩略语适用于本文件。
API:应用程序接口(ApplicationProgramInterface)
CBC:密码分组链接(CipherBlockChaining)
ECB:电码本(ElectronicCodebook)
EDC:错误检测码(ErrorDetectionCode)
EFP:环境失效保护(EnvironmentalFailureProtection)
EFT:环境失效测试(EnvironmentalFailureTesting)
FSM:有限状态模型(FiniteStateModel)
HDL:硬件描述语言(HardwareDescriptionLanguage)
IC:集成电路(IntegratedCircuit)
PIN:个人身份识别码(PersonalIdentificationNumber)
VHDL:超高速集成电路硬件描述语言(VeryHighSpeedIntegratedCircuitHardwareDescription
Language)
5 概述
本文件详细说明了对送检厂商提供给检测机构材料的要求、检测机构检测所使用的程序要求以及
附录A 中每个测评单元对应的密码模块安全等级要求。
1
GM/T0039—2024
本文件采用“[xx.yy]”方式对标准中的所有测评单元进行标识和顺序编号,其中:
———xx表示第6章中对应的条;
———yy是测评单元的数字索引。
每一个测评单元包括安全要求、送检材料要求和检测程序要求,其中:
a) 安全要求内容直接引用GM/T0028—2024中对应的每项安全要求条款;
b) 为了语句的完整性,对引用的部分安全要求条款做了补充,其中补充语句采用斜体格式书写;
c) 送检材料要求描述了对送检厂商提供的文档类型或详细材料的要求,以便于检测人员核实(文
档或材料)与给定安全要求条款的符合性;
d) 检测程序要求指示检测人员在检测密码模块是否满足给定安全要求条款时应执行的程序。
本文件中“安全要求[xx.yy]”“送检材料要求[xx.yy]”“检测程序要求[xx.yy]”分别代表对应测评
单元[xx.yy]中的安全要求、送检材料要求和检测程序要求。
6 安全检测要求
6.1 通用要求
6.1.1 测评单元[01.01]
安全要求:
符合本文件的密码模块应满足的安全要求。
送检材料要求:
本条不单独提供材料。
检测程序要求:
本条不单独进行检测。
6.1.2 测评单元[01.02]
安全要求:
密码模块应针对各个域的要求进行检测。
注:如果送检的密码模块不受GM/T0028—2024规定的部分安全要求的约束,则检测机构排除相应安全要求的
检测。
送检材料要求:
本条不单独提供材料。
检测程序要求:
检测机构可以下面一个或多个方式对密码模块的安全性进行测试。
a) 检测人员使用检测机构的设备进行测试。
b) 检测人员使用送检厂商的设备进行测试。在此种情况下,检测机构需:
确认送检厂商设备的正确性和完整性。
c) 检测人员监督送检厂商使用送检厂商的设备进行测试。在此种情况下,检测机构需:
1) 解释己方不能进行测试的理由;
2) 制定所需的测试计划和测试任务;
3) 直接观察测试的执行情况。
如果任一条的测试不成功,则此条不通过。
6.1.3 测评单元[01.03]
安全要求:
密码模块应在每个域中独立地进行评级。
2
GM/T0039—2024
送检材料要求:
本条不单独提供材料。
检测程序要求:
本条不单独进行检测。
6.1.4 测评单元[01.04]
安全要求:
待审验或评估的密码模块应提供所有相关文档,包括用户和安装手册、设计说明、生命周期文档等。
送检材料要求:
本条不单独提供材料。
检测程序要求:
本条不单独进行检测。
6.2 密码模块规格
6.2.1 密码模块规格通用要求
6.2.1.1 测评单元[02.01]
安全要求:
密码模块应是硬件、软件、固件,或它们之间组合的集合,该集合至少使用一个核准的密码算法、安
全功能或过程实现一项密码服务,并且包含在定义的密码边界内。
注:GM/T0028—2024中附录C列出了核准的安全功能。
送检材料要求:
本条不单独提供材料。
检测程序要求:
本条不单独进行检测。
6.2.1.2 测评单元[02.02]
安全要求:
密码模块规格文档应按照GM/T0028—2024中A.2.2规定的要求编写。
送检材料要求:
本条不单独提供材料。
检测程序要求:
本条作为测评单元[A.01]的一部分进行检测。
6.2.2 密码模块类型
6.2.2.1 测评单元[02.03]
安全要求:
密码模块应定义为下列一种密码模块类型:
———硬件密码模块;
———软件密码模块;
———固件密码模块;
———混合软件密码模块;
3
GM/T0039—2024
———混合固件密码模块。
送检材料要求:
a) 送检厂商的文档中应描述密码模块类型,并解释选择这一类型的依据;
b) 送检厂商应提供密码模块的规格,以标识所有密码模块的硬件、软件和/或固件部件。
检测程序要求:
a) 检测人员应核实送检厂商的文档中标识了安全要求[02.03]中定义的一种模块类型;
b) 检测人员应通过审查送检厂商提供的规格文档,识别所有硬件、软件和/或固件部件,核实该密
码模块与安全要求[02.03]中定义的密码模块类型一致。
6.2.2.2 测评单元[02.04]
安全要求:
对于硬件和固件密码模块,应满足GM/T0028—2024中7.7规定的物理安全和7.8规定的非入侵
式安全的所有适用要求。
送检材料要求:
本条不单独提供材料。
检测程序要求:
本条不单独进行检测。
6.2.2.3 测评单元[02.05]
安全要求:
对于运行于可修改环境中的软件密码模块,应满足GM/T0028—2024中7.8规定的非入侵式安全
的所有适用要求;GM/T0028—2024中7.7规定的物理安全要求是可选的。
送检材料要求:
本条不单独提供材料。
检测程序要求:
本条不单独进行检测。
6.2.2.4 测评单元[02.06]
安全要求:
对于混合密码模块,应满足GM/T0028—2024中7.5规定的软件/固件安全、7.6规定的运行环境、
7.7规定的物理安全和7.8规定的非入侵式安全中的所有适用要求。
送检材料要求:
本条不单独提供材料。
检测程序要求:
本条不单独进行检测。
6.2.3 密码边界
6.2.3.1 密码边界通用要求
6.2.3.1.1 测评单元[02.07]
安全要求:
密码边界应由定义明确的边线(例如,硬件、软件或固件部件的集合)组成,该边线建立了密码模块
所有部件的边界。
4
GM/T0039—2024
送检材料要求:
送检厂商的文档中应详细说明密码边界内的所有部件。
检测程序要求:
a) 检测人员应通过文档审查和模块检查核实所有部件在密码边界内;
b) 检测人员应通过文档审查和模块检查核实没有未标识的部件在密码边界内。
6.2.3.1.2 测评单元[02.08]
安全要求:
GM/T0028—2024的要求应适用于密码边界内的所有算法、安全功能、过程和部件。
送检材料要求:
本条不单独提供材料。
检测程序要求:
本条不单独进行检测。
6.2.3.1.3 测评单元[02.09]
安全要求:
密码边界应至少包含密码模块内所有安全相关的算法、安全功能、过程和部件(即GM/T0028—
2024范围内与安全相关的)。
送检材料要求:
送检厂商应提供密码边界内所有与安全相关的算法、安全功能、过程和部件的清单,安全功能包括
但不限于:
———分组密码;
———序列密码;
———非对称密码算法和技术;
———消息鉴别码;
———杂凑函数;
———实体鉴别;
———密钥管理;
———随机数生成器。
检测程序要求:
检测人员应核实送检厂商的文档中明确标识和列出密码边界内所有与安全相关的算法、安全功能、
过程和部件。
6.2.3.1.4 测评单元[02.10]
安全要求:
用于核准工作模式的非安全相关的算法、安全功能、过程和部件的实现应不干扰或破坏密码模块核
准的运行。
送检材料要求:
送检厂商的文档中应列出用于核准的工作模式的非安全相关的算法、安全功能、过程和部件,并且
证明它们不干扰或破坏密码模块核准的运行。
检测程序要求:
a) 检测人员应通过文档审查和模块检查核实非安全相关的算法、安全功能、过程和部件的实现不
干扰或破坏密码模块核准的运行;
5
GM/T0039—2024
b) 检测人员应核实送检厂商提供的不干扰或破坏的任何理由的正确性。举证责任在送检厂商,
如果有任何不确定或模糊之处,检测人员应要求送检厂商提供需要的附加信息。
6.2.3.1.5 测评单元[02.11]
安全要求:
密码模块的名称应代表密码边界内的部件构成,不应代表大于实际范围的构成或产品。
送检材料要求:
送检厂商的文档中应提供密码模块的名称。
检测程序要求:
a) 检测人员应核实送检厂商提供的密码模块的名称与密码边界内的部件构成一致;
b) 检测人员应核实密码模块的名称并未包含与密码边界内的部件构成不一致的部件或功能。
6.2.3.1.6 测评单元[02.12]
安全要求:
密码模块应至少具有代表每个互不相同的硬件、软件和/或固件部件的特定版本信息。
送检材料要求:
送检厂商应提供密码模块每个互不相同的硬件、软件和/或固件部件的特定版本信息。
检测程序要求:
检测人员应核实送检厂商为密码模块的每个互不相同的硬件、软件和/或固件部件提供的特定版本
信息。
6.2.3.1.7 测评单元[02.13]
安全要求:
密码边界内的某些硬件、软件和/或固件部件可从GM/T0028—2024的要求中排除。被排除的硬
件、软件或固件部件的实现应不干扰或破坏密码模块核准的安全运行。
送检材料要求:
本条不单独提供材料。
检测程序要求:
本条作为测评单元[02.14]的一部分进行检测。
6.2.3.1.8 测评单元[02.14]
安全要求:
密码模块规格的文档中应阐明被排除的硬件、软件或固件部件。
送检材料要求:
a) 所有被排除在GM/T0028—2024安全要求之外的硬件、软件和/或固件部件都应在送检厂商
的文档中明确列出;
b) 送检厂商的文档中应提供每个部件被排除的理由。送检厂商应表明即使发生故障或误用,每
个部件也不会干扰或破坏密码模块核准的安全功能的运行。
检测程序要求:
a) 检测人员应核实送检厂商是否表明模块的某些部件排除在GM/T0028—2024的安全要求
之外。
b) 如果送检厂商已经表明模块的某些部件从GM/T0028—2024中排除,检测人员应核实每个
排除的理由均被提供。这些理由应表明即使部件出现故障,也不会造成关键安全参数、明文数
6
GM/T0039—2024
据或其他一旦误用就可能导致危险的信息的泄露。如有以下证据的支持,这些理由将被视为
可接受的:
———该部件不处理关键安全参数、明文数据或其他一旦误用就可能导致危险的信息;
———该部件不与模块中允许以不恰当方式传递关键安全参数、明文数据或其他一旦被误用就
可能导致危险的信息的安全相关部件连接;
———所有由部件处理的信息应严格供模块内部使用,并不能以任何方式影响到与模块连接的
设备。
c) 检测人员应核实由送检厂商提供的所有排除理由的正确性。举证责任在送检厂商;如果有任
何不确定或模糊之处,检测人员应要求送检厂商提供需要的附加信息。
6.2.3.2 密码边界的定义
6.2.3.2.1 测评单元[02.15]
安全要求:
硬件密码模块的密码边界应划界并确定。
硬件部件集合,可包括:
———在部件之间提供互联的物理配线的物理结构,包括电路板、基板或其他表面贴装;
———有效电器元件,如半集成、定制集成或通用集成的电路、处理器、内存、电源、转换器等;
———外壳、灌封或封装材料、连接器和接口之类的物理结构;
———固件,可以包含操作系统;
———上面未列出的其他部件类型。
送检材料要求:
a) 送检厂商的文档中应标识硬件密码模块的所有硬件部件,并提供部件清单;
b) 送检厂商的文档中应标明模块的内部布局和安装方式(例如固定件和安装件),包括近似比例
的图纸;
c) 送检厂商的文档中应描述模块的主要物理参数,包括对外壳、接入点、电路板、电源位置、电路
接线、冷却系统以及其他关键参数的说明;
d) 送检厂商的文档应包括表示模块边界和其硬件部件相互关系的框图。
检测程序要求:
a) 检测人员应核实送检厂商的文档中包括部件清单,该部件清单包括密码模块的所有硬件部件。
b) 检测人员应识别密码模块的所有硬件部件,并核实部件清单包括以下所有出现类型的部件,但
不包括未在模块中使用的部件类型:
———处理器,包括微处理器、数字信号处理器、定制处理器、微控制器或任何其他类型的处
理器;
———存储程序的可执行代码和数据的ROM 集成电路,这可能包括掩膜编程ROM、PROM,例
如紫外线可擦除PROM、电可擦除PROM 或Flash存储器;
———RAM 或其他用于临时数据存储的集成电路;
———半定制、专用集成电路,例如门阵列、可编程逻辑阵列、现场可编程门阵列或其他可编程逻
辑元件;
———全定制、专用集成电路,包括任何自定义的密码集成电路;
———其他的有源电子电路元件(如果无源电路元件作为密码模块的一部分但不提供相关安全
功能,送检厂商就不必将其列出,例如上拉/下拉电阻或旁路电容这样的元件);
———电源部件,包括电源、电压转换模块(例如,交流—直流或直流—直流模块)、变压器、输入
7
GM/T0039—2024
电源连接器和输出电源连接器;
———电路板或其他表面贴装;
———外壳,包括任何门或封盖;
———加密模块外部设备或任何主要的独立子模块之间的物理连接器;
———软件和/或固件部件;
———其他上面未列出的部件类型。
c) 检测人员应核实部件清单和其他条的条款提供的材料一致,其内容如下:
———安全要求[02.07]中要求的密码模块的边界规格。核实所有在密码边界内的部件已包含
在部件清单内,所有密码模块边界外的部件没有被列为密码模块部件;
———安全要求[A.01]要求的框图规格。核实框图中的所有个体部件(例如微处理器,存储器)
也在部件清单中都有列出;
———安全要求[02.14]规定的被从GM/T0028—2024安全要求排除的部件。核实这些部件仍
然在部件清单中列出。
d) 检测人员应核实密码边界是物理连续的,以保证没有任何漏洞可以让非受控的输入、输出或其
他接口进入密码模块。模块设计还应确保密码模块没有不受控的输入输出接口,这些接口可
能泄漏关键安全参数、明文数据或其他一旦被误用就可能导致破坏的信息。
e) 检测人员应核实密码边界包括了在安全要求[A.01]要求的框图中标识的所有输入、输出或关
键安全参数处理、明文或其他一旦被误用就可能导致破坏的信息部件。
f) 作为上述要求的一个部分特例,送检厂商可在满足安全要求[02.13]的基础上被允许从
GM/T0028—2024的要求中排除某些特定部件。送检厂商可以与处理排除在密码边界之外
的部件一样有效地处理上述部件。这种情况下,检测人员应核实被排除部件和其他模块之间
的所有接口或物理连接,不允许不受控的泄露关键安全参数、明文数据,或其他一旦被误用就
可能导致破坏的信息。
g) 检测人员应核实送检厂商的文档中包含近似比例的图纸,其中展示了模块的内部布局,包括主
要可识别部件的位置和大致尺寸。
h) 检测人员应核实送检厂商的文档中描述了模块的主要物理部件以及它们是如何安装或插入到
模块中的。
i) 检测人员应核实送检厂商的文档中描述了模块的主要物理参数。至少包括以下内容:
———外壳的形状和大致尺寸,包括所有的门或封盖;
———电路板大致尺寸,布局和内部连接;
———电源,电源转换器和电源输入及输出的位置;
———电路接线:通路和端子;
———冷却系统,例如导板、冷却气流、换热器、散热片、风扇或其他散热装置;
———其他上面未列出的部件类型。
j) 检测人员应核实送检厂商提供的框图能够表示模块边界和其硬件部件相互关系。
6.2.3.2.2 测评单元[02.16]
安全要求:
软件密码模块的密码边界应划界并确定:
———构成密码模块的可执行文件或文件集;
———保存在内存中并由一个或多个处理器执行的密码模块的实例。
送检材料要求:
a) 送检厂商的文档中应标识软件密码模块的所有软件部件,并提供部件清单及功能描述;
8
GM/T0039—2024
b) 送检厂商的文档中应表明内部软件架构,包括软件部件是如何交互的;
c) 送检厂商的文档中应说明密码模块所运行的软件环境(例如,操作系统、运行时库等)。
检测程序要求:
a) 检测人员应核实送检厂商的文档中包括部件清单,该部件清单包括密码模块的所有软件部件。
b) 检测人员应核实部件清单包括以下所有出现类型的部件,但不包括未在模块中使用的部件
类型:
———构成密码模块的可执行文件或文件集;
———保存在内存中并由一个或多个处理器执行的密码模块的实例。
c) 检测人员应核实送检厂商的文档描绘的软件部件交互的内部软件架构的准确性。还应核实模
块内的重要信息流和在密码模块内执行的过程,以及所有输入到密码模块边界内或输出到密
码模块边界外的信息的清单。
d) 检测人员应核实送检厂商的文档中说明的密码模块所运行的软件环境(例如,操作系统、运行
时库等)。
6.2.3.2.3 测评单元[02.17]
安全要求:
固件密码模块的密码边界应划界并确定:
———构成密码模块的可执行文件或文件集;
———保存在内存中并由一个或多个处理器执行的密码模块的实例。
送检材料要求:
a) 送检厂商的文档中应标识固件密码模块的所有固件部件,并提供部件清单及功能描述;
b) 送检厂商的文档中应表明内部固件架构,包括固件部件是如何交互的;
c) 送检厂商的文档中应说明密码模块所运行的固件环境(例如,操作系统、运行时库等)。
检测程序要求:
a) 检测人员应核实送检厂商的文档中包括部件清单,该部件清单包括密码模块的所有固件部件。
b) 检测人员应核实部件清单包括以下所有出现类型的部件,但不包括未在模块中使用的部件
类型:
———构成密码模块的可执行文件或文件集;
———保存在内存中并由一个或多个处理器执行的密码模块的实例。
c) 检测人员应核实送检厂商的文档中描绘的固件部件交互的内部软件架构准确。还应核实模块
内的重要信息流和在密码模块内执行的过程,以及所有输入或输出到密码模块边界外的信息
的清单。
d) 检测人员应核实送检厂商的文档中说明的密码模块所运行的固件环境。
6.2.3.2.4 测评单元[02.18]
安全要求:
混合密码模块的密码边界应:
———由密码模块硬件部件的边界以及分离的软件或固件部件的边界构成;
———包含每个部件所有端口和接口的集合。
注:混合密码模块除了分离的软件或固件部件,密码模块的硬件部件还可以包含嵌入式的软件或固件。
送检材料要求:
送检厂商的文档中应标识密码模块的类型是混合软件模块还是混合固件模块:
———混合软件模块应满足送检材料要求[02.15]a)~d)和送检材料要求[02.16]a)~c)的要求;
9
GM/T0039—2024
———混合固件模块应满足送检材料要求[02.15]a)~d)和送检材料要求[02.17]a)~c)的要求。
检测程序要求:
检测人员应核实送检厂商的文档中标识了密码模块的类型是混合软件模块还是混合固件模块:
———混合软件模块应满足检测程序要求[02.15]a)~j)和检测程序要求[02.16]a)~d)的要求;
———混合固件模块应满足检测程序要求[02.15]a)~j)和检测程序要求[02.17]a)~d)的要求。
6.2.4 工作模式
6.2.4.1 工作模式通用要求
6.2.4.1.1 测评单元[02.19]
安全要求:
操作员应能够在核准的工作模式下操作密码模块。
送检材料要求:
a) 送检厂商的文档中应说明密码模块核准的工作模式;
b) 送检厂商的文档中应描述如何启用核准的工作模式及方法。
检测程序要求:
a) 检测人员应核实送检厂商的文档中包含了对核准的工作模式的描述;
b) 检测人员应核实可以按照送检厂商的文档中描述的方法启用核准的工作模式;
c) 检测人员应核实操作员可以在核准的工作模式下操作密码模块。
6.2.4.1.2 测评单元[02.20]
安全要求:
核准的工作模式应定义为一组服务的集合,其中至少有一个服务使用了核准的密码算法、安全功能
或过程。
送检材料要求:
a) 送检厂商的文档中应说明密码模块核准的工作模式所使用的核准的密码算法、安全功能或过
程,以及那些规定于GM/T0028—2024中7.4.3的服务;
b) 送检厂商应提供一份所有核准的密码算法、安全功能或过程的证明文件。
检测程序要求:
a) 检测人员应核实文档中所描述的核准的工作模式,至少有一个服务使用了核准的密码算法、安
全功能或过程,以及那些规定于GM/T0028—2024中7.4.3的服务;
b) 检测人员应核实送检厂商提供的核准的密码算法、安全功能或过程的证明文件;
c) 检测人员应核实文档中所描述的核准的工作模式,使用的安全功能符合GM/T0028—2024
中附录C的规定。
6.2.4.1.3 测评单元[02.21]
安全要求:
非核准的密码算法、安全功能和过程或其他未规定于GM/T0028—2024中7.4.3的服务不应被操
作员用于核准的工作模式中,除非非核准的密码算法或安全功能是核准的过程的一部分,而且与核准的
过程的安全无关(例如,使用非核准的密码算法或非核准的方式生成的密钥,混淆数据或关键安全参数,
结果也被视为未受保护的明文,且不能提供安全相关功能)。
送检材料要求:
a) 送检厂商应提供一份所有非核准的密码算法、安全功能和过程的清单;
10
GM/T0039—2024
b) 送检厂商的文档中应说明核准的工作模式中未使用非核准的密码算法、安全功能和过程或其
他未规定于GM/T0028—2024中7.4.3的服务;
c) 如果核准的工作模式中使用了非核准的密码算法或安全功能,送检厂商提供的文档中应说明
非核准的密码算法或安全功能是核准的过程的一部分,而且与核准的过程的安全无关,并且不
干扰或破坏密码模块核准的工作模式的运行;
d) 送检厂商的文档中应解释为什么使用的非核准的密码算法、安全功能和过程与核准的过程操
作非安全相关。
检测程序要求:
a) 检测人员应核实送检厂商提供的所有非核准的密码算法、安全功能和过程的清单;
b) 检测人员应核实密码模块核准的工作模式中未使用非核准的密码算法、安全功能和过程或其
他未规定于GM/T0028—2024中7.4.3的服务;
c) 如果核准的工作模式中使用了非核准的密码算法或安全功能,检测人员应核实非核准的密码
算法或安全功能与核准的过程的安全无关,并且不干扰或破坏密码模块核准的工作模式的
运行;
d) 检测人员应核实送检厂商文档中上述解释的有效性。举证责任在送检厂商;如果有任何不确
定或模糊之处,检测人员应要求送检厂商提供需要的附加信息。
6.2.4.2 正常工作
6.2.4.2.1 测评单元[02.22]
安全要求:
核准的和非核准的服务和工作模式的关键安全参数应相互分离(例如,不共享或不相互访问)。
送检材料要求:
a) 送检厂商的文档应提供完整的模块关键安全参数清单,并说明它们在核准的和非核准的服务
及工作模式中的作用;
b) 送检厂商的文档中应描述核准的和非核准的服务和工作模式的操作方式,并说明关键安全参
数是如何分离的。
检测程序要求:
a) 检测人员应核实送检厂商的文档说明了各个关键安全参数在核准的和非核准的工作模式中的
作用;
b) 检测人员应核实核准的和非核准的服务和工作模式的关键安全参数相互分离。
6.2.4.2.2 测评单元[02.23]
安全要求:
密码模块的安全策略应为密码模块所包括的每个工作模式(核准的和非核准的)定义完整的服务
集合。
送 检材料要求:
送检厂商的安全策略文档中应为模块所包括的每个工作模式(核准的和非核准的)定义完整的服务
集合。
检 测程序要求:
检测人员应核实安全策略文档为每个工作模式(核准的和非核准的)定义了服务集合,并核实服务
集合完整和准确。
11
GM/T0039—2024
6.2.4.2.3 测评单元[02.24]
安全要求:
当服务正在以核准的方式使用核准的密码算法、安全功能或过程,以及其他规定于GM/T0028—
2024中7.4.3的服务或过程的时候,该服务应给出相应的状态指示。
送检材料要求:
送检厂商应给出当服务以核准的方式使用核准的密码算法、安全功能或过程,以及其他规定于
GM/T0028—2024中7.4.3的服务或过程时的状态指示方式。
检测程序要求:
检测人员应核实状态指示方式的合理性和有效性。
6.2.4.3 降级工作
6.2.4.3.1 测评单元[02.25]
安全要求:
当密码模块出现任何错误,都应进入错误状态并停止工作,不能降级工作。
送检材料要求:
送检厂商的文档中应说明当密码模块出现任何错误,都进入错误状态并停止工作,不能降级工作。
检测程序要求:
a) 检测人员应尝试使密码模块出现错误,并确认密码模块是否进入错误状态;
b) 检测人员应核实当密码模块进入错误状态后,密码算法、安全功能、服务或过程的操作集合不
可用和不可配置。
6.3 密码模块接口
6.3.1 密码模块接口通用要求
6.3.1.1 测评单元[03.01]
安全要求:
所有进出密码模块的逻辑信息流,都应只能通过已定义的物理端口和逻辑接口,这些端口和接口是
出入密码边界的入口和出口。
送检材料要求:
a) 送检厂商的文档中应说明密码模块的每个物理端口和逻辑接口,包括:
———物理端口和引脚分配;
———物理封盖,门或开口;
———逻辑接口(例如,API和所有其他的数据/控制/状态信号)、信号名称和功能;
———用于物理控制输入的手动控制(例如,按钮或开关);
———用于物理状态输出的物理状态指示仪(例如,指示灯或显示器);
———逻辑接口到物理端口、手动控制和模块物理状态显示之间的映射;
———上述端口和接口的物理的、逻辑的和电气的特性。
b) 送检厂商文档中应通过GM/T0028—2024中A.2.2和B.2.2要求提供的框图、设计规格、源
代码以及原理图,说明密码模块的信息流和物理接入点。同时还需提供其他有助于明确说明
信息流、物理接入点和物理端口、逻辑接口的关系的文档。
c) 对于密码模块的每一个物理或逻辑的输入,以及物理或逻辑的输出,送检厂商的文档中应明确
12
GM/T0039—2024
逻辑接口所对应的物理输入或输出。
检测程序要求:
a) 检测人员应核实送检厂商的文档说明了密码模块的每个物理端口和逻辑接口。所需的说明应
包括:
———所有的物理输入和输出端口,包括它们引脚排列,模块内的物理位置,经过每个端口的逻
辑信号的总览,以及两个或多个信号共享同一个物理引脚时的信号流的时序;
———所有的物理封盖,门或开口,包括它们在模块内的物理位置,以及通过每个封盖/门/开口
可访问和/或修改的部件或功能;
———所有的逻辑输入和输出接口(例如,API和所有其他的数据/控制/状态信号),包括列写或
注释的所有逻辑数据和控制输入以及数据、控制和状态输出的框图,以及信号名称和功能
的清单和描述;
———所有用于物理输入控制信号的手动控制,例如开关或按钮,包括它们在密码模块内的位
置,以及可手动输入的控制信号的描述和清单;
———所有的物理状态指示,包括它们在模块内的物理位置和物理输出状态指示信号的清单和
描述;
———逻辑输入输出接口到物理输入输出端口、手动控制,以及密码模块物理状态指示之间的
映射;
———上述物理端口和接口的物理、逻辑和电气特性,包括引脚分配总览,加载到每个端口的逻
辑信号,电压幅值及它们的逻辑含义(例如,高或低电平代表逻辑“0”“1”或其他意思)和信
号的时序。
b) 检测人员应通过检查GM/T0028—2024中A.2.2和B.2.2要求提供的框图、设计规格、源代
码以及原理图,以核实送检厂商的文档说明了密码模块的所有信息流和物理接入点信息。文
档还应说明密码模块信息流和物理访问点与密码模块逻辑接口和物理端口之间的关系。
c) 检测人员应核实对于每个密码模块的物理或逻辑输入,以及物理或逻辑输出,送检厂商的文档
明确逻辑接口所对应的物理输入或输出。
d) 检测人员应通过检查密码模块,核实送检厂商文档中的说明与密码模块的实际设计一致。
6.3.1.2 测评单元[03.02]
安全要求:
密码模块逻辑接口应是相互分离的,这些逻辑接口可共享一个物理端口(例如,输入数据和输出数
据可使用同一个端口),或者逻辑接口也可分布在一个或多个物理端口上(例如,输入数据可以通过串口
也可以通过并口)。
注:密码模块软件部件的API能定义为一个或多个逻辑接口。
送检材料要求:
a) 送检厂商的设计应根据安全要求[03.04]所列的类别将模块的接口分成逻辑上不同和相互分
离的类别,并且如果适用,安全要求[03.12]亦可作为依据。这些信息应符合安全要求[03.01]
描述的逻辑接口和物理端口的规格。
b) 送检厂商的文档中应提供每类逻辑接口到密码模块的物理端口之间的映射。逻辑接口可在物
理上分布在多个物理端口上,或两个或多个逻辑接口可以共享一个物理端口。如果两个或多
个逻辑接口共享同一物理端口,送检厂商的文档中应说明这些不同类别接口的信息流是如何
在逻辑上相互分离的。
检测程序要求:
a) 检测人员应通过分析送检厂商的文档和检查密码模块来核实,模块的接口从逻辑上可分成不
13
GM/T0039—2024
同的和相互独立的类别(如安全要求[03.04]和安全要求[03.12]所述)。所有这些信息应符合
安全要求[03.01]规定的逻辑接口和物理端口设计规范和规格。
b) 检测人员应核实送检厂商的文档中提供了每个类别的密码模块的逻辑接口到物理端口的映
射。逻辑接口可以在物理上分布在一个或多个物理端口,或者两个或更多的逻辑接口可以共
享一个物理端口。如果两个或多个接口共享相同的物理端口,检测人员应核实送检厂商的文
档中说明了这些不同类别接口的信息流在逻辑上是如何相互分离的。
6.3.1.3 测评单元[03.03]
安全要求:
密码模块接口文档应按照GM/T0028—2024中A.2.3的要求编写。
送检材料要求:
送检厂商的文档中密码模块接口部分应按照GM/T0028—2024中A.2.3的要求编写。
检测程序要求:
检测人员应核实送检厂商的文档中密码模块接口部分满足GM/T0028—2024中A.2.3的要求。
6.3.2 接口类型
密码模块的接口类型包括:
———硬件密码模块接口定义为用于请求硬件密码模块服务的命令全集,请求服务的命令中包括输
入到密码模块或者由密码模块输出的参数;
———软件或固件密码模块接口定义为用于请求软件或固件密码模块服务的命令全集,请求服务的
命令中包括输入到密码模块或者由密码模块输出的参数;
———混合固件或混合软件密码模块接口定义为用于请求混合固件或混合软件密码模块服务的命令
全集,请求服务的命令中包括输入到密码模块或者由密码模块输出的参数。
注:本条没有应检测的条款。
6.3.3 接口定义
6.3.3.1 测评单元[03.04]
安全要求:
密码模块应根据实际需要,具备下列接口(“输入”和“输出”是相对于密码模块而言的):
———数据输入接口;
———数据输出接口;
———控制输入接口;
———控制输出接口;
———状态输出接口。
送检材料要求:
送检厂商的文档中应通过以下不同定义的逻辑接口(“输入”和“输出”是从模块的角度表示)将密码
模块接口分成逻辑上不同且隔离的类别:
———数据输入接口(作为安全要求[03.05]中规定的数据输入);
———数据输出接口(作为安全要求[03.06]和安全要求[03.07]中规定的数据输出);
———控制输入接口(作为安全要求[03.08]中规定的命令、信号及控制信息输入);
———控制输出接口(作为安全要求[03.09]和安全要求[03.10]中规定的命令、信号及控制信息输出);
———状态输出接口(作为安全要求[03.11]中规定的信号、指示器和状态信息输出)。
14
GM/T0039—2024
检测程序要求:
检测人员应核实送检厂商的文档中说明了送检材料要求[03.04]列出的逻辑接口已在密码模块内
设计,并应核实密码模块内的逻辑接口应按安全要求[03.05]~安全要求[03.11]中的功能实现。
6.3.3.2 测评单元[03.05]
安全要求:
由密码模块处理的所有输入数据(通过“控制输入”接口输入的控制信息除外),包括明文、密文、敏
感安全参数和另一个密码模块的状态信息,应通过“数据输入”接口输入。
送检材料要求:
a) 密码模块应有数据输入接口。所有输入到模块和由模块处理的数据(除通过控制输入接口输
入的控制信息外)应通过数据输入接口进入,包括:
———明文数据;
———密文或签名数据;
———密钥和密钥管理数据(明文或密文);
———认证数据(明文或加密的);
———来自外部源的状态信息;
———其他输入数据。
b) 如果密码模块同时使用外部输入设备,如智能卡、令牌、键盘、密钥加载器和/或生物识别设备,
送检厂商的文档中应说明此设备,此设备用于输入数据到密码模块数据输入接口。
检测程序要求:
a) 检测人员应通过检查,核实密码模块包括数据输入接口,并且其功能如前所述。检测人员应核
实所有输入到模块和由密码模块处理的(除控制信息通过控制输入接口进入外)数据经数据输
入接口进入,包括:
———待加密或签名的明文数据;
———用于由模块解密或验证的密文及签名数据;
———输入到模块或由模块使用的密钥和密钥管理数据,包括但不限于明文或密文形态的密钥、
密钥分量、密钥标识、密钥校验值(密钥管理要求包含在GM/T0028—2024的7.9中);
———输入到密码模块的明文或密文的认证数据,包括登录口令、PIN 和/或生物识别信息;
———来自外部源的状态信息(例如,其他密码模块或设备);
———除安全要求[03.08]中涵盖的控制信息外,任何其他输入到密码模块中用于处理或存储的
信息。
b) 检测人员应核实送检厂商的文档中是否说明了任何与密码模块一起使用并用于输入数据到数
据输入接口的外部输入设备,例如智能卡、令牌、键盘、密钥加载器和或生物识别设备。检测人
员应使用外部输入设备输入数据到数据输入接口,并使用该外部输入设备核实该输入数据。
6.3.3.3 测评单元[03.06]
安全要求:
除“状态输出”接口输出的状态信息以及通过“控制输出”接口输出的控制信息之外,所有从密码模
块输出的输出数据,包括明文、密文和敏感安全参数等,应通过“数据输出”接口输出。
送检材料要求:
a) 密码模块应具有数据输出接口。所有已被处理以及由密码模块输出的数据(除通过控制输出
接口输出的控制信息、状态输出接口输出的状态外),包括:
———明文数据;
15
GM/T0039—2024
———密文数据和数字签名;
———密钥和密钥管理数据(明文或加密的);
———经过处理或存储后从密码模块输出的其他数据。
b) 如果密码模块同时使用外部输出设备,如智能卡、令牌、显示器和/或其他存储设备,送检厂商
的文档中应说明此设备,此设备用于接收从密码模块数据输出接口输出的数据。
检测程序要求:
a) 检测人员应通过检查,核实密码模块具有如前所述的数据输出接口和数据输出接口功能。检
测人员应核实所有被密码模块处理的和由模块输出的数据(除通过控制输出接口输出的控制
信息、状态输出接口输出的状态信息外),包括:
———已由密码模块解密的明文数据;
———已加密的密文数据,和由密码模块生成的数字签名;
———在内部产生并由模块输出的密钥和密钥管理数据,包括但不限于明文或密文形态的密钥、
密钥分量、密钥标识、密钥校验值(密钥管理要求在GM/T0028—2024的7.9中);
———其他由密码模块处理或存储后输出的数据,安全要求[03.09]说明的控制信息和安全要求
[03.11]中说明的状态信息例外。
b) 检测人员应核实送检厂商的文档中是否说明了任何与密码模块同时使用并用于从数据输出接
口输出数据的外部输出设备,例如智能卡、令牌、显示器和/或其他存储设备。检测人员应使用
外部输出设备从外部输出接口输出数据,并使用该外部输出设备核实该输出数据。
6.3.3.4 测评单元[03.07]
安全要求:
在执行手动输入、运行前自测试、软件/固件加载和置零的过程中,或者当密码模块处在错误状态
时,应禁止通过“数据输出”接口输出数据。
送检材料要求:
a) 送检厂商的文档中应说明在执行手动输入、运行前自测试、软件/固件加载和置零的过程中,或
者当密码模块处在错误状态时,密码模块如何禁止通过“数据输出”接口输出数据;
b) 送检厂商的文档中应说明密码模块的设计如何能确保在执行手动输入、运行前自测试、软件/
固件加载和置零的过程中,或者当密码模块处在错误状态时,数据输出接口禁止输出所有
数据。
检测程序要求:
a) 检测人员应核实送检厂商的文档说明了数据输出接口禁止输出所有数据:
———在执行手动输入、运行前自测试、软件/固件加载和置零的过程中;
———或者当密码模块处在错误状态时。
该检测程序可以重述如下:
———检测人员应从送检文档中核实一旦以下的每一个服务启动:手动输入、运行前自测试、软
件/固件加载或置零,从数据输出接口禁止输出所有数据,直到服务成功完成;
———检测人员应从送检文档中核实一旦检测到一个错误条件或进入了错误状态,从数据输出
接口禁止输出所有数据,直到从错误状态恢复过来。
b) 检测人员应使密码模块进入以下的每个状态,并验证此时数据输出接口禁止输出所有数据:
———执行手动输入敏感安全参数状态;
———执行运行前自测试的状态;
———执行软件/固件加载状态;
———执行置零状态;
16
GM/T0039—2024
———错误状态。
如果检测人员不能使模块产生错误,送检厂商应对检测人员提供该检测不能进行的合理解释。
在这种情况下,检测人员应遵循审验机构允许的替代程序以确保从数据输出接口禁止输出所
有数据。
示例1:检测适用的源代码。
c) 检测人员应核实送检厂商的文档说明了密码模块处于自测试模式时,数据输出接口禁止输出
所有数据。检测人员应通过送检厂商的文档核实模块一旦执行自测试,数据输出接口禁止输
出所有数据,直至
评论