第四十个知识点 一般来说SPA和DPA的区别是什么
第四十个知识点 一般来说SPA和DPA的区别是什么
原文地址:http://bristolcrypto.blogspot.com/2015/07/52-things-number-40-what-is-normally.html
电磁(Electronmagnetic, EM)功率分析攻击被划分成两种类型的攻击,简单功率分析(SPA)或者差分功率分析(DPA)。这两种攻击要么使用电磁要么使用能量记录设备,但是它们在分析能量数据的数量和方法上有本质的不同。
在检查这些攻击的不同之处之前值得说明的是power/EM攻击是什么。
功率记录
CMOS(互补式金氧半导体,一种集成电路的设计工艺)电路能量要么是静态的,要么是动态的。静态功耗是指电路静止时损耗的功率(没有发生电路转换)。这时功率是非常小的。动态功率损耗是电路在发生0到1或者1到0转换的时候产生的损耗。动态功率损耗肯定是在电路中最大的能量消耗贡献者,同时能量消耗取决于电路处理的数据。动态能量损耗却决于两个因素。第一个就是电容充电电流,第二个是短路电流。每个CMOS单元都有一个负载电容连接到单元的输出。该负载电容包括连接单元到后续单元的电线,以及单元的输入电容。
一个CMOS单元使得电压上升\(V_{dd}\)需要消耗的能量是\(P = \alpha fC_lV_{dd}^2\),其中\(\alpha\)是每个时钟内发生\(0 \rightarrow 1\)的电路的数量。当存在一个从\(1 \rightarrow 0\)时刻,当然的电压从\(C_l\)到\(gnd\)通过NMOS而不是\(V_{dd}\)。第二部分能量消耗的贡献就是短路电流。这个在\(0 \rightarrow 1\)和\(1 \rightarrow 0\)到会发生当PMOS和NMOS晶体管都导电时刻-尽管这件事发生的很少。此时能量消耗公式是\(P_{sc} = \alpha f V_{dd} I_{peak} t_{sc}\),其中\(I_{peak}\)是当前转换的峰值,\(t_{sc}\)是短路存在的时间。[1]
了解这两个动态功耗点,我们可以看到所有开关\(1 \rightarrow 0\)和\(0 \rightarrow 1\)都会通过短路电流消耗电能,而从\(0 \rightarrow 1\)切换会因为负chegn7.而消耗更多的电能。如果我们能精确测量能量消耗(电磁场作为一种强度变化的电流,将产生一个等方差的电磁场,使电磁场的测量能够给出一个功率消耗的测量。),那么我们就知道设备里面有多少次电路转换。首先,允许我们确定一个特定的操作(例如,乘数可能比x或门需要更多的开关),其次,更重要的是,该操作操作的数据,因为这可能会影响开关。
SPA和DPA攻击
SPA攻击和DPA攻击的主要区别在于所需跟踪的数量。SPA一般来说使用一个或者非常少的跟踪,DPA需要大量的跟踪。他们利用动态设备功耗的方式也不同,SPA攻击表示一组操作,然而它们还可以利用数据依赖关系,例如在模板攻击的情况下。众所周知,RSA在二进制扩展乘法平法的SPA攻击正说明了这点。这里,如果一个二进制值是0,那么结果进行平方,如果是1,结果就平方之后再乘。在单个跟踪中查看它,可以看到正方形操作的形状以及正方形和乘法操作的形状,从而将键的每个位读取为0或1。这个漂亮的攻击只需要一个记录来观察能量消耗,这就是SPA攻击。
另一方面,DPA攻击通过使用多个记录和统计技术仅仅利用数据依赖元素。他们集中在能量消耗的数据依赖上,通过创建多少个开关来工作,那么就会有多少数据。这些假设称为泄漏模型,通常是汉明重量或汉明距离。如果这个泄漏模型是正确的,那么功率轨迹应该显示根据它处理的信息,尽管在现实中,这总是与干扰数据/功率关系的噪声相结合。在DPA攻击中,可以通过估计被操作的秘密数据值,并查看根据泄漏模型对这些值的表示是否与许多不同的功率跟踪相关,从而确定被操作的秘密数据值。因此,DPA攻击需要多个跟踪——根据噪声水平和测量精度的不同,跟踪的数量可以从50到数千不等。
[1] Mangard, Stefan, Elisabeth Oswald, and Thomas Popp. Power analysis attacks: Revealing the secrets of smart cards. Vol. 31. Springer Science & Business Media, 2008.