本发明涉及功耗分析和密码算法领域,尤其涉及一种基于寄存器随机分组的抗功耗攻击方法。
背景技术:
dpa(differentialpoweranalysis,差分功率分析)攻击时,首先要选取攻击点,即选择对密码算法的具体操作进行攻击,然后采集大量的能量迹,并将攻击点与能量迹中映射的点对齐,以进行后续的功耗攻击分析,若是可以使相同的操作在不同的加解密过程中对应不同的时间点,则可以在一定程度上提高密码设备的抗功耗攻击能力。
基于随机乱序的抗功耗攻击设计,首先将输入的明文先存入缓存单元,然后根据生成的随机数进行随机排序进行加解密,最后在输入输出缓存单元时再次恢复顺序。除了原有的加密模块之外,此结构新增加了输入缓存单元、输出缓存单元和随机乱序模块。其中,输入缓存单元和输出缓存单元都是n*m的缓存区域,其中n为缓存单元的深度,m为待加密数据的长度,若加密数据为128位,缓存单元深度为32,则仅输入缓存单元和输出缓存单元就至少需要2*32*128的额外存储空间,另外,随机乱序模块也需要根据使用的乱序算法占据一定的资源消耗。因此,在通用的密码设备中,此方案会占据较大的资源开销,更加不适用于资源相对紧张的iot设备中。
基于伪轮的抗功耗攻击设计,将原来单轮的结构扩展为3轮,算法运行时,原始的结构会只运行单轮,但在此结构下,会根据随机数在单次时钟运行1-3轮密码算法,因此在进行功耗攻击时,无法确定对应的时间点是否对应同一轮的操作。但是此种方案对面积及性能损失较大。因为其将单次时钟周期运行一轮密码算法提升到运行1-3轮,在满足最坏情况的条件下,其性能降低为原来的1/3,而其面积在最坏的情况下提升了接近200%,其优点是对额外功耗的增长较低。基于插入伪操作的防护方案、通过随机功耗或补偿功耗等的防护方案虽然能在一定的条件下提升密码设备的抗功耗攻击能力,但是会较大的提升加密设备的功耗。攻击者在攻击密码设备时,有的密码设备的能量消耗更符合汉明距离模型,即求取同一寄存器相邻两次写入的中间值而产生的翻转位数。
由上述可知,现有的抗功耗攻击方案,在面积开销方面损失较大,不利于将密码设备大规模的布置。对通过插入空操作的抗功耗攻击方案,可以控制密码设备降低运行频率,以分析空操作与实际操作的能量特征,加以区分并对齐。而对于补偿功耗或随机功耗等方案,一方面若增加的功耗与原频率不同,可以加以滤波以提升信噪比,而且,因为设备在布局布线方面的差异,补偿的功耗与原始的功耗之间可能存在一定的时间差,可以较为容易的破解。
技术实现要素:
发明目的:针对以上问题,本发明提出一种基于寄存器随机分组的抗功耗攻击方法,。
技术方案:为实现本发明的目的,本发明所采用的技术方案是:一种基于寄存器随机分组的抗功耗攻击方法,包括步骤:
(1)由真随机数发生器产生随机寄存器控制信号;
(2)根据随机寄存器控制信号生成随机寄存器使能信号,在有效时钟沿到来时,将使能有效位置的信号写入寄存器;
(3)将随机寄存器使能信号取反,作为下一次有效时钟沿到来时的寄存器使能信号;在下一个有效时钟沿到来时,将剩余位置的信号写入寄存器。
进一步地,所述步骤(1)前还包括:
(0-1)由真随机数发生器产生随机轮寄存器使能信号;
(0-2)根据随机轮寄存器使能信号,决定本轮运行加密算法写入寄存器时,分一次写入还是分两次写入。
进一步地,所述步骤(1)中,随机寄存器控制信号包括有效使能位数和使能有效位置。
进一步地,所述步骤(2)中,将使能有效位置的信号写入寄存器的同时对剩余位写入随机数。
进一步地,有效使能位数选择1。
有益效果:本发明针对现有的抗功耗攻击方案在面积开销方面损失较大、不利于将密码设备大规模的布置等问题,为了满足较低的资源开销和较低的功耗增长的设计需求,提出基于寄存器随机分组的抗功耗攻击方法,该方法在密码算法运算的过程中,将中间值写入寄存器的过程分为两次随机执行,然后将此方案在每轮的应用同样随机化,以增加运算中密码算法整体运算时间的不确定性。为进一步提升抗功耗攻击能力,将寄存器随机分组方案和随机预充电方案相结合,不仅对于一阶dpa有着非常高的抵御能,同时提升对于二阶dpa的抵抗能力。
附图说明
图1是寄存器随机分组方案示意图;
图2是应用随机寄存器分组的方法示意图;
图3是寄存器随机分组与随机预充电结合的示意图。
具体实施方式
下面结合附图和实施例对本发明的技术方案作进一步的说明。
本发明所述的基于寄存器随机分组的抗功耗攻击方法,首先将运行加密算法写入寄存器的过程分为两次,根据随机数选择不同位置混合随机数分两次写入,其次根据另一个随机数选择是否将本次写入寄存器的操作改为前述的操作,以增加整体的密码算法运行时间的不确定性;结合寄存器随机分组与随机预充电方案可以显著提升抗功耗攻击能力。
如图1所示,寄存器随机分组方案改变原有的将数据写入寄存器的次序,首先生成随机寄存器使能信号,在有效时钟沿到来时,根据寄存器使能信号,将使能有效位置的信号写入寄存器,然后将寄存器使能信号取反,作为下一次有效时钟沿到来时的寄存器使能信号。为了提高安全性,防护攻击者找到规律,随机寄存器控制信号应由真随机数发生器产生,并在每次使用之后更换。
寄存器随机分组方案具体包括步骤:
(1-1)由真随机数发生器产生随机寄存器控制信号;
随机寄存器控制信号包括有效使能位数和使能有效位置。
(1-2)生成随机寄存器使能信号,在有效时钟沿到来时,将使能有效位置的信号写入寄存器;
(1-3)将随机寄存器使能信号取反,作为下一次有效时钟沿到来时的寄存器使能信号;在下一个有效时钟沿到来时,将剩余位置的信号写入寄存器。
如图2所示,为了进一步增加随机性,对每轮是否应用寄存器随机分组方案使能控制,使用随机数来控制本轮是否展开寄存器随机分组。
具体包括步骤:
(2-1)由真随机数发生器产生随机轮寄存器使能信号;
(2-2)根据随机轮寄存器使能信号,决定本轮运行加密算法写入寄存器时,分一次写入还是分两次写入。
如果是分一次写入,则运行轮函数之后,将加密信号直接写入寄存器中。如果是分两次写入,则运行寄存器随机分组方案,包括步骤(1-1)~(1-3)。
如图3所示,将寄存器随机分组与随机预充电结合,使得第一次写入的能量消耗不仅仅是部分真实数据写入的能量消耗和固有噪声,还包括剩余位的随机数写入的能量消耗,此部分对于第一次写入的能量消耗可以看作噪声,进一步提升了针对第一次写入攻击的难度。
寄存器随机分组与随机预充电结合的具体步骤:
(3-1)运行寄存器随机分组方案,第一次写入寄存器时,写入有效数据,同时对剩余位写入随机数;
(3-2)第二次写入寄存器时,将剩余部分数据写入寄存器。
为充分挖掘抗功耗攻击能力的潜力,对寄存器有效使能位数和剩余位数进行随机化。当固定寄存器位数较小时,对于第一次写入时间点的抗功耗攻击能力提升较大,相反,对于第二次写入时间点的抗功耗攻击能力提升较小。但是考虑到对于第二次写入时间点的功耗攻击仅能进行高阶攻击,且难度较大,因此将寄存器固定位数设置为1。
在寄存器有效使能位数为1时,第一次抗功耗攻击能力提升最大,第二次抗功耗攻击能力提升较弱,引入随机预充电技术,即在第一次写入部分真实数据时将剩余位写入随机数据,然后在第二次写入数据时将剩余部分数据写入寄存器,有效提升第二次写入数据部分的抗功耗攻击能力。写入1位有效数据的同时对剩余位写入随机数,相当于增加剩余位数的噪声,因此其抗功耗攻击难度将大大提升。将寄存器有效使能位数设置为1可以同时将第一次写入和第二次写入的抗功耗攻击能力显著提升。