一种适用于分组密码算法感染防护的抗差分故障攻击安全性评估方法和系统转让专利

申请号 : CN201910194486.X

文献号 : CN110401627B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 冯婧怡陈华焦志鹏匡晓云习伟范丽敏张立武于杨

申请人 : 中国科学院软件研究所南方电网科学研究院有限责任公司

摘要 :

本发明公开了一种适用于分组密码算法感染防护的抗差分故障攻击安全性评估方法和系统。本方法为:1)根据分组密码算法、故障注入目标中间值和故障模型,计算原始密文差分的先验信息;2)计算在待评估感染防护中信息熵的数值;3)根据分组密码算法、故障注入目标中间值和故障模型,计算在安全感染防护中信息熵的数值下界;4)通过比较待评估感染防护中信息熵的数值与所述数值下界的关系,判定待评估感染防护的安全性。该方法以信息熵度量感染防护的安全性,使评估过程独立于具体的密钥恢复策略,使评估结果更加准确。同时该方法将感染函数从感染防护的分组密码实现中分离出来,使评估通用于多种不同的感染防护,并提高评估效率。

权利要求 :

1.一种适用于分组密码算法感染防护的抗差分故障攻击安全性评估方法,所述差分故障攻击至少包括故障注入目标中间值和故障模型,其特征在于,所述方法包括以下步骤:

1)根据所述分组密码算法、所述故障注入目标中间值和所述故障模型,计算原始密文差分的先验信息;所述的计算原始密文差分的先验信息的方法为:根据所述故障注入目标中间值和故障模型,分析故障在所述分组密码算法中的传播路径,计算原始密文差分中0比特个数的下界;

2)利用步骤1)得到的原始密文差分的先验信息,以及感染密文差分,计算待评估感染防护中原始密文差分的信息熵;按照所述感染密文差分的构成差异,计算待评估感染防护中原始密文差分的信息熵分为两种方法;

当所述感染密文差分等于所述待评估感染防护中的感染函数的输出时,所述计算感染防护中原始密文差分的信息熵的方法为:a1)将所述待评估感染防护中的感染函数分解为N个结构相同的随机操作,要求任意两个随机操作中使用的随机数比特无交集、输入比特无交集,要求所有随机操作的输入与感染函数的输入即原始密文差分△C之间为已知的确定性线性映射关系,要求所有随机操作的输出与感染函数的输出I(△C)之间为已知的确定性映射关系;

a2)将感染函数的输入△C的先验信息△Cp映射为第i个随机操作的输入ini的先验信息将感染函数的输出I(△C)映射为第i个随机操作的输出outi的先验信息 其中i=1到N;

a3)计算第i个随机操作输入ini的信息熵

a4)计算感染防护中原始密文差分△C的信息熵

当所述感染密文差分等于所述待评估感染防护中的原始密文差分与感染函数输出的异或值时,所述计算感染防护中原始密文差分的信息熵的方法为:b1)将所述感染防护中的感染函数分解为M个结构相同的随机操作,要求任意两个随机操作中使用的随机数比特无交集、输入比特无交集,要求所有随机操作的输入与感染函数的输入即原始密文差分△C之间为已知的确定性映射关系,要求所有随机操作的输出与感染函数的输出I(△C)之间为已知的确定性线性映射关系;

b2)根据感染函数的输入△C的先验信息△Cp和感染密文差分△F,计算感染函数的输出I(△C)的先验信息I(△C)p;

b3)将感染函数的输入△C的先验信息△Cp映射为第j个随机操作的输入 的先验信息将感染函数的输出I(△C)的先验信息I(△C)p,映射为第j个随机操作的输出 的先验信息 其中j=1到M;

b4)计算第j个随机操作的输出的信息熵

b5)计算感染防护中原始密文差分△C的信息熵

所述感染防护中原始密文差分△C的信息熵为:

3)根据所述分组密码算法、所述故障注入目标中间值和所述故障模型,计算在不泄露密钥信息的安全感染防护中,原始密文差分的信息熵下界;计算所述原始密文差分的信息熵下界的方法为:根据所述分组密码算法、所述故障注入目标中间值和所述故障模型,利用optimalDFA分析方法,计算故障传播过程中涉及的密钥K、原始密文差分△C和正确密文C的互信息Le=I(K,△C,C),即信息熵下界;

4)通过比较步骤2)得到的信息熵的数值与步骤3)得到的信息熵下界的关系,判定待评估感染防护的安全性。

2.如权利要求1所述的方法,其特征在于,所述感染密文差分等于正确密文与感染密文的异或值。

3.如权利要求1所述的方法,其特征在于,步骤4)判断步骤2)得到的信息熵是否小于步骤3)得到的信息熵下界,若是,则所述分组密码的密钥信息会发生泄漏,判定所述感染防护在所述故障注入目标中间值和所述故障模型下不安全;若否,则判定感染防护在所述故障注入目标中间值和所述故障模型下可能安全。

4.一种执行权利要求1所述适用于分组密码算法感染防护的抗差分故障攻击安全性评估方法的系统,所述差分故障攻击至少包括故障注入目标中间值和故障模型,其特征在于,所述系统包括:先验信息计算模块,负责根据所述分组密码算法、所述故障注入目标中间值和所述故障模型,计算原始密文差分的先验信息;

信息熵计算模块,负责利用所述先验信息计算模块得到的原始密文差分的先验信息,以及感染密文差分,计算待评估感染防护中原始密文差分的信息熵;

信息熵下界计算模块,负责根据所述分组密码算法、所述故障注入目标中间值和所述故障模型,计算在不泄露密钥信息的安全感染防护中,原始密文差分的信息熵下界;

安全性判定模块,负责通过比较所述信息熵计算模块得到的信息熵的数值与所述信息熵下界计算模块得到的信息熵下界的关系,判定待评估感染防护的安全性。

说明书 :

一种适用于分组密码算法感染防护的抗差分故障攻击安全性

评估方法和系统

技术领域

[0001] 本发明涉及信息安全分组密码分析和防护领域,特别涉及一种评估分组密码算法感染防护的抗差分故障攻击安全性的方法和系统。

背景技术

[0002] 对称密码是通信双方共享同一个秘密密钥的密码体制。其中分组密码算法是一类广泛使用的对称密码。分组密码算法的常见结构有Feistel结构、SP结构等,算法中密码变换函数的设计通常遵循混淆和扩散的安全性原则,并通过多轮迭代操作使其能够抵抗现有的所有理论分析方法,例如差分分析、线性分析、积分攻击和插值攻击等。其中,S盒是分组密码算法中广泛使用的非线性混淆模块。分组密码算法具有运行速度快、易于标准化和便于软硬件实现的特点,适用于各种嵌入式系统应用场景。目前,针对分组密码算法的理论分析成果非常丰富。
[0003] 故障攻击是一类常见的密码实现分析方法。它的可行性在于密码芯片、嵌入式密码模块等密码实现的正常运行依赖于稳定且适合的供电、时钟、温度等环境因素。当攻击者可以改变环境因素使其超过某阈值,即可引发加密故障。故障加密过程中泄漏的额外信息可用于密钥恢复。由于产生故障的方式多样,故障类型丰富,密钥恢复方法灵活且复杂度明显低于传统密码分析方法,故障攻击对密码实现的应用造成很大的威胁。实验表明,所有未添加防护措施的密码实现都存在正常运行被破坏的风险。抗故障攻击防护已经成为密码系统安全评估的重要内容之一。例如在美国国家标准技术研究所NIST发布的密码模块安全标准FIPS 140-3中,物理安全部分就要求包含针对故障攻击的防护措施。在我国发布的GM/T0008-2012《安全芯片密码检测准则》中,也明确要求了高安全等级的密码芯片应具有抵御故障攻击的能力。
[0004] 针对分组密码算法的差分故障攻击(Differential Fault Analysis,DFA)是1997年由Biham和Shamir首次提出的。差分故障攻击的前提条件为攻击者可以使用相同的密钥对相同明文分别进行两次加密,一次为正确加密,输出正确密文,另一次在加密过程中注入故障,为故障加密,输出故障密文。攻击者在了解故障注入目标和故障注入模型的情况下对正确和故障密文组合进行差分分析,恢复故障传播过程中涉及的密钥,因此被称为差分故障分析。因为其通用性、有效性,差分故障攻击已被成功应用在几乎所有分组密码上,直到现在仍然是最常用的故障攻击方法。
[0005] 差分故障攻击所使用的故障注入包括两类:改变加密流程的故障和改变加密中间值的故障。在改变加密中间值的故障注入中,故障注入模型e反映了故障中间值与正确中间值的关系、故障比特宽度、故障在中间值中的位置,以及故障的数值。分组密码的扩散性质决定了针对中间值的故障注入模型e在分组密码中的传播路径以及原始密文差分中故障扩散比特宽度。
[0006] Optimal DFA是一种基于信息论的差分故障攻击方法,适用于改变加密中间值的故障注入。基于该方法,攻击者无需设计具体密钥恢复策略,即可估算出恢复全部密钥所需的故障注入次数下界。Optimal DFA的原理为根据故障注入目标中间值、故障注入模型e以及分组密码算法中非线性S盒的差分分布特征计算一次故障注入泄漏的密钥信息熵。
[0007] 图1给出一个使用n比特S盒的分组密码算法加密框架。中间值X经过S盒处理得到Y,再与密钥K异或得到输出Z。对S盒的输入注入故障相当于对其采用两个不同的输入X1,X2= 使用相同的密钥K进行两次加密运算,其中ΔX为差分输入,它对应着注入的故障的数值。而攻击者只能观测到相应的加密输出Z1, 其中ΔY表示Z1和Z2的差分值,ΔY还等价于两次加密中S盒处理结果Y1和Y2的差分值。设x1,x2,Δx和k分别为某两次实际加密中X1,X2,ΔX和K的具体取值。设y1,y2,z1,z2和Δy是这两次加密中Y1,Y2,Z1,Z2和ΔY的对应的具体取值。因为(x1,x2,k)与(z1,z2,k)之间存在一一对应关系,所以H(K,X1,X2)=H(K,Z1,Z2),其中H(·)表示信息熵,代表变量的不确定度。进而可推知在已知加密输出Z1,Z2时,关于密钥的条件熵:
[0008] H(K|Z1,Z2)=H(X1,X2|ΔY)=H(ΔX|ΔY)+H(X1|ΔX,ΔY)
[0009] 条件熵H(A|B)的计算公式如下所示。其中B为已知变量,A为待求的未知变量,P(·)为概率。b为B的一个具体取值,B=b的概率为P(b)。a为A的一个具体取值,在已知B=b的条件下,A=a的概率为P(a|b)。
[0010]
[0011]
[0012] 在H(K|Z1,Z2)中,H(X1|ΔX,ΔY)可由S盒的差分分布表计算出。给定(ΔX,ΔY)一个具体取值(Δx,Δy),假设它们是合法差分输入输出的概率为p。每个合法(Δx,Δy)近似以相同概率出现。那么对于每一个合法(Δx,Δy)约有 个可能的输入取值,相应的每个输入取值x1出现的概率P(x1|Δx,Δy)≈p。因此H(X1|ΔX,ΔY)≈-log p比特。另外,H(ΔX|ΔnY)=H(ΔX,ΔY)-H(ΔY)。假设S盒的输入X1均匀分布在集合{0,1}中,且S盒的差分输入ΔX均匀分布在集合 中,则差分输出ΔY均匀分布在集合{0,1}n中,H(ΔY)≈n比特。
因为(ΔX,ΔY)的每个具体取值(Δx,Δy)是合法差分输入输出的概率均为p,所以H(ΔX,ΔY)≈log(|χ|×2n×p)比特,其中|χ|表示集合χ的大小。综上所述,H(K|Z1,Z2)≈log|χ|比特,即一次故障注入泄漏的密钥信息熵的下界约为I(K,Z1,Z2)=H(K)-H(K|Z1,Z2)≈n-log|χ|比特。对于整个分组密码算法,ΔX所在的集合χ的大小由故障注入模型e的不确定度决定,n等于故障传播过程中涉及的密钥K的不确定度。因此故障传播过程中涉及的密钥K、正确密文C和原始密文差分ΔC的互信息为:
[0013]
[0014] 感染防护是一种通用的故障攻击防护措施,可提高分组密码算法抵抗差分故障攻击的能力。它的防护原理是随机化故障在加密过程中的混淆方式,扩大故障的影响范围,从而消除故障不变量,增加从故障密文中恢复密钥的难度。分组密码感染防护实现如图2所示。
[0015] 分组密码感染防护实现需要引入额外的冗余加密模块和感染函数。冗余加密模块的构造与原始加密模块完全相同。在防护加密中,首先对原始加密模块和冗余加密模块输入相同的明文,使用相同的密钥进行两次加密;然后对原始加密和冗余加密结果进行异或,得到原始密文差分ΔC;接下来将ΔC输入感染函数,得到输出I(ΔC);最后将感染函数输出I(ΔC)异或到原始加密密文中,作为感染密文Cf最终输出。
[0016] 感染函数的构造需要满足两个条件。首先,为保证在无故障注入时感染密文等于正确密文,要求感染函数满足输入为0输出为0的映射关系。其次,要求在有故障注入时感染密文与原始故障密文尽可能无关,所以在感染函数中常常会引入随机数R。感染函数的数学表达式如下:
[0017]
[0018] 其中F表示以随机数R为输入参数的函数。由于资源限制,感染函数的构造通常比较简单。如图3所示,现有的感染函数大多数会首先采用某些确定性操作使输入ΔC中的非零比特扩散开,然后采用一系列引入随机数的随机操作混淆函数输入,最后在感染函数输出前再进行一次确定性操作使随机操作的运算结果进一步扩散。
[0019] 感染函数中,确定性操作不是必须操作。而随机操作是感染函数中必须的,也是最重要的部分,是它们保证了感染函数的安全性。在一个由N个随机操作构成的感染函数中,不同随机操作的输入以及使用的随机数比特是相互独立无交集的。第i个随机操作的输入、输出、随机比特可记为:ini,outi和ri。现有的感染函数中,随机操作的构造方法包括:随机2状态开关、随机数比特与运算、在GF(28)上的随机数乘法运算、输入随机的差分S盒运算等等。
[0020] 在差分故障攻击条件下,攻击者可以重复使用相同的明文和密钥进行多次加密,获取无故障注入情况下的正确密文C和有故障情况下的感染密文Cf。在单次故障注入的情况下,针对运算中间值的故障注入仅可以影响原始或冗余加密中的一个。记分组密码感染防护在有故障注入情况下最终输出的感染密文与正确密文的差分为 称其为感染密文差分。当故障仅影响原始加密时,感染密文差分 当故障仅影响冗余
加密时,感染密文差分ΔF=I(ΔC)。
[0021] 目前,在如何评估感染防护抗差分故障攻击的安全性方面,已有少量工作,这些工作可以分为两大类。一类对感染防护设计差分故障攻击方法恢复原始密文差分ΔC和密钥K,通过计算攻击复杂度来度量安全性。这类方法的评估结果依赖于具体密钥恢复策略,攻击策略的个性化选择导致评估的准确性存在缺陷,新型攻击方法的提出一次次推翻先前的评估结果。另一类通过计算密钥K和感染密文差分ΔF的互信息I(K;ΔF)度量感染防护的安全性,当I(K;ΔF)=0时认为防护安全。给定感染防护中的分组密码算法和感染函数后,K和ΔF的互信息的计算公式如下,
[0022]
[0023] 基于互信息的评估结果独立于密钥恢复策略。基于上述公式得到I(K;ΔF)数值和评估结果非常准确。但是在概率值P(k|Δf)计算方面,除了通过穷举明文、密钥和注入故障数值,统计Δf和(k,Δf)的出现频次来推算概率值外,目前并没有通用的计算方法。由于穷举的复杂度常常会超出目前计算机运算能力,因此该公式无法实际用于评估某些复杂的感染防护。此外,该方法将分组密码和感染函数作为一个整体进行评估。在不改变分组密码和故障注入场景的情况下,如需评估使用不同感染函数的多个感染防护,则每次都需要从头开始一次全新的评估,因此评估效率较低。

发明内容

[0024] 本发明提出了一种评估分组密码算法感染防护的抗差分故障攻击安全性的方法。该方法针对改变分组密码中间值的故障注入。该方法以信息熵度量感染防护的安全性,使评估过程独立于具体的密钥恢复策略,提供高评估结果的准确性。同时该方法将感染函数从分组密码感染防护实现中分离出来,使评估通用于多种使用不同感染函数的感染防护,并提高评估效率。
[0025] 为达到上述目的,本发明以给定原始密文差分先验信息ΔCp和感染密文差分ΔF条件下原始密文差分ΔC的信息熵H(ΔC|ΔCp,ΔF)作为感染防护的安全性度量。整个评估方法包括四部分:
[0026] 1)根据分组密码算法、故障注入目标中间值和故障模型e,计算原始密文差分ΔC的先验信息ΔCp;
[0027] 2)计算在待评估感染防护中信息熵H(ΔC|ΔCp,ΔF)的数值;
[0028] 3)根据分组密码算法、故障注入目标中间值和故障模型e,计算在安全感染防护中信息熵H(ΔC|ΔCp,ΔF)的数值下界Le;
[0029] 4)通过比较待评估感染防护中信息熵H(ΔC|ΔCp,ΔF)的数值与Le的关系,判定待评估感染防护的安全性。
[0030] 优选地,上述方法中的各步骤采用以下方式实现:
[0031] 1)对于针对分组密码中间值的故障注入,根据故障注入目标中间值和模型e分析故障在分组密码中的传播情况计算原始密文差分ΔC中0比特个数的下界,作为原始密文差分的先验信息ΔCp:
[0032] 对于某些注入目标中间值靠近密文的故障或模型宽度较窄的故障,当故障传播到原始密文差分ΔC时未完全扩散,则ΔC中部分比特为0。对于分组宽度为D的分组密码算法,原始密文差分ΔC中0比特个数的下界等于D与ΔC中故障扩散比特宽度的差值;
[0033] 对于某些注入目标中间值远离密文的故障或模型宽度较宽的故障,当故障传播到原始密文差分ΔC时已完全扩散,则ΔC中0比特个数的下界为0。
[0034] 关于计算原始密文差分ΔC中0比特个数的下界为本领域的已有技术,此处不在赘述。
[0035] 2)计算在待评估感染防护中信息熵H(ΔC|ΔCp,ΔF)的数值:
[0036] 感染密文差分ΔF等于正确密文C与感染密文C’的异或值,有两种可能的构造形式:当故障注入在冗余加密时,感染密文差分ΔF等于感染函数的输出I(ΔC);当故障注入在原始加密时,感染密文差分ΔF等于原始密文差分与感染密文差分的异或值
[0037] 2.1)当ΔF=I(ΔC)时,
[0038] 将待评估感染防护中的感染函数分解为N个结构相同的随机操作。要求任意两个随机操作中使用的随机数比特无交集、输入比特无交集;要求所有随机操作的输入ini与感染函数的输入即原始密文差分ΔC之间为已知的确定性线性映射关系;要求所有随机操作的输出outi与感染函数的输出I(ΔC)之间为已知的确定性映射关系;其中i=1到N;
[0039] 对于第i个随机操作,根据随机操作的输入ini与感染函数的输入ΔC的线性映射i i关系,将ΔC先验信息ΔCp映射为in的先验信息 根据随机操作的输出out 与感染函数的输出I(ΔC)的映射关系,将I(ΔC)映射为outi的先验信息 其中i=1到N;
[0040] 对于第i个随机操作,基于先验信息 的范围穷举 的t种可能的数值。根据分组密码算法和感染函数的随机性,计算每一种数值 的出现概率Ps;
基于每一种数值计算关于随机操作输入ini的信息熵 从而计算出
其中i=1到N,s=1到t;
[0041] 计算
[0042] 2.2)当 时,
[0043] 将待评估感染防护中的感染函数分解为M个结构相同的随机操作。要求任意两个随机操作中使用的随机数比特无交集、输入比特无交集;要求所有随机操作的输入 与感染函数的输入即原始密文差分ΔC之间为已知的确定性映射关系;要求所有随机操作的输出 与感染函数的输出I(ΔC)之间为已知的确定性线性映射关系;其中j=1到M;
[0044] 根据感染函数的输入ΔC的先验信息ΔCp和感染密文差分ΔF,计算感染函数的输出I(ΔC)的先验信息I(ΔC)p,即I(ΔC)中与ΔC中0比特异或的比特的数值,它们等于ΔF在相应比特位置上的数值。
[0045] 对于第j个随机操作,根据随机操作的输入 与感染函数的输入ΔC的映射关系,将ΔC的先验信息ΔCp映射为 的先验信息 根据随机操作的输出 与感染函数的输出,(ΔC)的线性映射关系,将I(ΔC)的先验信息I(ΔC)p映射为 的先验信息 其中j=1到M;
[0046] 对于第j个随机操作,基于先验信息 的范围穷举 的v种可能的数值。根据分组密码算法和感染函数的随机性,计算每一种数值 的出现概率Pw;
基于每一种数值计算关于第j个随机操作输出 的信息熵 从而计
算出 其中j=1到M,w=1到v;
[0047] 计算
[0048] 感染防护中原始密文差分ΔC的信息熵为:
[0049] 3)根据分组密码算法、故障注入目标中间值和故障模型e,利用optimal DFA分析方法计算在安全感染防护中信息熵H(ΔC|ΔCp,ΔF)的数值下界Le=I(K,ΔC,C)≈n-H(e),其中n等于故障传播过程中涉及的密钥K的不确定度,H(e)表示故障模型的不确定度。
[0050] 4)判断步骤2)得到的信息熵H(ΔC|ΔCp,ΔF)是否小于Le,若是,则分组密码的密钥信息会发生泄漏,判定感染防护在故障注入目标中间值和故障模型e下不安全;若否,则判定感染防护在故障注入目标中间值和故障模型e下可能安全。
[0051] 与上面方法对应地,本发明还提供一种适用于分组密码算法感染防护的抗差分故障攻击安全性评估系统,所述差分故障攻击至少包括故障注入目标中间值和故障模型,所述系统包括:
[0052] 先验信息计算模块,负责根据所述分组密码算法、所述故障注入目标中间值和所述故障模型,计算原始密文差分的先验信息;
[0053] 信息熵计算模块,负责利用所述先验信息计算模块得到的原始密文差分的先验信息,以及感染密文差分,计算待评估感染防护中原始密文差分的信息熵;
[0054] 信息熵下界计算模块,负责根据所述分组密码算法、所述故障注入目标中间值和所述故障模型,计算在不泄露密钥信息的安全感染防护中,原始密文差分的信息熵下界;
[0055] 安全性判定模块,负责通过比较所述信息熵计算模块得到的信息熵的数值与所述信息熵下界计算模块得到的信息熵下界的关系,判定待评估感染防护的安全性。
[0056] 和现有技术相比,本发明具有如下优势:
[0057] 1.本发明针对分组密码感染防护,提出了一种抗差分故障攻击安全性的评估方法,使用该方法能更准确、更高效地评估感染防护;
[0058] 2.不同于现有的以差分故障攻击复杂度来度量感染防护的安全性的评估方法,本发明的评估方法以信息熵度量感染防护的安全性,使评估过程独立于具体攻击方法和密钥恢复策略,使评估结果更加准确;
[0059] 3.不同于现有的以密钥K和感染密文差分ΔF的互信息I(K;ΔF)度量感染防护的安全性的评估方法,本发明的评估方法将感染函数从分组密码感染防护实现中分离出来,以给定原始密文差分先验信息ΔCp和感染密文差分ΔF条件下原始密文差分ΔC的信息熵H(ΔC|ΔCp,ΔF)作为感染防护的安全性度量,借助现有optimal DFA分析方法计算在安全感染防护中信息熵H(ΔC|ΔCp,ΔF)的数值下界Le,提高评估效率;
[0060] 4.本发明采用的信息熵H(ΔC|ΔCp,ΔF)计算方法考虑了ΔF的两种不同构造,使评估结果更全面;
[0061] 5.本发明采用的信息熵H(ΔC|ΔCp,ΔF)计算方法把感染函数拆分成多个简单的随机操作,提高了信息熵H(ΔC|ΔCp,ΔF)的可计算性,提高了评估方法对使用不同感染函数的感染防护的通用性。

附图说明

[0062] 图1是使用n比特S盒的分组密码算法加密示意图;
[0063] 图2是分组密码感染防护实现图;
[0064] 图3是感染函数构造图;
[0065] 图4是基于随机2状态开关构造的感染函数图;
[0066] 图5是本发明方法的流程图。

具体实施方式

[0067] 下面结合附图和一个范例对本发明做进一步详细的说明,但不以任何方式限制本发明的范围。
[0068] 在实施例中,以AES-128作为分组密码,以倒数第二轮输入作为故障注入目标中间值,以位置和数值都随机未知的单字节翻转故障作为故障模型e,通过评估使用如图4所示的感染函数的感染防护说明本发明的有效性。
[0069] 图4中的感染函数主要包含四个部分:一个128比特输入\输出的确定性非线性操作A,一个128比特输入\输出的确定性线性比特置换操作B,64个2比特输入\输出的随机2状态开关操作(C1,C2,...,C64),一个128比特输入\输出的确定性线性比特置换操作D。当ΔC=0时,确定性非线性操作A输出(0000...00);当ΔC≠0,A输出(1010…10),汉明重量为64,且最终导致感染函数输出I(ΔC)的汉明重量为64。确定性线性比特置换操作B和D只改变不同比特的位置,置换方式随机但已知,操作输入值的汉明重量与输出值的汉明重量一致。第i个随机2状态开关操作Ci的受随机数R的第i比特ri控制,它的2比特输出有 概率直等于它的2比特输入,有 概率交叉等于它的2比特输入,操作输入值与输出值的汉明重量一致。
[0070] 评估过程如图5所示,包括以下步骤:
[0071] 1)根据注入在AES-128倒数第二轮输入单字节故障的传播特征,得故障扩散到原始密文差分ΔC中的4个字节。AES-128分组宽度为128比特,因此ΔC中0比特个数的下界为128-8×4=96,作为原始密文差分先验信息ΔCp。
[0072] 2)计算在待评估感染防护中信息熵H(ΔC|ΔCp,ΔF)的数值:
[0073] 2.1)当故障注入在冗余加密时,感染密文差分ΔF=I(ΔC)。以图4中确定性非线性操作A,确定性线性比特置换操作B以及64个2比特输入\输出的随机2状态开关操作(C1,2 64
C,...,C )共同作为感染函数的随机操作。此时,感染函数中只包含N=1个随机操作,满足条件:随机操作的输入与感染函数的输入即原始密文差分ΔC之间为已知的确定性线性映射关系,随机操作的输出与感染函数的输出I(ΔC)之间为已知的确定性映射关系。
[0074] 随机操作的输入in1的先验信息 为ΔC≠0,且ΔC中至少包含96个0比特;随机操作的输出out1的先验信息 为out1的数值,可由感染函数的输出I(ΔC)推导出,取值范围128 1
属于{0,1} ,且out的汉明重量为64。
[0075] 因此先验信息有t=C(128,64)种不同取值,每种取值 出现的概率近似相等,
[0076] 因为确定性非线性操作A在ΔC≠0时总输出(1010…10),因此对于先验信息的任何取值 s=1到t。因此
[0077] 可得
[0078] 2.2)当故障注入在原始加密时,感染密文差分 以图4中2比特输入\输出的随机2状态开关操作Cj作为感染函数的随机操作,j=1到64。此时,感染函数中只包含M=64个随机操作,满足条件:任意两个随机操作使用的随机数比特无交集、输入比特无交集,随机操作的输入与感染函数的输入即原始密文差分ΔC之间为已知的确定性映射关系,随机操作的输出与感染函数的输出I(ΔC)之间为已知的确定性线性映射关系。
[0079] 因为ΔC中至少包含96个0比特,则I(ΔC)中与ΔC中这96个0比特异或的比特的数值等于ΔF在相应比特位置上的数值,即先验信息I(ΔC)p为I(ΔC)中有96个已知比特。
[0080] 因为ΔC≠0,且确定性非线性操作A在ΔC≠0时总输出(1010…10),所以第j个随机操作的输入 的先验信息 为已知的2比特且取值分布均匀;随机操作的输出 的先验信息 为已知的2比特且取值分布均匀,或已知的1比特且取值分布均匀,或无先验信息。
[0081] 当 为已知的2比特, 为已知的2比特时,先验信息有v=6种可能的取值。w=1到6时,先验信息的取值 为(00,00),(01,01),(01,10),(10,10),(10,01)和(11,11),出现概率Pw分别为 和 对于任何取值
w=1到6。因此
[0082] 当 为已知的2比特, 为已知的1比特时,先验信息有v=6种可能的取值。w=1到6时,先验信息的取值 为(00,0),(01,0),(01,1),(10,0),(10,1)和(11,1),出现概率Pw分别为 和 对于任何取值 w
=1到6。因此
[0083] 当 为已知的2比特,无 信息时,先验信息有v=4种可能的取值。w=1到4时,先验信息的取值 为(00,),(01,),(10,)和(11,),出现概率Pw分别为 和对于取值(00,), 对于取值(01,), 对
于取值(10,), 对于取值(11,),
因此
[0084] 根据先验信息I(ΔC)p:I(ΔC)中有96个已知比特,可算出第j个随机操作的先验信息,满足 为已知的2比特, 为已知的2比特的随机操作的概率为 满足 为已知的2比特, 为已知的1比特的随机操作的概率为 满足 为已知的2比特,无
信息的随机操作的概率为 因此,在M=64个随机操作中,以上三类操作的个数
为上述概率与64的乘积。
[0085] 可得
[0086] 待评估感染防护中原始密文差分ΔC的信息熵为:
[0087] 3)根据注入在AES-128倒数第二轮输入单字节故障的传播特征,得故障传播过程中涉及的密钥K的不确定度为n=32比特。因为在128比特宽的故障中间值中故障模型e的宽度为8比特,位置和数值随机未知,所以故障的不确定度为利用optimal DFA分析方法计算在安全感染防护中信息熵H(ΔC|ΔCp,ΔF)的数值下界为Le=I(K,ΔC,C)≈n-H(e)=32-12=20比特。
[0088] 4)因为1.95<20,即H(ΔC|ΔCp,ΔF)<Le,所以使用图4所示的感染函数的感染防护,对于注入在AES-128倒数第二轮输入的故障位置和数值随机未知的单字节故障不安全。
[0089] 本发明另一实施例提供一种适用于分组密码算法感染防护的抗差分故障攻击安全性评估系统,所述差分故障攻击至少包括故障注入目标中间值和故障模型,所述系统包括:
[0090] 先验信息计算模块,负责根据所述分组密码算法、所述故障注入目标中间值和所述故障模型,计算原始密文差分的先验信息;
[0091] 信息熵计算模块,负责利用所述先验信息计算模块得到的原始密文差分的先验信息,以及感染密文差分,计算待评估感染防护中原始密文差分的信息熵;
[0092] 信息熵下界计算模块,负责根据所述分组密码算法、所述故障注入目标中间值和所述故障模型,计算在不泄露密钥信息的安全感染防护中,原始密文差分的信息熵下界;
[0093] 安全性判定模块,负责通过比较所述信息熵计算模块得到的信息熵的数值与所述信息熵下界计算模块得到的信息熵下界的关系,判定待评估感染防护的安全性。
[0094] 以上详细说明的具体的实施方式仅仅是为了更好了理解本发明使用的,本发明不局限于此,本领域一般技术人员可以根据本发明的公开内容,采用其他多种实施方式来实施本发明,比如可以以计算机软件产品的形式来实施,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器等)执行本发明的方法;凡是采用本发明的设计结构和思路的,在不脱离权利要求范围的变换和替代,都属于本发明的保护范围。