电磁侧信道攻击原理

好,咱们进入正题。电磁侧信道攻击,说白了就是「偷听」芯片工作时泄露的电磁信号。你想想看,芯片在运算的时候,电流在电路里跑来跑去,必然会向外辐射电磁波。这些电磁波里,就藏着芯片正在处理的数据信息。

我最早接触这个方向,是在一次评估某款物联网芯片安全性的项目里。当时客户说「我们的芯片有加密,很安全」。结果我用一个简单的电磁探头,在芯片旁边晃了晃,密钥就出来了。嗯,从那以后,我再也不敢小看电磁泄露了。

电磁辐射的来源

芯片的电磁辐射,主要来自三个地方:

  • 数字电路开关:CMOS电路在翻转时,会产生瞬态电流。这个电流变化,就是电磁辐射的主要来源。说白了,芯片每做一次运算,都在「广播」自己的状态。
  • 时钟信号:时钟是芯片的「心跳」,频率稳定、幅度大。它的谐波分量非常丰富,很容易被捕捉到。我在项目中遇到过,有时候不需要高精度探头,光靠时钟的谐波就能提取到有用信息。
  • 电源网络:芯片内部的电源分配网络(PDN),在电流变化时也会产生磁场。这个磁场虽然弱,但胜在稳定,适合做长时间采集。

核心观点:电磁辐射不是「有或没有」的问题,而是「泄露了多少」的问题。只要芯片在工作,就一定在泄露。

信息泄露机制

为什么会泄露信息?这里有个关键概念:数据依赖性

芯片在执行不同指令、处理不同数据时,消耗的电流不一样。比如,处理0x00和0xFF,内部晶体管翻转的数量完全不同。这个差异,会直接反映在电磁辐射的幅度和频率上。

我举个例子。AES加密算法中,S盒查找操作是典型的泄露点。每次查表,芯片都会访问特定的内存地址。这个地址对应的数据,就是密钥相关的。你想想看,如果我们能捕捉到每次查表时的电磁波形,是不是就能反推出密钥?

具体来说,泄露机制可以分为两类:

  1. 幅度泄露:不同数据导致电流大小不同,电磁波幅度随之变化。这是最直接的泄露方式。
  2. 时序泄露:某些操作的时间长度与数据相关。比如,条件分支指令,跳转和不跳转的执行时间不一样。这个时间差,也会体现在电磁信号上。

实战技巧:我个人习惯先观察幅度泄露,因为它最明显。如果幅度泄露不明显,再考虑时序泄露。曾经有一次,我在评估某款国产MCU时,幅度泄露几乎看不到,但时序泄露非常清晰。最后靠时序分析成功提取了密钥。

攻击模型与假设

做电磁侧信道攻击,我们需要先明确攻击模型。说白了,就是「假设攻击者能做什么」。

常见的攻击模型包括:

模型类型 攻击者能力 典型场景
非侵入式 只需靠近芯片,无需物理接触 智能卡、手机芯片
半侵入式 需要去除封装,但不破坏芯片 实验室环境下的芯片评估
侵入式 需要破坏芯片,直接接触内部节点 逆向工程、硬件木马检测

在ChipWhisperer的实战中,我们主要关注非侵入式模型。为什么?因为实战中,你不可能把别人的芯片拆开。你只能拿着探头,在芯片附近采集信号。

攻击假设也很重要。我通常假设:

  • 攻击者知道芯片的型号和架构
  • 攻击者能控制输入数据(比如明文)
  • 攻击者能采集到电磁信号
  • 攻击者不知道密钥(废话,知道还攻什么)

注意:有些芯片会加入抗侧信道攻击的防护措施,比如随机延时、掩码技术。这时候,简单的电磁采集就不够用了。需要结合统计方法,比如DPA(差分功耗分析)或CPA(相关功耗分析)。

电磁攻击的流程

嗯,这里我画了一张流程图,帮你理清整个攻击思路。

1. 目标选择 2. 信号采集 3. 预处理 4. 对齐与降噪 5. 统计分析 6. 密钥提取

这张图展示了电磁攻击的完整流程。从目标选择开始,到信号采集、预处理、对齐降噪、统计分析,最后提取密钥。每一步都有坑,我后面会详细讲。

实战中的注意事项

最后,分享几个我在实战中踩过的坑:

  • 探头位置很重要:我曾经花了两天时间,怎么都采不到有效信号。后来发现,探头放偏了1毫米。电磁信号衰减很快,位置差一点,结果天差地别。
  • 采样率要够:奈奎斯特定理大家都懂,但实战中我建议采样率至少是目标信号频率的5倍。比如芯片跑20MHz,采样率至少100MS/s。
  • 注意环境干扰:实验室里的开关电源、手机信号、甚至日光灯,都会引入噪声。我习惯在屏蔽箱里做采集,效果会好很多。

避坑指南:我曾经在评估某款芯片时,发现采集到的信号总是有周期性毛刺。排查了半天,原来是示波器的USB线没屏蔽。换了一根带磁环的线,问题就解决了。嗯,细节决定成败。

好了,电磁侧信道攻击的原理就讲到这里。记住一句话:芯片在工作,信息在泄露。你需要的,只是一双「听得见」电磁波的眼睛。