温度侧信道与加热故障攻击研究
1. 引言
自20世纪90年代末以来,人们就已了解到加密算法的实现会从不同的侧信道泄露信息。1996年,P. C. Kocher发表论文,展示了如何利用侧信道,指出加密算法的实现可能会通过计时特征泄露私钥信息,攻击者可以通过测量算法的运行时间来提取密钥。三年后,他与B. Jun和J. Jaffe共同引入了功耗侧信道,观察到加密设备的功耗也能泄露密钥信息。此后,许多研究人员开始探索不同平台和设备上这些泄露信息的特性,并提出利用其他强大的侧信道,如电磁辐射。
除了常见的功耗和电磁侧信道,还有一些不太为人所知但同样强大的侧信道,如声学和光学发射。声学侧信道由A. Shamir和E. Tromer于2004年首次引入,他们在2013年扩展了相关工作,展示了对GnuPG的RSA实现的多种声学攻击。光学发射则被J. Ferrigno、M. Hlavác以及A. Schlosser等人研究,他们针对AES实现进行了相关实验。
温度侧信道在文献中常被提及,但大多数出版物仅提及了其存在和利用的可能性,缺乏深入研究。2009年,J. Brouchier等人的研究指出,冷却风扇可以通过CPU散发的温度间接携带处理数据的信息,并展示了如何从秘密密码或可能的RSA密钥中提取比特。此外,还有一些关于主动温度攻击的研究,包括低温攻击和高温攻击。低温攻击可通过冷却SRAM设备来冻结数据并恢复内存内容,高温攻击则可通过加热设备诱导内存错误。
本文主要介绍了针对常见AVR和PIC 8位微控制器的一系列与温度相关的攻击,具体贡献如下:
1. 表征“温度侧信道”,分析AVR和PIC微控制器的数据泄露情况,发现这些设备通过(低频)温度侧信道泄露处理数据的汉明重量。
2. 对AVR进行高温故障攻击,通过使设备超出指定温度额定值(>150°C),在RSA实现中成功提取了私钥。
3. 利用AVR的数据残留攻击特性,通过广泛加热使私钥等常量数据“烧入”内存,可在多年后恢复部分内存内容。
2. 温度泄漏表征
2.1 温度测量设置
测量温度泄漏的设置与功率分析攻击的设置类似,使用PT100传感器元件测量目标设备的散热温度。PT100是一种常见的温度计,通过测量铂元素的电阻来确定温度,在0°C时电阻为100Ω。搭配AD693放大器,提供预校准的电阻温度探测器(RTD)接口,可在0至+104°C的温度范围内进行精确测量。输出电流范围为4至20mA,通过计算与电源串联的390Ω电阻上的电压降来测量。使用标准的1GHz数字示波器进行测量,并连接到运行Matlab的PC来控制测量过程。
为了更准确地表征温度泄漏,将芯片从背面进行去封装处理,直接在硅基板表面测量温度。PT100周围使用导热膏(4 - 10W/(m K))以确保稳定和准确的温度传感。不过,去封装并非必需,未去封装时在芯片封装表面测量温度,虽然泄漏信号稍弱,但仍能获得相似的结果。
以下是测量设置的示意图:
graph LR
A[PC] --> B[数字存储示波器]
B --> C[AD693放大器]
C --> D[PT100传感器]
D --> E[ATmega162]
F[电源] --> E
2.2 温度分析
为了表征目标设备的泄漏情况,测量了各种处理中间字节的温度耗散,并使用长采集窗口评估热导率和电容的影响。以MOV指令为目标操作,将一个输入字节的所有可能值(256个)移动到24个内部寄存器中。这些MOV指令在一个循环中执行,循环索引和执行持续时间可由PC配置。
温度耗散测量持续20秒,前10秒将零值移动到寄存器,后10秒将当前输入字节值写入所有寄存器。对于每个输入字节值,测量100条轨迹并进行平均以减少噪声。结果显示,在轨迹的前半部分,所有输入的温度相同,随着实际输入字节的写入,温度根据处理值的汉明重量而增加。
在采集窗口即将结束时(约18秒),所有输入字节值的温度耗散与处理中间值的汉明重量呈线性相关,范围从26.6到约26.8°C。这表明温度与设备的功率模型线性相关,电路活动高时(位转换频繁),散热温度升高;电路活动低时,温度降低。
温度变化缓慢的原因主要有两个:一是热导率的物理特性限制了温度变化,从芯片到传感元件的热流可看作一个RC网络,具有大的热电容,表现为低通滤波器,截止频率低,高频泄漏信息会被大量过滤;二是温度传感器有一定的响应时间和采集分辨率,如实验中使用的PT100热响应时间为100ms,分辨率为0.01°C。
基于以上特性,温度侧信道带宽非常低,限制了实际攻击。以下是一些可能的低频温度泄漏攻击场景:
1. 若数据泄漏持续数毫秒或数秒,可利用温度侧信道进行攻击。例如,应用程序在循环中反复检查密码时,即使在有限的频率范围内也有足够信息支持低带宽攻击。
2. 许多RSA实现涉及长时间操作,如模幂运算,这些操作产生的低频信号可通过温度侧信道提取,类似于低频声学攻击。
3. 利用静态功耗泄漏的攻击尚未得到充分研究。随着CMOS技术的缩小,静态泄漏变得更加显著。温度攻击利用静态功耗泄漏具有较宽松的时序约束,因为泄漏信息在无限长的时间内静态可用。
3. 利用AVR的加热故障
为了产生可利用的故障,故意使目标设备超出其最大温度额定值。每个电子设备都有制造商规定的正常工作温度范围,超出此范围可能会导致存储在内存中的数据或CPU处理的数据被修改,从而可在攻击中利用错误的加密操作来揭示秘密密钥。
3.1 实验设置与RSA实现
使用Schott仪器的低成本实验室加热板(SLK 1)对ATmega162进行加热并诱导故障。将微控制器直接放在热板表面,顶部朝下以确保良好的热传递。通过计算两个PT100传感器的平均值来更准确地测量内部IC的温度,一个PT100放在ATmega162的背面,另一个放在加热板表面。两个PT100都连接到示波器,测量设置与之前的实验类似。
仅连接ATmega162的六个必需引脚:电源(VCC和地)、串行通信(RX和TX)、时钟信号和复位。为避免长时间热暴露导致焊点熔化,使用裸露的电线进行连接。使用FPGA板(Spartan - 3)作为控制设备,连接到测量PC。
选择实现中国剩余定理(CRT)的RSA实现作为攻击目标,该攻击在文献中有详细记载,只需在计算过程中产生一个单一故障即可揭示秘密RSA素数p和q。使用Sage进行攻击和错误计算的评估。
以下是实验设置的表格总结:
| 设备/组件 | 说明 |
| — | — |
| 加热板 | Schott SLK 1,可手动调节至1000K(约727°C) |
| 微控制器 | ATmega162 |
| 温度传感器 | 两个PT100,分别测量芯片背面和加热板表面温度 |
| 控制设备 | FPGA板(Spartan - 3) |
| 软件 | Sage用于攻击和错误计算评估 |
3.2 加热目标设备
加热板提供十个加热阶段,可手动调节。通过手动调节,在约5分钟内将被测设备加热到150°C。观察发现,当加热温度高于约160°C时,ATmega162不再响应请求,此温度远高于设备规格中给定的工作温度最大值(-55°C至+125°C),接近最大存储温度额定值(150°C)。
关键观察结果是,设备在约152至158°C的加热窗口内开始产生故障,在此窗口内,设备在计算实现的算法时因诱导故障而输出错误结果的概率较高。
为了量化这种行为,进行了约70分钟的多次测量。每650ms执行一次RSA解密操作,并通过手动调节加热板将加热温度保持在150至160°C之间。结果得到100个故障,其中31个故障可用于攻击,即揭示了一个使用的素数模。在这31个故障计算中,16个揭示了素数模p,15个揭示了素数模q,故障揭示p或q的概率约为50%。此外,23个故障计算是唯一不同的,7个故障重复出现,这可能意味着某些内部存储位置或内部逻辑部分对加热更敏感。
故障发生频率分布如下:
graph LR
A[150°C] --> B(低故障频率)
B --> C[152°C]
C --> D(高故障频率)
D --> E[158°C]
E --> F(低故障频率)
F --> G[160°C]
使用其他ATmega162设备进行相同实验,结果表明每个设备的平均故障诱导温度略有不同,故障数量也因设备而异,可能是由于手动调节温度导致测量过程中的温度变化。但所有设备的攻击都在不到30分钟内成功。
4. 针对AVR的数据残留攻击
数据残留效应是指设备每次上电后,存储在同一位置的数据(如从程序存储器/闪存加载到RAM的密钥)会留下永久痕迹,即使在多年后也能恢复。此前已有相关研究观察到,长时间存储在SRAM或DRAM中的数据,再次上电时会保留其值。
4.1 永久数据残留效应
在进行实验前,需确定ATmega162的首选上电值,以评估预烧应力的影响。编写一个小程序,通过串行接口读写SRAM内容,使用6144位(共8192位)的字节数组进行测试。使用灵活的FPGA控制板断开设备的所有I/O连接数毫秒后,读取SRAM内容,重复100次以平均噪声。结果显示,平均有3101位(50.47%)上电为1,3043位(49.53%)上电为0,分布几乎无偏差。
接着,将ATmega162的内部SRAM编程为正态分布的随机数据,随机设置3072位为0,3072位为1。上电复位后的首次测试表明,正确猜测位的概率约为50%。之后,对设备进行广泛的预烧应力处理,以加速老化效应。应力条件为约100°C的高环境温度和5.5伏的过压电源,持续36小时。处理后读取上电SRAM内容并与初始值比较。
结果显示,由于负偏置温度不稳定性(NBTI)退化,置为1或0的位数出现偏差。预烧应力后,有3210位(52.24%)置为1,2934位(47.75%)置为0。此外,总内存中有919位(15%)改变了状态,其中405位从1变为0,514位从0变为1。在这405位中,393位变为正确值0(97.04%);在514位中,489位变为正确值1(95.14%)。
分析发现,只能识别出约一半的不稳定SRAM单元。假设约30%的SRAM单元不稳定,70%稳定(在36小时预烧应力期间未改变)。通过正确猜测50%的稳定单元和高概率猜测所有不稳定位,能够成功预测约65%的整个SRAM内存,实际实验成功率约为63%(3842位预测正确)。成功率在最初20小时内大幅增加,之后几乎保持不变,一周后的测量也未发现成功率变化。
以下是预烧应力前后的位分布变化表格:
| 状态 | 预烧应力前 | 预烧应力后 |
| — | — | — |
| 置为1的位数 | 3072位 | 3210位(52.24%) |
| 置为0的位数 | 3072位 | 2934位(47.75%) |
| 状态改变的位数 | 0位 | 919位(15%) |
4.2 瞬态数据残留效应
使用新的ATmega162进行瞬态数据残留效应实验,在加热设备时每4秒读取一次SRAM内容。前115秒将设备加热到170°C,然后关闭加热板使其冷却。在105至125秒之间,设备过热导致概率分布出现显著跳跃。
实验表明,SRAM单元中PMOS和NMOS晶体管的NBTI退化效应在瞬态加热阶段也可观察到。加热暂时促使晶体管改变状态,但这种效应是瞬态的,冷却后单元会恢复。加热时零值数量增加,相应地,一值数量减少。实验中有820位改变状态,其中257位与长期预烧应力期间改变的位相同,可识别出约31.3%的明显不稳定位。
以下是加热和冷却过程中SRAM位值变化的流程图:
graph LR
A[开始加热] --> B(温度上升)
B --> C{是否达到170°C}
C -- 是 --> D[关闭加热板]
C -- 否 --> B
D --> E(温度下降)
E --> F(单元恢复)
B --> G(零值增加)
B --> H(一值减少)
D --> I(零值减少)
D --> J(一值增加)
4.3 如何利用NBTI退化
许多加密算法实现将密钥存储在非易失性存储器中,需要时加载到SRAM,且总是加载到同一内存位置。因此,密钥值会在一段时间内“烧入”SRAM,可通过以下数据残留攻击提取密钥:
1.
多实现平均攻击
:若攻击者拥有多个存储相同密钥的实现,可恢复每个实现的部分内部SRAM,然后对结果求平均,以高概率揭示内存的所有位。此攻击假设每个实现揭示不同SRAM单元的内容。
2.
单实现攻击
:若攻击者仅拥有一个实现(或多个使用不同密钥的实现),可先进行数小时的预烧应力测试以加速老化,然后读取首选SRAM内容。通过瞬态残留攻击揭示不稳定SRAM单元,这些单元可能在预烧应力期间改变状态,包含有关密钥的有用信息。其他单元视为稳定单元,不提供有用信息。最后,将所有恢复的位用于部分密钥恢复攻击。
5. 讨论与研究建议
本次研究引发了一些值得进一步探讨的问题:
-
新技术影响评估
:目前的攻击实验是在较旧工艺技术制造的微控制器上进行的,需要进一步研究热攻击对采用较新CMOS技术的IC的影响。
-
低带宽特性利用
:温度侧信道具有低带宽特性,高频泄漏(如MHz或GHz级别的数据相关信号)因低通滤波器特性难以直接利用。然而,像RSA中的指数运算等长操作会产生低频特征,可被利用(如通过kHz级别的声学信号)。
-
测量验证
:为验证测量设置,使用0Ω电阻代替PT100元件进行测量。结果未发现数据相关信号,排除了信号干扰或电磁信号耦合的可能性。
未来的研究可以围绕这些问题展开,进一步探索温度侧信道攻击的潜力和局限性,为提高设备安全性提供更深入的见解。
温度侧信道与加热故障攻击
超级会员免费看
93

被折叠的 条评论
为什么被折叠?



