4、安全芯片攻击面分析:侧信道攻击、故障注入与物理攻击

安全芯片(Secure Element,SE)作为密钥存储、加解密运算和可信根的核心载体,其安全性不仅取决于算法强度,更取决于物理实现中泄露的信息和对外部扰动的响应。攻击者通常不会直接破解AES-256或RSA-4096的数学难题,而是通过观察芯片运行时的功耗、电磁辐射、运算时间,或主动注入故障、实施物理探测与逆向工程,绕过安全机制直接提取密钥或固件。本章系统梳理安全芯片的六大攻击面:侧信道攻击(SPA/DPA/EMA)、故障注入(电压毛刺/激光)、物理探测、逆向工程及软件攻击,深入剖析每种攻击的原理、实施路径与典型防护对策,帮助安全评估人员建立完整的攻击面模型。

安全芯片攻击面全景图 安全芯片 Secure Element 密钥存储 / 加解密 / 可信根 侧信道攻击 SPA / DPA / EMA 功耗·电磁·时间 故障注入攻击 电压毛刺 / 激光 时钟毛刺 / 电磁脉冲 物理探测 FIB / 探针台 / 微探针 总线监听 / 存储单元读取 逆向工程 芯片开盖 / 去层 版图分析 / 网表提取 软件攻击 缓冲区溢出 / 固件提取 API滥用 / 调试接口 通信接口攻击 I2C/SPI/UART 嗅探 中间人 / 重放攻击 防护对策:掩码技术 · 冗余校验 · 主动屏蔽层 · 传感器检测 · 安全启动 · 代码混淆

上图展示了安全芯片面临的六大攻击面及其相互关系。侧信道攻击和故障注入属于非侵入式攻击,物理探测和逆向工程属于半侵入/侵入式攻击,软件攻击则利用固件漏洞。实际攻击中,攻击者常组合多种手段,例如先通过逆向工程定位关键电路,再结合故障注入绕过检查,最后用侧信道分析提取密钥。以下逐一剖析各类攻击的原理与评估要点。

4.1 侧信道攻击:功耗分析(SPA/DPA)与电磁分析(EMA)

4.1.1 核心原理

CMOS电路在翻转时产生的动态功耗与处理的数据相关。AES等密码算法在S盒查找、密钥异或等操作时,中间值的汉明重量(Hamming Weight)会直接影响瞬时功耗。简单功耗分析(SPA)通过观察单条或少数几条功耗轨迹的形态特征,直接识别密钥相关操作模式;差分功耗分析(DPA)则采集大量功耗轨迹,通过统计假设检验(如相关系数、均值差)恢复密钥。电磁分析(EMA)原理类似,但采集的是芯片表面电磁辐射,可聚焦到特定模块,空间分辨率更高。

攻击类型采集信号统计方法所需样本量空间定位能力
SPA单条功耗轨迹目视/模式匹配1~10条无
DPA多条功耗轨迹差分均值/相关系数1,000~100,000条无
EMA电磁辐射与DPA类似1,000~50,000条可达50μm级
模板攻击功耗/电磁多元高斯匹配100~1,000条取决于模板

4.1.2 判断方法与操作流程

  1. 功耗轨迹采集:在芯片VDD引脚串联采样电阻(如10Ω),用示波器(≥1GS/s)同步采集功耗和加密触发信号。
  2. 对齐预处理:对轨迹进行重采样、滤波或基于相关性的对齐,消除时钟抖动影响。
  3. 选择攻击点:确定密码算法中与密钥相关的中间值,如AES首轮S盒输出。
  4. 假设密钥与计算:对每个候选密钥字节,计算中间值的汉明重量或汉明距离。
  5. 统计检验:使用皮尔逊相关系数或差分均值,找出与实测功耗相关性最高的候选密钥。
实战要点:在评估CC EAL5+以上芯片时,需验证其是否采用掩码(Masking)、隐藏(Hiding)或阈值不变量(Threshold Implementation)等抗侧信道对策。测试时应在不同电压(1.62V~1.98V)、温度(-40℃~85℃)条件下重复采集,以覆盖工艺偏差影响。

4.1.3 案例拆解:针对AES-128的DPA攻击

背景与约束:某智能卡芯片采用未掩码的AES-128硬件加速器,评估团队需验证其抗DPA能力。示波器采样率2GS/s,共采集50,000条加密轨迹。

分析过程:选择首轮S盒输出作为攻击点,对每个密钥字节(0~255)计算中间值汉明重量,与功耗轨迹做相关系数。正确密钥字节的相关系数峰值达0.31,而错误密钥的相关系数接近0。仅需约8,000条轨迹即可恢复全部16字节密钥。

结果与复盘:该芯片未通过CC EAL5+的侧信道评估。厂商随后在硬件中引入随机掩码,使相关系数峰值降至0.05以下,所需轨迹数增至百万级。评估经验表明,DPA测试必须覆盖算法全轮次,且需结合多字节联合分析以对抗部分掩码方案。

常见误区:仅测试芯片在标称电压下的抗攻击能力,忽略电压/温度极端条件下的泄露增强效应;或只做SPA测试就断言“抗侧信道”,未进行DPA/EMA高阶分析。

4.2 故障注入攻击:电压毛刺与激光注入

4.2.1 核心原理

故障注入通过在芯片运行的关键时刻引入瞬态电气扰动,使内部逻辑产生错误状态,从而绕过安全校验(如PIN验证、安全启动检查)或泄露密钥。电压毛刺攻击在芯片VDD引脚叠加短时(纳秒级)过压/欠压脉冲,导致触发器采样错误;激光注入则利用聚焦激光束照射晶体管沟道,产生光生载流子,诱导逻辑翻转。时钟毛刺通过瞬间改变时钟频率使状态机跳转。

注入方式精度成本可重复性典型效果
电压毛刺μs级时间精度低(数百元)中等跳过指令/错误S盒输出
时钟毛刺ns级时间精度低高PC跳变/循环计数错误
激光注入亚μm空间精度高(数十万元)高精确翻转特定寄存器
电磁脉冲mm级空间精度中低大面积逻辑扰动

4.2.2 判断方法与操作流程

  1. 定位敏感窗口:通过扫描加密/认证操作的时序,确定故障注入的最佳时间点(如AES第9轮)。
  2. 参数扫描:调整毛刺电压幅度(±20%~±50%)、宽度(1~50ns)、注入位置(上升沿/下降沿)。
  3. 效果验证:观察输出密文是否产生可预测的错误(如单字节错误),或安全状态是否被绕过。
  4. 多次重复:每种参数组合至少重复1,000次,统计故障成功率。
评估指标:故障注入攻击的成功率、所需尝试次数、可重复性、是否可远程实施(如通过电源线远程注入)。CC标准要求EAL5+芯片具备故障检测计数器(Fault Counter),连续多次故障后应触发永久锁定。

4.2.3 案例拆解:激光注入绕过安全启动

背景与约束:某支付终端安全芯片采用Cortex-M23内核,安全启动流程包含固件签名验证。攻击者使用激光平台(波长1064nm,光斑直径1μm)定位到Flash控制器附近的地址总线。

操作步骤:首先通过静态分析确定签名验证分支指令的Flash地址;然后在该指令执行窗口(约200ns)内注入激光脉冲,使比较结果寄存器翻转。经过约500次尝试,成功跳过签名检查,加载未授权固件。

结果与防护:芯片厂商在后续版本中增加双核锁步比较和CRC实时校验,使单次故障注入无法同时绕过两处检查。评估建议:安全启动流程应包含冗余校验、随机延迟和故障计数器三重防护。

常见误区:认为只有昂贵激光平台才能实施故障注入,忽略低成本的电压毛刺攻击;或只测试单一故障点,未考虑多故障协同注入(如先毛刺跳过检查,再激光翻转密钥寄存器)。

4.3 物理探测与逆向工程

4.3.1 核心原理

物理探测通过聚焦离子束(FIB)切割芯片钝化层,暴露内部金属走线,使用微探针(尖端<100nm)直接读取总线数据或存储单元状态。逆向工程则通过逐层去层(化学腐蚀+机械研磨)、扫描电子显微镜(SEM)拍摄版图,提取网表并还原设计。这两类攻击需要专业设备,但一旦成功,可直接获取密钥或固件。

技术手段设备要求成功率时间成本主要风险
FIB切割+探针FIB/SEM/探针台中高1~4周芯片损坏
化学去层酸槽/抛光机高2~6周过腐蚀
电压对比成像SEM+电子束中1~2周分辨率限制
光学探测红外显微镜低数天仅适用于正面

4.3.2 判断方法与防护评估

  • 主动屏蔽层检测:检查芯片是否包含顶层金属网格(Active Shield),该网格传输随机码,一旦被切割或短路即触发自毁。
  • 传感器验证:评估光传感器、温度传感器、电压传感器对探测行为的响应灵敏度。
  • 存储单元加密:确认非易失性存储器(Flash/EEPROM)中的数据是否以密文存储,密钥是否存储在OTP或SRAM中。
  • 版图混淆度:评估标准单元布局是否经过混淆(如随机化布线、虚拟单元填充),增加逆向难度。
评估方法:在CC评估中,通常采用“攻击潜力”评分(Attack Potential)衡量物理攻击难度。例如,FIB设备成本>50万欧元、需要博士级操作技能、成功率<10%时,攻击潜力评级为“高”,可满足EAL5+要求。

4.3.3 案例拆解:FIB探针提取AES密钥

背景与约束:某物联网安全芯片将AES密钥存储在专用SRAM中,评估团队需验证其物理防护有效性。芯片采用90nm工艺,顶层有3层金属。

实施过程:首先用FIB在SRAM区域上方铣削出10μm×10μm窗口,暴露数据总线;然后使用纳米探针接触8根并行数据线,在芯片执行AES加密时同步采集总线电平。通过分析总线上的明文/密文异或值,直接恢复128位密钥。

结果与复盘:该芯片未部署主动屏蔽层,且SRAM数据未加密存储,攻击总耗时约3周。防护建议:在SRAM区域增加主动屏蔽网格,并将密钥分割存储在不同物理区域,配合总线加扰(Bus Scrambling)使探针采集的数据无法直接使用。

常见误区:认为芯片封装(如BGA)能阻止物理攻击,实际上FIB可从背面或侧面切入;或忽视芯片老化测试后的物理结构变化,导致防护层失效。

4.4 软件攻击:缓冲区溢出与固件提取

4.4.1 核心原理

安全芯片内部运行的固件(通常为C/汇编编写)可能存在内存破坏漏洞。缓冲区溢出通过向栈或堆写入超长数据,覆盖返回地址或函数指针,劫持控制流执行攻击者代码。固件提取则利用调试接口(JTAG/SWD)、未锁定的BootROM或过度授权的API读取Flash内容。与PC端攻击不同,安全芯片资源受限,攻击者需精心构造payload以适配小内存(通常<64KB)。

攻击向量前置条件影响范围典型防护
栈溢出存在不安全的memcpy/strcpy任意代码执行栈金丝雀/MPU
堆溢出动态内存管理缺陷数据篡改堆完整性校验
JTAG/SWD调试接口未锁定全芯片控制熔丝/OTP锁定
BootROM漏洞ROM代码缺陷绕过安全启动ROM补丁/版本检查
API滥用过度授权的命令接口密钥泄露权限分离/白名单

4.4.2 判断方法与操作流程

  1. 固件获取:通过合法渠道(厂商SDK)或逆向BootROM获取固件镜像。
  2. 静态分析:使用IDA Pro/Ghidra识别危险函数(strcpy、sprintf)、未检查的数组索引、不安全的类型转换。
  3. 动态模糊测试:通过通信接口(I2C/SPI/UART)发送畸形数据包,监控芯片是否崩溃或产生异常输出。
  4. 漏洞利用:构造ROP链或直接注入shellcode,尝试读取密钥文件或禁用安全校验。
评估重点:检查芯片是否启用MPU(内存保护单元)划分特权/用户模式,是否启用W^X(写异或执行)策略,以及是否对固件进行加密存储和签名验证。CC EAL5+要求固件具备自我完整性校验和运行时异常检测。

4.4.3 案例拆解:UART缓冲区溢出提取固件

背景与约束:某车规级安全芯片通过UART提供诊断命令,固件版本V2.1存在一个未检查长度的命令参数。攻击者通过逆向BootROM发现该漏洞,但芯片启用了MPU且Flash只读。

利用过程:攻击者发送超长命令(512字节)覆盖返回地址,跳转到RAM中的shellcode。shellcode首先调用芯片自有的Flash读取API(该API未校验调用者权限),将固件分块通过UART输出。整个过程约需发送200次请求,每次可提取256字节。

结果与防护:成功提取完整128KB固件,进一步分析发现其中硬编码了测试密钥。厂商修复方案:在UART驱动中增加长度校验,并将Flash读取API的权限提升至安全模式。评估建议:所有外部输入必须经过严格的边界检查,且关键API应实施调用者身份验证。

常见误区:只关注外部接口的输入校验,忽略芯片内部模块间通信(如DMA、硬件加速器)的信任边界;或认为固件加密存储即可防止提取,忽略侧信道可获取解密密钥。

4.5 攻击面综合评估与防护策略

实际安全评估中,攻击者会组合多种攻击手段。例如,先通过软件漏洞获取固件,逆向分析定位密钥存储位置,再用激光注入绕过访问控制,最后用DPA提取残余密钥。因此,评估人员应建立攻击树(Attack Tree),识别所有可能的攻击路径,并计算每条路径的攻击潜力值。

攻击路径所需设备成本所需技能时间成本攻击潜力对应防护
纯软件攻击<1万元中1~4周中安全编码/MPU/加密固件
电压毛刺+DPA5~20万元高2~8周中高掩码/故障计数器
激光注入+FIB>100万元极高1~6月高主动屏蔽/传感器/总线加扰
全逆向工程>500万元极高3~12月极高版图混淆/物理不可克隆函数
评估建议:在CC EAL5+认证中,应至少覆盖以下测试项:SPA/DPA/EMA(≥10万条轨迹)、电压/时钟毛刺(≥10万次注入)、激光注入(≥1万次)、FIB探测(≥3个样本)、软件模糊测试(≥100万次输入)。所有测试结果需记录攻击参数、成功率和所需资源,作为攻击潜力评分的依据。

安全芯片的攻击面分析是CC EAL认证的核心环节。评估人员需深入理解每种攻击的物理原理和统计特性,结合芯片的具体实现(工艺节点、防护电路、固件架构)设计测试方案。值得注意的是,攻击技术仍在快速演进——如基于机器学习的侧信道分析、利用芯片老化效应的故障注入、以及针对先进封装(2.5D/3D)的背面攻击。因此,安全评估不应是一次性活动,而应在芯片全生命周期内持续进行威胁建模和渗透测试,确保防护措施始终有效。