本文的目的是通过这些帖子,帮助读者过一遍新的要求,并指出差异点,以及潜在的问题点(或者最少是那些将会引入开支的地方)
在对标准的深潜之旅发车之前,相信通过对FIPS 140-3引入的关键术语进行定义,先打下一个牢固的基础是比较重要的。
运行的模式——“普通模式”(Normal)和“降级模式”(Degraded)
普通模式与降级模式的运行模式在密码模块章节引入。标准将整个算法集合、安全功能、服务与进程(包括批准和未批准的)均为可用状态定义为普通模式。在出错的状态下,作为重新配置的结果,一部分算法子集、安全功能、服务与进程可用,这被称为降级模式。这与FIPS 140-2有相当大的不同,后者规定在模块出现错误时,不允许运行在一种降级的模式下。在降级模式下,模块能持续提供有限的密码服务(例如:在某组件失效后,允许重要的操作继续完成)。
模块接口——HMI, SFMI, HSMI, HFMI, 和控制输出
在密码模块章节引入了硬件模块接口(HMI),软件或固件模块接口(SFMI),以及混合软件或混合固件模块接口(HSMI或HFMI)。这里的意图是清晰地定义所有被每种模块类型用于请求服务时,进入或退出模块边界的接口或命令。这包括作为请求服务的一部分进入或离开模块的密码学边界的参数。
本节还定义了一个叫做“控制输出接口”的新接口。控制输出是发送给另一个模块的控制命令,或者指示密码模块运行状态的命令(例如,控制输出可以是通过CAPWAP从无线控制器设备发送到无线访问点的控制和提供(provision)命令)。这个逻辑接口连接之前在FIPS 140-2中定义的其他四个逻辑接口(数据输入接口、数据输出接口、控制输入接口和状态输出接口)。
自初始化(Self-initiated)密码输出
自初始化密码输出能力定义在角色、业务和认证章节。这是模块在无外部操作者请求的情况下,执行密码操作和其他SSP管理技术的一种能力。(例如,如果一个模块被配置为在启动时自动建立与另一设备间的IPSec通道)类似于FIPS 140-2当中的bypass能力,要求两个独立的内部动作来激活自初始化模块输出能力,同时模块被激活后要展示出被激活的状态。
分离与包含签名
在软件/固件安全章节,FIPS 140-3 引入了术语“分离与包含签名”(disjoint and encompassing signatures)。分离签名由一个或多个签名组成,这组签名代表整个集合的多份代码,而包含签名则是单个签名代表代表整个集合中的代码。分离签名可以用于多个二进制代码组成一个密码模块,而包含签名可以用于单个二进制代码。
非侵入式安全
FIPS 140-3中的非侵入式安全部分将重点讨论无需直接物理接触即可实施的,针对密码模块边界内组件的攻击。非侵入式安全测试标准将写入SP 800-140F(也称为FIPS 140-3附件F)。附件F可能会链接到ISO/IEC 17825,以已或批准的“非侵入性攻击缓解测试标准”。当FIPS 140-3开始应用时,哪些测试可用,或者本节的测试标准是什么等很多东西还待确定。两份ISO草案(ISO/IEC PRF 20085-1和20085-2)可能会详细说明测试工具要求和测试工具的校准方法。现在,我们将提供DPA和SPA的定义,它们是最常见的非侵入式攻击类型。
差分功率分析(DPA)是对密码模块功耗变化的分析,目的是提取与密码操作有关的信息。
简单功率分析(SPA)是对密码模块功耗相关的指令(或单个指令)执行模式的直接(主要是可视化的)分析,目的是提取与密码操作相关的信息。
SSP, CSP 和 PSP
在FIPS 140-3中的SSP(敏感安全参数Sensitive Security Parameter )管理章节有一个较大变化。这一节现在同时定义了关键安全参数(CSP)和公开安全参数(PSP)。PSP为安全相关的公开信息,它的变更会损害密码模块的安全性,例如:公钥、证书或者信任锚。SSP被定义为既包括CSP也包括PSP。可以这样想——对SSP有机密性和完整性相关的要求,而对PSP只有完整性相关的要求。
自检
FIPS 140-3的自检章节更好地在不同的自检间做了区分。它还引入了一些新的自检。运行前(Pre-Operational)自检在FIPS 140-2中被看作POST或者上电自检。条件自检(Life-cycle assurance)依然存在,但是FIPS 140-3引入了周期自检(Periodic self-tests)的概念。在安全级别SL1级中,这种自检很大程度上跟传统的FIPS 140-2的按需自检相同。但是,在SL3和SL4级中,模块必须在规定的时间内重复执行指定的自检。这意味着在没有操作者的干预下,模块需要内建这些处理逻辑。
标准也引入了一种条件故障检测自检。这种检测涉及在密码模块中集成故障检测实现。当检测到故障,密码模块的算法故障自检必须失败。
生命周期保障和供应商测试
FIPS 140-2中长期被认为过时的一节是“设计保障”(Design Assurance)。在FIPS 140-3中,这部分被称为“生命周期保障”(Life-cycle assurance),已经被彻底修改(谢天谢地!)生命周期保证是指密码模块供应商在密码模块的设计、开发、运行和生命周期结束期间使用的最佳实践。
生命周期保障包括FIPS 140-2未包含的一些附加活动。其中一个活动就是“供应商测试”。在导出测试要求(Derived Testing Requirements)文档ISO/IEC 24759:2017中对供应商测试的描述指出,对于SL 1和SL 2,测试应该包括用于检测问题的自动化安全诊断工具,例如缓冲区溢出。在SL 3和SL 4中,这应包括“低级测试”。这被定义为“测试加密模块的单个组件或一组组件,及其物理端口和逻辑接口”。我们知道这有点含糊不清。希望在未来的几个月里,从CMVP那里得到更多的指导,确切地说,这也就是他们想要弄清楚的东西。
生命周期保障包括对密码模块“生命终止”的安全要求。这是指不再部署或不再打算让操作员进一步使用模块。SL 1和SL 2级需要对加密模块进行安全消毒(sanitization)。在SL 3和SL 4中,还必须有安全销毁模块的过程要求。
本节还包括熟悉的有限状态模型或FSM。FSM在FIPS 140-2中有自己的章节。FSM章节包含新的术语,如静止状态。这是密码模块处于休眠状态的一种状态(例如低功耗、暂停或休眠)。
熟悉的概念和总结
值得注意的是,FIPS 140-3包含了一些目前在FIPS 140-2实现指南中提到的术语和概念,而不是标准本身(是的,244页的IG有些庞大)。一些条款包括运行时环境(虚拟机状态)(FIPS 140 - 2 IG 的G.13 G1.3 & IG 6.2),不可更改运行环境,有限的运行环境有限,可修改的运行环境(FIPS 140 - 2 IG 1.3),最小熵(FIPS 140 - 2 IG 7.15),可信通道(FIPS 140 - 2 IG 2.1),混合软件模块,混合固件模块(FIPS 140 - 2 IG 1.9),SSP /密钥建立,电子入口,直接入口(FIPS 140 - 2 IG 7.7),和密钥协议(IG D.2)。我们所看到的许多FIPS 140-3/140-2 delta分析材料并没有指出这一点。
我们选择将这篇文章作为一个系列,这样您就可以学习、理解并为您的FIPS 140-3测试和认证需求做计划。希望这篇文章在某种程度上能成为你的入门,让你在接下来的几个月里了解到一些要点和术语。我们希望读者们能通过这些帖子学习、理解并与我们一起成长。请继续关注这个系列的下一个帖子。
说明
这是某安全认证机构的五篇关于FIPS140-2与140-3差异的博客第一篇。我感觉作为逐渐向FIPS 140-3迁移的学习资料比较好,尝试翻译。如有错误,敬请指出。
原文链接:
https://blog.acumensecurity.net/2019/08/20/whats-the-diff-fips-140-2-and-fips-140-3-part-1-key-terms-and-definitions/