电磁侧信道攻击原理
好,咱们进入正题。电磁侧信道攻击,说白了就是「偷听」芯片工作时泄露的电磁信号。你想想看,芯片在运算的时候,电流在电路里跑来跑去,必然会向外辐射电磁波。这些电磁波里,就藏着芯片正在处理的数据信息。
我最早接触这个方向,是在一次评估某款物联网芯片安全性的项目里。当时客户说「我们的芯片有加密,很安全」。结果我用一个简单的电磁探头,在芯片旁边晃了晃,密钥就出来了。嗯,从那以后,我再也不敢小看电磁泄露了。
电磁辐射的来源
芯片的电磁辐射,主要来自三个地方:
- 数字电路开关:CMOS电路在翻转时,会产生瞬态电流。这个电流变化,就是电磁辐射的主要来源。说白了,芯片每做一次运算,都在「广播」自己的状态。
- 时钟信号:时钟是芯片的「心跳」,频率稳定、幅度大。它的谐波分量非常丰富,很容易被捕捉到。我在项目中遇到过,有时候不需要高精度探头,光靠时钟的谐波就能提取到有用信息。
- 电源网络:芯片内部的电源分配网络(PDN),在电流变化时也会产生磁场。这个磁场虽然弱,但胜在稳定,适合做长时间采集。
核心观点:电磁辐射不是「有或没有」的问题,而是「泄露了多少」的问题。只要芯片在工作,就一定在泄露。
信息泄露机制
为什么会泄露信息?这里有个关键概念:数据依赖性。
芯片在执行不同指令、处理不同数据时,消耗的电流不一样。比如,处理0x00和0xFF,内部晶体管翻转的数量完全不同。这个差异,会直接反映在电磁辐射的幅度和频率上。
我举个例子。AES加密算法中,S盒查找操作是典型的泄露点。每次查表,芯片都会访问特定的内存地址。这个地址对应的数据,就是密钥相关的。你想想看,如果我们能捕捉到每次查表时的电磁波形,是不是就能反推出密钥?
具体来说,泄露机制可以分为两类:
- 幅度泄露:不同数据导致电流大小不同,电磁波幅度随之变化。这是最直接的泄露方式。
- 时序泄露:某些操作的时间长度与数据相关。比如,条件分支指令,跳转和不跳转的执行时间不一样。这个时间差,也会体现在电磁信号上。
实战技巧:我个人习惯先观察幅度泄露,因为它最明显。如果幅度泄露不明显,再考虑时序泄露。曾经有一次,我在评估某款国产MCU时,幅度泄露几乎看不到,但时序泄露非常清晰。最后靠时序分析成功提取了密钥。
攻击模型与假设
做电磁侧信道攻击,我们需要先明确攻击模型。说白了,就是「假设攻击者能做什么」。
常见的攻击模型包括:
| 模型类型 | 攻击者能力 | 典型场景 |
|---|---|---|
| 非侵入式 | 只需靠近芯片,无需物理接触 | 智能卡、手机芯片 |
| 半侵入式 | 需要去除封装,但不破坏芯片 | 实验室环境下的芯片评估 |
| 侵入式 | 需要破坏芯片,直接接触内部节点 | 逆向工程、硬件木马检测 |
在ChipWhisperer的实战中,我们主要关注非侵入式模型。为什么?因为实战中,你不可能把别人的芯片拆开。你只能拿着探头,在芯片附近采集信号。
攻击假设也很重要。我通常假设:
- 攻击者知道芯片的型号和架构
- 攻击者能控制输入数据(比如明文)
- 攻击者能采集到电磁信号
- 攻击者不知道密钥(废话,知道还攻什么)
注意:有些芯片会加入抗侧信道攻击的防护措施,比如随机延时、掩码技术。这时候,简单的电磁采集就不够用了。需要结合统计方法,比如DPA(差分功耗分析)或CPA(相关功耗分析)。
电磁攻击的流程
嗯,这里我画了一张流程图,帮你理清整个攻击思路。
这张图展示了电磁攻击的完整流程。从目标选择开始,到信号采集、预处理、对齐降噪、统计分析,最后提取密钥。每一步都有坑,我后面会详细讲。
实战中的注意事项
最后,分享几个我在实战中踩过的坑:
- 探头位置很重要:我曾经花了两天时间,怎么都采不到有效信号。后来发现,探头放偏了1毫米。电磁信号衰减很快,位置差一点,结果天差地别。
- 采样率要够:奈奎斯特定理大家都懂,但实战中我建议采样率至少是目标信号频率的5倍。比如芯片跑20MHz,采样率至少100MS/s。
- 注意环境干扰:实验室里的开关电源、手机信号、甚至日光灯,都会引入噪声。我习惯在屏蔽箱里做采集,效果会好很多。
避坑指南:我曾经在评估某款芯片时,发现采集到的信号总是有周期性毛刺。排查了半天,原来是示波器的USB线没屏蔽。换了一根带磁环的线,问题就解决了。嗯,细节决定成败。
好了,电磁侧信道攻击的原理就讲到这里。记住一句话:芯片在工作,信息在泄露。你需要的,只是一双「听得见」电磁波的眼睛。