密码模块安全测评的思路和方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
密码模块安全测评的思路和方法
中国信息安全测评中心 石竑松 李贺鑫 杨永生
在信息安全的基础支撑技术中,密码技术可谓研
究最深入,同时也是难度最大的研究内容之一。经过
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的门限秘密分享方案、随
机萃取器、量子密钥分发协议等)。
图1.密码算法安全分类方法
第二种方法是从攻击所需计算复杂性的角度来
分类,将密码算法的安全性分为计算意义上的安
全(Computational Security)和信息论意义上的安全(Information Theoretical Security)这两类,与第一种分类方法的主要差异在于,此时启发性安全和可归约到数学困难问题的安全被归并到计算(意义上的)安全这个范畴。计算安全的算法依赖于当前对攻击者计算能力的认知水平,若攻击者计算能力急剧增加,其安全性可能难以保证,这是与信息论安全算法的本质区别。
有趣的是,现实应用中的密码模块可能会实现一些私有的,但安全性并没有严格分析的算法,由于无法从理论上论述这些算法是否安全,按照安全测评领域的惯常做法,除特殊情况外,这类算法的安全性将被排除在测评范围之外。
2.攻击者能力模型
攻击者的能力模型是建立理论安全性的基础。最初的理论安全性研究是在黑盒模型下展开的。此时,攻击者除了知道密码算法的具体描述外,只能操纵密码算法的输入或输出值,而对算法的运行过程不做监视,即无法获得算法执行过程中的中间变量信息。随着侧信道分析等技术的发展,理论研究模型也在改进,如弹性泄露密码学(Leakage resilient crypytography)在假设攻击者可以获取中间变量部分信息的情况下研究密码算法的理论安全性。这种变化使理论安全性更贴近实际安全性,不过从目前的处理技术来说,二者之间的距离仍很明显。
图2. 理论模型和现实情况下攻击者的能力差异安全测评需要先理解理论安全分析过程,对攻击者的能力模型和应用场景中实际攻击者的能力进行对比,发现二者不一致的程度,分析最初的理论安全分析过程是否覆盖了这种不一致。如果无法覆盖,则需要采取其他防护措施来抵抗实际攻击者的“剩余能力”,从而将对密码模块的安全分析目标转移到对特定防护
措施的分析上,图2对这种观念进行了直观的描述。
二、密码模块的实际安全性
如果密码模块中的密码算法满足理论安全定义,为何仍无法保证其应用安全?这是一个关于密码模块实际安全性的问题,本节将继续深入分析这个问题的本质。
1.密码模块面临的威胁
密码模块中最核心的部分是密码算法的实现本身,在此基础上,密码模块可以通过提供密码服务来响应用户的需求,这种服务通常是以接口的形式来访问的,这些接口也为攻击者创造了条件。一般而言,针对密码模块的各种攻击主要有两类:一类是利用密码服务所提供的逻辑指令接口发起的逻辑攻击,另一类是通过密码算法执行中存在的侧信道接口发起的物理安全攻击,如图3。(当然,一个现实的攻击者可能会综
合利用这两种接口。)
图3. 密码模块及其面临的威胁
由第1节的讨论,密码模块面临的实际威胁可能与理论分析结果不一致。例如,一个实际的密码模块可能会因安全参数生成错误、访问控制措施不正确,以及未考虑侧信道泄露而面临各种安全风险,由于理论分析模型对此往往缺乏考虑,从而为密码应用留下
了安全隐患,为此需要在密码模块中增加更多的防护措施,并通过测评来验证其有效性。
2.密码模块的防护体系
更具体地说,按照密码模块的一般结构,由防护措施组成的密码模块防护体系可以从密码算法安全、物理防护安全、数据保护和访问控制安全以及通信接
口安全这四个层面来解析,如图4。