第四章:故障注入攻击——电压毛刺、时钟毛刺、电磁脉冲与激光故障注入

各位同学,大家好。今天我们聊一个硬核话题——故障注入攻击。

说实话,我在智能卡安全这个行当摸爬滚打十几年,见过太多“理论上安全”的芯片,最后被一根针、一个脉冲就给干趴下了。故障注入,说白了就是让芯片在非正常状态下工作,逼它犯错。你想想看,一个精心设计的加密算法,在正常电压下固若金汤,可一旦电压突然掉一下,它可能就把密钥给吐出来了。

嗯,这节课我们就来拆解四种最常见的故障注入手段:电压毛刺、时钟毛刺、电磁脉冲(EMPI)和激光故障注入。

4.1 电压毛刺(Voltage Glitch)

电压毛刺是最“亲民”的故障注入方式。你只需要一个可编程电源,再加一个快速开关,就能在芯片供电线上制造一个短暂的电压跌落或尖峰。

原理是什么?

芯片内部的逻辑门都有个最小工作电压。当供电电压瞬间掉到阈值以下,某些逻辑门的输出就会出错。这种错误可能是位翻转,也可能是指令跳过。

核心要点:电压毛刺攻击的目标不是烧毁芯片,而是让芯片在“将错未错”的边缘犯错。

我在项目中遇到过一件事:某款智能卡在正常电压3.3V下运行,我用一个毛刺发生器把电压瞬间拉到2.0V,持续200纳秒。结果呢?芯片跳过了PIN码校验,直接进入了管理员模式。嗯,这就是典型的指令跳过攻击。

攻击参数怎么调?

参数 典型范围 影响
毛刺深度 正常电压的60%~90% 太浅没效果,太深会复位
毛刺宽度 50ns ~ 1μs 太窄打不进去,太宽容易死机
注入时机 相对于某个指令的延迟 需要精确对准目标指令

我的经验:调电压毛刺就像调收音机。你先固定宽度,慢慢调深度;找到敏感点后,再微调时机。别一上来就大范围扫,容易把芯片搞死。

4.2 时钟毛刺(Clock Glitch)

时钟毛刺和电压毛刺是“孪生兄弟”。只不过这次我们攻击的是时钟信号。

为什么时钟也能攻击?

芯片内部所有操作都跟着时钟走。如果你在时钟信号里插入一个“超短脉冲”,芯片就会在一个时钟周期内执行两个操作。或者反过来,你拉长一个时钟周期,芯片就会“卡住”一会儿。

我记得有一次做测试,目标芯片用的是外部晶振。我在时钟线上加了一个毛刺,让时钟频率瞬间从10MHz跳到50MHz。芯片当场就懵了——它以为一个指令周期结束了,实际上还没完成。结果就是:它跳过了关键的校验步骤。

注意:时钟毛刺比电压毛刺更难防护,因为很多芯片的时钟输入没有滤波电路。你想想看,一个简单的RC滤波器就能干掉大部分电压毛刺,但时钟毛刺呢?它本身就是信号,你没法简单滤掉。

攻击手法对比:

  • 单毛刺:精准打击,一次只跳过一个指令
  • 多毛刺:连续注入,用于绕过循环校验
  • 频率突变:突然提高或降低频率,让芯片时序错乱

4.3 电磁脉冲攻击(EMPI)

电磁脉冲攻击,听起来很科幻对吧?其实原理很简单:用一个线圈产生强电磁场,在芯片内部感应出电流,干扰正常逻辑。

EMPI的优势在哪?

非接触式攻击。你不需要物理接触芯片的引脚,只需要把探针放在芯片上方几毫米处。这对于一些封装好的智能卡来说,简直是噩梦。

我曾经帮客户测试一款银行卡。我们用自制的EMPI探针(其实就是绕了几圈的铜线),在芯片上方2mm处放电。结果呢?三次攻击里有一次成功跳过了交易金额校验。嗯,这意味着攻击者可以刷一分钱买一辆车。

关键参数:

  • 探针直径:1mm ~ 5mm
  • 放电电压:200V ~ 1000V
  • 脉冲宽度:10ns ~ 100ns
  • 探针位置:对准芯片核心区域

为什么EMPI这么难防?

因为电磁场是“无孔不入”的。你可以在芯片上加屏蔽罩,但屏蔽罩本身也会被感应出电流。而且,EMPI攻击的定位精度可以做到几十微米级别——你想想看,这已经能对准芯片内部的某个模块了。

4.4 激光故障注入(Laser Fault Injection)

激光故障注入,是故障注入攻击里的“高精尖武器”。

原理:用一束聚焦的激光照射芯片的某个区域,产生光生载流子,改变局部电路的逻辑状态。说白了,就是用光来“写”芯片。

激光攻击的精度可以达到亚微米级别。这意味着你可以精确地翻转某个寄存器的某一位,或者让某个逻辑门输出错误结果。

避坑指南:我曾经见过一个团队,花了几十万买激光设备,结果第一次测试就把芯片打穿了。为什么?激光功率没调好。记住,激光攻击不是烧芯片,是“挠痒痒”。功率要从最低开始慢慢往上调。

激光攻击的三种模式:

  1. 单点攻击:聚焦到一点,翻转单个存储单元
  2. 扫描攻击:逐行扫描,寻找敏感区域
  3. 多光束攻击:同时攻击多个点,用于绕过并行校验

防护难度:激光攻击是目前最难防护的故障注入方式。因为激光可以穿透大部分封装材料,而且精度极高。你加个金属屏蔽层?激光可以绕过去。你加个光敏检测电路?攻击者可以用红外激光,你的检测电路根本感应不到。

4.5 四种攻击方式的对比与防御思路

好了,四种攻击方式都讲完了。我们来做个对比总结。

攻击方式 成本 精度 可重复性 防护难度
电压毛刺 低(几百元) 低(芯片级)
时钟毛刺 低(几百元) 中(模块级)
电磁脉冲 中(几千元) 中(模块级)
激光注入 高(几十万) 高(晶体管级) 极高

防御思路:

  • 电压毛刺:加电压检测电路,一旦检测到异常立即复位
  • 时钟毛刺:用内部PLL生成时钟,外部时钟只做参考
  • 电磁脉冲:加屏蔽罩,但效果有限;更有效的是在关键操作前做“自检”
  • 激光注入:加光敏检测层,但成本高;更实际的做法是“冗余计算”和“随机延迟”

最后提醒一句:没有绝对安全的芯片。你加再多的防护,攻击者总能找到新的漏洞。我们的目标不是让攻击者进不来,而是让攻击者进来之后什么都拿不到。嗯,这就是“纵深防御”的思想。

故障注入攻击知识体系 故障注入 攻击 电压毛刺 供电电压瞬间跌落 指令跳过/位翻转 时钟毛刺 时钟信号插入脉冲 时序错乱/操作跳过 电磁脉冲(EMPI) 非接触式攻击 感应电流干扰逻辑 激光故障注入 高精度光生载流子 亚微米级位翻转 防御思路:纵深防御 + 冗余校验

好了,这一章的内容就到这里。故障注入攻击是个很有意思的领域,它告诉我们:芯片的“物理世界”和“逻辑世界”之间,其实有一道很窄的缝隙。攻击者就是在找这道缝隙。

下一章我们会讲侧信道攻击,那又是另一番天地了。


公众号:蓝海资料掘金营,微信deep3321