防止侧信道攻击的方法、算术逻辑单元以及处理器与流程

文档序号:28168920发布日期:2021-12-24 23:12阅读:534来源:国知局
防止侧信道攻击的方法、算术逻辑单元以及处理器与流程

1.本发明涉及计算机领域以及信息安全领域,具体涉及一种防止侧信道攻击的方法、算术逻辑单元以及处理器。


背景技术:

2.侧信道攻击是当前在信息密码学里面碰到的难题,侧信道攻击是指利用分析电路运行的时间消耗、功率消耗或电磁辐射之类侧信道泄露,探查电路运行规律的攻击手段。例如,在密钥算法中,能够通过时间片的分析,对应得到加解密程序中的循环指令的周期,进一步通过该周期和算法分析,能够推算出密钥的可能结果或规律。侧信道攻击的有效性远高于密码分析的数学方法,因此给密码设备带来了严重的威胁,当前非常需要防止侧信道攻击的方法及装置。
3.现有技术中,防止侧信道攻击的方法及装置多为对电路进行外部隔离或外部加干扰,这类方法及装置往往容易被硬件设备拆解方式破除保护层,因此,当前更需要能够从电路内部实现侧信道攻击防御的方法及装置。


技术实现要素:

4.为解决上述问题,提供一种防止侧信道攻击的方法,本发明采用了如下技术方案:
5.本发明提供了一种防止侧信道攻击的方法,应用于具有周期性规律的算法中,用于消除周期性规律,算法中包含有目标运算,该目标运算为加法运算或减法运算,具有运算符、操作数以及被操作数,其特征在于,对每个目标运算,方法包括:步骤s1,获取随机数;步骤s2,获取运算符、操作数以及被操作数;步骤s3,计算被操作数的补数;步骤s4,根据随机数,选择被操作数或补数作为执行运算的被操作数;步骤s5,根据随机数选择运算符或者相反的运算符作为执行运算的运算符;步骤s6,基于执行运算的运算符、操作数以及执行运算的被操作数进行运算,得到最终运算结果,其中,最终运算结果等于目标运算的运算结果。
6.本发明提供的防止侧信道攻击的方法,还可以具有这样的技术特征,其中,步骤s3包括如下子步骤:步骤s3

1,对被操作数的每个二进制位进行取反;步骤s3

2,将取反后的被操作数加上1,得到补数。
7.本发明提供的防止侧信道攻击的方法,还可以具有这样的技术特征,其中,步骤s4包括如下子步骤:步骤s4

1,判断随机数是否为预定值;步骤s4

2,当步骤s4

1判断为是时,选择补数作为执行运算的被操作数;步骤s4

3,当步骤s4

1判断为否时,选择被操作数作为执行运算的被操作数。
8.本发明提供的防止侧信道攻击的方法,还可以具有这样的技术特征,其中,步骤s5包括如下子步骤:步骤s5

1,判断随机数是否为预定值;步骤s5

2,当步骤s5

1判断为是时,选择运算符作为执行运算的运算符;步骤s5

3,当步骤s5

1判断为否时,选择相反的运算符作为执行运算的运算符。
9.本发明提供一种算术逻辑单元,其特征在于,包括标识位获取模块,与随机数发生
器连接,获取随机数作为翻转标识位;数据获取模块,用于获取运算符、操作数以及被操作数;预处理模块,基于翻转标识位对被操作数进行预处理;加法运算模块,基于操作数以及被操作数进行加法运算;减法运算模块,基于操作数以及被操作数进行减法运算;选择模块,基于翻转标识位和所述运算符的异或结果选择加法运算模块或减法运算模块执行运算,得到最终运算结果。
10.本发明提供的算术逻辑单元,还可以具有这样的技术特征,其中,当翻转标识位为预定值时,预处理模块计算被操作数的补数,并将补数作为执行运算的被操作数。
11.本发明提供的算术逻辑单元,还可以具有这样的技术特征,其中,加法运算模块具有加法器,减法运算模块具有减法器,翻转标识位分别连接到加法器的进位端以及减法器的借位端,从而实现补数的计算中加1的步骤。
12.本发明提供的算术逻辑单元,还可以具有这样的技术特征,其中,当翻转标识为预定值并且运算符为加法运算符时,选择模块选择减法运算模块执行运算,得到最终运算结果,当翻转标识为预定值并且运算符为减法运算符时,选择模块选择加法运算模块执行运算,得到最终运算结果。
13.本发明提供一种处理器,其特征在于,至少包括算术逻辑单元,其中,算术逻辑单元为上述的算术逻辑单元。
14.本发明提供的处理器,还可以具有这样的技术特征,其中,处理器为流水线处理器,具有多级流水线以及流水线存储模块,数据获取模块在第m级流水线获取运算符、操作数以及被操作数,选择模块在第n级流水线选择并得到最终运算结果,流水线存储模块将翻转标识位从第m级流水线存储至第n级流水线。
15.发明作用与效果
16.根据本发明的防止侧信道攻击的方法,能够随机地对具有周期性规律的算法中的加法运算以及减法运算进行改变,从而消除周期性规律,具体地,本发明的方法能够根据获取的随机数选择原本的被操作数或者被操作数的补数作为实际执行运算的被操作数,并根据随机数选择原本的运算符或相反的运算符作为实际执行运算的运算符,再进行加法或减法运算,并且最终运算结果与原目标运算的运算结果一致。由于使用被操作数进行运算与使用被操作数的补数进行运算在电信号、磁信号上具有很大差异,因此,本发明的方法能够在不改变运算结果的前提下消除算法的周期性规律导致的电信号、磁信号等的周期性规律,从而能够防止基于电信号、磁信号等的周期性规律的侧信道攻击。此外,本发明的方法还具有原理简单易懂、在电路上易于实现的优点。
附图说明
17.图1是本发明实施例中防止侧信道攻击的方法的流程图;
18.图2是本发明实施例中防止侧信道攻击的方法的步骤s3的流程图;
19.图3是本发明实施例中防止侧信道攻击的方法的步骤s4的流程图;
20.图4是本发明实施例中防止侧信道攻击的方法的步骤s5的流程图;
21.图5是本发明实施例中算术逻辑单元的结构框图;
22.图6是本发明实施例中算术逻辑单元的电路结构示意图;
23.图7是现有技术中算术逻辑单元的电路结构示意图;
24.图8是现有技术的算术逻辑单元的电流能量分析图;
25.图9是本发明实施例中算术逻辑单元的电流能量分析图。
具体实施方式
26.为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下结合实施例及附图对本发明的防止侧信道攻击的方法作具体阐述。
27.<实施例一>
28.本实施例提供一种防止侧信道攻击的方法、算术逻辑单元以及处理器。
29.本实施例中,具有周期性规律的算法为具有for循环语句的aes 加解密程序的子程序算法“addroundkey”,该子程序算法包括如下代码:
[0030][0031][0032]
从上述的代码可以看到,该子程序算法由两层嵌套的for循环组成,每个for循环都假设常数从0开始,递增到3结束,其中,外层的for循环具有控制循环次数的标志位i以及加法运算++i,内层的for 循环具有控制循环次数的标志位j以及加法运算++j。
[0033]
由于每次执行++i、++j的程序步骤时,整个电路的行为是非常类似的,相应地消耗的电流能量也非常接近,因此能够基于电流能量的分析进行侧信道攻击。
[0034]
本实施例的防止侧信道攻击的方法能够随机地改变上述子程序算法中的部分++i,++j的运算,将部分的++i(即i=i+1)转变为i= i

(

1),从而在保持运算结果不变的前提下消除上述的周期性规律。
[0035]
图1是本发明实施例中防止侧信道攻击的方法的流程图。
[0036]
如图1所示,本实施例的防止侧信道攻击的方法包括以下步骤:
[0037]
步骤s1,获取随机数。
[0038]
本实施例中,由随机数发生器所生成一个随机序列,该随机序列由0、1组成,其中的每一位作为应用于一个目标运算的随机数,也即随机数为0或1。
[0039]
步骤s2,获取运算符、操作数以及被操作数。
[0040]
本实施例中,目标运算为++i,也即i=i+1,运算符为加法运算符,操作数为i,被操作数为1。以下以i=2为例进行说明,同时,以下的运算均为8位固定位数的运算,当运算结果产生进位、超过8 位时,将移除运算结果的二进制最高位,以保持数据位数不变。
[0041]
步骤s3,计算被操作数的补数。
[0042]
图2是本发明实施例中防止侧信道攻击的方法的步骤s3的流程图。
[0043]
如图2所示,本实施例的步骤s3具体包括以下子步骤:
[0044]
步骤s3

1,对被操作数的每个二进制位进行取反;
[0045]
步骤s3

2,将取反后的被操作数加上1,得到补数。
[0046]
本实施例中,被操作数为1,其二进制表示为:00000001,对被操作数按位取反,得到:11111110,将取反后的被操作数加上“1”,得到补数为:11111111。本实例中加“1”的操作,在电路实现中,在加法中是将翻转标识位接到加法器进位端实现,在减法中是将翻转标识位接到减法器借位端实现,是一种具有创新性的高效实现。在后文将详细说明。
[0047]
步骤s4,根据随机数,选择被操作数或补数作为执行运算的被操作数。
[0048]
图3是本发明实施例中防止侧信道攻击的方法的步骤s4的流程图。
[0049]
如图3所示,本实施例的步骤s4具体包括如下子步骤:
[0050]
步骤s4

1,判断随机数是否为预定值;
[0051]
步骤s4

2,当步骤s4

1判断为是时,选择补数作为执行运算的被操作数;
[0052]
步骤s4

3,当步骤s4

1判断为否时,选择被操作数作为执行运算的被操作数。
[0053]
本实施例中,预定值为1,当随机数为1时选择上述的补数作为执行运算的被操作数;当随机数为0时选择原本的被操作数作为执行运算的被操作数。
[0054]
步骤s5,基于操作数所述执行运算的被操作数进行加法运算。
[0055]
图4是本发明实施例中防止侧信道攻击的方法的步骤s5的流程图。
[0056]
如图4所示,本实施例的步骤s5具体包括如下子步骤:
[0057]
步骤s5

1,判断随机数是否为预定值;
[0058]
步骤s5

2,当步骤s5

1判断为是时,选择运算符作为执行运算的运算符;
[0059]
步骤s5

3,当步骤s5

1判断为否时,选择相反的运算符作为执行运算的运算符。
[0060]
本实施例中,预定值为1,当随机数为1时,即为需要进行翻转运算,使用上述的补数以及相反的运算符进行运算,也即执行运算2
ꢀ–
(

1),其二进制表示为00000010

11111111,运算结果为 00000011;当随机数为0时,即执行原本的运算,也即执行运算2+1,其二制表示为00000010+00000001,运算结果为00000011。可以直观地看到,进行翻转运算后不改变原目标运算的运算结果,因此也不改变包含有该目标运算的子程序算法“addroundkey”的功能。
[0061]
本实施例还提供一种基于上述方法设计的算术逻辑单元。
[0062]
图5是本发明实施例中算术逻辑单元的结构框图。
[0063]
如图5所示,本实施例的算术逻辑单元20包括标识位获取模块 21、数据获取模块22、预处理模块23、加法运算模块24、减法运算模块25以及选择模块26。
[0064]
其中,标识位获取模块21连接到随机数发生器,并采用上述的步骤s1的方法获取随机数作为翻转标识位;数据获取模块22采用上述的步骤s2的方法获取运算符、操作数以及被操作数;预处理模块 23采用上述的步骤s3和步骤s4的方法基于翻转标识位对被操作数进行预处理;选择模块26采用上述的步骤s5的方法基于翻转标识位和运算符的异或来选择加法运算模块或减法运算模块执行运算,并输出最终运算结果;加法运算模块24以及减法运算模块25分别根据上述的步骤s6的方法执行加法以及减法运算。
[0065]
图6是本发明实施例中算术逻辑单元的电路结构示意图。
[0066]
如图6所示,本实施例的算术逻辑单元20中,标识位获取模块 21包括标识位寄存器(即图6中的翻转标识位),数据获取模块22 包括寄存器堆a以及寄存器堆b,寄存器堆a用于获取操作数,寄存器堆b用于获取被操作数,预处理模块23包括取反器a以及取反选择器,加法运算模块24包括加法器、寄存器a、寄存器b以及取反器b,减法运算模块25包括减法器、移位器、寄存器c以及寄存器d,选择模块26包括运算选择器以及异或门。
[0067]
标识位寄存器、寄存器堆a、寄存器堆b、取反器a、取反器b 以及移位器均具有输入端和输出端,加法器具有操作数输入端、被操作数输入端、进位输入端、进位输出端以及结果输出端,减法器具有操作数输入端、被操作数输入端、借位输入端、借位输出端以及结果输出端,取反选择器以及运算选择器均具有第一输入端、第二输入端、控制输入端以及结果输出端,寄存器a

d均具有输入端、输出端以及使能端,异或门具有第一输入端、第二输入端以及输出端。
[0068]
如图6中所示,标识位寄存器的输入端连接到随机数发生器,标识位寄存器的输出端分别连接到取反选择器的控制输入端、加法器的进位输入端、减法器的借位输入端以及异或门的第一输入端,异或门的第二输入端连接到加减法译码器(即图6中的操作符译码),异或门的输出端分别连接到运算选择器的控制输入端、取反器b的输入端、寄存器c的使能端以及寄存器d的使能端,取反器b的输出端分别连接到寄存器a的使能端以及寄存器b的使能端,寄存器堆a 的输出端分别连接到寄存器a的输入端以及寄存器c的输入端,寄存器堆b的输出端分别连接到取反器a的输入端以及取反选择器的第一输入端,取反器a的输出端连接到取反选择器的第二输入端,取反选择器的输出端连接到移位器的输入端,移位器的输出端分别连接到寄存器b的输入端以及寄存器d的输入端,寄存器a的输出端连接到加法器的操作数输入端,寄存器b的输出端连接到加法器的被操作数输入端,寄存器c的输出端连接到减法器的操作数输入端,寄存器d的输出端连接到减法器的被操作数输入端,加法器的结果输出端连接到运算选择器的第一输入端,减法器的结果输出端连接到运算选择器的第二输入端,运算选择器的结果输出端连接到寄存器堆 a和b的输入端,输出最终运算结果。
[0069]
本实施例中,随机数发生器所生成的随机数为随机序列,该随机序列由0和1组成,其中每一位作为一个翻转标识位。同时,标识位寄存器的输入端还分别连接到加法器的进位端和减法器的借位端,也即将翻转标识位的输入加法器的进位端和减法器的借位端,在翻转标识位为1时,也即用补数来进行计算时,以这样的结构来实现补数计算中加1的操作,从而简化电路结构,是一种高效的设计。
[0070]
本实施例中,翻转标识位和操作符译码异或后对运算选择器进行控制,具体地,翻转标识位为0或1,其中0为执行原运算,1为执行翻转运算,操作符译码为0或1,其中0代表加法运算符,1代表减法运算符,两者进行异或后,即可使得在翻转运算时,运算选择器对于原加法选择减法器执行运算,对于原减法选择加法器执行运算。
[0071]
同时,翻转标识位和操作符译码异或后还对寄存器a、b、c、d 进行控制,具体地,异或后的值输入寄存器c和d的使能端,异或后的值取反后输入寄存器a和b的使能端,由于寄存器a

d具有锁存功能,只在被使能的情况下工作(即使能端输入1),因此只有加法器和减法器的其中之一最终执行运算。
[0072]
图7是现有技术中算术逻辑单元的电路结构示意图。
[0073]
如图7所示,现有技术的算术逻辑单元包括寄存器堆a、寄存器堆b、取反器、取反选
择器、移位器以及加法器。
[0074]
寄存器堆a、寄存器堆b、取反器以及移位器均具有输入端和输出端,取反选择器具有第一输入端、第二输入端以及输出端,加法器具有操作数输入端、被操作数输入端、进位输入端、进位输出端以及结果输出端。
[0075]
如图7所示,寄存器堆a的输出端连接到加法器的操作数输入端,寄存器堆b的输出端分别连接到取反器的输入端以及取反选择器的第一输入端,取反器的输出端连接到取反选择器的第二输入端,取反选择器的输出端连接到移位器的输入端,移位器的输出端连接到加法器的被操作数输入端,加法器的结果输出端连接到寄存器堆a 和b的结果输入端,输出最终运算结果。
[0076]
如图7所示,现有技术的算术逻辑单元每次执行加1或减1的运算时,都经过相同的电路运算,再写加寄存器堆,电路行为极为相似,导致外部观察到的电流能量具有周期性的规律,从而能够基于该周期性规律进行侧信道攻击。
[0077]
本实施例中,分别利用现有技术的算术逻辑单元以及本实施例的算术逻辑单元来模拟运行上述子程序算法“addroundkey”,并分别观察两者的电流能量消耗情况。
[0078]
图8是现有技术的算术逻辑单元的电流能量分析图。
[0079]
如图8所示,采用统计方法对电流能量进行分析,能够看到,子程序算法每次经过for循环的常数递增运算(即++i、++j)时,会回到相同的电流能量消耗水平上,也即图8中虚线所示的电流能量消耗水平。
[0080]
如图8所示,进一步加上时间节点的标识后,能够发现时间点t1‑
t6所对应的电流能量都基本一致,这是由于现有技术的算术逻辑单元在执行++i以及++j时整个电路的行为非常类似,因此电路消耗的电流能量也相当接近。基于图8中能量基本一致的时间点,就能够估计出整个for循环执行的时间周期。进一步,在这些时间周期的节点上打上断点,就能够让程序停止下来,此时就能够读取系统存储器中的数据,并基于读取到的数据推测出可能的密钥。因此,能够基于上述的电流能量检测及分析进行侧信道攻击。
[0081]
图9是本发明实施例中算术逻辑单元的电流能量分析图。
[0082]
如图8所示以及如上文的分析,时间点t1‑
t6分别对应于各个for 循环,而在图9中,时间点t1‑
t6所对应的电流能量不再处于同一水平,这是由于本实施例的算术逻辑单元随机地将加法变为减法、减法变为加法,同时由于使用补数进行运算导致的0和1的相互变化,电路的电流能量水平出现随机性,而不再具有上述的周期性规律。因此,采用本实施例的算术逻辑单元后,无法再基于上述的电流能量检测及分析进行侧信道攻击。
[0083]
本实施例还提供一种处理器,该处理器包括上述的算术逻辑单元,因此同样能够随机对目标运算进行改变,从而防止侧信道攻击,该处理器的其他部分及连接方式可采用现有技术中的常规结构。
[0084]
<实施例二>
[0085]
本实施例提供一种防止侧信道攻击的方法、算术逻辑单元以及处理器。与实施例一相比,本实施例中,处理器为流水线处理器,在执行上述的目标运算时,运算符、操作数以及被操作数在第m级流水线被读取,加法器、减法器在第i级分别执行加法运算、减法运算, m≤i≤n,运算选择器在第n级根据翻转标识位来执行选择,因此,为了得到正确的运算结果,需要将翻转标识位的值从第m级流水线存储至第n级流水线。
[0086]
本实施例中,处理器还具有流水线存储模块,用于将翻转标识位的值从第m级流水线存储至第n级流水线。
[0087]
本实施例中,防止侧信道攻击的方法、算术逻辑单元以及处理器的其他部分与实施例一相同,因此不再重复说明。
[0088]
实施例作用与效果
[0089]
根据本发明实施例一提供的防止侧信道攻击的方法、算术逻辑单元以及处理器,能够随机地对具有周期性规律的算法中的加法运算以及减法运算进行改变,从而消除周期性规律,具体地,本发明的方法能够根据获取的随机数选择原本的被操作数或者被操作数的补数作为实际运算用的被操作数,并根据随机数选择原本的运算符或相反的运算符作为实际执行运算的运算符,再执行加法或减法运算,并且最终运算结果与原目标运算的运算结果一致。由于使用被操作数进行运算与使用被操作数的补数进行运算在电信号、磁信号上具有很大差异,因此,本发明的方法能够在不改变运算结果的前提下消除算法的周期性规律导致的电信号、磁信号等的周期性规律,从而能够防止基于电信号、磁信号等的周期性规律的侧信道攻击。此外,本发明的方法还具有原理简单易懂、在电路上易于实现的优点。
[0090]
实施例一提供的算术逻辑单元20包括标识位获取模块21、数据获取模块22、预处理模块23、加法运算模块24、减法运算模块25 以及选择模块26,标识位获取模块21连接到随机数发生器,因此,能够获取随机数作为翻转标识位,进一步,预处理模块23以及选择模块26能够基于翻转标识位来随机地将被操作数转换为补数、并选择对应的运算模块来执行运算,并且操作数的转换和运算模块的选择具有对应关系,因此,在不改变运算结果的前提下随机地改变了电路的行为,使得电路的电流能量水平不再具有周期性规律,从而能够防止侧信道攻击。
[0091]
实施例一还提供了一种处理器,包括上述的算术逻辑单元20,因此同样能够随机地对目标运算进行上述的改变,从而防止侧信道攻击。
[0092]
实施例二还提供了一种处理器,该处理器为流水线处理器,与实施例一相比,处理器还具有流水线存储模块,用于将翻转标识位的值从第m级流水线存储至第n级流水线,因此,算术逻辑单元20能够在第m级进行运算符、操作数以及被操作数的读取,在第m级至第 n级进行加法、减法运算的执行以及运算选择的执行并得到目标运算的正确运算结果,因此,防止侧信道攻击的方法以及算术逻辑单元 20也能够应用于流水线处理器。
[0093]
上述实施例仅用于举例说明本发明的具体实施方式,而本发明不限于上述实施例的描述范围。
[0094]
在上述实施例中,防止侧信道攻击的方法被应用于具有周期性规则的算法中,该算法为具有for循环的aes加解密程序,在实际应用中,防止侧信道攻击的方法及算术逻辑单元不止可以应用于具有周期性规律的算法中,任何软件中的加法以及减法运算都可以采用本发明的方法及算术逻辑电路,以掩盖真实的操作。
[0095]
在上述实施例中,防止侧信道攻击的方法被应用于8位二进制固定位数的加法运算,在实际应用中,也可以应用于其他位数的二进制固定位数的加法运算、减法运算,如23位、64等的运算。
[0096]
在上述实施例的算术逻辑单元中,标识位寄存器的输入端连接到随机数发生器,从而得到一个随机值序列作为多个翻转标识位,在实际应用中,也可以采用其他方式得到
与运算周期逻辑不相关的值作为翻转标识位。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1