3. 侧信道攻击基础:四种攻击原理

侧信道攻击,说白了就是不走寻常路。芯片正常工作时,除了输出正确的数据,还会泄露一些“副产品”——功耗、电磁辐射、执行时间、甚至故障时的错误行为。攻击者就盯着这些副产品,把密钥给挖出来。

我刚开始接触PUF时,觉得它天生抗攻击,毕竟响应是物理特性决定的。后来在一次评估项目中,我亲眼看到团队用简单的功耗分析就把一个PUF的密钥给还原了。嗯,从那以后我再也不敢小看侧信道了。

核心观点:侧信道攻击不破坏PUF结构,而是通过分析物理泄露来提取秘密信息。这是PUF面临的最现实威胁之一。

侧信道攻击知识体系 侧信道攻击 功耗分析攻击 电磁辐射攻击 时序分析攻击 故障注入攻击 简单功耗分析(SPA) 差分功耗分析(DPA) 近场电磁探测 远场电磁分析 数据相关时序 操作相关时序 时钟毛刺注入 激光/电磁故障 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来说,时序攻击主要针对两种情况:

  1. 响应生成时间差异——某些PUF的响应比特生成时间与激励值相关,攻击者通过测量响应时间来反推激励。
  2. 错误处理时间差异——PUF纠错模块在遇到不同错误模式时,处理时间不同,泄露了密钥信息。

注意:时序攻击不需要昂贵的设备,一台示波器甚至软件计时就够了。我见过一个案例,攻击者用Python的time模块就测出了纳秒级的时序差异——虽然粗糙,但配合统计方法照样能提取信息。

时序攻击的防御思路其实很直接:让所有路径的执行时间恒定。但说起来容易做起来难,尤其是PUF的纠错模块,不同错误模式的处理逻辑天然就有时间差异。

3.4 故障注入攻击原理

故障注入的思路不一样——它不被动分析泄露,而是主动制造错误。通过让芯片在异常条件下工作,迫使它输出错误结果,从错误中反推正确数据。

常见手段有:

  • 时钟毛刺——在正常时钟里插入一个极窄脉冲,让某些寄存器采样出错。
  • 电压毛刺——瞬间拉低或拉高供电电压,导致逻辑门翻转失败。
  • 激光注入——用激光照射芯片特定区域,改变晶体管状态。
  • 电磁脉冲——用强电磁场干扰芯片内部信号。

故障注入对PUF的威胁在于:PUF的响应是模拟量数字化得来的。如果你在数字化那一刻注入故障,让某个比特从1变成0,攻击者就能通过对比正确响应和错误响应,推断出PUF的内部状态。

关键认知:故障注入不是让芯片完全崩溃,而是制造“可控的错误”。攻击者需要的是部分错误,不是全部错误。我曾经用激光注入只翻转了PUF响应中的3个比特,就成功降低了密钥熵值,让暴力搜索变得可行。

四种攻击方式各有侧重,但实际攻击中往往是组合使用。比如先用电磁定位找到PUF模块位置,再用故障注入制造错误,最后用功耗分析提取信息。作为PUF设计者,你得把这四种攻击都考虑进去,缺一个都不行。