
关于密码学模块安全要求,美国联邦资讯处理标准(FIPS)已是业界公认标准,举例来说,像是国际组织SWIFT与台湾金管会皆要求银行业,须使用通过FIPS 140-2 Level 3以上认证的硬件安全模块(HSM)来存储重要密钥。
基本上,只要采用密码学模块的软件、硬件或固件都适用此标准规范,而目前常见的操作系统也都有FIPS模式能激活,甚至部分操作系统是默认激活。值得注意的是,今年是FIPS 140-2转换成FIPS 140-3的关键时期。
事实上,FIPS 140-2从最初2001年发布,至今已有20年之久,而且,自2022年4月1日开始,美国国家标准暨技术研究院(NIST)创建的CMVP密码模块验证计划,不再接受密码学模块送交新的FIPS 140-2验证(最后验证有有效期限至2026年9月),在此同时,于2019年发布的FIPS 140-3,将取而代之。
面对FIPS标准的转变,提供物联网设备安全检测服务的安华联网科技,在今年台湾安全大会介绍这方面的进展。该公司软件工程师暨安全研究员杨力学(Aspen Yang)谈及FIPS 140-3诸多面向的议题,其中除了这项标准的近况,以及转换需注意的要点,特别的是,他呼吁开发人员都要增进这方面的认知,使用密码学算法时才能更为妥善。
关于FIPS 140-3的发展现况,已有多个主流操作系统平台宣布预备支持或已支持,杨力学表示,近期首批通过FIPS 140-3检测的密码学模块,即将出炉。
从NIST公布的CMVP密码模块验证计划的列表来看,至2022年9月19日为止,已有56家品牌共137项产品送验FIPS 140-3(IUT List),已完成实验室验证迈向审核的有67项产品(MIP List),其中有13项产品,率先进入协调(Coordination)阶段,这意味着,这13项有机会成为首批通过认证的产品。
FIPS 140-3标准有哪些特性?与旧版的差异?杨力学表示,基本上,FIPS 140-3是基于两个ISO国际标准进行修改而成,分别是密码学模块安全要求的ISO/IEC 19790:2012,以及密码学模块测试要求的ISO/IEC 24759:2017。
在FIPS 140-3标准中,同样划分为4个安全等级,并具有11大项安全要求,但与前一版相比,其要求有许多变化。
以FIPS 140-3实例指南而言,主要修改自ISO/IEC19790:2012,新版11大项安全要求,分别是:(1)密码学模块规格,(2)密码学模块接口,(3)角色、服务与身份认证,(4)软固件安全,(5)作业环境,(6)物理性安全防护,(7)非侵入式安全,(8)敏感安全参数管理,(9)自我测试,(10)生命周期确保,以及(11)缓解其他攻击方式。
与旧版的项目相比,主要有哪些差异?杨力学指出,FIPS 140-2的第4项与第10项,也就是有限状态模型与设计面确保,FIPS 140-3被整合为第10项,归类在生命周期确保的范围之中;FIPS 140-3的第四项则为软固件安全:FIPS 140-2第7项的密码学密钥管理,FIPS 140-3变成第8项的敏感安全参数管理;而FIPS 140-2第8项的电磁干扰/电磁兼容性,FIPS 140-3变成第7项的非侵入式安全。此外,FIPS 140-2的附件与相关附录内容,FIPS 140-3也都整合于附件之中。
FIPS 140使用的一些重要术语,也出现变化。举例来说,乱数产生器之前称为Random NumberGenerators(RNG),现在为了要与后量子密码学区分,乱数产生器改为Random Bit Generators(RBG)。同时,他提及,新版不只密码学算法要验证,就连熵(Entropy)也要验证。

除了FIPS 140-3的概况介绍,特别的是,杨力学在这场演说中更是强调一件事,开发人员必需要对FIPS 140-3有更多了解。
他认为,大多安全公司看待FIPS 140-3的角度,是从检测与合规的角度出发,若以SSDLC需求的角度看待时,其实也跟开发人员有关,他们也需要多了解FIPS 140-3,因为,若不注意其中的区分,与密码学有关的程序,很有可能无法正常在FIPS模式下执行。
例如,在今年2月,美国NIST发布的软件开发安全框架中,在“组织要准备的工作”第5.2项工作项目中,其要求就是“研发工作相关端点,需基于风险的考量,进行安全与坚固”,而其中的一个概念实施范例,就是建议使用FIPS合规的加密,以保护所有处于存储与传输状态的敏感资料。
换个角度,若从实际威胁现况来看,他也特别强调一点,就是密码学问题(加密机制失效)所造成的网站应用程序弱点与风险,在OWASP Top 10排行榜其中,近年已经从第三名升至第二名。
上述这些状况反映出,开发人员对于密码学模块安全要求,同样需要有更多的充分认识。
因此,在FIPS 140-2转换FIPS 140-3之际,杨力学也对开发人员提出一些建议。
由于普遍开发人员也是密码学模块的用户,他提出五个注意事项。首先,当开发工程师使用密码学算法时,必须了解这些密码学算法,认识有哪些分类及目的,他建议可以先阅读一些密码学的书。
第二,关于密码学的规格、接口,以及密码学模块提供的用户手册,由于都会改版,他建议必需要仔细阅读,这样才能避免误用密码学的输入参数。
第三,密码学模块在FIPS模式的状态没有提供的密码学算法,开发人员也需要留意。
第四,需要认知到现阶段已实例FIPS 140-3的密码学模块的大厂,都算是早期产品,因此早期采用者也会面临一些挑战。最后,他建议可以多参与FIPS 140-3的相关讨论。
另外,他也呼吁一般的开发人员,也就是密码学模块的用户,在安全软件开发生命周期之中,应将服务器的操作系统设置为“激活FIPS模式”,后端与系统程序将设置值改成FIPS合规状态,或是使用符合FIPS 140-2、140-3认证的程序库,进行密码学操作,又或直接调用FIPS认证密码学模块提供的密码学接口。
如此一来,可增进资料三态的安全性,也能缩小开发与运维环境的差异,使开发人员更能满足运维人员需求。
除了一般普遍的开发人员,台湾也有厂商正在开发密码学模块,因此,对于这些密码学模块开发者而言,他也提供转换FIPS 140-3心得。
例如,FIPS 140-3在编排上,比前一版更有条理,对开发团队会比较清楚 ;要有能力开发“密码学服务提供者”(Cryptographic Service Provider)这样的程序,需准备离散数学与密码学的知识,以实例许可的密码学算法;在FIPS 140-3标准中,实例指南与ISO/IEC 19790所提到的每个“shall(应作之事)”,都是一个软件开发流程需求表(Backlog)之中的需求,若要解读需求表,需要对密码学与资讯安全有深入理解,否则自己与同侪之间,若有不同见解时,将有一定的沟通成本;目前Level 3与Level 4的部分内容还有些模糊;密码学模块开发者在设计“安全支持提供者”(Security Support Provider)的程序库时,也要注意,像是其中的已知解答测试(KAT)自我测试模块,其实并没有那么容易开发。至于缓解旁路攻击需要分析电力使用方面,由于目前SP 800-140F尚未完成,因此对于软件密码学模块的要求尚不清楚。

安华联网科技软件工程师暨安全研究员杨力学(Aspen Yang)在近期台湾安全大会的演说上,不仅提到FIPS 140-3的现况与转换挑战,同时他并以SSDLC的角度切入,建议开发人员需要多对FIPS 140-3有所了解。



FIPS 140标准从1994年第一版发展以来,2001年发布第二版FIPS 140-2,2019年发布至第三版FIPS 140-3,如今可预期的是,未来所有密码学模块等开发商,销售的硬件或软件密码模块都要支持FIPS 140-3认可的算法。安全等级与上一版同样划分4个等级,分别是Level 1、Level 2、Level 3与Level 4,Level 4最严格。基本上,较高安全等级的需求,也涵盖较低等级的所有安全要求。
(图片来源:安华联网)