密码模块学习笔记(GMT0039)

GMT 0039-2015《密码模块安全检测要求》

GMT 0039

GMT0039依据GMT0028的标准给出了进一步解释,从检测规程检测方法和对应的送检文档要求三个方面进行规定,适用对象和GMT0028一样是密码模块

AY对应表示安全要求,CY表示对送检单位文档的要求,JY标识对检测规程的方法和要求

通常,厂方提供三类图纸说明,一是整体的硬件拓扑图,展示边界(比如各物理接口)和内部各硬件部件以及部件之间的连接拓扑关系,二是物理构造图的图纸说明(即机械类图纸),并对物理结构参数(尺寸、材料等)及装配方式进行细节标注;三是电路原理图,如PCB电路设计原理图和布局图,用以说明硬件的电气特性。

本标准无“混合软件固件”的类型定义,即“硬件+软件+固件”的完整组合的划界方式是不支持的。GMT0028中对于密码边界的定义中同样没有三种混合的情况,只有软件加硬件和固件加硬件的组合。

GMT0028的附录C规定的安全功能包括:SM4、ZUC、SM2、SM3等,但是在实际测评中其它国密局批准的算法,如SM1、SSF33、SM7、SM9也应视为核准的密码算法,但国际算法不作为核准的算法(有例外)。

消息鉴别码没有GM行业标准,但有国标GB/T 15852,主要有3部分,分别是采用分组密码的机制(6种)、采用专用杂凑函数的机制(3种)、采用泛函杂凑函数的机制(4种)。目前使用得较多的是其中的CBC-MAC和HMAC,测评中如果是基于国密算法的这两种,则可直接下结论,其它情况则咨询国家密码管理局或商密认证中心。

关于逻辑接口和物理端口的逻辑关系,有三种情况:一对一的映射,逻辑接口通过物理端口天然分离、物理端口不复用,逻辑接口通过物理端口天然分离、存在物理端口复用的情形,需论证逻辑接口如何分离。

密码模块应当具备的5种接口数据输入接口数据输出接口控制输入接口控制输出接口状态输出接口。这些都不是特指。来自其它模块(即外部)的状态信息,对于本模块而言也是从数据输入接口输入的,因为本标准并未定义所谓“状态输入接口”,可能因为这里的状态仅仅指密码模块内部的状态信息,因此其他模块的状态对于此密码模块来说只是数据。

同一物理端口是可以同时定义为不同种类的接口的,比如同一物理端口既可作为数据输入,又可作为数据输出。但是,本标准要求逻辑接口必须按上述类型划分开,并论证相互分离。

存在无法具备“控制输出接口”定义的可能。建议目前的测评中,对于控制输出接口是否存在还是要根据实际情况判断

可信信道的用途是专用于密码模块和外部终端之间传输未受保护的明文CSP、密钥分量以及鉴别数据。

可信信道的物理端口必须专用,不能和其它物理端口混用。与此对比,其它的信道是可以共享物理端口的。并且可信信道的逻辑接口必须与其他逻辑接口隔离。一般而言,在API、命令设计层面,可通过专用的接口、命令、报文等设计来将可信信道的逻辑接口其它逻辑接口区分隔离。

基于身份的多因素鉴别应当用于所有使用可信信道的服务。所谓的多因素,是指使用两种不同类型的鉴别方法,来最终完成对操作员身份的识别。鉴别方法一般为三大类型:即采用你知道的(如口令)、采用你拥有的(如USBKey)和采用你自身所有的(如生物特征)。

任何外部操作员调用的、由密码模块执行的操作和/或功能,均可称为服务
GMT0028中的五类服务:显示模块版本号、显示状态、执行自测试、执行核准的安全功能、执行置零。除了规定的五类外,还可以提供其他服务。另外三种能力是可选的:旁路能力、自启动密码服务能力、软件/固件加载能力

要区分的概念
操作员是指:授权担任一个或多个角色的个体或代表个体操作的进程(主体)。
用户是指:访问密码模块以获取密码服务的个体或代表个体运行的进程(主体)所担任的角色。
角色是指:与用户关联的安全属性,它定义了对密码模块服务的访问权限。
当操作员以所担任的角色访问密码模块,以获取服务时,即称为用户。

基于角色的鉴别:鉴别粒度为角色,即当前的操作员所担任的角色(密码主管角色、用户角色、维护角色),不要求鉴别到操作员个体身份
基于身份的鉴别:鉴别粒度为操作员身份,即张三、李四、王五、赵六…,还需识别该操作员允许担任哪个(些)角色

如果密码模块支持多个操作员同时操作,那么模块内部应当确保各个操作员担任的角色相隔离及相应的服务相隔离。
由于密码模块的访问控制主要是基于角色来区分的,所以多个操作员同时操作的隔离场景通常是多个不同角色的操作员同时操作密码模块,由于不同角色所对应权限是不同的,因此需要对此进行隔离,以防止不同角色的操作员可以访问到其不具有权限的服务。
“同时操作”一般可理解为同时向两个不同角色的操作员开放服务。例如,管理员角色操作员和用户角色操作员同一时刻发起服务请求,密码模块会否由于未作好隔离,产生混乱,将用户角色本不具备权限的请求也误认为是管理员请求而予以执行。

送检单位的文档还应描述对多个操作员的限制(例如,不允许一个操作员既是维护员角色又是用户角色)。

密码模块应当对旁路能力的激活情况进行状态显示,以指示该能力是“完全未被激活”、“完全被激活(所有的服务均绕开密码功能)”还是“部分被激活(有的服务使用了密码功能,有的服务绕开了密码功能)”

如果密码模块支持自启动密码服务能力,送检单位的文档中应说明该功能只能由密码主管配置,在模块重置、重启或开关电源之后可以保留下来。在某些场景下,自启动密码服务能力意味着“更安全”的能力,一旦配置,无需操作员操作即可自启动密码功能,比如自动加密。而这种能力一旦开启,则不应通过模块重置、重启或开关电源等操作被关闭,否则攻击者就可利用这样的弱点予以关闭。

新软件/或固件的加载是镜像的完全更替,意味着原先密码模块内的软件/固件被完全替换掉,此时密码模块的软件或固件就构成了一个全新的模块。该全新模块是需要由审验机构重新审验的。

对于实现了“基于角色的鉴别”机制的密码模块,是以角色为对象(而非以操作员个体身份为对象)来进行鉴别的,密码模块应当要求操作员隐式或显式地选择一个角色或多个角色的集合,然后采用基于角色的鉴别机制来鉴别这些角色。“基于角色的鉴别”机制是要求安全级别2的密码模块至少应该采用的机制(当然安全级别2级的密码模块也可采用更高要求的“基于身份的鉴别”机制)。对于安全级别1的密码模块则允许不采用任何鉴别机制。
显式的:即明确表明某个角色,比如密码主管、用户角色等
隐式的:间接地指代某个角色,比如AAA指代密码主管(设备认证后变为密码主管)

三个条款合在一起构成了“基于身份的鉴别”的基本要求。“基于身份的鉴别”是要求安全级别3和4的密码模块必须采用的机制,其它两个级别则可选采用或不采用。根据本条要求,送检文档一般需要覆盖以下内容描述:(1)是否实现了基于身份的鉴别机制,哪些操作员采用了该机制;(2)对基于身份的鉴别机制的实现流程进行描述;(3)操作员个体和角色之间的对应关系,以及密码模块对操作员个体身份鉴别成功或失败后的处理方式。

送检单位的文档中应说明密码模块支持的每个核准的鉴别机制,及鉴别强度。
送检产品如果采用8位数字PIN码,可认为强度是10^8。
核准的鉴别机制均是基于密码学构建的机制,所以主要可考虑穷举攻击、中间人攻击、重放攻击等协议层面攻击的方式。

在尝试鉴别的过程中,提供给操作员的反馈信息应当防止削弱鉴别机制的强度。
送检单位文档中应说明,在操作员输入鉴别数据时使用的反馈机制。
分析鉴别过程中,操作员能获得哪些反馈信息,这些信息如何反馈给操作员,从而检测人员分析是否该反馈机制会导致鉴别强度的削弱。比如,在基于“挑战-应答”的鉴别机制中,如果反馈的信息是随机数、密文等协议中规定可暴露在通信信道上的信息,那么这些信息的暴露往往并不会削弱鉴别机制的强度。

应当确保操作员无法通过HMI、SFMI、HFMI或HSMI接口的服务或控制设置,启动或执行调试技术。
条款要求密码模块进入应用阶段后,操作员不能通过密码模块的服务或控制设置启动(激活)或执行调试技术。调试技术是在软件和固件开发阶段通常被使用的技术,以方便开发者定位代码设计实现中的问题。调试技术往往可以绕过密码模块标准的功能,获取内部执行过程数据和状态,如果被攻击者使用,有可能对密码模块造成安全风险。送检文档应提供操作员通过HMI、SFMI、HFMI或HSMI接口获取的服务说明,以提供检测人员检查这些服务无法启动或执行调试技术。

运行环境是指对模块运行所需的软件、固件、和/或硬件的管理。
软件、固件或混合模块的运行环境至少包括模块部件、计算平台、以及控制或允许软件或固件在计算平台上运行的操作系统。
硬件模块内部构成的运行环境可以包含支持模块内部软件或固件运行的操作系统。
操作系统可以包含虚拟机(系统和/或进程)和运行时环境(例如,Java运行时环境——JRE)。

通用运行环境是指使用商用的通用操作系统(即资源管理器)来管理软件和固件部件,以及管理系统和操作员进程(线程),其中包括了通用的应用程序软件,如文字处理器等。

运行环境可以是不可修改的、受限制的或可修改的。
对于可修改的运行环境,在运行环境内可以添加或修改功能。这些添加或者被修改的功能可能会干扰密码模块的运行,除非运行环境禁止这样的干扰。
固件在本标准中是指在不可修改或受限制的环境下执行的代码。
软件在本标准中是指在可修改的环境下执行的代码。

访问控制,是指主体依据某些控制策略或权限对客体本身或是其资源进行的不同授权访问。
基本原理是,系统资源的访问权限存放在控制策略数据库中,通过一个参考监视器监视用户对系统资源访问的行为,依据访问控制策略数据库的规则,确定是否允许访问操作

自主访问控制模型(DAC Model),确认主体身份及所属组的基础上,根据访问者的身份和授权来决定访问模式,对访问进行限定。具有授权某种访问权力的主体能够自己决定是否将访问控制权限的某个子集授予其他的主体或者从其他主体那里回收他所授予的访问权限。

强制访问控制模型(MAC Model),为主体和客体统一设定安全标签,根据访问者的安全等级和被访问客体的安全等级来决定访问控制。系统安全管理员统一对主体和客体的安全标签赋值,普通用户不能改变。可以提供严格的访问控制策略保障。
主体对客体的访问主要有4种方式:
向下读(rd),主体安全级别高于客体信息资源的安全级别时允许查阅的读操作;
向上读(ru),主体安全级别低于客体信息资源的安全级别时允许的读操作;
向下写(wd),主体安全级别高于客体信息资源的安全级别时允许执行的动作或是写操作;
向上写(wu),主体安全级别低于客体信息资源的安全级别时允许执行的动作或是写操作
三种模型:Bell-LaPadula (BLP) 模型、BiBa模型、DTE模型
BLP,按照“不上读,不下写”的原则,侧重于信息的保密性;即低级别不能读取高级别的数据,高级别不能修改低级别的数据。
BiBa,按照“不下读,不上写”的原则,侧重于信息的完整性;即低级别不能修改高级别的数据,高级别不能读取低级别的数据。

基于角色访问控制(RBAC Model),管理员创建角色,给角色分配权限,给角色分配用户,角色所属的用户可以执行相应的权限。RBAC实现了用户和权限的分离,具有支持权限的继承,与实际应用密切关联等特点。
模型 特点 含义 案例
自主访问控制 自主控制 由资源的创建者(用户)管理访问权限,并允许权限传递 Linux;各自C端应用,用户自己控制自己的内容是否可见
强制访问控制 基于标签 集中式管理访问权限,对全部数据打上标签 政府系统,所有数据和人都有明确的机密等级
基于角色的访问控制 基于角色 管理员通过角色实现用户权限的管理 公司内部系统,管理员设计角色,并将用户分配到角色

用户组是用户的集合,但不是权限的集合;而角色却同时具有用户集合和权限集合的概念,角色的作用把这两个集合联系在一起的中间媒介。

送检单位文档中关于“运行环境”的章节应该覆盖GM/T 0028-2014附录A.2.6中规定的提纲条目:密码模块运行环境的说明,包括模块所使用的操作系统;配置运行环境的安全规则、设置和现在条件的说明;配置操作系统符合相应要求的管理员指南文档。

安全审计是一种通过事后追查增强系统安全性的安全技术,它要求对涉及系统安全的操作做完整记录,并对这些记录进行必要的分析,并把这些分析结果按预定方式通知给系统管理员用户。

敏感安全参数(SSP)包括关键安全参数(CSP)和公开安全参数(PSP)。其中CSP是指与安全相关的秘密信息,这些信息被泄露或被修改后会危机密码模块的安全性。CSP可以是明文形式的也可以是经过加密的。PSP是指与安全相关的公开信息,一旦被修改,会威胁到密码模块安全。
CSP需要同时满足机密性和完整性要求,而PSP只需满足完整性要求。

熵源必须满足机密性和完整性要求,作为CSP来传输,从外部向密码模块内部传输熵源数据时,需要通过可信信道。
如果熵从内部收集,送检单位的文档中应描述随机比特的产生原理。
如果熵是从模块密码边界外部收集的,送检单位提交的文档中应说明使用该熵作为输入所生成的数据流被视为CSP。
无论熵从密码边界内部还是外部收集,送检单位的文档中应说明对于任何一个CSP,其最小熵值不小于256比特。

密评题库
ABCD
1848判断题根据GM/T 0041《智能IC卡密码检测规范》,智能IC卡安全性测试项目应遵照GM/T 0039《密码模块安全检测要求》。正确错误
2236判断题根据GM/T 0046《金融数据密码机检测规范》,金融数据密码机设备安全性测试应遵照GM/T 0039《密码模块安全检测要求》。正确错误
2381判断题在GM/T 0123 《时间戳服务器密码检测规范》中,时间戳服务器安全性检测应符合GM/T 0039《密码模块安全检测要求》的规定。正确错误
3102单项选择题根据GM/T 0039《密码模块安全检测要求》,关于密码模块逻辑接口描述不正确的是( )。密码模块逻辑接口应当是相互分离的输入数据和输出数据可以共享同一个物理端口逻辑接口可以分布在一个或多个物理端口上输入数据和输出数据不可以使用同一个物理端口
3103单项选择题根据GM/T 0039《密码模块安全检测要求》,送检单位的密码模块应包括()密码主管角色。一个两个至少一个至少两个

参考答案:A、A、A、D、C

ABCD
3104判断题根据GM/T 0039《密码模块安全检测要求》,如果密码模块支持基于角色的鉴别机制,那么模块应当要求操作员隐式或显式地选择一个或多个角色。正确错误
3105单项选择题根据GM/T 0039《密码模块安全检测要求》,每一个密码模块的实例应当能够()自己的SSP。分享和修改分享和支配控制和修改控制和支配
3106单项选择题根据GM/T 0039《密码模块安全检测要求》,针对多芯片嵌入式密码模块,以下属于安全二、三级密码模块要求的是()。拆卸响应置零电路拆卸存迹拆卸检测封套
3107单项选择题根据GM/T 0039《密码模块安全检测要求》,如果熵是从模块密码边界外部收集的,那么使用该熵作为输入所生成的数据流应当被视为()。CSPSSPPSPESP
3108单项选择题根据GM/T 0039《密码模块安全检测要求》,以下关于可信信道,说法错误的是()。可信信道使用的物理端口应当与其他物理端口实现物理隔离可信信道应当采用 SSL协议,用于在密码模块与发送者或接受者终端之间传输数据可信信道使用的逻辑接口应当与其他逻辑接口实现逻辑隔离基于身份的鉴别应当用于所有使用可信信道的服务
3109单项选择题根据GM/T 0039《密码模块安全检测要求》,以下关于敏感安全参数( SSP) , 说法正确的是()。SSP被置零后可以从模块中恢复和重用密码模块应当对受保护的SSP执行置零模块应当在SSP置零完成时提供输出状态指示应当禁止授权操作员修改SSP
3110多项选择题根据GM/T 0039 《密码模块安全检测要求》,检测机构可以以下面一个或多个方式对密码模块的安全性进行测试()。检测人员使用检测机构的设备进行测试检测人员使用送检单位的设备进行测试送检单位的检测人员使用检测机构的设备进行测试检测人员监督送检单位使用送检单位的设备进行测试
3111多项选择题根据GM/T 0039 《密码模块安全检测要求》,密码模块除数据输入、输出接口外,还应当具备下列接口()。控制输入接口状态输出接口状态输入接口控制输出接口

参考答案:A、D、C、A、B、C、ABD、ABD

( SSP:敏感关键参数;CSP:关键安全参数 ;PSP:公开安全参数 ;)

(关于安全二、三级密码模块:P49 应当使用拆卸存迹的涂层或灌封材料(例如:耐腐蚀涂层或防渗透涂料)把模块部件覆盖起来,以阻止直接观察,并提供企图拆卸或移动模块部件的证据。)

(P18 可信信道使用的物理端口应当与其他物理端口实现物理隔离。可信信道使用的逻辑接口应当与其他逻辑接口实现逻辑隔离。基于身份的鉴别应当用于所有使用可信信道的服务。)

(P65 ssp被置零之后应当无法从模块中恢复和重用。密码模块应当对未受保护的 ssp执行置零(例如,使用全 0或全 1或随机数据覆盖)。模块应当在置零完成时提供输出状态指示。)

(P12 密码模块应当具备下列 5种接口("输入"和 "输出"是相对于模块而言的):— 数据输入接口;— 数据输出接口;— 控制输入接口;— 控制输出接口;— 状态输出接口。)

ABCD
3112多项选择题根据GM/T 0039《密码模块安全检测要求》,密码模块应当采用物理安全机制以限制对模块内容的非授权物理访问,并阻止对已安装模块的非授权使用或修改,检测人员应核实模块()的物理安全保护机制。硬件软件固件数据
3113多项选择题根据GM/T 0039《密码模块安全检测要求》,对于二级及以上的多芯片独立式密码模块,如果其外壳含有任何门或封盖,则下列保护机制中可行的是()。带有物理或逻辑钥匙的防撬机械锁存迹胶带全息封条防尘网
3114多项选择题根据GM/T 0039《密码模块安全检测要求》,所有进出密码模块的逻辑信息流,都应当仅通过已定义的物理端口和逻辑接口。送检文档中应通过( )说明密码模块的信息流和物理接入点。框图设计规格源代码原理图
3115多项选择题根据GM/T 0039 《密码模块安全检测要求》,关于密码模块的工作模式说法正确的是()。操作员应当能够在核准的工作模式下操作模块核准的工作模式应当定义为一组服务的集合,其中至少有一个服务使用了核准的密码算法、安全功能或过程核准的和非核准的服务和工作模式的 CSP应当相互分离非核准的密码算法或非核准的密钥生成方式可能被用来混淆数据或CSP,但是结果被视为未受保护的明文,且只能提供非安全相关功能
3116多项选择题根据GM/T 0039《密码模块安全检测要求》,关于非入侵式安全,以下属于安全三级密码模块要求的是()。如果有相应措施,文档应当包括可以证明每个缓解技术有效性的证据密码模块应当实现用于保护CSP免受 GM/T 0028附录F中的所有非入侵式攻击的缓解技术密码模块应当接受测试以满足核准的非入侵式攻击缓解测试指标的要求文档应当包括可以证明每个环节技术有效性的证据,并提供测试方法

参考答案:ABCD、ABC、ABCD、ABCD、ABD、

(P42 CY07 . 01 . 01 :送检文档中应描述模块使用的、适用的物理安全机制,模块中所有的硬件、软件、固件 及数据(包括未经加密的加密密钥和未经加密的 CSP)均应受到保护。)

(P11 CY03 . 01 . 02 :送检单位文档中应通过 GM/T0028 ___2014 附录 A. 2 . 2和附录 B. 2 . 2要求提供的框图、设计规格、源代码以及原理图,说明密码模块的信息流和物理接人点)

(3316(P58)6.8非侵入式安全:A选项: AY08.5:(安全级别1,2,3,4)B选项: AY08.2:(安全级别1,2,3,4)C选项: AY08.8:(安全级别4)D选项: AY08.7:(安全级别3))

AB
3117判断题根据密码模块相关标准,在密码模块中,用户角色应当负责执行密码初始化或管理功能,以及常用的安全服务。正确错误
3118判断题根据密码模块相关标准,密码模块鉴别操作员仅可采用对称加密算法或数字签名技术的鉴别机制。正确错误
3119判断题根据密码模块相关标准,用于核准的工作模式的非安全相关的算法、安全功能、过程和部件的实现应当不干扰或破坏密码模块核准的工作模式的运行。正确错误
3120判断题根据密码模块相关标准,检测人员应核实当密码模块处于错误状态时,应当禁止通过“状态输出”接口输出当前状态。正确错误
3121判断题根据密码模块相关标准,置零可以使用一个未受保护的SSP来覆盖另一个未受保护的SSP。正确错误
3122判断题根据密码模块相关标准,手动输入条件测试可以采用两种方式之一:错误检测码或两次重复密钥录入。正确错误
3123判断题根据密码模块相关标准,对于密码模块的每一个物理或逻辑的输入,以及物理或逻辑的输出,材料中应明确逻辑接口所对应的物理输入或输出。正确错误
3124判断题根据密码模块相关标准,如果密码模块支持核准和非核准的工作模式,密码模块的安全策略文档中应为模块所包括的核准的工作模式定义完整的服务集合,不需要为非核准的工作模式定义服务集合。正确错误
3125判断题根据密码模块相关标准,当进入或退出维护员角色时,所有SSP应当被置零。正确错误

参考答案:B、B、A、B、B、A、A、B、B

ABCD
3126判断题根据密码模块相关标准,对于安全一、二级的软件模块或混合软件模块的软件部件,CSP、密钥分量和鉴别数据可以以加密或明文的形式输入或输出运行环境。正确错误
3127判断题根据密码模块相关标准,密码模块应当按照各个域的要求进行测试。密码模块的整体安全级别为各个域中评估安全级别的最高等级。正确错误
3128多项选择题根据GM/T 0039 《密码模块安全检测要求》,关于密码模块物理安全描述正确的是()。安全二级增加了拆卸存迹机制的要 求,以及确保无法对模块关键区域的内部操作收集信息的要求安全三级增加了使用坚固或硬质的保形或不保形外壳的要求,要求外壳的封盖和门具有拆卸检测和响应机制,并且要求抵抗通过开口或入口的直接探测安全四级要求具备环境失效保护(EFP),以防止错误注入攻击当密码模块被设计成允许物理访问 时,需要为维护访问接口规定安全要求。拆卸检测和拆卸响应可以代替显式的拆卸证据
3129单项选择题根据GM/T 0039《密码模块安全检测要求》,以下不属于常见的错误注入技术的为( )。电压辐射拆除外壳时钟

参考答案:B、B、ABC、C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值