3、侧信道泄露机理:物理泄露来源

侧信道攻击之所以能够奏效,根本原因在于密码设备在运行过程中,其物理行为并非“理想化”的数字黑盒。CMOS(互补金属氧化物半导体)电路在完成逻辑运算的同时,不可避免地会通过功耗、电磁辐射、时序偏差等物理信道,将内部正在处理的数据值(尤其是与密钥相关的中间值)的统计特征“泄露”到外部环境。理解这些泄露的物理根源,是实施有效采集、建立泄露模型以及设计防护对策(如掩码、隐藏)的基石。本章将深入剖析动态功耗、静态功耗、电磁辐射与时序变化这四大泄露来源,并重点解释CMOS开关行为与数据相关性之间的内在联系。

CMOS电路物理泄露与数据相关性模型 CMOS开关行为 VDD/GND充放电 输入翻转 → 输出跳变 动态功耗 P_dyn = α·C·V²·f 翻转活动因子α 数据相关充放电电流 静态功耗 P_stat = I_leak · VDD 亚阈值/栅极漏电流 工艺相关,数据弱相关 电磁辐射 di/dt 磁场耦合 近场探头测量 频率成分丰富 时序变化 路径延迟差异 数据依赖执行时间 条件分支/乘法器 数据相关性(Hamming Distance / Weight) HD = 翻转位数 → 动态功耗 ∝ HD HW = 1的个数 → 静态功耗/EM弱相关 示波器/探头采集

上图展示了CMOS电路物理泄露的核心逻辑:逻辑门的开关行为(充放电)是根源,它同时驱动了功耗、电磁和时序三大物理信道的信号变化,而这些变化最终都通过“数据相关性”与内部秘密状态联系起来。下面我们将逐一拆解这些泄露的微观机理。

3.1 动态功耗:最核心的数据依赖型泄露

核心原理:翻转活动与充放电电流

动态功耗是CMOS电路最主要的功耗来源,也是侧信道分析中最常利用的泄露载体。其物理本质是:当CMOS门的输出节点发生逻辑跳变(0→1或1→0)时,需要对输出节点的负载电容进行充电(从VDD抽取电流)或放电(向GND灌入电流)。动态功耗的经典表达式为:

P_dynamic = α · C_L · V_DD² · f_clk

其中,α(翻转活动因子)是数据相关的核心参数。它表示每个时钟周期内,节点发生翻转的概率。对于密码算法中的寄存器、数据总线或S盒输出,α直接取决于正在处理的数据值。例如,一个8位寄存器从值0x55(01010101)变为0xAA(10101010)时,8个位全部翻转(HD=8),其充放电电流远大于从0x55变为0x54(仅1位翻转,HD=1)的情况。这种电流差异在电源引脚或地引脚上产生可测量的电压降(通常为mV级),通过串联电阻(如1Ω)或电流探头即可捕获。

关键量化指标:在0.18μm CMOS工艺、1.8V供电、100MHz时钟下,一个标准单元(如2输入与非门)的单次翻转动态电流峰值约为50-200μA。一个AES-128加密轮操作包含数千次门翻转,总动态电流可达数十mA,且与中间值汉明距离(HD)呈高度线性相关(相关系数通常>0.9)。

判断方法与操作流程:如何有效采集动态功耗泄露

  1. 选择采样电阻:在芯片VDD引脚串联1-50Ω低感电阻(推荐10Ω),用差分探头跨接电阻两端测量电压降。
  2. 确定采样率:至少为系统时钟的5-10倍(如系统时钟100MHz,采样率≥500MSa/s),以捕获完整的充放电瞬态。
  3. 触发对齐:使用RISC-V芯片的GPIO引脚在加密操作开始时输出上升沿作为触发信号,确保每次采集的起点一致。
  4. 多次平均:对相同明文重复加密1000次并平均波形,以降低测量噪声(热噪声、环境噪声),提高信噪比(SNR)。

案例拆解:基于动态功耗的AES-128第一轮S盒泄露提取

背景与目标:对一款基于ARM Cortex-M4的物联网安全芯片实施CPA(相关功耗分析),目标是恢复AES-128首轮S盒输出的部分密钥字节。

关键参数:芯片供电1.2V,内核时钟80MHz,采样率1GSa/s,采样电阻10Ω,采集5000条功耗轨迹。

分析过程:

  1. 选择中间值:M = Sbox[plaintext[0] ⊕ key_guess],其中plaintext[0]为已知明文首字节。
  2. 计算汉明重量(HW)或汉明距离(HD):此处使用HW(M)作为功耗模型。
  3. 对每个密钥猜测(0-255),计算其与实测功耗轨迹的皮尔逊相关系数。
  4. 正确密钥猜测(如0x3A)应在某一采样点产生显著尖峰(相关系数>0.6),而错误猜测的相关系数接近0。

结果与复盘:成功恢复首字节密钥。经验表明,若SNR较低(<0.5),需增加采集轨迹数至20000条以上;若出现多个高相关峰,可能是由于功耗模型不准确(应改用HD模型)或存在时钟抖动(需重对齐)。

常见误区:误以为动态功耗只与“0→1”翻转有关。实际上,CMOS的互补特性使得“1→0”翻转同样从VDD抽取电流(通过PMOS管对负载电容充电),只是方向不同。在差分测量中,两种翻转都会产生可检测的电流脉冲,因此HD模型通常比HW模型更准确。

3.2 静态功耗与电磁辐射:补充泄露维度

静态功耗:工艺缩小的新挑战

静态功耗主要由晶体管的漏电流(亚阈值漏电、栅极漏电、栅极感应漏电)造成。在深亚微米工艺(如28nm及以下)中,静态功耗占比显著上升。虽然静态功耗与数据相关性较弱(主要取决于温度、电压和工艺角),但在特定场景下仍可泄露信息:例如,当数据总线保持特定值较长时间时,不同数据值对应的漏电流差异可达微安级。利用静态功耗进行攻击(如静态功耗分析SPA)通常需要高精度电流表(nA级分辨率)和长时间稳定测量,且对温度波动极其敏感。

电磁辐射:非接触式泄露的利器

任何电流变化都会产生变化的磁场,进而辐射电磁波。电磁泄露的强度与di/dt(电流变化率)成正比。CMOS门翻转时,瞬态电流在极短时间(ns级)内完成充放电,产生丰富的谐波成分(可达GHz频段)。电磁辐射泄露的优势在于:

  • 非侵入性:无需物理接触芯片引脚,可隔着封装或PCB进行测量。
  • 空间选择性:使用近场探头(如100μm-1mm直径的磁场探头)可定位芯片上特定模块(如AES协处理器)的泄露,排除无关电路噪声。
  • 频率滤波:通过频谱分析仪或带通滤波器,可提取特定频段的泄露信号,避开低频电源噪声。
实战建议:电磁测量时,探头应垂直于芯片表面并尽量贴近(<1mm)。使用XYZ定位台扫描芯片表面,找到辐射最强的热点区域(通常对应数据总线或S盒逻辑)。对于BGA封装芯片,可从PCB背面(靠近去耦电容处)测量。

时序变化:条件执行与数据依赖延迟

时序泄露源于CMOS电路路径延迟的数据依赖性。当一条指令的执行时间取决于操作数时,攻击者可通过测量加密总耗时或指令级时序来推断秘密信息。典型场景包括:

  • 软件实现:RSA模幂运算中,如果指数位为1则执行乘法,为0则跳过,导致总时间与密钥汉明重量线性相关。
  • 硬件实现:SM4的S盒若采用“查找表+条件判断”实现,不同输入值对应的查找路径长度不同,产生ns级延迟差异。
  • 缓存攻击:虽然属于微架构侧信道,但其本质也是时序变化——缓存命中与未命中的访问时间差异(数十个时钟周期)。
泄露类型 物理根源 数据相关性模型 典型测量方法 信噪比水平
动态功耗 负载电容充放电 HD(汉明距离) 串联电阻+差分探头 高(SNR>10)
静态功耗 亚阈值/栅极漏电 HW(弱相关) 高精度电流表(nA级) 极低(SNR<0.1)
电磁辐射 di/dt 磁场耦合 HD(频域加权) 近场探头+频谱分析 中(SNR 1-10)
时序变化 路径延迟差异 执行时间/分支 高精度计时器/逻辑分析仪 高(SNR>100)

3.3 常见误区与设计启示

误区一:认为只有“功耗”才是侧信道,忽略电磁和时序。实际上,电磁泄露在无线传感器节点(如ZigBee设备)中可被数米外的天线接收,攻击距离远超功耗测量。
误区二:将动态功耗泄露简单等同于“电流越大泄露越多”。关键在于数据相关的差分电流,而非功耗值。一个功耗恒定但翻转活动与数据无关的电路(如预充电逻辑)是安全的。
设计启示:针对动态功耗泄露,可采用“双轨预充电”逻辑(如WDDL)使翻转活动恒定;针对时序泄露,应确保所有路径延迟与数据无关(常数时间实现);针对电磁泄露,可使用金属屏蔽层或集成电压调节器(LDO)降低di/dt辐射。