1、电源分析攻击概述
大家好,我是你们的硬件安全讲师。今天咱们聊聊电源分析攻击——这个在嵌入式安全领域里,既让人头疼又不得不面对的话题。
说实话,我最早接触这个方向是在一次客户产品的安全评估中。当时我们做了各种软件层面的防护,觉得固件已经固若金汤了。结果一位同事拿来示波器,在芯片的VCC引脚上夹了个探头,几分钟后,密钥就暴露了。嗯,那场面我至今记忆犹新。
什么是电源分析攻击?
电源分析攻击,说白了就是通过监测芯片运行时的功耗变化,来推断芯片内部正在处理的数据或执行的指令。
你想想看,芯片在执行不同指令、处理不同数据时,消耗的电流是不一样的。比如执行乘法运算和加法运算,功耗曲线就有明显差异。处理0x00和0xFF时,翻转的晶体管数量不同,功耗自然也不同。
攻击者就是利用这些微小的功耗差异,来还原出芯片内部的秘密——密钥、固件、敏感数据等等。
核心观点:功耗是芯片内部活动的“物理指纹”。只要芯片在运行,就会泄露信息。这不是软件漏洞,而是物理层面的侧信道泄露。
攻击分类
电源分析攻击主要分为两大类:简单电源分析(SPA)和差分电源分析(DPA)。
简单电源分析(SPA)
SPA,就是直接观察单条或少量功耗轨迹,从中提取信息。
我在项目中遇到过这样一个案例:某款智能门锁芯片,在验证PIN码时,每输入一位数字,功耗曲线上就会出现一个明显的“台阶”。攻击者只需要用示波器抓取一次验证过程,数一数台阶的数量,就知道PIN码有几位。更糟糕的是,如果芯片在比较密码时是逐位比较的,一旦某一位匹配失败就提前退出,功耗曲线的长度就会暴露匹配到了第几位——这就是典型的时序侧信道。
SPA的特点:
- 直观:一条功耗曲线,肉眼就能看出端倪
- 低成本:一台示波器、一个电阻,基本就够了
- 局限性:对噪声敏感,需要攻击者对芯片内部结构有一定了解
我的经验:SPA攻击中,采样率很关键。我建议至少用4倍于芯片主频的采样率,否则很多细节会被混叠掉。我曾经因为采样率不够,漏掉了一个关键的分支指令特征,白白浪费了两天时间。
差分电源分析(DPA)
DPA就高级多了。它不依赖单条功耗曲线,而是采集大量(几百到几万条)功耗轨迹,然后通过统计分析方法,找出与密钥相关的功耗特征。
为什么会这样?因为单条功耗曲线里,信号往往被噪声淹没了。但如果你采集1000次加密操作,把功耗曲线按某个假设的密钥位分成两组,然后求平均差值——噪声会被抵消,而真正的信号会凸显出来。
DPA的特点:
- 强大:不需要知道芯片内部细节,甚至不需要知道算法实现
- 隐蔽:攻击者可以远程采集,不需要物理接触芯片内部
- 门槛稍高:需要一定的统计知识和数据处理能力
| 对比项 | SPA | DPA |
|---|---|---|
| 所需轨迹数 | 1~10条 | 100~100000条 |
| 对噪声容忍度 | 低 | 高(通过统计平均) |
| 对芯片知识要求 | 高 | 低 |
| 典型攻击目标 | 分支指令、操作码识别 | 密钥恢复、算法逆向 |
攻击原理
咱们来拆解一下攻击原理。核心就一句话:CMOS电路的动态功耗与数据相关。
CMOS门在输出从0变1或从1变0时,会消耗动态功耗。这个功耗大小取决于:
- 翻转的节点数量(数据位宽)
- 节点电容(工艺相关)
- 翻转频率(指令执行速度)
举个例子,AES加密中的S盒查找操作。S盒是一个256字节的查找表,输入是8位数据,输出也是8位数据。当输入数据不同时,S盒内部访问的地址不同,导致总线上的数据翻转模式不同。这些翻转模式会直接体现在功耗曲线上。
我做过一个实验:用NXP LPC系列芯片跑AES-128加密,在电源引脚上串联一个10欧姆的采样电阻,用差分探头测量电阻两端的电压降。示波器设置为20MHz带宽限制,采样率100MS/s。结果呢?单条功耗曲线就能清晰看到10轮加密的轮函数特征——每一轮的功耗峰值都清晰可辨。
注意:采样电阻不能太大。我见过有人用100欧姆的电阻,结果芯片电压被拉低,直接复位了。一般来说,10欧姆以下比较安全,同时要确保测量设备的共模抑制比足够高。
威胁模型
什么样的场景下,电源分析攻击是可行的?
攻击者需要满足几个条件:
- 物理接触:至少能接触到芯片的电源引脚或PCB上的电源网络
- 触发同步:能触发芯片开始执行目标操作(比如加密、解密、验证)
- 数据采集:有合适的示波器或数据采集卡
- 后处理能力:能对采集到的功耗轨迹进行分析
你可能会问:现在的芯片都有电压调节器和去耦电容,功耗特征还能被捕捉到吗?
答案是:能,只是难度增加了。去耦电容会滤除高频成分,但低频成分依然存在。而且,攻击者可以在PCB背面找到过孔,或者直接用探针接触芯片引脚。我在评估一款车规级MCU时,芯片有内部LDO,但我们在PCB的电源入口处依然采集到了清晰的功耗特征——因为内部LDO的响应速度有限,高频成分虽然衰减了,但低频包络还在。
典型的威胁场景包括:
- 智能卡/安全芯片:攻击者通过卡片触点采集功耗
- 物联网设备:攻击者拆开设备外壳,在PCB上焊接飞线
- 手机/平板:通过USB电源线或电池接口采集
- 汽车ECU:通过OBD接口或直接测量电源线
避坑指南:我曾经评估过一款号称“抗DPA”的芯片,厂商说内部有随机延时插入和功耗平衡电路。结果我们一测,发现这些防护只在特定频率下有效。当我们把采样率从100MS/s降到10MS/s时,防护措施反而成了特征——随机延时变成了可预测的抖动模式。所以,评估防护措施时,一定要多换几个采样参数试试。
知识体系总览
下面这张图,是我梳理的本章知识结构。你可以把它当作一个思维导图来看。
嗯,这张图基本把本章的核心逻辑串起来了。从攻击分类到原理,再到威胁模型,最后落到实际场景。你可以在后续的学习中,随时回来对照这张图,看看自己学到哪一步了。