密码模块分级检测申请材料 编写说明
- 前言
- 材料编写说明
- 总体说明
- 密码模块规格
- 密码模块接口
- 角色、服务与鉴别
- 软件/固件安全
- 运行环境
- 物理安全
- 非入侵式安全
- 敏感安全参数管理
- 自测试
- 生命周期保障
前言
目前商密认证的企业集中反馈问题比较多的是密码模块分级检测申请材料的编写。里面抽象的概念和送检产品本身如何对应,如何回答材料中的安全要求,甚至如何对产品分类等等。这些问题确实是我们面对的第一道关口,关系后面整体材料的方向。受限于时间和精力,这篇文档不可能面面俱到,我们只能简单分析出问题比较多的点。后续我会定期更新同类型的产品所对应的密码模块要求,以及各类产品涉及的规范要求。如有商密认证问题或需要可站内留言或联系微信号15011462285。
材料编写说明
总体说明
商用密码产品认证,在提交认证申请时,首先要同步提交密码模块分级检测材料。该材料立足于GM/T 0028-2014《密码模块安全技术要求》和GM/T 0039-2015《密码模块安全检测要求》。由于这两个规范里面都是抽象的概念,对于初次编写这个材料的人来说存在一定的困难。
本文的目的是为初次编写《密码模块分级检测申请材料》的人提供基本的入门指引。虽不能对每种类型的产品都能具体举例,但编写文档时用到基本的概念、编写思路和关键点会重点介绍。
总体而言,《密码模块分级检测申请材料》编写者需将送检产品与GM/T 0028和GM/T 0039对应,从密码规格、接口、角色服务与鉴别、软件固件安全、运行环境、物理安全、非入侵式安全、敏感安全参数管理、自测试、生命周期保障、对其他攻击的缓解等共11个域分析产品情况,是否满足密码模块相关等级的安全要求。
密码模块的整体评级为11个域中对应的最低评级。因此对于一个产品,应提前熟悉规范,确定产品能达到的评级(安全等级)。在编写材料时超出自身安全等级的不必关注,但产品达不到该安全等级要求的需及时调整,避免被检测降级。总体而言,目前通过商密检测的产品多数为安全一级和安全二级,极个别为三级,目前没有四级。在密评时会对商密产品的安全等级进行要求,目前来说具备硬件的产品应尽量按照安全二级来申报。
《密码模块分级检测申请材料》中采用“安全要求+产品实现情况”形式实现对产品的安全评估。其中安全要求采用<CYxx.xx: 安全要求>(安全级别)的形式,在文档模板中已经写好,编写者不要修改;产品实现情况为产品针对安全要求的具体实现,由编写者编写。材料应回答安全要求中提出的问题,描述产品实现方式,最终得出产品符合安全要求的结论。在编写时应尽量避免出现“抄规范”或者直接“写结论”这两种情况。
下面的章节会选取部分重要安全要求进行解读并附示例。详细内容和示例见文档:https://download.csdn.net/download/Lapedius/12563828
密码模块规格
<CY02.03:材料应描述密码模块类型,并解释选择这一类型的依据;材料应提供密码模块的规格,以标识所有密码模块的硬件、软件和/固件部件。>(安全级别1,2,3,4)
密码模块类型包括硬件模块、软件模块、固件模块、混合软件模块和混合固件模块,应根据送检产品的特征定义该模块类型,并写出判断依据,以及说明送检产品的软硬件组成部分。在确定密码模块的类型前,需首先划定密码边界,边界非常非常重要,涉及产品名称、类型、材料和检测等所有重要的环节。密码边界即为报送的产品要明确哪些软件和硬件包含在内,哪些不包含。
<CY02.07:材料应明确界定密码模块的密码边界,详细说明密码边界内的所有软硬件部件>(安全级别1,2,3,4)
密码边界由定义明确的边线(例如,硬件、软件或固件部分的集合)组成,该边线建立了密码模块所有部件的边界,该边界至少包含密码模块内所有安全相关的算法、安全功能、过程和部件。
<CY02.09:材料应提供密码边界内所有与安全相关的算法、安全功能、过程和部件清单,安全功能包括但不限于:分组密码、流密码、非对称密码算法和技术、消息鉴别码、杂凑函数、实体鉴别、密钥管理、随机比特生成器>(安全级别1,2,3,4)
本部分要描述实现算法、实现过程(比如密码卡实现加解密、签名验签运算,比如pos采用xx算法实现pin管理,安全协议、交易)。一定要写出产品具体实现什么功能,怎么用算法实现的功能,不能所有产品写的都像抽象的产品。部件不能简单只写密码卡、芯片、智能密码钥匙,要有详细清单。
密码模块接口
<CY03.01:材料中应说明密码模块的每个物理端口和逻辑接口;材料中应通过GM/T 0028-2014附录A.2.2和附录B.2.2要求提供的框图、设计规格、源代码以及原理图,说明密码模块的信息流和物理接入点。同时还需提供其他有助于明确说明信息流、物理接入点和物理端口、逻辑接口的关系的文档;对于密码模块的每一个物理或逻辑的输入,以及物理或逻辑的输出,材料中应明确逻辑接口所对应的物理输入或输出。>
应说明密码模块所有的物理端口与逻辑接口,并且明确物理端口的输入输出、逻辑接口的类型;对于逻辑接口,应说明密码模块与外部交互的协议所遵照标准,若无标准则应详细描述协议过程。
<CY03.02:送检单位的设计应根据AY03.04所列的类别将模块的接口分成逻辑上不同和相互分离的类别,并且如果适用,AY03.12亦可作为依据。这些信息应符合AY03.01描述的逻辑接口和物理端口的规格。材料中应提供每类逻辑接口到密码模块的物理端口的之间的映射。逻辑接口可以在物理上分布在多个物理端口上,或两个或多个逻辑接口可以共享一个物理端口。如果两个或多个逻辑接口共享同一个物理端口,送检单位的文档中应说明这些不同类别接口的信息流是如何在逻辑上相互分离的。>
应说明送检产品支持几种逻辑接口和物理端口,物理端口与逻辑接口之间的关系,各个接口实现的功能是什么。
密码模块接口这个章节要讲物理端口有哪些,逻辑端口有哪些,物理端口就是usb、7816、RJ45、串口等等,逻辑接口就比如软件API、SDF等各种接口,要定义出来有哪些物理和逻辑,输入输出什么输入,参数是什么。上面两个标黄的问题,要每个问题都回答。特别是CY03.02中逻辑接口与物理接口的映射,比如PCI各种SDF接口,那怎么对应到一个PCI接口上,这么多逻辑接口都用一个物理端口做输入输出,那怎么区分,怎么隔离,怎么知道这个数据是这个逻辑接口的。
<CY03.05:密码模块应有数据输入接口。所有输入到模块和由模块处理的数据(除通过控制输入接口输入的控制数据)应通过数据输入接口进入,包括:
——明文数据;
——密文或签名数据;
——加密密钥和其他密钥管理数据(明文或密文);
——认证数据(明文或加密的);
——来自外部的状态信息;
——其他输入数据。
若适用,材料中应说明所有与密码模块同时使用的外部输入设备,此设备用于输入数据到数据输入接口,如智能卡、令牌、键盘、密钥加载器和/或生物识别设备。>(安全级别1,2,3,4)
注:应说明每个数据输入接口的功能、性能、传输数据的报文格式等。如有远程配置接口、专用密钥注入接口等也须说明说明。
角色、服务与鉴别
<CY04.05:材料中应描述密码主管角色的功能,包括:执行密码初始化或管理功能,以及常用的安全服务,例如,模块初始化、CSP和PSP的管理以及审计功能。>(安全级别1,2,3,4)
送检单位的文档中需描述密码主管角色的功能,密码主管角色的权限和许可的服务。密码主管的定义需要与其执行的操作关联,并赋予其相应权限,包括执行密码初始化、CSP和PSP的管理、审计功能。
<CY04.16:材料中应说明密码模块核准的工作模式中使用核准的安全功能。>(安全级别1,2,3,4)
要与CY02.19回答的对应,各个模式,各个功能。
<CY04.43:应记录模块内实现的鉴别类型。应记录用于执行操作员身份鉴别的机制、操作员的身份鉴别、一个或多个角色隐式地或显示地选择、操作员担任角色的鉴别。>
<CY04.50:材料中应说明采用何种核准的鉴别机制。>
<CY04.54:材料中应说明密码模块鉴别机制的实现方法和原理。>
<CY04.58:应记录密码模块运行的鉴别类型。应记录操作员隐式或显示地选择一个或一系列角色的机制,及操作员担任角色的鉴别方法;材料中应提供操作员隐式或显示地担任角色的描述。>
这部分问题要回答遵循了0028附录E中哪个规范做的鉴别,具体如何实现,拼接数据的方式,如何跟规范对应的。不能简单说明发送签名给服务端或者验证口令。要写清楚怎么拼接,如何认证,几次鉴别。
<CY04.53:材料中应说明每个核准的鉴别机制在1min内的多次随机尝试使用通过核准的鉴别机制的成功概率。>
1min内可以暴力破解多少次就锁定啊或者不如登录啊,这样分析破解能成功的概率是多少,近乎为0啊,10万分之一啊,要有分析过程,不是随便说的。
软件/固件安全
<CY05.09:送检文档应说明通过SFMI、HSMI或HFMI服务按需执行已核准的完整性技术的方法。>(安全级别1,2,3,4)
注:SFMI为软件或固件模块接口,定义为用于请求软件或固件模块服务的命令全集,请求服务的命令中包括输入到密码模块或者由密码模块输出的参数。
HSMI或HFMI为混合软件或混合固件模块接口,定义为用于请求混合软件或混合固件模块服务的命令全集,请求服务的命令中包括输入到密码模块或者由密码模块输出的参数。
<CY05.14:送检单位应提供HM1、SFM1、HFM1或HSM1服务的说明>
这个问题回答要看0039中相应AY的要求,不能只看这一句话断章取义。
运行环境
<CY06.03:材料应按照GM/T0028——2014附录A.2.6中规定的要求编写。>
先分析属于可修改\不可修改\受限的哪种运行环境
像pci\密码机这样硬件模块基本都是不可修改的,协同签名这样软件模块安装到安卓\ios操作系统的都是可修改的,因为操作系统可以再安装其他软件.
对于不可修改和受限的运行环境,一级和二级都回答<CY06.05到<CY06.08:内容,并且6.2 不可修改运行环境的操作系统要求这个标题要从可修改改成不可修改.
物理安全
若密码模块完全由软件实现,使得物理安全仅由计算平台提供,那么该模块将不受物理安全要求的限制。
<CY07.09:送检文档应按照GM/T 0028—2014中7.7.1的要求明确说明密码模块的物理实体,包括单芯片密码模块、多芯片嵌入式模块,或多芯片独立式模块>(安全级别1,2,3,4)
注:送检单位根据产品情况表明所达到的安全级别并划分物理实体类型:
单芯片密码模块:单个集成电路(IC)芯片构成的模块,该芯片可以作为独立模块使用,或者可以嵌入可能没有物理保护的外壳或其它模块中。这个单芯片由片装和外部输入/输出连接器组成,其中片装使用统一的外部材料如塑料或陶瓷包装。例如:单IC芯片、单IC芯片智能卡或者包含实现密码功能的单IC芯片的其它系统。
多芯片嵌入式密码模块:模块由两个或两个以上互相连接的IC芯片构成,并物理嵌入到其他产品或未被物理保护的外壳中。例如:适配器和扩展板。
多芯片独立密码模块:两个或两个以上互相连接的IC芯片嵌入到完全受到物理保护的外壳中。例如:加密路由器、安全无线电话和USB令牌。
物理部件可包括外壳(如材质组成、缝合原理等)、内部元器件、IC芯片或其它硬件部件,能够监测或执行触发机制,以保证内部敏感信息安全。
非入侵式安全
<CY08.04:提供的文档详细说明用于保护模块CSP免受所有非入侵式攻击的缓解技术。>
通常指密码模块实现的,首先要写出怎么缓解的,具体方法是什么,不是笼统的介绍。要说清楚具体措施和机制。附录F的非入侵式攻击包括能量分析、计时分析、电磁泄漏,具体缓解方法详见附录F.2。
<CY08.05:材料中应详细说明每个缓解技术的有效性。>(安全级别1,2,3, 4)
有效性,要能够证明的,要有数据说话的,不是吧8.4再复制一遍.要给出证明文件,加缓解措施和没加缓解措施效果对比。
敏感安全参数管理
<CY09.01:送检单位的文档应描述模块内所有CSP的保护措施,包括防止非授权的访问、使用、泄露、修改和替换的实现机制>
像第九章要对每个密钥都展开描述,不是一句话csp能够保障xxx就行的,要分开A密钥xxxx措施xxxx保障使用,xxx措施保障泄露,B密钥xxxx措施xxxx保障使用,xxx措施保障泄露。
<CY09.03:送检单位提供的文档应描述生成的、输入或输出模块的SSP与被分配实体(即人、组、角色或进程)的关联关系>(安全级别1,2,3, 4)
注:材料书写时可使用图标方式将SSP与实体对应起来。
自测试
<CY10.07:送检文档应记录每一项自测试对应的错误状态,并标明该错误状态对应的错误指示>(安全级别1,2,3, 4)
注:此处应描述每一项自测试对应的错误状态及其对应的错误指示。
例:自检失败的错误状态和错误码如下所示:
错误状态 错误码
固件完整性校验失败 67 10
随机数自检失败 67 19
<CY10.24:送检文档应包括条件自测试的相关信息>
要写出具体原理、算法、随机数单次、周期、软固件完整性、密钥完整性等测试机制,预置数据。写的顺序最好跟执行顺序是一致的。
生命周期保障
<CY11.29:应提供材料详细说明在密码模块上执行的功能测试。>(安全级别1,2,3, 4)
这是开发完代码,你们厂商自己做的运维测试也好,产品测试也好,不属于来检测中心做的检测,这是两回事。
注:仔细读规范0028和0039,规范都写了详细说明,不要一句话糊弄,不是抄规范,要写出具体原理机制和自己的心得体会。