3、侧信道泄露机理:物理泄露来源
侧信道攻击之所以能够奏效,根本原因在于密码设备在运行过程中,其物理行为并非“理想化”的数字黑盒。CMOS(互补金属氧化物半导体)电路在完成逻辑运算的同时,不可避免地会通过功耗、电磁辐射、时序偏差等物理信道,将内部正在处理的数据值(尤其是与密钥相关的中间值)的统计特征“泄露”到外部环境。理解这些泄露的物理根源,是实施有效采集、建立泄露模型以及设计防护对策(如掩码、隐藏)的基石。本章将深入剖析动态功耗、静态功耗、电磁辐射与时序变化这四大泄露来源,并重点解释CMOS开关行为与数据相关性之间的内在联系。
上图展示了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Ω)或电流探头即可捕获。
判断方法与操作流程:如何有效采集动态功耗泄露
- 选择采样电阻:在芯片VDD引脚串联1-50Ω低感电阻(推荐10Ω),用差分探头跨接电阻两端测量电压降。
- 确定采样率:至少为系统时钟的5-10倍(如系统时钟100MHz,采样率≥500MSa/s),以捕获完整的充放电瞬态。
- 触发对齐:使用RISC-V芯片的GPIO引脚在加密操作开始时输出上升沿作为触发信号,确保每次采集的起点一致。
- 多次平均:对相同明文重复加密1000次并平均波形,以降低测量噪声(热噪声、环境噪声),提高信噪比(SNR)。
案例拆解:基于动态功耗的AES-128第一轮S盒泄露提取
背景与目标:对一款基于ARM Cortex-M4的物联网安全芯片实施CPA(相关功耗分析),目标是恢复AES-128首轮S盒输出的部分密钥字节。
关键参数:芯片供电1.2V,内核时钟80MHz,采样率1GSa/s,采样电阻10Ω,采集5000条功耗轨迹。
分析过程:
- 选择中间值:
M = Sbox[plaintext[0] ⊕ key_guess],其中plaintext[0]为已知明文首字节。 - 计算汉明重量(HW)或汉明距离(HD):此处使用HW(M)作为功耗模型。
- 对每个密钥猜测(0-255),计算其与实测功耗轨迹的皮尔逊相关系数。
- 正确密钥猜测(如
0x3A)应在某一采样点产生显著尖峰(相关系数>0.6),而错误猜测的相关系数接近0。
结果与复盘:成功恢复首字节密钥。经验表明,若SNR较低(<0.5),需增加采集轨迹数至20000条以上;若出现多个高相关峰,可能是由于功耗模型不准确(应改用HD模型)或存在时钟抖动(需重对齐)。
3.2 静态功耗与电磁辐射:补充泄露维度
静态功耗:工艺缩小的新挑战
静态功耗主要由晶体管的漏电流(亚阈值漏电、栅极漏电、栅极感应漏电)造成。在深亚微米工艺(如28nm及以下)中,静态功耗占比显著上升。虽然静态功耗与数据相关性较弱(主要取决于温度、电压和工艺角),但在特定场景下仍可泄露信息:例如,当数据总线保持特定值较长时间时,不同数据值对应的漏电流差异可达微安级。利用静态功耗进行攻击(如静态功耗分析SPA)通常需要高精度电流表(nA级分辨率)和长时间稳定测量,且对温度波动极其敏感。
电磁辐射:非接触式泄露的利器
任何电流变化都会产生变化的磁场,进而辐射电磁波。电磁泄露的强度与di/dt(电流变化率)成正比。CMOS门翻转时,瞬态电流在极短时间(ns级)内完成充放电,产生丰富的谐波成分(可达GHz频段)。电磁辐射泄露的优势在于:
- 非侵入性:无需物理接触芯片引脚,可隔着封装或PCB进行测量。
- 空间选择性:使用近场探头(如100μm-1mm直径的磁场探头)可定位芯片上特定模块(如AES协处理器)的泄露,排除无关电路噪声。
- 频率滤波:通过频谱分析仪或带通滤波器,可提取特定频段的泄露信号,避开低频电源噪声。
时序变化:条件执行与数据依赖延迟
时序泄露源于CMOS电路路径延迟的数据依赖性。当一条指令的执行时间取决于操作数时,攻击者可通过测量加密总耗时或指令级时序来推断秘密信息。典型场景包括:
- 软件实现:RSA模幂运算中,如果指数位为1则执行乘法,为0则跳过,导致总时间与密钥汉明重量线性相关。
- 硬件实现:SM4的S盒若采用“查找表+条件判断”实现,不同输入值对应的查找路径长度不同,产生ns级延迟差异。
- 缓存攻击:虽然属于微架构侧信道,但其本质也是时序变化——缓存命中与未命中的访问时间差异(数十个时钟周期)。
| 泄露类型 | 物理根源 | 数据相关性模型 | 典型测量方法 | 信噪比水平 |
|---|---|---|---|---|
| 动态功耗 | 负载电容充放电 | HD(汉明距离) | 串联电阻+差分探头 | 高(SNR>10) |
| 静态功耗 | 亚阈值/栅极漏电 | HW(弱相关) | 高精度电流表(nA级) | 极低(SNR<0.1) |
| 电磁辐射 | di/dt 磁场耦合 | HD(频域加权) | 近场探头+频谱分析 | 中(SNR 1-10) |
| 时序变化 | 路径延迟差异 | 执行时间/分支 | 高精度计时器/逻辑分析仪 | 高(SNR>100) |