简单功耗分析 (SPA) 和差分功耗分析 (DPA) 有什么区别,为什么不能对 FPGA 进行 SPA 攻击?
我的基本理解是它们是分析目标设备功耗的侧信道攻击,从而揭示加密密钥。但我仍然不清楚两者之间的区别是什么,以及为什么一种攻击适用于 FPGA 而另一种则无效。
如果有人能澄清什么是 SPA 和 DPA 或指向我解释这些攻击的教程/指南,我将不胜感激。
简单功耗分析 (SPA) 和差分功耗分析 (DPA) 有什么区别,为什么不能对 FPGA 进行 SPA 攻击?
我的基本理解是它们是分析目标设备功耗的侧信道攻击,从而揭示加密密钥。但我仍然不清楚两者之间的区别是什么,以及为什么一种攻击适用于 FPGA 而另一种则无效。
如果有人能澄清什么是 SPA 和 DPA 或指向我解释这些攻击的教程/指南,我将不胜感激。
简单功耗分析 (SPA) 涉及测量设备在执行操作时的功耗变化,以便发现有关密钥材料或数据的信息。这是通过将某些操作类型映射到消费模式来实现的。例如,一系列异或运算在示波器上显示出与一系列乘法运算不同的轨迹。
RSA 就是一个很好的例子,它必须执行大型乘法运算,因此会通过其执行的操作模式泄露有关大型整数乘法内部状态的信息。
SPA 中涉及的另一个技巧利用了数字信号在物理上由高电压和低电压表示的事实,因此在传输该位的时间段内,发出信号的 1 比 0 使用更多的功率。如果可以进行足够准确的分析,我们可以计算统计模型,在合理的误差范围内预测比特流的内容。
虽然相对简单的单一用途系统(例如智能卡)通常只执行单个操作,但更复杂的系统通常同时执行多个操作。现代台式计算机使用 DMA 等技术,允许硬件直接访问系统内存,而不会中断处理器。所有这些信号并行运行,产生大量噪声。最重要的是,机械硬盘驱动器包含产生各种电流尖峰的组件,从而增加了噪音。试图在这样的系统中识别单个 133MHz+ 数据信号的统计模式是非常困难的!
这就是差分功耗分析 (DPA) 的用武之地。为了提高成功的机会,DPA 包括在进行正常的非加密操作时分析功耗,然后在加密操作期间进行进一步分析。比较两个统计模型,以便从信号中“减去”噪声。这种技术实际上在音频工程师中很常见,他们自己对背景噪声(例如嘶嘶声)进行采样,对其进行FFT分析,然后生成一个类似 EQ 的滤波器模型来降低这些频率的电平。它在 DPA 中更复杂(通常单独的 FFT 过于原始),但原理仍然正确。
当然,这仍然是一个非常难以计算的模型,但在处理加密密钥时,即使是 51% 的成功预测率也很有用;当您可以优先考虑更高置信度的预测位时,对 128 位密钥进行暴力破解要容易几个数量级 - 51% 的成功率为我们提供了 125.5 位而不是 128 位的有效预期密钥空间。
FPGA 不能真正受到 SPA 的攻击,因为它们本质上是“并行的”。它们实际上并不像普通的微处理器那样工作,而是一系列并行逻辑门,所有这些逻辑门都在单个公共时钟信号上一致运行。因此,SPA 无法识别单独的“信号”,因为每个内部组件在每个时钟周期都做同样的事情。另一方面,微处理器通常具有独立的内部芯片部分,可以独立计时,并实时路由和多路复用信号。这有点笼统,因为一些更现代的复杂 FPGA 在静态逻辑旁边确实具有类似微处理器的内部结构,这可能容易受到 SPA 的影响。
这适用于功率分析和一般的其他侧信道攻击。
简单的边信道攻击只在密码程序执行期间分析边信道。
差分侧信道攻击还分析处于其他状态的系统(例如 CPU 上的其他操作等),并利用观察到的模式中的差异。因此,如果处理器同时执行加密过程和其他事情,它会更加复杂和耗时,但这是必要的。
请注意,两者都使用统计模型来推断例如密钥。