暂稳态效应攻击

这篇文章提出了一种新的攻击:暂稳态效应攻击
暂稳态效应:组合电路的输出在跳转为正确的值之前会保持一个暂时的值

优点:和其他故障攻击相比,不需要大量的加密去建立统计模型,即攻击阶段需要的加密次数更少

攻击实现:注入时钟毛刺,得到暂稳态值,也就是包含密钥信息的故障输出

目标电路:两种不屏蔽s盒和一种屏蔽s盒的AES电路,FPGA实现

实验结果:对于未屏蔽的S盒 加密一次可以获得密钥的一个字节
对于屏蔽了的s盒 加密20次可以获得密钥的一个字节

1.背景介绍

侧信道攻击的提出1
现在已经有很多侧信道攻击密码电路的方法(泄露信息型):
功耗分析 2、3
template 4
碰撞 5、6
mutual information 7
故障攻击,DFA是其中比较有名的 8,基于故障模型从正确的密文输出和错误的密文输出中恢复密钥
2010年提出故障灵敏度分析FSA 9,这种方法基于AES的s盒的关键路径具有数据依赖性,但是破解需要多次加密
2011年FSA与碰撞攻击结合,攻破了有屏蔽的AES电路 10,缺点是增加了加密次数
2012年提出顺时针碰撞故障灵敏度分析CC-FSA,针对屏蔽AES电路
他们指出,如果两轮输入完全相同,第二次的时间会更短,因为在组合电路中几乎没有了翻转
2012年紧接着提出时钟宽度攻击FRA,攻破了串行屏蔽AES的s盒
但是以上两种方法有共同的缺点:
1.混乱的时钟频率
2.检测合适的时钟宽度很低效
3.加密次数太多

这篇文章的贡献

提出一种新的故障攻击方法:暂稳态攻击TSE attack

目标电路通常在第一个周期内进行计算,并注入一个时钟毛刺以创建一个非常短的第二个周期。根据第一周期中的短路径数据和长路径数据计算出第一时钟周期的正常输出。根据第二个周期的短路径数据和第一个周期的长路径数据计算第二个周期的错误输出。通过组合两个连续时钟周期的输出,我们可以恢复短路径数据的信息
(密钥所在的路径比较短)

2.准备工作

AES10轮加密,每轮需要16个s盒。当功耗、面积被限制时,算法的串行实现更棒。
举个例子:
在每一轮加密中,用4个s盒循环4次 13-14
很多低功耗的实现方法被提出 15-16

屏蔽是针对功耗分析的常规对策。 掩码值使敏感的中间值随机化,并使数据和功耗之间的依赖性最小。 S-box是AES算法中唯一的非线性运算,作为基于塔场的方法,已经提出了许多掩蔽方案[17]。
屏蔽和未屏蔽的s盒:

Li等人提出了CC-FSA攻击。 在2012年[11]。 如果输入在连续的两个时钟周期没改变,第二个周期几乎没有信号翻转。 这称为顺时针碰撞,第二个时钟周期的建立时间将非常短。 他们让目标在第一个周期中正常工作,并插入一个时钟毛刺去产生非常短的第二个时钟周期。 如果输出正确,顺时针碰撞将会被检测到。

3.暂稳态效应攻击

组合电路中数据路径的长度不一样
例如,我们可以假设信号a的路径延迟短于信号b的路径延迟。 在a到达之后,b到达输出之前,输出会呈现一个非法值。 当两个信号之间传播延迟的差异足够长时,输出将保持在非法值。 这称为瞬态稳定效应。 暂态稳定效应可能导致数据相关的功耗,并间接泄露秘密信息[18-22]。 但是,在本文中,我们显示了由瞬态稳定效应引起的暂存值可以被捕获并可以用于直接恢复密钥。
基于暂稳态效应,提出了暂稳态效应攻击:
目标电路通常在第一个周期内进行计算,并注入一个时钟毛刺以创建一个非常短的第二个周期。根据第一周期中的短路径数据和长路径数据计算出第一时钟周期的正常输出。根据第二个周期的短路径数据和第一个周期的长路径数据计算第二个周期的错误输出。通过组合两个连续时钟周期的输出,我们可以恢复短路径数据的信息。
(密钥所在的路径比较短)

基本思路


X、Y信号的延迟分别为tX、tY,输出Z的值会被寄存器捕获
假设tX $/<<$ tY,第一个时钟周期的输入是X1,Y1,第二个时钟周期的输入是X2,Y2
第二个时钟上升沿之后,X2,Y2沿着不同的路径传播,像涟漪以不同的速度扩散一样
在一段时间t(tX/>t/>Y)之后,X2到达异或门的输入,但是Y还没有到达2
所以在t段时间内,Z的输出是f(X2,Y1
我们假设d=tY-tX足够大,并因此,f(X2,Y1)会在输出保持一段时间的稳定
如果注入的时钟毛刺周期小于等于d,这个暂稳态值就能被存到regZ中(注意,如果毛刺周期大于d,regZ就会捕捉到一下周期的正确值,暂稳态值就不会被捕获)

unmasked S盒攻击设想

串行实现的s盒,假设在执行最后一轮AES加密,红色路径长,绿色路径短

如图五所示,在第二个时钟上升沿,第一个时钟周期的输出
寄存在reg1
k的保持时间过了之后,k2传播通过异或门,输出变为
这个暂存的值会在ty-tx这段时间内稳定。
总结一下就是:如果我们在第一个时钟周期后注入一个时钟毛刺构成第二周期,保证这个周期tg满足
,reg2就可以捕获到,知道了z1,我们可以计算:

因为这些路径的延迟我们不知道,所以要进行TSE攻击,攻击步骤如下:
1.扫描时钟毛刺频率,逐渐改变时钟毛刺周期的长度,在每一个频率下,用固定的x1和随机的x2进行Npre次的加密,并记录错误输出
2.找出能使得故障输出稳定的毛刺频率范围,根据上面的分析,x1固定的条件下,根据公式,错误的输出应该和x2无关
3.选定毛刺的频率
4.在选定的毛刺频率下,加密Nattack次,记录,计算每次加密的攻击结果
5.选择故障输出中频率最高的结果
6在其他时钟周期.重复4、5步骤,用来恢复

步骤1-3称为预计算阶段,对于一个目标电路来说只需要进行一次。
步骤4-6称为攻击阶段,可以在一个固定的频率下进行。

masked s盒攻击设想

masked s盒有三个输入:
the masked value:
the input masked :m
the output masked:w
输出用w屏蔽:

因为w是用来屏蔽s盒的输出的,所以它的路径要比xmm都要短
我们关注基于“塔场”的masked s盒
正如图6所示,红的比绿的都长:

在第一个时钟周期,reg1会捕获到正常的输出:

yw1代表第一个时钟周期 屏蔽s盒 的输出
我们在第一个时钟周期之后注入一个时钟毛刺。如果毛刺周期的长度比xmm的延时短,比wk长,暂稳态的输出就可以被reg2捕捉到:

根据正常的输出和故障输出,可以得到:

注意:攻击只适用于,如果在同一时钟周期内有密钥加入且没有屏蔽
(此处原文:Note that the attack described in this section is only applicable if the final unmasking is done within the same clock cycle as the final key addition.)

4.实验和有效性

我们在两种未屏蔽s盒上15 16,和一种屏蔽s盒17 上验证TSE攻击
开发板型号:
DE2-115 FPGA board with Altera Cyclone IV EP4CE115
时钟函数:RIGOL DG4102 function
电路框图如图7所示:

锁相环PLL产生两个时钟信号,低频--正常时钟,高频--产生毛刺,由多路选择器来选择时钟信号
两个连续的时钟周期的输出,分别寄存在reg1和reg2
攻击结果存在RAM中
像第3节提到的,如果没有故障注入,输出将是
如果攻击成功结果就是

在未屏蔽s盒A上的实验

s盒 文献15
设定密钥字节
如果攻击成功,RAM里面的就是
预计算阶段:
在64MHz到480MHz选择80个点
在每一个频率点,x1是固定值0x31,x2变化
对于每一个x2,加密256次,因此在每一个频率点上,65536个攻击结果被存储
如下图中所示,在360MHz~430MHz,正确的值出现的频率最高,几乎百分之百,由此看出这个频率区间适合TSE攻击

他们同时验证了,这个频率对于所有s盒的输入都是可用的,也就是说对于在这个范围内的每一个频率点,x2那256个值都可以得出正确的密钥结果

在攻击阶段,TSE可以在360MHz至430MHz范围内的任意毛刺频率下进行攻击。 但是,为了更好地描述结果,我们在所有频点上进行攻击,攻击的成功率如图10所示。增加了每次攻击所使用的选项数量,即 Nattack,可以稍微扩大频率的范围。 即使只进行一次加密,我们的攻击也可以达到近100%的成功率。

在屏蔽的s盒B上的实验

在屏蔽的s盒C上的实验

进一步的讨论

并行AES的密钥泄露

在某些AES实现中,并行实现16个S-box以实现高吞吐量[23]。 在这样的实现中,瞬态稳定效应仍然存在。 但是,暂稳态值变成了两个相邻的回合相关,而不是一个回合中的两个S盒。 要将攻击应用于并行AES实现,我们将重点放在图16所示的未屏蔽AES的标准结构上。在这里,我们用ABCD表示不同阶段的四个128位中间状态,并使用K表示128位的密钥。 轮次索引由上标表示,字节数由下标表示。 例如,K104表示第十轮密钥的第四个字节。

如图16所示,在第10轮开始时,有两条数据路径:密钥的延迟比红色虚线路径的延迟短。因此,如果我们将第10个时钟周期缩短为适当的长度,则可以捕获暂稳态值B9⊕K10作为错误的密文
,然后中间值B9是适当的长度,我们可以捕获中间值B9之前的时间值B9 9K10作为错误的密文D〜10。在中间值B9被污染之前,B9⊕K10作为错误的密文,在中间值B9被污染之前。
正确的密文是
值得注意的是,对于并行的AES实现,正确的密文和错误的密文需要同时获得才能进行TSE攻击,与串行实现中的情况不同。

如图7所示,通过正确的错误的D值,可以推断出K9、K10

根据AES密钥规则,K9可以用K10表示,因此K10是(3)中的唯一变量。 通过代数攻击求解(3)AES中的方程组,可通过MiniSAT工具求解。 但是,只有在预先计算了密钥并将其存储在寄存器中的情况下,并行执行的TSE攻击才是可行的。 否则,密钥的数据路径与S-box的数据路径一样长,就无法进行TSE攻击了。

WDDL-AES攻击设想

波形动态差分逻辑(WDDL)是一种双轨充电逻辑。 WDDL的每个信号都有两条互补线。每个时钟周期由两个阶段组成:在预充电阶段,这两个阶段均被预充电到固定值,例如(0,0);在评估阶段,两条导线的值分别为(1、0)或(0、1)。 WDDL被认为可以防止违规错误[24]。由于预充电阶段在每个时钟中都插入全零状态,因此缩短时钟周期会导致全零错误密文。但是,如果数据路径显着不同,电路的安全性会降低。

考虑到图4中具有相同结构的WDDL-AES实现,我们假设在时钟的上升沿到来之后,全零状态沿y的数据路径传播得足够慢,以至于在k的值到达之前y1清除。如图18所示,通过缩短时钟长度,攻击者可以暂稳态值并恢复密钥,这与Sect3.2中的分析相似。

WDDL-AES的TSE攻击比一般的AES电路更难,因为全0的状态通常比其他状态传播更快,对于不平衡的数据路径,TSE攻击很有潜力。

时钟毛刺注入

在本节中,我们将讨论从外部注入毛刺的可行性。 TSE攻击所需的时钟故障非常短。例如,未屏蔽的S-box A的时钟宽度不应超过2.8ns。从外部注入时,这种短时的毛刺可能会被滤除,即使许多文献报道该毛刺的宽度可能小于3ns [27,28]。绕过障碍的一种直接方法是进行半侵入式攻击:
切断时钟线并将其连接到外部故障信号。另一种选择是减慢目标电路的速度,以便可以在出现故障时进行TSE攻击。

在某些情况下,攻击者可以增加目标电路的延迟。例如,通过降低电源电压,可以增加传播延迟[29]。我们将FPGA芯片的电源电压从1.5V降低到1.08V,并进行Sect4.1的实验。如图19所示,我们切断了Cyclone IV EP4CE115的电源,并将其连接至DC电源。攻击结果如图20和图21所示。通过将电压降低至1.08V,可行的毛刺频率下降到125MHz至136MHz的范围,约为正常电压频率范围的1/3。


结论

在本文中,我们基于瞬态稳定效应提出了一种新的TSE攻击。通过在时钟信号中注入毛刺,可以将瞬态稳定值恢复为AES密钥。我们设计了两种实验,分别在未屏蔽S盒和一种屏蔽S盒的FPGA板上串行实现。未屏蔽s盒可以一次加密泄密,屏蔽s盒至少需要20次加密才能泄密。讨论了有关并行AES实现和WDDL-AES的攻击方案。
TSE攻击的基础是密钥路径比其他数据路径(s盒的其他输入)更短。对于抵抗TCE攻击,我们建议使用密钥路径较长的体系结构,例如,在生成加密密钥的同时生成回合密钥。对策搜索(将虚拟操作插入密钥的路径中)也是可行的选择,但是吞吐量可能会受到影响。

原文地址:https://www.cnblogs.com/zhanghaha-zzz/p/11616325.html