1. 课程导入

各位同学,咱们今天聊点硬核的——故障注入。说白了,就是故意让芯片或系统“出错”,然后看它怎么反应。我做了十几年硬件安全,见过太多产品在实验室跑得好好的,一到攻击者手里就崩了。为什么?因为设计时根本没想过有人会故意搞破坏。

故障注入不是什么新鲜技术。早在上世纪90年代,学术界就开始研究。但真正让它“出圈”的,是2010年前后那波针对智能卡和嵌入式设备的攻击。嗯,这里要注意:故障注入已经从实验室技术,变成了真实世界攻击的标配手段。

1.1 什么是故障注入

故障注入,英文叫 Fault Injection。它的核心思想很简单:通过物理手段干扰芯片的正常运行,让硬件产生非预期的行为,从而绕过安全机制。

举个例子。你设计了一个安全芯片,里面有个密码校验逻辑——密码不对就不让访问。正常情况下,这个逻辑是可靠的。但攻击者如果在校验的那一瞬间,往芯片的电源引脚上打一个毛刺(Glitch),电压突然掉下去又恢复,芯片内部的某个寄存器可能就“跳”过去了。校验没通过,但门开了。

我在项目中遇到过类似的情况。客户说他们的安全芯片“绝对攻不破”,结果我们用电磁注入,三分钟就绕过了PIN码校验。客户当时的表情,我到现在都记得。

核心要点:故障注入不是破坏芯片,而是利用芯片在异常条件下的“非确定性行为”来达成攻击目标。

1.2 故障注入分类

故障注入的手段很多,但主流的有四种。我按实际工程中的使用频率来排个序。

类型 原理 精度 成本 典型应用
电压故障注入 在电源线上叠加毛刺,导致逻辑门翻转 中 低 智能卡、MCU、SoC
时钟故障注入 改变时钟频率或相位,破坏时序约束 中高 低 同步电路、加密引擎
电磁故障注入 用电磁脉冲感应涡流,干扰内部节点 高 中 现代SoC、ARM处理器
激光故障注入 用激光照射晶体管,产生光生载流子 极高 极高 逆向工程、精确攻击

你可能会问:为什么激光精度最高,但用得少?原因很简单——贵。一套激光工作台,少说几十万美金。而电压注入,几百块钱的设备就能搞定。我在给企业做培训时经常说:攻击者不会用最贵的方法,只会用最有效的方法。

1.2.1 电压故障注入

这是最入门、也最实用的方法。原理其实不复杂:芯片内部的逻辑门,需要稳定的电压才能正确判断0和1。如果你在某个关键指令执行时,把电压拉低到阈值以下,逻辑门就可能把1误判成0。

我曾经帮一个客户排查过产品被破解的原因。他们用的是某款主流MCU,安全等级标称很高。结果攻击者用了一个简单的MOSFET开关,配合Arduino,在电源线上打了几个毛刺,就把固件读出来了。问题出在哪?芯片的电压检测电路(BOD)响应太慢,毛刺过去了它才反应过来。

实战建议:做电压注入测试时,毛刺的宽度和幅度是关键参数。我一般从10%的电压降和100ns的宽度开始扫,逐步调整。别一上来就猛打,容易把芯片打废。

1.2.2 时钟故障注入

时钟故障注入,针对的是同步电路。芯片里所有逻辑操作都靠时钟来同步。如果你在某个时刻,突然插入一个超短的时钟周期,或者跳过一个时钟沿,寄存器就可能采到错误的数据。

我记得有一次做AES加密引擎的测试。正常加密需要10个时钟周期。我们通过时钟毛刺,让第5个周期的建立时间不满足,结果加密结果里出现了部分明文信息。这就是典型的时序违规导致的信息泄露。

1.2.3 电磁故障注入

电磁注入(EMFI)是近几年最火的方向。它不需要接触芯片,用一根线圈在芯片上方打一个强电磁脉冲,就能在芯片内部感应出涡流,干扰局部电路。

你想想看,这对攻击者来说多方便——不需要拆封装,不需要飞线,隔着PCB就能打。我在2019年参与过一个项目,对手用EMFI攻击了一款车规级芯片,成功跳过了安全启动的签名校验。那之后,我们团队把EMFI防护列为了最高优先级。

1.2.4 激光故障注入

激光注入是精度最高的方法。它可以精确到单个晶体管级别。攻击者先用红外显微镜找到芯片的敏感区域,然后用激光照射那个位置,产生光生载流子,让晶体管瞬间导通或关断。

但代价也很高。除了设备贵,还需要对芯片做开盖处理(Decap),而且需要精确的光学对准。一般国家级攻击者或顶级实验室才会用。我在实际项目中只遇到过两次激光攻击的案例,都是针对高端安全芯片的。

1.3 攻击模型与威胁分析

了解了故障注入的手段,我们得站在攻击者的角度想想:他们到底想干什么?这就涉及到攻击模型。

我个人习惯把故障注入的攻击模型分成三类:

  1. 安全机制绕过:跳过密码校验、绕过安全启动、禁用看门狗
  2. 信息泄露:通过故障让加密运算输出中间值,从而推导出密钥
  3. 权限提升:从用户模式注入到特权模式,获取系统控制权

下面这张图,是我在课程里经常用的威胁分析框架。它把攻击者的目标、手段和防护点串在了一起。

故障注入威胁分析框架 攻击目标 绕过安全机制 泄露敏感信息 提升执行权限 攻击手段 电压毛刺 时钟毛刺 电磁脉冲 激光照射 防护措施 电压/频率检测 冗余校验 屏蔽层/传感器 时序随机化 威胁分析关键问题 1. 攻击者需要多高的时间/空间精度? 2. 攻击需要多少次尝试才能成功? 3. 攻击后能否被检测到?

1.4 威胁建模:从攻击者视角看问题

做安全设计,最忌讳的就是“我觉得这样够安全了”。你得把自己当成攻击者,去思考:如果我要攻破这个系统,我会从哪里下手?

我总结了一个简单的威胁建模流程,供你参考:

  • 第一步:识别攻击面——芯片有哪些外部接口?电源、时钟、复位、IO、调试接口,每一个都是潜在的注入点。
  • 第二步:评估攻击成本——电压注入成本最低,激光注入成本最高。攻击者会选性价比最高的路径。
  • 第三步:分析攻击窗口——故障注入需要在精确的时间点触发。这个时间窗口越窄,攻击难度越大。
  • 第四步:设计防护策略——根据前三步的结果,决定在哪些环节加防护。
避坑指南:我曾经见过一个团队,花了大价钱给芯片加了激光传感器,结果忘了给电源引脚做毛刺滤波。攻击者用电压注入,三秒钟就绕过了所有防护。记住:防护链的强度,取决于最弱的一环。

1.5 本章小结

故障注入不是什么魔法,它就是利用芯片在异常条件下的“非理想行为”。电压、时钟、电磁、激光,四种手段各有优劣。作为安全工程师,你不需要精通每一种攻击方法,但你必须理解它们的原理和威胁模型。

后面的课程,我们会逐一深入每种注入技术的实操细节。今天先把基础打牢——搞清楚攻击者想干什么,他们能用什么手段,以及我们该怎么防。