一种激光故障注入方法与故障机理描述
背景介绍
随着物联网的发展,微控制器(MCU)的需求大幅增加,且其处理的数据常常是关键且有价值的。除了网络攻击之外,由于这些设备在物理上是可访问的,因此出现了许多物理技术来提取未经授权的数据。
在相关技术中,故障注入(FI)是一种主动的侧信道攻击方式,通过改变芯片的物理操作环境(例如过电压和欠电压、超频、暴露于高温或低温或激光),在目标处理器中引发计算故障,例如跳过指令,从而改变设备的工作方式;由此,它会产生一个故障结果,进一步使用差分故障分析(故障与无故障),以提取未经授权的数据。
基于以上信息,巴黎理工学院的Vanthanh Khuat、Jean-Luc Danger、Jean-Max Dutertre等人在FDTC 2021上讨论了一种针对32位微控制器的激光故障注入方法,通过收集所有位置上的故障并分析它们的行为,实现了从闪存接口到执行管道的故障识别与故障描述。[1]
已有工作
相关研究证明,激光故障注入能够导致易失性存储器(静态随机存取存储器(SRAM)或寄存器)中存储的数据发生故障,同时使用不同的底层技术和数据从一个组件移动到另一个组件,而不会影响存储在非易失性存储器中的数据。
具体而言,激光故障注入可用于瞄准和修改指令,导致指令被破坏、跳过等。2019年Dutertre等人报告了一个强大的激光故障注入诱导多指令跳过故障模型,在该模型中,作者能够使用具有相对较长脉宽的激光脉冲跳过任意数量的指令,最多跳过300条指令。[2]
实验内容
作者使用ARM Cortex-M0+内核(两级流水线)的SAMD21G18A进行实验,激光故障注入装置如图1所示,激光平台由激光源、显微镜、XYZ工作台、红外(IR)摄像机和计算机组成。激光源可以产生波长为1064 纳秒的激光脉冲,使光能够通过几百µm的硅。激光脉冲宽度可在50纳秒到1秒的范围内调谐。此外,激光源允许获得可编程延迟,功率范围为0到3瓦。光被引导到显微镜并通过显微镜聚焦。
图1 激光注入工作台
使用红外摄像机观察激光光斑在整个设备中的位置,本文分别在六个点位(如下图2所示)、是否启用缓存的共十二种情况下进行激光故障注入。
图2 红外相机拍摄的对应点位
实验结果
- 重放与跳过两种故障现象
首先对故障现象进行描述,跳过故障定义如下图3(左)、重放故障定义如下图3(右)。
图3 跳过故障定义(左)、重放故障定义(右)
在六个点位分别进行激光故障注入,观察到不同的故障现象,部分故障现象如下图4所示,分为重放和跳过两种故障现象。当缓存被禁用时,缓冲区大小为32位,对应2×16位的指令,对应的故障现象为跳过某两条指令或重放某两条指令;当缓存被启用后,缓冲区大小为64位,对应4×16位的指令,对应的故障现象为跳过某四条指令或重放某四条指令。
图4 在点位P1、P2观察到的故障现象
经过分析,重放故障是由激光导致的闪存接口缓冲区更新被阻止引起的;跳过故障是由激光导致的缓冲区内容中的一个或多个位损坏引起的。
- 故障发生机制
根据故障指令的数量以及在禁用和启用缓存时报告的故障行为,尝试确定指令在哪个阶段出现故障。为了检测和大致分类诱发故障,首先要了解从闪存到核心管道的指令流。图5是SAMD21G18A的非易失性存储器(NVM)的框图。通常存储在NVM(如闪存)中的指令在传输到AHB总线之前先加载到闪存接口及其缓冲区。与2×16位指令对应的32位数据每两个时钟周期加载到AHB总线中。然后,指令由AHB总线加载入管道。
图5 SAMD21 NVM接口
有实验表明,使用EMFI(电磁波故障注入)和LFI(Laser)时,闪存接口缓冲区可能会出现故障。
故障发生机制如图6所示。假设AHB总线已经申请到了。这时候就要把HTRANS、HADDR放总线上。HRDATA比HADDR是慢一个周期的。因此,在图6(b)中,由于AHB纵向数据更新发生故障,导致指令i5、i6被重放;在图6(c)中,由于HRDATA发生位故障,指令不能被正确识别,导致指令i7、i8被跳过;在图6(d)中,由于核心管道的提取阶段获得了位损坏的指令,导致i6被跳过;在图6(e)中,由于核心管道的执行阶段获得了位损坏的指令,导致i5被跳过。
图6 故障发生机制
综上可以得出,不同的激光故障注入位点会影响指令流水线处理的不同过程,这与作者们观察到的不同故障发生时间也较为一致。
相关学者还讨论了PW、功率对故障注入成功率的影响。激光脉宽越大,发生故障的指令越多;激光功率越大,发生故障的概率越高。
结论
本论文介绍了一种通过AHB总线在32位微控制器(MCU)中使用激光故障注入(LFI)从闪存接口到执行管道获取故障的方法。在指令通道的六个位置获得了不同的故障行为,通过收集所有位置上的故障并分析它们的行为,可以识别和描述故障,并确定闪存接口缓冲区上的故障因缓存操作模式而异;根据注入位置的不同,得到重放和跳过两种故障模型,研究了脉冲宽度和功率等激光故障注入参数对故障的影响。
本文的结果说明了激光故障注入的空间和时间准确性,指出了易受攻击的位置并揭示了设备架构的信息。
参考资料
[1] V. Khuat, J. -L. Danger and J. -M. Dutertre, "Laser Fault Injection in a 32-bit Microcontroller: from the Flash Interface to the Execution Pipeline," 2021 Workshop on Fault Detection and Tolerance in Cryptography (FDTC), 2021, pp. 74-85, doi: 10.1109/FDTC53659.2021.00020.
[2] Jean-Max Dutertre, Timothé Riom, Olivier Potin, and JeanBaptiste Rigaud. Experimental analysis of the laser-induced instruction skip fault model. In Nordic Conference on Secure IT Systems, pages 221–237.Springer, 2019.
