安全头条

综合

资讯

资料

中国信息安全测评中心石竑松:密码模块安全测评的思路和方法

安全内参 2018-10-08

本文在介绍密码算法理论安全性的基础上,将分析密码模块面临的各种安全威胁,论述密码模块应具备的安全防护能力,最后再回到具体的标准层面,梳理现有的两种密码模块测评方法。

■ 中国信息安全测评中心 石竑松 李贺鑫 杨永生

在信息安全的基础支撑技术中,密码技术可谓研究最深入,同时也是难度最大的研究内容之一。经过40多年的发展,由于基础数学和计算复杂性理论的相互促进,现代密码学的研究逐步趋于成熟,基础性概念及其相互依赖关系不断明确,丰富多彩的应用形式不断被开发出来。当然,现代密码学的研究还远未完善,尽管可以构造一些在理想世界中安全的方案,其安全性在真实世界中并不容乐观。为了保障密码应用安全,有必要对密码模块进行安全测评。在这个问题上,基于距离度量的观念逐步得到认可。简单地说,我们可以从差距分析的角度测量安全属性在理想世界和真实世界之间的距离,再评估这种距离对安全性的影响。这种观念在很多测评标准中得到了体现,其中GB/T 18336(即通用评估准则CC标准)和GM/T 0028(即《密码模块安全技术要求》)是这方面的典范。

为了清楚地讨论密码模块的测评方法,本文在介绍密码算法理论安全性的基础上,将分析密码模块面临的各种安全威胁,论述密码模块应具备的安全防护能力,最后再回到具体的标准层面,梳理现有的两种密码模块测评方法,即基于GB/T 18336和GM/T 0028的测评方法,希望有利于读者了解密码模块测评技术,为后续改进测评方法、提高密码模块安全性提供思路。

一、密码算法的理论安全性

一个密码模块的实际安全性取决于三个方面:首先,密码算法必须是理论上安全的(理论安全性);其次,密码算法的实现方法和过程必须是安全的(实现安全性);再者,密码模块的运行管理必须是安全的(运行环境安全性),不难发现这三个方面实际上对应着密码模块的设计、实现和运行三个生命周期阶段。与密码算法的理论研究不同,安全测评很少触及密码算法的理论安全证明过程,但是由于算法安全性的定义方法对安全测评有直接影响,本节将对此进行讨论。在此之前,先做两项约定:首先,本文主要关注技术层面的安全问题,对于密码运行管理安全问题不作讨论。其次,为了简化论述过程,除非需要将密码算法和密码协议分开讨论,否则本文所称密码算法也包含了密码协议。

1. 理论安全性分类

密码算法的理论安全性可以从两个角度进行划分,如图1。第一种方法依据算法安全的可证明情况进行分类,共有两种:(1)启发性安全(Heuristic Security),此时密码算法的安全是基于目前所知的最有效的攻击算法的复杂性来定义的(如DES、AES、SM3等对称加密算法、常用的Hash算法以及基于这些算法构造的密码方案和协议)。(2)可证安全(Provable Security),这又包含两种情况,一种是密码算法的安全性可以在特定模型下归约到某些基础数学难题的求解复杂性上(如单向函数、伪随机数发生器、RSA、El Gamal、SM2、Rabin、Paillier加密算法,以及基于这些技术所构造的密码方案和协议等);另一种是只依赖于自然世界的基本定律,在信息论的意义上通过证明信息泄露的有界性等目标来定义安全性(如Vernam一次一密加密算法,Shamir的门限秘密分享方案、随机萃取器、量子密钥分发协议等)。

第二种方法是从攻击所需计算复杂性的角度来分类,将密码算法的安全性分为计算意义上的安全(Computational Security)和信息论意义上的安全(Information Theoretical Security)这两类,与第一种分类方法的主要差异在于,此时启发性安全和可归约到数学困难问题的安全被归并到计算(意义上的)安全这个范畴。计算安全的算法依赖于当前对攻击者计算能力的认知水平,若攻击者计算能力急剧增加,其安全性可能难以保证,这是与信息论安全算法的本质区别。

有趣的是,现实应用中的密码模块可能会实现一些私有的,但安全性并没有严格分析的算法,由于无法从理论上论述这些算法是否安全,按照安全测评领域的惯常做法,除特殊情况外,这类算法的安全性将被排除在测评范围之外。

2.攻击者能力模型

攻击者的能力模型是建立理论安全性的基础。最初的理论安全性研究是在黑盒模型下展开的。此时,攻击者除了知道密码算法的具体描述外,只能操纵密码算法的输入或输出值,而对算法的运行过程不做监视,即无法获得算法执行过程中的中间变量信息。随着侧信道分析等技术的发展,理论研究模型也在改进,如弹性泄露密码学(Leakage resilient crypytography)在假设攻击者可以获取中间变量部分信息的情况下研究密码算法的理论安全性。这种变化使理论安全性更贴近实际安全性,不过从目前的处理技术来说,二者之间的距离仍很明显。

安全测评需要先理解理论安全分析过程,对攻击者的能力模型和应用场景中实际攻击者的能力进行对比,发现二者不一致的程度,分析最初的理论安全分析过程是否覆盖了这种不一致。如果无法覆盖,则需要采取其他防护措施来抵抗实际攻击者的“剩余能力”,从而将对密码模块的安全分析目标转移到对特定防护措施的分析上,图2对这种观念进行了直观的描述。

二、密码模块的实际安全性

如果密码模块中的密码算法满足理论安全定义,为何仍无法保证其应用安全?这是一个关于密码模块实际安全性的问题,本节将继续深入分析这个问题的本质。

1.密码模块面临的威胁

密码模块中最核心的部分是密码算法的实现本身,在此基础上,密码模块可以通过提供密码服务来响应用户的需求,这种服务通常是以接口的形式来访问的,这些接口也为攻击者创造了条件。一般而言,针对密码模块的各种攻击主要有两类:一类是利用密码服务所提供的逻辑指令接口发起的逻辑攻击,另一类是通过密码算法执行中存在的侧信道接口发起的物理安全攻击,如图3。(当然,一个现实的攻击者可能会综合利用这两种接口。)

由第1节的讨论,密码模块面临的实际威胁可能与理论分析结果不一致。例如,一个实际的密码模块可能会因安全参数生成错误、访问控制措施不正确,以及未考虑侧信道泄露而面临各种安全风险,由于理论分析模型对此往往缺乏考虑,从而为密码应用留下了安全隐患,为此需要在密码模块中增加更多的防护措施,并通过测评来验证其有效性。

2.密码模块的防护体系

更具体地说,按照密码模块的一般结构,由防护措施组成的密码模块防护体系可以从密码算法安全、物理防护安全、数据保护和访问控制安全以及通信接口安全这四个层面来解析,如图4。

(1)密码算法安全。这个层面主要关注密码算法实现本身的安全性,其测试方法与其理论安全性的分类有关。对于计算安全的算法,需要理解当前最有效的攻击进展,判断算法安全参数是否足以支撑密码实现的安全性,因此需要对参数配置和生成过程、随机数的使用、操作模式等方面进行安全分析。对于信息论意义上的安全算法,由于其安全性不依赖于具体的计算模型,攻击者计算能力的增长不会对算法的安全性构成新的威胁,因此随机性和算法实现的正确性等是需要检测的主要内容。

(2)物理防护安全。这是在密码算法实现之外的第一层防护,主要是抵抗各种形式的侧信道攻击,包括功耗攻击、电磁辐射攻击、时耗攻击、缓存攻击、故障注入攻击,以及侵入式攻击等。显然,无论密码算法满足何种理论安全定义,只要其证明模型中没有充分地考虑侧信道攻击,都有必要添加这个层面的防护措施。安全测评过程需要对所有措施的有效性进行分析。

(3)数据保护及访问控制安全。密码算法及其物理防护措施的参数和实现代码往往需要以文件或数据的形式保存起来,这些数据需要进行保护,以防止被未授权访问或篡改,出现完整性错误或者信息泄露。安全测评过程需要对访问控制和完整性保护措施的有效性进行分析。

(4)通信接口安全。通信接口是密码模块对外提供服务的主要途径。有些接口与安全性无直接的关系,不需要特别保护,但对于密钥协商或者信道加密接口,则需要保护以防止攻击者在信道上窃取信息或破坏完整性。安全测评过程需要关注安全协议的实现正确性以及协议执行状态的安全性。

三、密码模块安全测评标准体系

由于密码技术对维护信息安全的基础性价值,密码模块一直以来都是安全测评的重要对象。在我国现有与密码模块安全测评有关的技术标准中,GB/T 18336和GM/T 0028的接受度最高,已被用于大量密码模块安全测评实践。在前面讨论一般测评方法的基础上,我们再简要讨论依据这两个具体标准的测评方法。

1. GB/T 18336框架下的测评方法

GB/T 18336标准是对国际通用评估准则(即CC)标准的等同翻译,目前我国在用的最新版本于2015年发布。为了简化描述,下面仍称之为CC标准。CC标准的目的是为信息技术产品的安全测评提供通用的测评模型和方法,当需要测评具体的产品时,可以通过细化操作,制定更明确的测评路线来实施安全测评。CC官方网站发布的认证产品列表中包含了数千款与密码模块相关的产品,包括常见的网络基础设备,芯片及嵌入式软件产品等,涉及访问控制、消息认证、密钥协商以及数据加密等密码相关功能。因此,尽管CC标准明确将密码算法的理论安全性分析排除于标准范围之外,但仍适用于密码实现方面的安全测评。

使用CC标准开展安全测评的要点是解决好安全要求的刻画及测评方法这两个问题,下面简要地论述这方面的内容。

(1)刻画安全要求。从安全测评的角度来说,安全要求决定着测评范围和测评方法。为了导出密码模块的安全要求,包括功能要求及保障要求(这决定了测评的深度和严格程度),需要对密码模块的预期应用场景,可能面临的安全威胁以及环境方面的假设进行严格分析,并对威胁和要求之间的对应性进行论证,从2节的角度来说,这个过程就是找出所有可能的攻击,以及理论分析模型和实际情况下的攻击者能力差异,并确定密码模块需要具备哪些防护措施。通常这些内容需要开发者、评估者和用户一起合作来定义,在CC中称之为保护轮廓(Protection Profile,PP)。在安全要求的规范化描述方面,CC标准预定义了一些与密码相关的安全功能组件(如FCS、FIA、FPT、FTP等类中的组件),若这些组件不足以描述一些独特的安全功能要求,还可以通过组件扩展的方法来解决问题。

进一步,当开发者提交一个明确的密码模块进行测评时,需要根据产品的实际特点对PP进一步细化和完善,按2节中的论述方法明确各项防护措施,并确立期望的评估保障级别。这些内容通常在安全目标(Security Target,ST)文档以及更细化的设计和实现文档中描述。以此为基础,评估者才具备开展实际测评的条件。

(2)测评方法。在CC测评框架下,理解攻击路径始终贯穿整个测评过程,因此CC采取了一种称为“攻击导向的”测评方法(Attack-based approach)来规范产品测评过程。根据这种方法,开发者需要按上面的办法明确安全要求和防护措施,并进行安全性的自证工作。在此基础上,评估者需要分析这些防护措施理论上是否足以抵抗所有威胁,确定防护措施的充分性;进一步,评估者自己设计测试用例,一方面测试各项功能的实现与安全要求的符合性,以检验密码模块各项防护措施的正确性;另一方面,根据评估者对测试对象的理解,以及对最新攻击方法的把握,在仿真的运行环境中实施穿透性测试,评估各条攻击路径的可行性和复杂性。若防护措施的充分性和正确性都达到了ST中描述的安全保障级别的要求,则可以认为密码模块在配置正确的情况下,在预期使用环境中能提供足够的安全性。具体的测试方法可以参考ISO/IEC 18045(即CC测试方法,CEM)标准。

2. GM/T 0028框架下的测评方法

GM/T 0028标准是我国在美国FIPS140-2/3标准(即ISO/IEC 19790)的基础上发展的专用于密码模块安全测评的技术标准,最新的版本于2014年发布,已在我国密码模块的安全测评中得到了大量应用。与CC标准的通用性目的不同,GM/T 0028标准是针对密码模块安全测评而编写的,因此采用直接描述安全测评要求的方式来规范密码模块的测评过程,省去了对安全威胁以及从安全威胁导出安全要求的分析过程。这些要求包括密码功能规范、接口、角色/服务/认证、软件/固件完整性保护、运行环境的扩展性、物理防护、侧信道安全、敏感数据管理、自检、生命周期控制以及对其他攻击的缓解等方面。开发者需要按照这些测评要求来准备证据,描述防护措施及其有效性;测试者则根据这些证据,验证安全功能的正确性。需要指出的是,虽然对防护机制的组织方式不同,但这些要求中与安全功能相关的内容都可以包含在2.2节的密码模块安全防护体系中。

在此基础上,GM/T 0028标准通过权衡环境安全防护能力和密码模块自防护能力,将密码模块的测评划分为4个等级,其中第1级为基线保护级,在这个级别下密码模块满足安全要求的能力最低,只能依赖较强的环境保护来达到应用安全要求;第4级要求密码模块具备足够的自保护能力,可适用于环境保护能力较低的应用场合。

由于GM/T 0028对密码模块的测评要求进行了明确叙述,在这种框架下的测评方法通常称为“需求导向”的测试方法(Requirement-based approach),即测试用例可以围绕测评要求进行设计,只要这些要求得到了满足,则可以认为密码模块能达到预期的安全目标。这种测试方法不再需要穿透性测试,这是与CC测评的显著区别。为了指导实际的测试,GM/T 0039标准(即《密码模块安全检测要求》)对基于GM/T 0028的测试过程进行了详细规范(在功能上与CEM对CC的补充作用相似),可以依据其测评要求开展实际测评工作。

四、总结和展望

标准化方法对保障密码模块安全测评的规范性至关重要,但并不能当成静态的模板来对待,需要在理解最新的密码设计和攻击技术的过程中不断完善,不断地丰富基于差距分析的框架性思路,才能发挥实际应用价值。密码算法的符合性测试、侧信道分析、随机性检测和针对量子光学系统等特殊问题的漏洞检测技术还有很多理论问题待解决,在深入开展密码模块测评的必经之路上,仍需直视这些挑战,才能为信息安全保障工作提供真正有价值的技术方法。

(本文刊登于《中国信息安全》杂志2018年第9期)

全部评论()
邮箱
昵称
密码
确认密码
阅读并接受《用户协议》
使用其他方式登录
微信登陆 QQ登录