掌桥专利:专业的专利平台
掌桥专利
首页

一种基于随机S盒掩码的抗功耗攻击方法

文献发布时间:2023-06-19 18:46:07


一种基于随机S盒掩码的抗功耗攻击方法

技术领域

本发明涉及一种基于前端掩码设计防护方案,属于信息安全芯片设计技术领域。

背景技术

随着物联网行业的迅速发展,信息交互已经成为我们日常生活中不可或缺的一部分。随之而来也带来了很多的安全问题,密码算法是物联网信息交互保护安全的重要手段。分组密码算法是目前最常见、运用作广泛的加密算法。密码安全的信息交互也存在着被攻破的风险,最常见的攻击手段为侧信道攻击方案,这个攻击方案可以通过检测密码芯片在加密时产生的功耗等侧信道信息来攻破密钥。因此,针对侧信道的安全防护就变得尤其重要。掩码型防护技术是比较常用的一种针对侧信道攻击的防护技术,通过随机化加密过程中的中间值,使得攻击者无法得知具体加密过程中的中间值,并且无法通过数学计算得出正确中间值与采集到的功耗的关系,从而无法得出正确密钥,但是目前已存在的掩码方案都存在较大面积开销,吞吐率以及防护性能等方面的缺点。SDRR防护方案使得每一轮的加密需要两个周期才能完成该轮的加密操作,降低了加密操作的吞吐率,并且不能抵御高阶的侧信道攻击。Nikova等人提出隐藏型加密掩码防护手段,该方案可以抵御一阶差分功耗攻击,但是防护后的面积开销增加了3-12倍;YiWang等人在基于FPGA的加密手段优化了掩码的技术,但相比于未加防护的加密方案,FPGA资源利用率增加了一倍;Roben等人在AES加密操作之前引入随机数,使得加密的密钥为伪密钥,并且通过加入迭代掩码的方案,使得最终输出的结果为正确密文,但是在得知掩码的情况下,攻破出来的伪密钥仍存在巨大风险。因此,需要设计一种合理的抗功耗攻击方案来降低资源开销并且高效实现。

发明内容

技术问题:针对以上问题,本发明提出了一种基于随机S盒掩码抗功耗攻击方法,是一种新型掩码方案来抵御侧信道攻击,不仅能够使得加密算法的中间值和功耗值大小不再具有较强的关系,增加侧信道攻击的难度,而且相对于以往的掩码方案,面积和功耗性能等方面得到了大幅度的提升。

技术方案:本发明的一种基于随机S盒掩码抗功耗攻击方法包括以下步骤:

步骤1,通过产生一个随机数n作为拆分S盒的依据,n的取值范围1到15,将S盒拆分为两个部分,分别为16×n和16×(16-n);

步骤2,对新生成的两个S盒进行重组,将16×n上半部分固定,把S盒单元地址信息填入剩余部分组成新的16×16的s0盒,同理,将16×(16-n)下半部分进行固定,上半部分填充S盒单元地址信息组成16×16的s1盒;

步骤3,针对每一组数据,如果数据小于16×n,则可以发生置换,否则保持数据不变;置换后的数据标记标识位为1,未置换的数据记标识位为0,每一组数据的标识位组成16位的标记数据;

步骤4,取标记数据的前8位依次与每组8位数据进行异或生成伪中间值,在下一个时钟周期将伪中间值和标记数据存入寄存器内;

步骤5,在下一个时钟周期,将存入的伪中间值和标记数据取出,并将伪中间值与标记数据的前8位再次进行异或,恢复成原来的中间值;

步骤6,将恢复的中间值与s1盒置换,完成S盒的整体置换性,提高芯片抵御侧信道攻击的能力。

所述对新生成的两个S盒进行重组,在基于寄存器的存取数据前后,将存入寄存器之前的S盒置换操作分为两部分,共同完成S盒的置换操作;第一部分完成部分数据的置换工作,后一部分完成剩余数据的置换工作,分别放置在寄存器的存入之前和取出之后,这两部分分别由s0盒和s1盒组成的新的S盒完成,其中s0盒和s1盒是由原来的S盒随机分解重组形成的。

所述的s0盒是由拆解S盒的16×n部分以及地址信息填充16×(16-n)组成的,而s1盒是由拆解S盒的16×(16-n)部分以及地址信息填充16×n部分组成的。

所述的s0盒置换是将每组小于16×n的数据进行置换,而大于16×n的数据保持不变。

所述的寄存器的存入之前是要需要将发生置换的数据标记为1,未发生置换的数据标记的数据记为0,同时标记数据与s0置换后的数据异或生成伪中间值。

所述的寄存器取出之后是要将存入的伪中间值与标记数据再次进行异或,恢复成原先s0置换后的数据。

所述s1盒置换是将恢复的数据与s1盒数据进行置换的得到的,大于16×n的数据进行置换,小于16×n的数据保持不变,最终完成整体的置换。

有益效果:本发明提出了基于随机S盒的掩码防护方案,有效降低功耗、面积开销以及提高抗功耗攻击的防护能力。与现有技术相比,由于只是将原始S盒进行拆解,没有引入额外的子模块,所以基于随机S盒的方案面积开销较小。其中SKINNY的随机S盒FPGA环境下的面积开销约为10%;AES的随机S盒的ASIC面积开销约为5%。同时,因为原始S盒的置换拆分为两步,其功耗大小几乎不变,所以基于随机S盒的方案功耗开销较小。其中SKINNY的随机S盒FPGA环境下的功耗开销约为3%;AES的随机S盒标记数据不异或的功耗开销约为2%。因此,基于掩码的随机S盒防护方案具有更好的防护性能,在FPGA和EDA环境下均没有发生攻破。

综上所述,掩码的防护方案可以达到很好的防护性能,同时面积和功耗开销均小于现有的防护方案。

附图说明

图1是随机S盒拆解重组过程示意图;

图2是中间值寄存器存取以及标记数据的读取示意图;

图3是中间值寄存器存取以及标记数据异或的方案示意图;

图4是本发明的流程图。

具体实施方式

下面结合附图和实施例对本发明的技术方案作进一步的说明。

如图1所示,本发明所述的针对AES128算法的随机S盒生成具体流程如下:

传统的AES分组密码算法的S盒置换表是一个16×16的查找表,根据输入数据的数值,查找相应的数值,为非线性变换。随机的S盒防护方案第一步是拆分该S盒,以n=5为例,将S盒拆分为两个部分,分别为16×5和16×(16-5)。完成拆分的工作之后,需要对新生成的两个部分进行重组,首先是将16×5上半部分固定,通过填充剩余的16×(16-5)部分组成新的s0盒。其中剩余16×(16-5)部分的填充内容为S盒单元地址信息,即其置换的数值也为置换数本身,保持不变。将该部分作为存入寄存器之前的操作。其次是原始S盒拆解的下半部分,即16×(16-5)部分,需要进行上半部分的填充,生成新的s1盒,填充部分同s0盒的填充方案,该s1盒用于寄存器取出之后需要进行的置换操作。最后经过s0和s1的置换操作,共同完成了S盒的置换目的,生成的正确中间值继续进行接下来的操作。

如图2所示,完成s0的置换操作之后,需要对数值进行标记。参与S盒置换的数据为128位,AES的分组本质是拆解为16组8位的数据各自置换,因此针对每一组数据,发生S盒置换之前的数据如果小于16×5,则可以完成置换,否则就是原来的数值。此时需要对已发生置换的数据进行标记。标记数值为16位的数据,该标记数据的每一位代表AES分组的16组数据。当该组发生置换,此时该标记数据置为1,否则,置为0。此时生成的寄存器中间值被称为半成品中间值,完成部分置换。完成该操作之后,将生成的128位中间值以及16位的标记数据存入寄存器中。在下一个时钟到来之时,将中间值和标记数据取出进行s1的置换,此时,标记数据为0的位数代表上一次没有发生置换的数据,即大于等于16×5的数据,这些数据在s1中发生置换,完成整体的置换。此时,经过两个S盒s0和s1的分步置换,AES算法的非线性字节替换中间值已完成。存入寄存器的128位随机数由于是半成品,因此对汉明距离的计算增加了难度。

如图3所示,针对分组密码的特性,以第一组数据为例,当置换数据小于16×5,则存在计算出正确汉明距离变化的可能性。因此,本发明提出尝试将标记数据与128位的过程中间值异或的方案,在完成了s0置换和标记数据的生成之后,取标记数据的前8位依次与128位的16组数据异或,生成完全无法预测的128位中间值。此时即使是两组相邻的加密轮,由于异或方案的存在,汉明距离的计算方案也是难以攻击出来的。在时钟到来的时候将128位异或半成品中间值以及16位标记数值存入寄存器内,在下一个时钟到来的时候,将该值取出,并再次异或恢复原来的半成品中间值,再次进行s1的置换。

技术分类

06120115687665