您当前的位置:首页 > 行业标准 > 其它标准

GM/T 0134-2024 密码模块安全设计指南

  • [下载地址1]   [下载地址2]
  • 文件大小:670.29 KB
  • 标准类型:行业标准
  • 标准语言:中文版
  • 授权形式:免费
  • 文件类型:PDF文档
  • 安全检测:360:安全
  • 下载次数:3   加入收藏
  • 标签

资料介绍

  ICS35.030

  CCS L80

  中华人民共和国密码行业标准

  GM/T0134—2024

  密码模块安全设计指南

  Securitydesignguidanceforcryptographicmodules

  2024-12-27发布2025-07-01实施

  国家密码管理局发布

  目 次

  前言………………………………………………………………………………………………………… Ⅴ

  引言………………………………………………………………………………………………………… Ⅵ

  1 范围……………………………………………………………………………………………………… 1

  2 规范性引用文件………………………………………………………………………………………… 1

  3 术语和定义……………………………………………………………………………………………… 1

  4 缩略语…………………………………………………………………………………………………… 1

  5 设计原则………………………………………………………………………………………………… 1

  5.1 符合性……………………………………………………………………………………………… 1

  5.2 系统性……………………………………………………………………………………………… 2

  6 密码模块安全设计过程………………………………………………………………………………… 2

  6.1 密码模块设计技术框架…………………………………………………………………………… 2

  6.2 密码模块需求分析………………………………………………………………………………… 3

  6.3 安全域选取………………………………………………………………………………………… 3

  6.4 密码模块设计详细技术…………………………………………………………………………… 4

  7 密码模块规格…………………………………………………………………………………………… 6

  7.1 用作接口的部件与密码边界的关系……………………………………………………………… 6

  7.2 密码模块的密码边界……………………………………………………………………………… 7

  7.3 密码模块名称和版本标识………………………………………………………………………… 8

  7.4 “核准的过程”的确定和梳理……………………………………………………………………… 8

  7.5 工作模式…………………………………………………………………………………………… 9

  7.6 密码模块状态指示方式的建议…………………………………………………………………… 9

  7.7 混合密码模块的密码边界和物理边线…………………………………………………………… 9

  7.8 混合密码模块内部部件之间的通信……………………………………………………………… 10

  8 密码模块接口…………………………………………………………………………………………… 10

  8.1 可信信道…………………………………………………………………………………………… 10

  8.2 常用的物理端口与逻辑接口的关系……………………………………………………………… 11

  8.3 逻辑接口相互隔离的建议………………………………………………………………………… 11

  8.4 输入设备作为物理端口时的接口描述方式……………………………………………………… 11

  8.5 软件密码模块的物理端口………………………………………………………………………… 12

  9 角色、服务和鉴别……………………………………………………………………………………… 12

  9.1 对新角色的验证…………………………………………………………………………………… 12

  9.2 无默认鉴别数据时的第一次访问鉴别…………………………………………………………… 13

  9.3 鉴别数据的隐藏方法……………………………………………………………………………… 13

  Ⅰ

  GM/T0134—2024

  9.4 无需担任授权角色的情况………………………………………………………………………… 13

  9.5 多重操作者鉴别…………………………………………………………………………………… 14

  9.6 旁路能力…………………………………………………………………………………………… 14

  9.7 激活旁路能力……………………………………………………………………………………… 15

  9.8 鉴别机制的强度…………………………………………………………………………………… 15

  9.9 密码主管角色确定………………………………………………………………………………… 15

  9.10 软件密码模块的鉴别机制……………………………………………………………………… 16

  10 软件/固件安全………………………………………………………………………………………… 16

  10.1 确保软件/固件在安装前未被修改……………………………………………………………… 16

  10.2 软件密码模块的完整性校验…………………………………………………………………… 16

  11 运行环境……………………………………………………………………………………………… 17

  11.1 对运行环境配置的规定………………………………………………………………………… 17

  11.2 硬件密码模块的运行环境……………………………………………………………………… 18

  12 物理安全……………………………………………………………………………………………… 18

  12.1 密码模块物理实体的分类……………………………………………………………………… 18

  12.2 物理安全置零时间……………………………………………………………………………… 18

  12.3 对维护访问接口的安全要求…………………………………………………………………… 19

  13 非入侵式安全………………………………………………………………………………………… 20

  13.1 非入侵式攻击的主要类型以及缓解技术……………………………………………………… 20

  13.2 证明缓解技术有效性的方法和测试方法……………………………………………………… 20

  14 敏感安全参数管理…………………………………………………………………………………… 21

  14.1 敏感安全参数置零的例外……………………………………………………………………… 21

  14.2 置零的安全要求………………………………………………………………………………… 21

  14.3 关于梳理敏感安全参数的建议………………………………………………………………… 21

  14.4 随机数生成器状态信息………………………………………………………………………… 22

  14.5 置零的状态输出问题…………………………………………………………………………… 22

  14.6 关于公开安全参数保护措施的建议…………………………………………………………… 23

  14.7 关于评估敏感安全参数生成方法安全性的建议……………………………………………… 23

  15 自测试………………………………………………………………………………………………… 24

  15.1 周期自测试的需求和内容……………………………………………………………………… 24

  15.2 运行前自测试…………………………………………………………………………………… 24

  15.3 运行前软件/固件完整性测试…………………………………………………………………… 25

  15.4 运行前旁路以及旁路测试……………………………………………………………………… 25

  15.5 运行前关键功能测试…………………………………………………………………………… 25

  15.6 密码算法条件测试……………………………………………………………………………… 26

  15.7 手动输入条件自测试…………………………………………………………………………… 26

  15.8 密码算法已知答案自测试……………………………………………………………………… 26

  Ⅱ

  GM/T0134—2024

  15.9 密码算法自测试的方法………………………………………………………………………… 27

  15.10 运行前模块初始化过程………………………………………………………………………… 27

  15.11 软件/固件加载测试…………………………………………………………………………… 28

  附录A (资料性) 密码模块边界信息梳理……………………………………………………………… 29

  Ⅲ

  GM/T0134—2024

  前 言

  本文件按照GB/T1.1—2020《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定

  起草。

  请 注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。

  本文件由密码行业标准化技术委员会提出并归口。

  本文件起草单位:北京握奇智能科技有限公司、中国科学院大学、商用密码检测认证中心、飞天诚信

  科技股份有限公司、深圳市文鼎创数据科技有限公司、山东大学、北京海泰方圆科技股份有限公司、工业

  信息安全(四川)创新中心有限公司、北京江南天安科技有限公司、北京天威诚信电子商务服务有限公

  司、西安得安信息技术有限公司、智巡密码(上海)检测技术有限公司、鼎铉商用密码测评技术(深圳)有

  限公司、豪符密码检测技术(成都)有限责任公司、长春吉大正元信息技术股份有限公司、浙江蚂蚁密算

  科技有限公司。

  本文件主要起草人:张渊、郑昉昱、李国友、李勃、王慧、李小雨、朱鹏飞、崔永娜、刘伟丰、陈妍、孔凡玉、

  罗影、胡伯良、马晓艳、王超、马洪富、韩玮、胡之斐、饶金涛、孙浩、张宇韬、李超。

  Ⅴ

  GM/T0134—2024

  引 言

  GM/T0028—2024《密码模块安全技术要求》针对密码模块的11个安全域分别规定了四个安全等

  级的对应要求,本文件从密码模块安全设计的角度阐述了落实这些要求的通用设计方法和建议,旨在为

  GM/T0028—2024中的安全要求条款提供解释和指导,以促进对GM/T0028—2024理解的一致性和

  应用标准的符合性。

  Ⅵ

  GM/T0134—2024

  密码模块安全设计指南

  1 范围

  本文件提供了密码模块安全设计过程的指导和建议,给出了针对GM/T0028—2024对应的安全

  要求章节中,有代表性安全要求条款疑问的具体解读、解释和设计指导。

  本文件适用于密码模块的设计、开发和检测。本文件不适用于密码安全芯片设计的指导。

  2 规范性引用文件

  下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文

  件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于

  本文件。

  GB/T25069 信息安全技术 术语

  GB/T32905 信息安全技术 SM3密码杂凑算法

  GB/T32907 信息安全技术 SM4分组密码算法

  GB/T32918(所有部分) 信息安全技术 SM2椭圆曲线公钥密码算法

  GB/T35276 信息安全技术 SM2密码算法使用规范

  GM/T0005 随机性检测规范

  GM/T0016 智能密码钥匙密码应用接口规范

  GM/T0028—2024 密码模块安全技术要求

  GM/T0083 密码模块非入侵式攻击缓解技术指南

  GM/T0084 密码模块物理攻击缓解技术指南

  GM/T0103 随机数发生器总体框架

  3 术语和定义

  GB/T25069和GM/T0028—2024界定的术语和定义适用于本文件。

  4 缩略语

  下列缩略语适用于本文件。

  CA:认证中心(CertificateAuthority)

  DEP:默认入口点(DefaultEntryPoint)

  EEPROM:带电可擦可编程只读存储器(ElectricallyErasableProgrammableReadOnlyMemory)

  5 设计原则

  5.1 符合性

  GM/T0028—2024规定了密码模块的四个安全等级及对应的安全要求,这对密码模块的安全设计

  1

  GM/T0134—2024

  是至关重要的。GM/T0028—2024的11个安全域中规定的具体安全条款是密码模块安全设计时的重

  要因素。

  5.2 系统性

  密码模块安全设计宜按系统性原则考虑其技术框架、需求分析、安全域选取和详细设计。

  6 密码模块安全设计过程

  6.1 密码模块设计技术框架

  6.1.1 密码模块的一般性质

  密码模块本身是承担具体安全功能的产品,它一般具备以下性质:

  a) 有明确的边界,边界上有可靠的隔离机制;

  b) 外部只能通过边界上已定义的接口访问和操作密码模块,而且只有授权用户才能访问和操作

  密码模块;

  c) 密码模块按照设计运行、提供安全功能服务,且敏感安全参数在安全功能服务过程中不会被非

  授权的访问、使用、泄露、修改和替换;

  d) 可以防范攻击者从正常接口或者在边界之外收集可利用信息,以缓解非入侵式攻击或其他

  攻击。

  6.1.2 密码模块设计技术框架

  密码模块的安全性由其自身保证以满足GM/T0028的安全要求,密码模块设计技术框架见图1。

  此外,还需考虑调用密码模块的实体以及密码模块所处的外部环境。

  a) 密码模块所处的外部环境:密码模块的整体安全性除了依赖于密码模块自身,还依赖于其所处

  的外部环境,特别是安全等级较低的密码模块。

  b) 调用密码模块的实体:调用密码模块的实体可能是人、应用或进程,密码模块的安全功能由具

  体密码应用需求所决定,同时密码模块的安全性可能部分依赖于密码模块的调用者,特别是安

  全等级较低的密码模块。

  图1中(1)~(11)分别代表GM/T0028—2024中7.1中规定的11个安全域。图1展示了这11个

  安全域与密码模块设计技术框架的关联关系。图1中对于不同类型的密码模块,其边界划定和内部的

  组件可能不同。比如软件密码模块的边界不包括操作系统和物理边线。

  2

  GM/T0134—2024

  图1 密码模块设计技术框架

  6.2 密码模块需求分析

  6.2.1 功能需求分析

  密码模块的设计者需要根据密码模块调用者的需求,根据GM/T0028—2024的附录C选取相应

  的安全功能。为了降低密码模块自身由于安全漏洞所导致的安全风险,密码模块的安全功能宜尽量精

  简,只包括必要的安全功能。

  6.2.2 安全需求分析和安全等级选取

  在选取密码模块所达到的安全等级时,需要考虑2个部分内容。

  a) 调用密码模块实体的应用需求:包括调用密码模块实体所需要的安全功能以及所保护信息资

  产的重要程度。它直接影响了密码模块的安全等级要求,以及对于密码模块的功能设计。

  b) 密码模块所处的外部环境:主要指外部环境提供的防护能力。外部环境的防护能力越低,环境

  中存在的安全风险就越高;而防护能力越高,则安全风险也会随之降低。它直接影响了密码模

  块的安全等级要求,以及对于密码模块的功能设计。

  6.3 安全域选取

  按照GM/T0028—2024中[02.04]、[02.05]和[02.06]的要求,不同密码模块类型的安全域选取见

  表1。

  表1 不同密码模块类型的安全域选取

  安全域(1)密码

  模块规格

  (2)密码

  模块接口

  (3)角色、

  服务和

  鉴别

  (4)软件/

  固件安全

  (5)运行

  环境

  (6)物理

  安全

  (7)非入

  侵式安全

  (8)敏感

  安全参数

  管理

  (9)自

  测试

  (10)生命

  周期保障

  (11)对其

  他攻击的

  缓解

  硬件密码

  模块√ √ √ √- √# √ √ √ √ √ 可选

  3

  GM/T0134—2024

  表1 不同密码模块类型的安全域选取(续)

  安全域(1)密码

  模块规格

  (2)密码

  模块接口

  (3)角色、

  服务和

  鉴别

  (4)软件/

  固件安全

  (5)运行

  环境

  (6)物理

  安全

  (7)非入

  侵式安全

  (8)敏感

  安全参数

  管理

  (9)自

  测试

  (10)生命

  周期保障

  (11)对其

  他攻击的

  缓解

  软件密码

  模块√ √ √ √ √ 可选√* √ √ √ 可选

  固件密码

  模块√ √ √ √ √# √ √ √ √ √ 可选

  混合软件

  密码模块√ √ √ √ √# √ √ √ √ √ 可选

  混合固件

  密码模块√ √ √ √ √# √ √ √ √ √ 可选

  注1:“√”指适用的安全域。

  注2:“-”指完全由硬件实现的密码模块不需选取“(4)软件/固件安全”。

  注3:“*”指提供对计时攻击的缓解措施对软件密码模块的安全设计是十分重要的。

  注4:“#”指如果密码模块物理安全域达到了安全二级及以上,且运行环境为受限或不可修改的,“(5)运行环境”

  无额外要求。

  6.4 密码模块设计详细技术

  6.4.1 设计流程

  密码模块在进行设计时,宜遵循以下过程进行。

  a) 边界划分和边界隔离机制设计:根据密码模块的需求分析,确定密码模块的密码边界,并根据

  不同的模块类型,设计和实现相应的物理/逻辑边界隔离机制。

  b) 接口设计:根据密码模块的需求分析,确定在物理/逻辑边界隔离机制上建立对外服务的物理

  端口或逻辑接口。

  c) 角色、服务、鉴别设计:根据密码模块的需求分析,确定密码模块对外提供的服务类型及其所使

  用的接口,同时确定哪些授权角色可以访问该服务,并确定每一个角色的鉴别方式。

  d) 软件/固件设计:根据密码模块的功能,设计和实现密码模块的软件/固件,以确保其可以完成

  相应功能。

  e) 敏感安全参数管理设计:根据密码模块安全功能所涉及的各类敏感安全参数,设计和实现全生

  命周期的保护措施。

  f) 非入侵式安全/其他攻击缓解设计:分析攻击者从正常接口或从边界外收集信息,从而非授权

  获取密码模块敏感安全参数的风险,设计和实现非入侵式攻击的缓解措施;此外,可以设计和

  实现针对GM/T0028—2024未考虑到、未来可能出现的新型攻击的缓解措施。

  g) 自测试设计:在密码模块的运行前和运行时两个阶段进行自测试,保证密码模块持续运行在无

  故障的状态之下。

  h) 过程和质量控制设计:部署必要的过程和质量控制手段,确保以上所有设计在生产过程中的正

  确实现。

  6.4.2~6.4.8中的每个设计过程均根据上述设计流程进行设计。

  4

  GM/T0134—2024

  6.4.2 边界划分和边界隔离机制设计

  需要在“(1)密码模块规格”中明确说明密码模块所实现的安全功能、划定密码边界。同时根据“(5)

  运行环境”和“(6)物理安全”的安全要求,设计出密码模块的密码边界隔离机制,有效地从物理或逻辑上

  将密码模块内部和外部进行区分,使得密码模块与外部的所有交互都通过密码模块接口,确保密码模块

  与外部的所有正常交互都通过已定义的、明确的接口来完成。

  对于硬件模块,需要按照“(6)物理安全”的要求,在模块的物理边界上设计完善的物理隔离机制,硬

  件密码模块也可以包括软/固件组件,但由于软/固件组件完全包含在物理边界内部,因此一般不需要额

  外设计逻辑隔离机制。如果模块提供的物理隔离机制较弱,仅能满足“(6)物理安全”安全域的一级要

  求,那么则需要满足“(5)运行环境”中可修改运行环境的操作系统要求的安全一级要求,采用额外机制,

  例如还需配合模块内部的操作系统所提供的逻辑隔离机制,对模块的边界进行有效隔离。

  对于软件模块,需要按照“(5)运行环境”中的可修改的运行环境要求,设计逻辑边界隔离机制。

  对于固件模块,则需要按照“(6)物理安全”,在模块的物理边界上设计完善的物理隔离机制;若物理

  安全等级为一级,则还需要按照“(5)运行环境”中的可修改的运行环境要求,设计逻辑边界隔离机制。

  对于混合软件模块,它的硬件组件和软件组件的边界是分离的,即软件组件不包含在硬件组件的物

  理边界内部;因此需要针对硬件组件和软件组件分别设计边界隔离机制。

  对于混合固件模块,它的硬件组件和固件组件的边界是分离的,即固件组件不包含在硬件组件的物

  理边界内部;因此需要针对硬件组件和固件组件分别设计边界隔离机制。

  6.4.3 接口设计

  “(2)密码模块接口”规定了在边界上的、所有的各种不同类型的输入/输出接口,由此来实现密码模

  块核准的安全功能。接口设计的原则包括:

  ———密码模块与外部的所有正常交互都通过接口来完成;

  ———接口可以是物理端口和/或逻辑接口;

  ———接口是有限的,密码模块需要声明所有的物理端口和逻辑接口,并根据“(2)密码模块接口”的

  要求设计接口,同时关闭所有不必要的接口。

  6.4.4 角色、服务和鉴别设计

  “(3)角色、服务和鉴别”是对正常接口所提供的安全功能的使用控制,阻止外部对安全功能的非授

  权访问。角色、服务和鉴别的安全要求,是对通过接口提供的密码服务的使用控制,只有当接口是有限

  且明确时,才能够保证鉴别机制不会被绕过。

  在设计角色时,需要根据密码模块自身的安全需求,设计不同的权限分配不同的角色。密码主管是

  必须的。角色可以是个人、进程、应用的实体。

  除了安全一级外,需要为所有角色设计鉴别方式。

  在设计服务时,需要考虑以下内容:

  ———通过哪个接口对外提供服务;

  ———哪个授权角色能够使用该服务;

  ———该服务与哪些敏感安全参数相关,以及该服务对敏感安全参数有哪些影响(敏感安全参数会通

  过该服务进行增加、删除或者修改)。

  6.4.5 软件/固件设计

  “(4)软件/固件安全”主要是为了实现密码模块内部的软件/固件的完整性保护,保证在安装前和运

  行前,密码模块自身功能没有被恶意修改或替换。

  5

  GM/T0134—2024

  “(9)自测试”主要是确保密码模块自身功能没有发生故障,是一项运行前和运行时的安全措施。

  “(4)软件/固件安全”和“(9)自测试”分别从安装部署、运行前、运行时的角度,确保密码模块实现的

  安全功能源自于密码模块的设计者,且不会失效或被修改。

  6.4.6 敏感安全参数管理设计

  “(8)敏感安全参数管理”主要是保护用于安全功能的密钥、随机数以及其他敏感安全参数在生成、

  建立、存储、置零和输入/输出过程中的安全,避免非授权的访问、使用、泄露、修改和替换。

  在设计时,需要逐个列出所有的敏感安全参数,并从生成开始、直到置零,详细梳理敏感安全参数的

  状态和保护措施,并与“(8)敏感安全参数管理”进行对照,确保满足相关的要求。

  6.4.7 非入侵式安全/其他攻击缓解设计

  “(7)非入侵式安全”考虑了攻击者从正常接口或者在边界之外收集可利用信息、分析获得密钥、随

  机数,以及其他关键安全参数的侧信道攻击。

  “(11)对其他攻击的缓解”,是对GM/T0028—2024未考虑到、未来可能出现的新型攻击的缓解

  手段。

  6.4.8 过程和质量控制设计

  “(10)生命周期保障”规定了密码模块全生命周期保障的相关内容,涉及过程控制和质量控制,保证

  密码模块在设计、开发、测试、配送、操作的全生命周期内与目标方案的一致性,以满足预期的安全要求。

  7 密码模块规格

  7.1 用作接口的部件与密码边界的关系

  7.1.1 相关安全条款

  当对硬件密码模块的密码边界划界时,根据GM/T0028—2024中7.2.3.2的[02.15]进行安全

  设计。

  7.1.2 设计指导

  硬件密码模块的密码边界规定为硬件边线,至少包含密码模块内所有安全相关的硬件部件。“用作

  接口的部件”是密码模块的物理端口,这些端口是出入密码边界的入口和出口。密码模块的物理端口形

  式多样,从简单的引脚或接插件,到具有IC、实现复杂计算功能的装置或设备(如密码键盘、指纹传感

  器、摄像头),其物理结构和功能原理各不相同。在确定用作接口的部件是否划入密码边界时,考虑以下

  因素:

  ———排除该部件时,密码模块是否仍具有连续的硬件边线;

  ———排除该部件时,新密码边界上是否具有密码模块提供的服务所必需的出入口;

  ———该部件是否与密码功能相关,其实现是否会干扰或破坏密码模块的安全运行;

  ———排除或包含该部件时,是否与其他现行标准存在兼容性问题。

  当一个部件被排除在密码边界之外时,密码模块仍具有连续的硬件边线、新密码边界上仍具有服务

  所需的出入口、不会影响到密码模块的安全运行,那么这个部件划在密码边界外部;否则,这个部件划入

  密码边界内部。

  示例1:

  考虑USB智能密码钥匙的USB接口:当从密码模块中排除USB接口时,密码模块缺少出入密码边界的主要物理端

  6

  GM/T0134—2024

  口;且排除USB接口后,向“外”暴露出的电路或引脚与智能密码钥匙外壳不构成连续的硬件边线。因此USB智能密码

  钥匙的USB接口划入密码边界内部。

  示例2:

  考虑蓝牙IC卡中的蓝牙模组:当从密码模块中排除蓝牙模组时,新密码边界上缺少通过蓝牙访问密码服务所需的

  出入口(即蓝牙通信接口)。因此,如果蓝牙IC卡密码模块提供了通过蓝牙访问密码功能的服务,则蓝牙模组划入密码

  边界内部。

  示例3:

  考虑密码设备机箱外部连接的IC卡读卡器:当从密码模块中排除IC卡读卡器时,机箱外壳仍具有连续的硬件边

  线;新的密码边界上,仍具有访问密码服务所需的出入口;IC卡读卡器的实现也不会影响密码设备的安全运行时,IC卡

  读卡器划到密码边界外部。

  7.2 密码模块的密码边界

  7.2.1 相关安全条款

  不同类型的密码模块,其密码边界有所差异,依据GM/T0028—2024中7.2.3.2的[02.15]、[02.16]、

  [02.17]、[02.18]进行安全设计。

  7.2.2 设计指导

  对于密码边界的问题,按照如下进行设计:

  硬件密码模块的密码边界:硬件模块包含物理硬件及必要的固件、操作系统和软件。硬件密码模块

  的密码边界如为产品机箱,则机箱内为密码边界内,所以设备内的主板、CPU、内存条、电源、密码卡、网

  卡、风扇、网口、串口、VGA 接口、USB接口和其他外设接口均在密码边界内。硬件模块密码边界为硬

  件边线。

  软件密码模块的密码边界:软件密码模块运行在可修改的运行环境中(硬件平台和操作系统),密码

  边界就是密码模块的软件实现本身,由一个或若干个软件部件组成。软件密码模块运行在具体的硬件

  平台和操作系统上,但具体的硬件平台和操作系统都不包括在软件密码模块的密码边界之内。

  固件密码模块的密码边界:固件密码模块运行在不可修改或受限的运行环境中(硬件平台和操作系

  统),密码边界就是固件本身。固件密码模块与具体的硬件平台和操作系统绑定,但具体的硬件平台和

  操作系统都不包括在固件密码模块的密码边界之内。

  混合密码模块包含硬件以及与硬件分离的软件或固件,当实现形式为分离的硬件和软件组件时,定

  义为混合软件密码模块;当实现形式为分离的硬件和固件组件时,定义为混合固件密码模块。

  一种典型的混合密码模块是软件部件及为软件部件提供密码运算的密码卡所构成的密码模块,其

  中密码卡执行核心的密码计算,而配套软件调用密码卡,两者共同完成安全功能,且硬件和软件的边界

  是分离的。密码卡和其内部运行的固件不是混合密码模块,因为密码卡的边界内包括了内部固件,两者

  的边界不是分离的。

  任何一种类型的模块都有物理边界、逻辑边界的概念,具体为:

  ———对于硬件密码模块,物理边界、逻辑边界和密码边界一般是重合的;

  ———对于固件密码模块,逻辑边界和密码边界一般是重合的;固件密码模块的物理边界是所绑定的

  硬件平台所构成的边线,对于固件密码模块,“物理安全”安全域是适用的,主要检查的是对应

  物理边界的物理安全机制;

  ———对于软件密码模块,逻辑边界和密码边界一般是重合的;软件密码模块的物理边界是所在的硬

  件平台所构成的边线,对于软件密码模块,“物理安全”安全域是可选的,主要检查的是对应物

  理边界的物理安全机制;

  ———对于混合密码模块,其硬件组件的物理边界、逻辑边界和密码边界一般是重合的;其软/固件组

  7

  GM/T0134—2024

  件的逻辑边界和密码边界一般是重合的,其软/固件组件的物理边界是所在的硬件平台所构成

  的边线。

  密码模块边界信息的梳理见附录A。

  7.3 密码模块名称和版本标识

  7.3.1 相关安全条款

  密码模块的名称和版本标识依据GM/T0028—2024中7.2.3.1的[02.11]、[02.12]进行安全设计。

  7.3.2 设计指导

  密码模块的名称和密码边界相匹配。

  商用密码产品认证目录中规定了若干产品种类及其适用的标准,宜在能够匹配的情况下尽可能让

  产品名称包含对应的产品类别,尽可能根据产品的特性增加关键性的描述,例如:密码机的名称宜明确

  为“服务器密码机”,可在密码模块名称中增加公司标识性名称,例如“**公司(公司名简称)服务器密

  码机”,若命名为“可信服务器密码机”,“可信”一词与可信计算产生关联,其超出了服务器密码机界定的

  范围,则不适用。

  密码模块的版本标识为每个密码模块元素的特定版本控制信息。版本数字宜包含足够级别,更新/

  升级/更改宜反映在新版本中。例如,如果发布版本是1.0、1.1和1.2,版本1则包含不够充足的内容信

  息。版本号也可以包含字母,例如,1.0a、1.0b和1.0c。版本号宜分段,并明确每个分段的含义。

  7.4 “核准的过程”的确定和梳理

  7.4.1 相关安全条款

  密码模块核准的过程依据GM/T0028—2024中7.2.1的[02.01]、7.2.4.1的[02.20]进行安全设计。

  7.4.2 设计指导

  核准的密码算法、安全功能或过程是视为密码模块的基本组成单元。GM/T0028—2024的附录C

  规定了核准的密码算法和安全功能;设计者宜按照以下原则梳理密码模块所涉及的“过程”,确保其是

  “核准的”。

  核准的过程指的是,二个或以上的核准的安全功能按照一定的规则组合执行所形成的序列,该序列

  中的安全功能之间可以穿插非安全功能的执行序列或操作员的操作序列。

  核准的过程可能包括以下三种情况。

  ———核准的过程完全由密码模块的核准安全功能组合形成。例如,在执行对数据同时进行机密性

  和完整性保护时,首先调用安全功能“分组密码”进行数据加密,然后调用安全功能“消息鉴别

  码”进行数据完整性保护,连续调用这两个安全功能所完成的序列被视为“数据保护”过程。

  ———核准的过程包括了非安全功能的执行序列,例如动态口令过程中需要对时间因子、事件因子、

  挑战因子进行操作和计算,还需要进行截位和取模计算,这些执行序列不属于安全功能,但是

  作为核准的过程的一部分。

  ———核准的过程包括了操作员的操作序列,例如进行密钥协商过程时,其中需要操作员(可能是人

  或进程)对密码模块进行多次调用;又例如,在使用按键型智能密码钥匙进行签名操作前,需要

  操作员通过物理实体按键进行确认。以上操作员的这些执行序列可以作为核准的过程的一

  部分。

  对于包括非安全功能的执行序列和操作员的操作序列的过程,密码模块厂商通过给出相应的证据

  说明这些序列不会影响该过程中其他核准安全功能的安全性。核准的过程不包括非核准的安全功能。

  8

  GM/T0134—2024

  7.5 工作模式

  7.5.1 相关安全条款

  密码模块的工作模式依据GM/T0028—2024中7.2.4.1的[02.19]、[02.20]和7.2.4.2的[02.23]进

  行安全设计。

  7.5.2 设计指导

  密码模块支持的工作模式宜按照下面的设计指导进行设计。

  密码模块工作时所能执行的服务、操作或功能,对外都称作服务;每个服务输入产生一个服务输出。

  “工作模式”则定义为这样一组服务的集合。

  首先,安全策略中宜描述密码模块支持的所有服务。依据具体的归类方法,从密码模块支持的所有

  服务的集合中,构造不同的子集作为不同的工作模式。特殊的,如果某个子集中不包含任何安全相关的

  服务、或安全相关的服务使用了非核准的安全功能,这一类子集统称为“非核准的工作模式”。

  当一个子集中至少有一个安全相关的服务且所有安全相关的服务只使用核准的安全功能时,这个

  子集就定义为一个“核准的工作模式”。从密码模块支持的所有服务的合集中构造子集的方法,由密码

  模块的设计者定义。通常根据密码模块的生命周期、可配置的工作模式、可适用的业务场景这些维度进

  行归纳,为密码模块定义一个或多个核准的工作模式。密码模块至少具有一个核准的工作模式。

  密码模块通过给出相应的状态指示来区分核准的和非核准的工作模式;且核准的和非核准的工作

  模式下,关键安全参数相互分离。密码模块不宜具有非核准的工作模式。

  7.6 密码模块状态指示方式的建议

  7.6.1 相关安全条款

  密码模块状态指示依据GM/T0028—2024中7.2.4.2的[02.24]进行安全设计。

  7.6.2 设计指导

  密码模块在核准的工作模式下的服务过程可能涉及多种状态指示,常见的状态指示方式列举如下。

  通过不同的状态指示方式区分核准的工作模式和非核准的工作模式,状态指示方式可通过状态指

  示灯或报文状态字呈现。

  示例1:

  硬件密码模块通过物理指示灯反应不同的状态。当密码模块工作在核准的工作模式时,亮绿灯;当密码模块工作在

  非核准的工作模式时,亮蓝灯;当密码模块工作在错误状态时,亮红灯。

  示例2:

  软件密码模块所提供的安全功能以API函数方式对外服务,每个API函数返回结果都能指示调用服务是否成功,

  以状态字或输出参数的方式反馈具体的状态信息。

  7.7 混合密码模块的密码边界和物理边线

  7.7.1 相关安全条款

  混合密码模块的密码边界依据GM/T0028—2024中7.2.3.2的[02.18]进行安全设计。

  7.7.2 设计指导

  混合密码模块的密码边界和物理边线具有其特殊性,宜按照下面的设计指导进行设计。

  混合密码模块依赖专用密码硬件(例如密码卡、密码芯片)实现密码功能,专用密码硬件是其组成的

  9

  GM/T0134—2024

  一部分。

  混合密码模块的密码边界内,至少包含硬件部件和位于硬件部件物理边线之外的软件或固件部件。

  混合密码模块中分离的两部分处于同一个运行环境中,或分别处于不同的运行环境中。

  通常,混合密码模块对外提供的密码服务主要通过软件或固件的逻辑接口实现,硬件部件只与密码

  模块的软件或固件交换敏感安全参数和控制信息。

  示例:

  计算机中运行的密码软件配合计算机主板上连接的密码卡,构成混合软件密码模块。密码模块中的硬件部件是密

  码卡,软件部件是运行在操作系统中的密码软件,它们同处于以计算机机箱为物理边线的运行环境中。

  7.8 混合密码模块内部部件之间的通信

  7.8.1 相关安全条款

  混合密码模块内部部件之间的通信依据GM/T0028—2024中7.2.3.2的[02.18]、7.9.5的[09.15]、

  [09.21]进行安全设计。

  7.8.2 设计指导

  在混合密码模块内部,分离的部件之间进行通信时,宜按照下面的设计指导进行设计。

  混合密码模块的密码边界由软件或固件部件与分离的硬件部件这两个不相交的部分构成,其中每

  个部件的端口和接口都是密码边界上的出入口。混合密码模块中的这两部分之间互相通信时,信息要

  经历从密码模块物理边界内部到外部,再进入密码模块物理边界内部的过程。

  在混合密码模块内部,软件或固件部件与分离的硬件部件之间若涉及交换敏感安全参数时,需要同

  时满足密码模块内部对敏感安全参数的保护要求,以及对敏感安全参数的输入和输出的安全要求。

  例如,混合软件密码模块的软件部件如果向其硬件部件传输敏感安全参数,敏感安全参数从软件部

  件的密码模块物理边界内部到外部的过程,视作敏感安全参数的输出;敏感安全参数从硬件部件的密码

  模块物理边界外部进入内部的过程,视作敏感安全参数的输入。

  8 密码模块接口

  8.1 可信信道

  8.1.1 相关安全条款

  密码模块的可信信道依据GM/T0028—2024中7.3.4的[03.16]、[03.17]、[03.18]、[03.19]进行安

  全设计。

  8.1.2 设计指导

  当三级及以上的密码模块输入或输出明文密钥分量、鉴别数据以及其他关键安全参数时,采用可信

  信道传输。如果密码模块的输入输出不包括未受保护的敏感信息,不必使用可信信道。可信信道一般

  用于无法使用密码技术进行安全保护的情况。

  可信信道使用密码模块定义的输入或输出端口,通过物理隔离或逻辑隔离的方式,防止在通信链路

  上的非授权修改、替换和泄露。

  物理隔离即可信信道使用的接口是独占的,在这种情况下,需要说明如何保证该信道的物理独占

  性。比如,密码机专门使用了一个IC卡读卡器接口用于密钥分量的导入,该物理端口不用于其他用途。

  逻辑隔离即可信信道使用的物理端口可以不是独占的。在这种情况下,需要说明该逻辑接口如何

  保证在执行可信信道功能时的物理独占性。比如,密码机为某个物理端口配备了专门的可信信道开关,

  10

  GM/T0134—2024

  开关开启时,该物理端口专门用于密钥明文分量的导入,开关关闭时,该物理端口可用于其他用途,但不

  再用于密钥分量的导入。

  8.2 常用的物理端口与逻辑接口的关系

  8.2.1 相关安全条款

  密码模块的接口依据GM/T0028—2024中7.3.3的[03.04]、[03.05]、[03.06]、[03.07]、[03.08]、

  [03.09]、[03.10]、[03.11]进行安全设计。

  8.2.2 设计指导

  常用的逻辑接口总共分为五大类,包括数据输入接口、数据输出接口、控制输入接口、控制输出接

  口、状态输出接口。

  常用的物理端口有网口、USB接口、开关、按钮、键盘、VGA 接口、状态显示灯、蜂鸣器和其他外设

  接口。

  物 理端口承载逻辑接口,多个逻辑接口可以复用一个物理端口,例如网口作为物理端口可承载数据

  输入、数据输出、控制输入、控制输出、状态输出逻辑接口功能。

  8.3 逻辑接口相互隔离的建议

  8.3.1 相关安全条款

  密码模块的逻辑接口依据GM/T0028—2024中7.3.1的[03.02]、7.3.3的[03.14]进行安全设计。

  8.3.2 设计指导

  当数据、控制和状态信息的输入输出共享一个物理端口时,应用程序接口可以设计为通过不同的接

  口函数传输数据、控制和状态信息。当需要在同一个接口函数中传输数据、控制和状态信息时,使用不

  同的参数字段以及返回值来对数据、控制和状态信息进行区分。

  示例1:

  GM/T0016中,获取智能密码钥匙设备状态接口定义如下:

  ULONGDEVAPISKF_GetDevState(LPSTRszDevName,ULONG *pulDevState)

  其中,函数名SKF_GetDevState为控制输入信息;参数szDevName是设备名称,是数据输入信息;参数pulDevState

  返回设备状态,是数据输出信息;函数的返回值是成功或失败,属于状态输出信息。

  示例2:

  GM/T0016中,智能密码钥匙生成ECC签名密钥对接口定义如下:

  ULONGDEVAPISKF_GenECCKeyPair(HCONTAINERhContainer,ULONGulAlgId,ECCPUBLICKEYBLOB

  *pBlob)

  其中,函数名SKF_GenECCKeyPair是控制输入信息;参数hContainer是密钥容器句柄,参数ulAlgId是算法标识,

  都属于数据输入信息;参数pBlob返回ECC公钥数据结构,是数据输出信息;函数的返回值是成功或失败,是状态输出

  信息。

  8.4 输入设备作为物理端口时的接口描述方式

  8.4.1 相关安全条款

  密码模块的输入设备作为物理端口时接口依据GM/T0028—2024中7.2.2的[02.03]进行安全

  设计。

  11

  GM/T0134—2024

  8.4.2 设计指导

  所有进出密码模块的逻辑信息流,都通过已定义的物理端口和逻辑接口传输,这些端口和接口是出

  入模块密码边界的入口和出口。密码模块逻辑接口是相互分离的,这些逻辑接口可以共享一个物理端

  口,或者逻辑接口也可以分布在一个或多个物理端口上。输入装置(例如POS密码应用系统的键盘)可

  以作为物理端口。如果该输入装置在密码边界内部,在描述密码产品的密码模块规格时,至少将一种逻

  辑接口映射到该输入装置。如果支持数据输入,则映射为数据输入接口;如果还支持控制信息触发,还

  可以映射为控制输入接口。

  除此之外,如果使用可插拔的外设作为输入设备(例如USB接口的读卡器),在描述密码产品的密

  码模块规格时,可将与之相连的接口(例如USB接口)描述为密码模块的物理端口,将可插拔的输入设

  备排除在硬件边线范围之外。相应地,根据产品的实际情况和GM/T0028—2024的要求设计物理端

  口与逻辑接口的映射关系。

  8.5 软件密码模块的物理端口

  8.5.1 相关安全条款

  软件密码模块的物理端口依据GM/T0028—2024中7.3.1的[03.01]进行安全设计。

  8.5.2 设计指导

  软件密码模块的物理端口可不予说明。

  9 角色、服务和鉴别

  9.1 对新角色的验证

  9.1.1 相关安全条款

  对新角色的验证依据GM/T0028—2024中7.4.1的[04.01]、7.4.4的[04.40]、[04.44]、[04.58]进

  行安全设计。

  9.1.2 设计指导

  安全一级密码模块可不支持鉴别;安全二级及以上的密码模块如果允许操作员变换角色,针对请求

  的新角色,根据密码模块支持的鉴别机制不同,宜按照下面的设计指导进行设计。

  如果允许操作员担任多个角色,那么操作员不在同一时间担任多个角色,且担任新角色时不再担任

  原角色。

  如果安全一级密码模块不支持鉴别机制,操作员隐式或显式地选择一个或多个角色;密码模块可不

  执行对角色的鉴别,但需要验证操作员能否担任该角色。例如,当密码模块未执行密码初始化时,操作

  员能请求担任密码主管角色,但不能担任用户角色。

  密码模块执行基于角色的鉴别,如果请求的新角色之前未被鉴别则每个请求的新角色都需要被鉴

  别,且密码模块需要验证操作员能否担任该角色。

  密码模块执行基于身份的鉴别,在操作员通过身份鉴别后,如果请求的新角色之前未被授权则对每

  个请求的新角色,密码模块需要验证经标识的操作员是否被授权担任该新角色,还需验证该操作员能否

  担任该新角色。

  12

  GM/T0134—2024

  9.2 无默认鉴别数据时的第一次访问鉴别

  9.2.1 相关安全条款

  无默认鉴别数据时的第一次访问鉴别依据GM/T0028—2024中7.4.4的[04.47]进行安全设计。

  9.2.2 设计指导

  第一次访问密码模块,是指密码模块每种角色的第一次访问。例如:密码模块出厂时只有管理员,

  管理员第一次访问密码模块时称为第一次访问;管理员创建了操作员和审计员,操作员和审计员第一次

  访问密码模块时也称为第一次访问。

  第一次访问密码模块时,如果密码模块不包含鉴别数据,则需要操作

下载地址

下载说明