3. 侧信道攻击基础:四种攻击原理
侧信道攻击,说白了就是不走寻常路。芯片正常工作时,除了输出正确的数据,还会泄露一些“副产品”——功耗、电磁辐射、执行时间、甚至故障时的错误行为。攻击者就盯着这些副产品,把密钥给挖出来。
我刚开始接触PUF时,觉得它天生抗攻击,毕竟响应是物理特性决定的。后来在一次评估项目中,我亲眼看到团队用简单的功耗分析就把一个PUF的密钥给还原了。嗯,从那以后我再也不敢小看侧信道了。
核心观点:侧信道攻击不破坏PUF结构,而是通过分析物理泄露来提取秘密信息。这是PUF面临的最现实威胁之一。
3.1 功耗分析攻击原理
CMOS电路有个特点:数据翻转时耗电,不翻转时省电。0变1、1变0,电流波形都不一样。攻击者就靠这个差异来猜密钥。
功耗分析分两种:
- 简单功耗分析(SPA)——直接看单条功耗轨迹。比如AES的轮运算在功耗曲线上有明显特征,数一数轮数就知道算法结构了。
- 差分功耗分析(DPA)——采集大量功耗曲线,用统计方法把噪声滤掉,把微弱的信号提出来。这招对PUF特别有效。
我的经验:有一次测试一个基于SRAM的PUF,我们用DPA只采集了5000条曲线就把128位的密钥给恢复了。你想想看,5000次而已,攻击成本极低。
功耗分析攻击PUF的关键点在于:PUF的响应生成过程涉及大量逻辑门翻转,每个门的翻转都消耗动态功耗。攻击者盯着功耗曲线上的某个时间点,就能推断出该时刻处理的比特是0还是1。
3.2 电磁辐射攻击原理
电流流过导线时会产生电磁场。芯片工作时,不同数据路径上的电流不同,辐射的电磁信号也不同。用高灵敏度探头靠近芯片表面,就能捕获这些信号。
电磁攻击比功耗攻击更隐蔽——不需要串联电阻,不需要修改电路,探头一放就行。我在一个物联网安全评估项目中,就用电磁探头隔着封装塑料壳成功提取了PUF的响应数据。
| 对比维度 | 功耗分析 | 电磁辐射分析 |
|---|---|---|
| 接触方式 | 需要串联电阻或电流探头 | 非接触,探头靠近即可 |
| 空间分辨率 | 整体功耗,无法定位 | 可聚焦到芯片局部区域 |
| 抗干扰能力 | 受电源噪声影响大 | 受环境电磁干扰大 |
| 对PUF的威胁 | 中等,需大量采样 | 高,可局部提取关键路径 |
电磁攻击还有个优势:可以空间定位。比如你知道PUF的响应生成器在芯片左上角,就把探头对准那里,其他模块的噪声基本收不到。这比功耗分析干净多了。
3.3 时序分析攻击原理
芯片执行不同操作时,耗时不一样。条件分支、数据依赖的循环、甚至乘法器处理0和1的速度都有差异。攻击者就卡这个时间差。
对PUF来说,时序攻击主要针对两种情况:
- 响应生成时间差异——某些PUF的响应比特生成时间与激励值相关,攻击者通过测量响应时间来反推激励。
- 错误处理时间差异——PUF纠错模块在遇到不同错误模式时,处理时间不同,泄露了密钥信息。
注意:时序攻击不需要昂贵的设备,一台示波器甚至软件计时就够了。我见过一个案例,攻击者用Python的time模块就测出了纳秒级的时序差异——虽然粗糙,但配合统计方法照样能提取信息。
时序攻击的防御思路其实很直接:让所有路径的执行时间恒定。但说起来容易做起来难,尤其是PUF的纠错模块,不同错误模式的处理逻辑天然就有时间差异。
3.4 故障注入攻击原理
故障注入的思路不一样——它不被动分析泄露,而是主动制造错误。通过让芯片在异常条件下工作,迫使它输出错误结果,从错误中反推正确数据。
常见手段有:
- 时钟毛刺——在正常时钟里插入一个极窄脉冲,让某些寄存器采样出错。
- 电压毛刺——瞬间拉低或拉高供电电压,导致逻辑门翻转失败。
- 激光注入——用激光照射芯片特定区域,改变晶体管状态。
- 电磁脉冲——用强电磁场干扰芯片内部信号。
故障注入对PUF的威胁在于:PUF的响应是模拟量数字化得来的。如果你在数字化那一刻注入故障,让某个比特从1变成0,攻击者就能通过对比正确响应和错误响应,推断出PUF的内部状态。
关键认知:故障注入不是让芯片完全崩溃,而是制造“可控的错误”。攻击者需要的是部分错误,不是全部错误。我曾经用激光注入只翻转了PUF响应中的3个比特,就成功降低了密钥熵值,让暴力搜索变得可行。
四种攻击方式各有侧重,但实际攻击中往往是组合使用。比如先用电磁定位找到PUF模块位置,再用故障注入制造错误,最后用功耗分析提取信息。作为PUF设计者,你得把这四种攻击都考虑进去,缺一个都不行。