3.1 旁路攻击基础
3.1.1 旁路信息泄露的起源
旁路攻击与当前硬件设备执行计算任务而产生的物理泄露密切相关。比如微处理器需要一定时间和功耗来执行特定的运算,这个过程中又会伴随产生电磁辐射、散热、噪声等现象。在FPGA或ASIC中,电路内部逻辑变化会引起电流波动进而产生电磁辐射。虽然有大量的旁路信息从实际芯片中泄露,可以被攻击者利用,但实际研究中的攻击往往集中在时序、功耗和电磁辐射这三个领域。这也是本章将要讨论的重点。除此之外,本章还讨论故障旁路和缓存访问旁路等一些新型的基于计算机体系架构的旁路攻击。
1. CMOS器件的时序
现代逻辑电路,尤其是那些包含寄存器的电路,会涉及许多时序参数。为使电路正常工作,寄存器的输入必须在时钟上升沿期间保持稳定。
时钟上升沿可确定电路正常运行的最小时钟周期间隔,在此期间,为确保任何给定单元正确运行,必须保持特定信号稳定不变。这一限制统称时序限制,包括设置时间、保持时间、恢复时间和删除时间等。设置时间是时钟事件发生前数据输入保持稳定的最短时间,以便时钟可靠地进行数据采样。保持时间是时钟事件发生后数据输入保持稳定的最短时间,以便时钟可靠地进行数据采样。设置时间与保持时间之和又称为孔径时间。在整个孔径时间内,数据输入应保持稳定不变。恢复时间是时钟事件之前异步设置或重置输入应处于非活动状态的最短时间。异步设置或重置输入的恢复时间与数据输入的设置时间类似。删除时间是时钟事件之后异步设置或重置输入应处于非活动状态的最短时间。
若考虑所有时序限制,则有两个重要参数(传播时延和翻转时延)对时间旁路尤其重要。时延表示输入信号变化(50% Vdd)到输出信号变化(50% Vdd)的时间间隔。通过运算单元的传播时延是固有时延、负载相关时延和输入-转换相关时延的总和。传播时延如图3.1所示。输入和输出引脚上信号的翻转时延则定义为信号变化从10% Vdd到90% Vdd之间的时间间隔。信号上升和下降的转换时间测量如图3.2所示。
图3.1 传播时延
图3.2 信号上升和下降的转换时间测量
每个标准单元均含有上述时间参数。当标准单元构成电路时,从信号输入到信号输出的过程中,信号传播和转换时间便是这些时间参数之和。更重要的是,现代集成电路大部分采用时钟信号驱动。这些电路需要一定的时间才能完成各种功能。因此,时间消耗与逻辑运算和输入信号之间有关联,而这种与数据相关的时间消耗是时序旁路信息泄露的根源。
2. CMOS电路的功耗
由于目前的数字电路有很大一部分都基于CMOS逻辑门,因此,本章介绍的旁路攻击技术也针对CMOS电路。静态CMOS门有三个不同的电源消耗方式:第一种是由于晶体管中的漏电流导致的电源消耗;第二种是由暂时性的短路电流导致的,在逻辑门的开关过程中存在一个短周期,NMOS与PMOS同时导通产生暂时短路电流;第三种属于动态功耗,是由诸如图3.3中虚线表示的负载电容Cl的充放电引起的。
图3.3 CMOS非门的充电与放电
这些消耗源各自的重要性通常与技术规模相关。但从旁路角度来看,动态功耗的相关性更大,因为它直接决定设备内部数据与外部可观察功耗之间的简单关系。其表达式可写为式(3-1)。其中,P0→1f为开关活动(P0→1为0→1的转换概率,f为设备的工作频率);VzDD表示电源电压。
在CMOS电路中,当测量功耗时(无论是在接地端还是在电源端),电容充电时都会出现峰值,这主要是由短路电流造成的。与数据运算相关的功耗是功耗旁路信息泄露的根源。
3. CMOS设备的电磁辐射
电磁辐射是由于电流在电路内流动产生的。根据Biot-Savart定律,这些电流在均匀空间任意点发出的磁场感应强度为:
其中,μ为磁导率;I是通过长度无限短的导体的电流;dl是电流的微小线元素;为磁场中心到测量点之间距离的单位向量;r表示磁场中心到测量点之间的距离。此外,将磁圆环探头放置在CMOS设备的表面附近时,根据法拉第定律,磁圆环探头周围环境的任何变化都会在线圈中产生电压(emf):
式中,N为线圈匝数;Φ为磁通量;S表示磁圆环探头的面积。
虽然这些简单的方程不能准确地描述磁场行为,但至少强调了两点:①该磁场与数据有关(由当前强度的依赖关系表示);②磁场方向直接取决于电流的方向。
CMOS逻辑门发出的电磁辐射可分为两部分:①晶体管寄生电容由于充放电所产生的电磁辐射;②负载电容充放电所产生的电磁辐射。随着制造工艺的进步,后者占总电磁辐射的绝大部分。由于负载电容的充放电与CMOS电路的参数直接相关,因此电磁辐射就和数据具有关联性,从而成为旁路信息泄露的来源。一般来说,任何与密码设备的内部配置或活动相关的物理可见现象都可能成为攻击者的信息来源。
3.1.2 旁路信息泄露模型
根据3.1.1节所分析的物理现象,CMOS电路的物理泄露与数据输入、输出操作相关,并且可随着内部信号的活动而变化。攻击者由此提出并改进了多种复杂的泄露模型。这些模型既可以用来模拟实际的旁路攻击,也可以帮助提高攻击效率。下面将重点关注泄露模型中广泛使用的汉明距离模型和汉明重量模型。
1. 汉明距离模型
汉明距离模型可用于文献[1]中CMOS电路的功耗问题。以功耗为例,汉明距离模型假设:CMOS电路中的状态变化(从1→0转换或从0→1转换)会产生一定的功耗,如果状态不变(保持1或者保持0状态),就不会导致过多的功耗。也就是说,当CMOS设备所含的初始状态x0转换为最终状态x1时,实际旁路泄露量与这些状态之间的汉明距离有关,即HD(x0, x1)=HW(x0⊕x1)。这一模型成功地应用到了基于CMOS电路的ASIC和FPGA中[1,2]。
2. 汉明重量模型
在Kochers的原论文[3]中,使用的泄露模型是基于攻击者试图猜测内部信号的汉明重量。该模型被称为“汉明重量模型”,原理更简单,假设功耗(或电磁辐射)与CMOS设备的输出状态有关。也就是说,当设备计算的电流状态值为x0时,实际旁路泄露量与该值的汉明重量相关,即HW(x0)
在实际电路中,从0→1、1→0转换期间所产生的旁路泄露量稍有不同[4],每一个翻转比特位对总体功耗的贡献也不一样,使用汉明距离模型和汉明重量模型对旁路攻击时,需要考虑这些因素。同时,研究人员也提出了一些改进模型来解决这些问题,比如文献[5]中提出的一类改进模型,名叫“切换距离”泄露模型。该模型考虑了在某些实现中从0→1、1→0转换之间的差异。文献[6]则为电路中不同部分的信息泄露量分配了不同的重量。
3.1.3 旁路攻击的原理
旁路攻击的基本原理是,密码系统的操作所造成的物理影响可以(从侧面)提供有关该系统中秘密的额外有用信息。比如,密码密钥、部分状态信息、全部或部分明文等。Cryptophthora一词(字面意思为“秘密降级”)有时用于表示由于旁路泄露而导致的有效密钥长度的衰减。