4、故障注入攻击基础:电压毛刺、时钟毛刺、电磁脉冲、激光注入
各位同学好,我是老周。今天咱们聊一个硬核话题——故障注入攻击。说白了,就是攻击者怎么通过物理手段,让芯片“犯错”,从而撬开安全防线。
我在芯片安全这行干了十几年,见过太多设计精良的芯片,最后栽在物理攻击上。你想想看,软件层面的防护做得再好,如果攻击者能直接往芯片上“捅一刀”,那一切归零。所以,理解故障注入,是做好物理防护的第一步。
4.1 什么是故障注入?
故障注入,就是故意让芯片的工作环境偏离正常状态。比如电压突然抖一下、时钟突然跳一下、或者用电磁脉冲照一下。芯片一旦“懵了”,就可能跳过安全检查、输出错误数据,甚至泄露密钥。
我习惯把故障注入比作“让芯片打喷嚏”。正常工作时,芯片按部就班执行指令。但如果你在它执行“检查密码”这条指令时,给它一个电压毛刺,它可能直接跳过检查,进入授权状态。嗯,就是这么危险。
核心要点:故障注入的目标是破坏芯片的时序或逻辑完整性,让安全机制失效。
4.2 四种主流故障注入方式
下面我逐一介绍四种最常见的攻击手段。每种我都踩过坑,有些经验教训希望能帮到你。
4.2.1 电压毛刺(Voltage Glitch)
电压毛刺是最“亲民”的攻击方式。攻击者只需要在芯片供电线上叠加一个短暂的电压尖峰或跌落,就能让芯片内部逻辑出错。
我在项目中遇到过一件事:某款支付芯片在电压跌落测试时,居然能绕过PIN码验证。后来一查,是电源管理模块没做毛刺滤波。说白了,就是芯片“饿了一下”,脑子就不清醒了。
- 攻击原理:通过快速改变供电电压,导致逻辑门延迟变化,触发建立时间/保持时间违例。
- 典型参数:毛刺宽度10ns~1μs,幅度为正常电压的±20%~50%。
- 防护思路:片上电压监测器、冗余比较、时序容错设计。
我的小技巧:设计电压监测器时,别忘了加迟滞比较器。否则芯片会在阈值附近反复触发复位,反而给攻击者制造机会。
4.2.2 时钟毛刺(Clock Glitch)
时钟毛刺和电压毛刺是“孪生兄弟”。攻击者往时钟信号里插入一个异常脉冲,让芯片在错误的时间点采样数据。
你想想看,芯片内部所有操作都依赖时钟节拍。如果时钟突然多跳了一下,或者少跳了一下,那状态机就可能走到一个不该去的状态。我曾经见过一个案例,攻击者用时钟毛刺让AES加密引擎输出中间状态,直接还原出密钥。
- 攻击原理:插入额外时钟沿或缩短时钟周期,导致寄存器采样错误。
- 典型参数:毛刺宽度为正常周期的10%~50%,通常需要精确定时。
- 防护思路:时钟监测电路、双沿采样、异步设计。
注意:时钟毛刺攻击对高频率芯片效果更好。因为频率越高,时序裕量越小,越容易被毛刺“击中”。
4.2.3 电磁脉冲(EM Pulse)
电磁脉冲攻击,听起来很科幻,其实原理很简单。用一个线圈或探针,在芯片表面产生强电磁场,感应出涡流,干扰内部电路。
我个人觉得,EM脉冲是四种方式里最难防护的。因为它不需要接触芯片,隔着封装就能打进去。我记得有一次做安全评估,我们用EM脉冲攻击一款智能卡,只打了三次,就把安全状态机打“死机”了。
- 攻击原理:电磁感应产生局部电流,干扰特定区域的晶体管开关行为。
- 典型参数:脉冲宽度10ns~100ns,峰值磁场强度1~10T。
- 防护思路:金属屏蔽层、敏感电路分散布局、冗余逻辑。
关键认知:EM脉冲攻击的精度取决于探针尺寸。探针越小,定位越准,但能量也越小。这是个权衡。
4.2.4 激光注入(Laser Injection)
激光注入是“土豪”级别的攻击方式。用聚焦激光束照射芯片表面,产生光生载流子,改变晶体管的导通状态。
为什么说它厉害?因为激光可以精确到单个晶体管级别。攻击者可以瞄准安全状态机里的某个关键触发器,直接把它“翻转”。我曾经参与过一个项目,对方用激光成功绕过了SRAM的加密保护,读取了明文数据。
- 攻击原理:激光激发硅材料产生电子-空穴对,形成瞬态电流,改变逻辑状态。
- 典型参数:激光波长532nm~1064nm,光斑直径0.5μm~5μm,脉冲宽度纳秒级。
- 防护思路:光敏检测器、金属覆盖层、双轨逻辑、错误纠正码。
避坑指南:我曾经以为只要把敏感电路藏在金属层下面就能防激光。结果发现,高功率激光能穿透薄金属层。所以,金属层厚度和材料选择都很关键。
4.3 四种攻击方式对比
下面这张表,是我根据多年经验整理的。你可以快速对比它们的差异。
| 攻击方式 | 成本 | 精度 | 是否需要开封装 | 典型防护难度 |
|---|---|---|---|---|
| 电压毛刺 | 低 | 低(全局影响) | 否 | 中 |
| 时钟毛刺 | 低 | 中(时序相关) | 否 | 中 |
| 电磁脉冲 | 中 | 中高(局部区域) | 通常需要 | 高 |
| 激光注入 | 高 | 极高(单晶体管) | 必须 | 极高 |
4.4 故障注入攻击的通用流程
不管用哪种方式,攻击者的套路其实差不多。我总结了一个通用流程,你看了就明白。
你看,攻击者先分析芯片的敏感区域,然后扫描电压、时间、位置等参数,找到最容易“捅破”的点。接着实施注入,最后分析输出结果。如果没成功,就调整参数再来一次。说白了,这就是个“试错”的过程。
4.5 防护思路总览
讲了这么多攻击手段,你可能会问:那到底怎么防?我简单说几个大方向,后面章节会展开讲。
- 检测与响应:在芯片内部集成传感器,检测电压、时钟、温度、光照等异常,一旦发现就触发复位或擦除敏感数据。
- 冗余与容错:关键逻辑做双份甚至三份,通过投票机制输出结果。就算一个被“打歪了”,另外两个还能纠正。
- 时序与逻辑加固:使用双轨逻辑、异步设计,让攻击者难以通过毛刺破坏时序。
- 物理屏蔽:顶层金属覆盖、有源屏蔽层,增加攻击者接触内部电路的难度。
重要提醒:没有一种防护是万能的。真正的安全芯片,需要多种防护手段组合使用。我见过太多只做了一层防护就被攻破的案例。
好了,这一章的内容就到这里。故障注入攻击是物理攻击的“基本功”,理解透了,后面学防护才能有的放矢。下一章咱们聊聊更具体的防护电路设计。
公众号:蓝海资料掘金营,微信deep3321