本发明涉及一种密码算法程序随机化伪装证明方法和泄露检测方法。
背景技术
密码算法(cryptographicalgorithms)作为安全机制的基础已经被广泛应用于嵌入式设备、智能卡、物联网等系统用于保护数据安全。密码算法的安全性通常是建立在攻击者只能接触系统的输入和输出,而无法获取加密算法中的密钥。但在实际生活当中,攻击者可以利用系统的物理信息破解密钥,比如采用密码算法程序运行时的时间、功耗、电磁辐射等信息。这种攻击被称为侧信道攻击(side-channelattacks),其利用这些物理信息与加密密钥之间的统计依赖关系来破解密钥,比如采用差分功耗分析(differentialpoweranalysis)。
为阻止此类攻击,主要采用基于随机数伪装(randommasking)对策来破坏物理信息与加密密钥之间统计依赖关系,比如针对ase加密算法的随机数伪装。然而,随机数伪装方法容易错误,无法达到物理信息与加密密钥之间真正的统计独立,比如多个经过随机数伪装的加密算法程序已被侧信道攻击攻破。
基于类型推导(typeinference)的证明方法和基于模型计数求解的证明和检查方法相继提出和应用。基于类型推导的证明方法具有速度快和结果合理的优点,但不是完备的,因此会有很多误报。而基于模型计数求解的方法具有结果合理和完备的特征,不存在误报可能,但是存在性能不足的问题,无法快速证明和检测实际密码算法程序。
技术实现要素:
本发明的目的是:保证证明结果的合理性和证明方法的完备性,不仅可以快速证明随机化伪装的正确性,同时也能快速检测和定位不正确程序中的信息泄露点。
为了达到上述目的,本发明的技术方案是提供了一种抗功耗侧信道攻击对策验证方法,其特征在于,包括以下步骤:
步骤1、利用编译技术将密码算法程序翻译到中间表示形式,在密码算法程序中标注保密部分、公开部分及随机变量。在本发明中,密码算法程序不限于某一种编程语言。通过编译技术将密码算法程序统一翻译到中间表示形式,可采用任意一种数据结构表示程序,供后续步骤处理。
步骤2、利用类型推导按照程序中间结果依赖关系对中间表示形式中的每个中间结果进行推理,对于当前中间结果而言,推理过程包括以下步骤:
步骤2.1、计算当前中间结果的概率分布类型,若当前中间结果的概率分布类型为均匀分布或独立于密钥的分布,则当前中间结果为安全,即完美随机化伪装的,若当前中间结果的概率分布类型为未知或无法进行类型推导,则进入下一步:
步骤2.2、利用模型计数求解方法把当前中间结果的计算表达式编码成求解器公式,利用求解器公式计算模型数量并判断公式是否满足,若该求解器公式是不可满足的,则当前中间结果是安全的,即当前中间结果是独立于密钥的分布;若该求解器公式是可满足的,则当前中间结果为泄露点,即当前中间结果和密钥之间存在统计依赖关系。将求解器结果反馈给类型推导,精化中间结果的推导过程。
优选地,所述中间表示形式为抽象语法树或程序依赖图。
优选地,采用类型推导快速判断部分中间结果的概率分布类型,即安全性。
优选地,当类型推导无法判断时,采用模型计数求解方法求解。
优选地,模型计数求解方法求解反馈给类型推导系统,精化类型推导过程。
本发明达到了显著的性能提升效果。通过多个加密算法程序的实验,对于完美随机化伪装的mackeccak程序,仅需几秒时间完成证明。对于非完美随机化伪装的程序,本发明方法可以检测定位所有泄露点,比传统基于smt的方法,本发明性能提升1倍。
附图说明
图1为本发明的具体流程图;
图2为本发明的一个具体实施方式的流程图;
图3为密码算法实例程序;
图4为图3程序的程序依赖图中间表示形式;
图5为密码算法实例另一个程序。
具体实施方式
为使本发明更明显易懂,兹以优选实施例,并配合附图作详细说明如下。
根据本发明的技术方案,实施重点是输入程序的类型,类型推导系统的设计,模型计数求解器选择和模型计数求解器公式编码。以直线型布尔程序为例,对本发明作进一步的详细说明,具体实施技术方案如图2所示。
类型推导规则根据表达式中操作符类型和操作数类型刻画表达式计算结果的类型。类型推导系统中主要有以下5中概率分布类型:1)均匀分布(rud),2)独立分布(sid);3)非独立分布(nmp),4)未知分布(ukd)和5)常量分布(cst)。中间结果为均分分布或独立分布,则该中间结果为完美随机化伪装的,即安全的;中间结果为非均分分布,则该中间结果为非完美随机化伪装的,即不安全的或泄露点;中间结果为未知的,表示类型推导无法判断该中间结果,需要用基于smt求解的方法来进一步分析。类型名称可采用其他方式命名,不影响本发明的方法。
类型推导规则分类两类:原子型规则和复合型规则。原子型规则刻画输入变量的概率分布类型:随机变量为均分分布类型,明文和密钥变量为未知分布类型,常量为常量分布类型。复合型规则根据操作符类型和操作数类型刻画,具体规则如式(1)至式(12)所示。应注意,类型推导规则不仅限于式(1)至式(12)所示的规则,可根据实际操作符类型和程序类型进行扩展,比如整数程序、加减乘除运算符等。
式(1)中,
式(2)中,
式(3)中,
式(4)中,
式(5)中,
式(6)中,
式(7)中,
式(8)中,
式(9)中,sid表示表示该规则的名称。
式(10)中,not表示表示该规则的名称,
式(11)中,no-key表示表示该规则的名称,supp(l)表示中间结果l语法依赖的变量集合,k表示保密变量集合。
式(12)中,ukd表示表示该规则的名称。
以图3程序为例,其中r1、r2、r3为随机变量,k为密钥,c1、c2、c3、c4、c5、c6为中间结果。图4是图3程序的程序依赖图中间表示形式,其中,c3、c4、c5和c6计算表达式如下所示:
利用类型推导规则,可推理知道r1、r2、r3、c1、c2、c3、c4和c5为均匀分布类型,k为未知类型,c6为独立分布类型。
模型计数求解器采用smt求解器,如z3和cvc4等。对于任意一个中间结果l,采用枚举所有随机变量可能的取值,计算各种随机变量取值时中间结果为l的次数;判断是非存在两种不同的密钥导致中间结果为l的次数不同。smt编码只是一种计算方式,可采用参数化模型计数方法进行替换,亦包含于本发明的方法。以图3程序中的中间结果c4为例,smt公式为以下四个公式的合取:
θ≠≡(n1+n2+n3+n4)≠(n′1+n′2+n′3+n′4)
式中,c41、c42、c43、c44分别表示r1r2分别取00,01,10,11时候c4关于k的布尔值,,c’41、c’42、c’43、c’44分别表示r1r2分别取00,01,10,11时候c4关于k’的布尔值,n1、n2、n3、n4分别表示c41、c42、c43、c44的整数值,n’1、n’2、n’3、n’4分别表示c’41、c’42、c’43、c’44的整数值。
smt求解器结果反馈以图5所示程序为例,采用类型推导,可计算中间结果c1和c3为均匀分布类型,c2、c4和c6为独立分布类型,但是c5是未知类型;将中间结果c5对于表达式编码到smt公式,求解计算可得c5为独立分布类型;根据该结果可直接用类型推导技术c7为独立分布类型。