法律状态公告日
法律状态信息
法律状态
2020-01-07
授权
授权
2017-10-27
实质审查的生效 IPC(主分类):H04L9/06 申请日:20170314
实质审查的生效
2017-09-26
公开
公开
技术领域
本发明信息安全系统中侧信道攻击与防御理论技术领域,具体涉及一种抵御差分功耗攻击的分组密码多S盒实现的方法。
背景技术
差分功耗攻击是1999年由美国专家Paul Kocher首次提出来的一种针对密码芯片的物理攻击,该方案首先收集芯片在运行分组密码算法时产生的功耗,然后利用功耗与关键数据的相关性,采用统计差分的方法恢复密钥。因其实现效率高成本代价小的优点,给信息安全系统的安全性带来了极大的威胁和挑战,其相关理论发展了将近二十年,至今仍是专家门研究的热点。
伴随着差分功耗攻击理论的成熟,许多防御方案也应运而生。其中有两种比较流行,第一种是随机掩码技术,该技术是在密码算法中插入适当的随机数,在不改变加解密结果的同时,对差分功耗攻击中的目标关键数据进行随机异或操作,从而使得关键数据对应的功耗发生改变,达到保护密钥的目的;第二种是引入噪声技术,该技术是在密码算法电路中人为加入噪声,使得攻击者利用差分功耗攻击的效率降低,甚至无法恢复密钥,达到保护密钥的目的。
但是以上两种技术有一个共同的弊端,即显著地增加硬件消耗的资源或降低了运算速度,这也严重的制约着安全芯片的发展。由于S盒是分组密码中唯一的非线性组件,其实现以后消耗的资源占总体资源的50%-70%,同时,因为其非线性性也是导致功耗攻击中会泄漏敏感信息的原因,因此如何对S盒实现有效的保护是近几年来研究防御差分功耗攻击的重点。
发明内容
本发明的目的是提供一种抵御差分功耗攻击的分组密码多S盒实现的方法,以便提高S盒实现有效的保护。
为此,本发明提供了一种抵御差分功耗攻击的分组密码多S盒实现的方法,其特征在于,包括如下步骤:
步骤一:选定一种分组密码算法,对多个并行S盒进行转换,得到n 个4×4 S盒置换,并对4×4 S盒置换进行从0到n-1编号;
具体的操作步骤为:
A、通过压缩算法将n个独立并行的S盒转换成一个多维串行可复用的 S盒框架S′,
B、对S′中的4×4 S盒置换进行编号,即
其中,mn-1代表第n-1个4比特S盒置换的输入,Sn-1(mn-1)代表第n-1个4>
步骤二:进行S盒运算,产生一个随机数,并选择随机数对应的4×4 S 盒置换;
具体的操作步骤为:
1)电路进行S盒运算前,产生一个随机数R1,即
R1=(r1,r2,…rg(n))(2)
其中,0≤R1≤n-1,g(n)代表实际参与运算4×4>
2)通过R1的值选择对应的进入S′的4×4>其中
步骤三:通过随机数更新算法产生下一个随机数,并选择与该随机数对应4×4S盒置换;
即:将随机数R1与选定的第一个进入S′的4×4>2,即
步骤四:重复步骤三,若发现新生成的随机数所对应的4×4 S盒置换已经选择过,那么将新生成的随机数,逐位进行异或操作,得到1比特数;
具体的操作步骤为:
a)重复步骤三,若发现新生成的随机数Ri所对应的4×4>i所对应的4×4>
b)将Ri逐位进行异或操作,得到Ri*,即
步骤五:选择区分函数,重新选择下一个4×4 S盒置换,若仍然是已经选择过的4×4 S盒置换,则继续执行步骤五,直到找到的4×4 S盒置换是之前未选择过的并跳回步骤三;
具体操作为:选择一个区分函数f(Ri*)
若Ri逐位进行异或操作的结果Ri*为“0”时,则选择置换
步骤六:重复步骤三至步骤五,直到所有4×4 S盒置换全部选择完结束。
本发明的有益效果:本发明提供的这种抵御差分功耗攻击的分组密码多S盒实现的方法,占用资源与现有技术提供抵御差分功耗攻击的方法基本相同,消耗资源只增加了总资源的3%,但是只采用了一个g(n)个比特的随机数,相比于其它掩码方案减少很多,大幅提高了差分功耗攻击在数据处理时的攻击难度;由于区分函数f(Ri*)的随机性,使得攻击者每次获取S盒关键数据的功耗曲线长度不同,因此大幅提高了DPA的在后期对功耗数据对齐时的难度。
以下将结合附图对本发明做进一步详细说明。
附图说明
图1为抵御差分功耗攻击的分组密码多S盒实现的方法计算过程的流程图。
图2多维串行可复用的S盒框架S′示意图。
图3Sbox所对应的寄存器。
图4Reg内部结构。
图5触发器内部结构。
具体实施方式
为进一步阐述本发明达成预定目的所采取的技术手段及功效,以下结合附图及实施例对本发明的具体实施方式、结构特征及其功效,详细说明如下。
实施例1
为了提高S盒实现有效的保护,本发明提供了一种如图1所示的的抵御差分功耗攻击的分组密码多S盒实现的方法,利用流水线技术,在多维串行可复用的S盒框架中间加入三级寄存器,使得密码运算的速度相比原始方案不会下降的太多,提高了效率。
利用分组密码多S盒随机化输入技术,使得差分功耗攻击的攻击者无法在获取功耗曲线之后按照相关的统计差分方法对齐曲线,因此导致差分功耗攻击失败,提高了分组密码实现的安全性。
具体的方案包括如下步骤:
步骤一:选定一种分组密码算法,对多个并行S盒进行转换,得到4×4 S盒置换,并对4×4 S盒置换进行编号从0到n-1(此处变化,根据Nikova 的理论,当输入的比特位数n≥4时,这样的置换才具有安全性,并且我们注意到现在的密码方案中,最小的S盒也都是4×4的规模,因此,本方案假设产生的S盒框架中最小的置换为4×4是符合逻辑的);
具体的操作步骤为:
A、通过压缩算法将n个独立并行的S盒转换成一个多维串行可复用的 S盒框架S′,
B、对S′中的4×4 S盒置换进行编号,即
其中,mn-1代表第n-1个4比特S盒置换的输入,Sn-1(mn-1)代表第n-1>
步骤二:电路进行S盒运算,产生一个随机数,随机数的取值范围在 4×4 S盒置换进行编号范围内,并选择与随机数相对应的4×4 S盒置换;
具体的操作步骤为:
1)电路进行S盒运算前,产生一个随机数R1,即
R1=(r1,r2,…rg(n))(2)
其中,0≤R1≤n-1,g(n)代表实际参与运算4×4>
2)通过R1的值选择对应的进入S′的4×4>其中
步骤三:通过随机数更新算法产生下一个随机数,并选择与该随机数对应4×4S盒置换;
即:将随机数R1与选定的第一个进入S′的4×4>2,即
步骤四:重复步骤三,若发现新生成的随机数所对应的4×4 S盒置换已经选择过,那么将新生成的随机数,逐位进行异或操作,得到1比特数;
具体的操作步骤为:
a)重复步骤三,若发现新生成的随机数Ri所对应的4×4>i所对应的4×4>
b)将Ri逐位进行异或操作,得到Ri*,即
步骤五:选择区分函数,重新选择下一个4×4 S盒置换,若仍然是已经选择过的4×4 S盒置换,则继续执行步骤五,直到找到的4×4 S盒置换是之前未选择过的并跳回步骤三;
具体操作为:选择一个区分函数f(Ri*)
若Ri逐位进行异或操作的结果Ri*为“0”时,则选择置换
步骤六:重复步骤三至步骤五,直到所有4×4 S盒置换全部选择完结束。
该抵御差分功耗攻击的分组密码多S盒实现的方法具有如下优点:
(1)本方案只采用了g(n)个比特的随机数,相比于其它掩码方案减少很多,
(2)由于区分函数f(Ri*)的随机性,使得攻击者每次获取S盒关键数据的功耗曲线长度不同,因此大幅提高了DPA的在后期对功耗数据对齐时的难度。
(3)资源方面,本方案无论是基于查找表实现还是基于逻辑门实现,与原有实现方案相比消耗资源并不会增加很多。
(4)速度方面,由于本方案将原来并行的S盒转化成串行的S盒,因此可以采用PIPELINE方法,使得速度相比于原始方案并不会减少太多。
实施例2
以分组密码算法DES为例,对本发明做进一步详细说明。
虽然我们知道56bit密钥的DES算法在很多应用中被证明是不安全的。但是我们知道Triple-DES仍然在电子支付领域有着广泛的应用,因为其拥有 112bits的密钥,所以被证明是安全的。
DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、 32、40、48、56、64位是校验位,使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。
根据DES算法的内容,其S盒是由8个6×4的S盒并行组成,在每个S 盒中其6比特输入的第1位和第6位是用来确定其第2位到第5位所组成的4比特输入进入4个4×4置换中的哪一个。因此,实际上8个6×4 S盒是由32个4×4 S盒组成。我们根据方案中的流程对DES算法S盒进行实现,具体步骤如下:
1、将DES算法中8个6×4的S盒转换成32个4×4 S盒,利用Bilgin 的复用思想通过压缩算法将n个独立并行的S盒转换成一个多维串行可复用的S盒框架S′,转换后的逻辑图如图2所示,其中GK,GL,F,Aij,Bij,>ij为已知的置换,具体的置换参考文献[1]。
2、由于实际参与DES算法S盒运算的4×4 S盒有8个,因此n=8,那么g(n)=3。为了满足后续的算法要求,我们对g(n)进行一个修正。
令g(n)′=g(n)+1=4,因此生成的随机数R1=(r1,r2,…rg(n)′)=(r1,r2,r3,r4),>1≤15。
3、设R1′=(r2,r3,r4),通过R1′的值选择第一个进入S′的4×4>
4、将随机数R1与选定的第一个进入S′的4×4>
5、重复步骤3、4,若发现新生成的随机数Ri所对应的4×4>
6、将Ri逐位进行异或操作,得到Ri*。即
7、选择一个区分函数f(Ri*)
若Ri逐位进行异或操作的结果Ri*为“0”时,则选择置换
8、重复进行以上步骤,直到8个4×4 S盒置换全部选择完并进入多维串行可复用的S盒框架结束。
最后对本发明方案的安全性进行说明。
本方案安全性分析
功耗分析的理论
DPA功耗攻击目标针对的是密码算法电路中S盒所对应的寄存器的输出,以4×4Sbox为例,如图是具体的电路图,图3的power region是攻击者想要收集功耗的区域。
该区域是由4个1bit的寄存器构成,而其中每一个reg对应一个bit的 Sbox的输出,reg内部结构如图4。
其中一个reg是由少量的控制器件和一个D触发器构成,如图5所示, D触发器又由6个与非门构成。
因此,当输入D产生跳变,那么会有约8个与门,1个或门和一个非门内部的CMOS晶体管产生瞬时的动态功耗,攻击者可以根据收集的这些功耗利用DPA对该设备进行攻击。
本方案采用了随机输入4×4 S盒的技术,使得在多维串行可复用的S盒框架中,必须同时猜测出密钥与随机数时才有可能恢复正确密钥。其猜测密钥和随机数对应的关键数据和功耗值的可能性如表1所示。
表1
接下来计算攻击者恢复密钥的概率。猜对一组密钥的概率为:1/16,猜对4×4S盒的概率为:1/8,设在差分功耗攻击中,攻击者选用n组明文。
分析出第i组4×4 S盒所对应密钥的可能性不超过(1/2)3(n+4)。
由于差分功耗攻击中一般情况下n的取值大约为1000~2000之间,因此可看出只有攻击者同时猜出密钥和随机数时,才有可能确认正确的密钥。但在后期数据处理中,由于本发明运用了区分函数f(Ri*),所以攻击者要想对齐所有目标曲线也是非常困难的。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
[1]Bilgin B,Knezevic M,Nikov V,et al.Compact Implementations ofMulti-Sbox Designs[C]//International Conference on Smart Card Research andAdvanced Applications. Springer International Publishing,2015:273-285。
机译: 在攻击者控制的系统上实现分组密码算法的系统和方法
机译: 在攻击者控制的系统上实现分组密码算法的系统和方法
机译: 为了抵御拒绝服务攻击,一种用于隔离尽力而为流量和虚拟专用网(VPN)的系统,方法和装置