4、安全芯片攻击面分析:侧信道攻击、故障注入与物理攻击
安全芯片(Secure Element,SE)作为密钥存储、加解密运算和可信根的核心载体,其安全性不仅取决于算法强度,更取决于物理实现中泄露的信息和对外部扰动的响应。攻击者通常不会直接破解AES-256或RSA-4096的数学难题,而是通过观察芯片运行时的功耗、电磁辐射、运算时间,或主动注入故障、实施物理探测与逆向工程,绕过安全机制直接提取密钥或固件。本章系统梳理安全芯片的六大攻击面:侧信道攻击(SPA/DPA/EMA)、故障注入(电压毛刺/激光)、物理探测、逆向工程及软件攻击,深入剖析每种攻击的原理、实施路径与典型防护对策,帮助安全评估人员建立完整的攻击面模型。
上图展示了安全芯片面临的六大攻击面及其相互关系。侧信道攻击和故障注入属于非侵入式攻击,物理探测和逆向工程属于半侵入/侵入式攻击,软件攻击则利用固件漏洞。实际攻击中,攻击者常组合多种手段,例如先通过逆向工程定位关键电路,再结合故障注入绕过检查,最后用侧信道分析提取密钥。以下逐一剖析各类攻击的原理与评估要点。
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 判断方法与操作流程
- 功耗轨迹采集:在芯片VDD引脚串联采样电阻(如10Ω),用示波器(≥1GS/s)同步采集功耗和加密触发信号。
- 对齐预处理:对轨迹进行重采样、滤波或基于相关性的对齐,消除时钟抖动影响。
- 选择攻击点:确定密码算法中与密钥相关的中间值,如AES首轮S盒输出。
- 假设密钥与计算:对每个候选密钥字节,计算中间值的汉明重量或汉明距离。
- 统计检验:使用皮尔逊相关系数或差分均值,找出与实测功耗相关性最高的候选密钥。
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测试必须覆盖算法全轮次,且需结合多字节联合分析以对抗部分掩码方案。
4.2 故障注入攻击:电压毛刺与激光注入
4.2.1 核心原理
故障注入通过在芯片运行的关键时刻引入瞬态电气扰动,使内部逻辑产生错误状态,从而绕过安全校验(如PIN验证、安全启动检查)或泄露密钥。电压毛刺攻击在芯片VDD引脚叠加短时(纳秒级)过压/欠压脉冲,导致触发器采样错误;激光注入则利用聚焦激光束照射晶体管沟道,产生光生载流子,诱导逻辑翻转。时钟毛刺通过瞬间改变时钟频率使状态机跳转。
| 注入方式 | 精度 | 成本 | 可重复性 | 典型效果 |
|---|---|---|---|---|
| 电压毛刺 | μs级时间精度 | 低(数百元) | 中等 | 跳过指令/错误S盒输出 |
| 时钟毛刺 | ns级时间精度 | 低 | 高 | PC跳变/循环计数错误 |
| 激光注入 | 亚μm空间精度 | 高(数十万元) | 高 | 精确翻转特定寄存器 |
| 电磁脉冲 | mm级空间精度 | 中 | 低 | 大面积逻辑扰动 |
4.2.2 判断方法与操作流程
- 定位敏感窗口:通过扫描加密/认证操作的时序,确定故障注入的最佳时间点(如AES第9轮)。
- 参数扫描:调整毛刺电压幅度(±20%~±50%)、宽度(1~50ns)、注入位置(上升沿/下降沿)。
- 效果验证:观察输出密文是否产生可预测的错误(如单字节错误),或安全状态是否被绕过。
- 多次重复:每种参数组合至少重复1,000次,统计故障成功率。
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中。
- 版图混淆度:评估标准单元布局是否经过混淆(如随机化布线、虚拟单元填充),增加逆向难度。
4.3.3 案例拆解:FIB探针提取AES密钥
背景与约束:某物联网安全芯片将AES密钥存储在专用SRAM中,评估团队需验证其物理防护有效性。芯片采用90nm工艺,顶层有3层金属。
实施过程:首先用FIB在SRAM区域上方铣削出10μm×10μm窗口,暴露数据总线;然后使用纳米探针接触8根并行数据线,在芯片执行AES加密时同步采集总线电平。通过分析总线上的明文/密文异或值,直接恢复128位密钥。
结果与复盘:该芯片未部署主动屏蔽层,且SRAM数据未加密存储,攻击总耗时约3周。防护建议:在SRAM区域增加主动屏蔽网格,并将密钥分割存储在不同物理区域,配合总线加扰(Bus Scrambling)使探针采集的数据无法直接使用。
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 判断方法与操作流程
- 固件获取:通过合法渠道(厂商SDK)或逆向BootROM获取固件镜像。
- 静态分析:使用IDA Pro/Ghidra识别危险函数(strcpy、sprintf)、未检查的数组索引、不安全的类型转换。
- 动态模糊测试:通过通信接口(I2C/SPI/UART)发送畸形数据包,监控芯片是否崩溃或产生异常输出。
- 漏洞利用:构造ROP链或直接注入shellcode,尝试读取密钥文件或禁用安全校验。
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应实施调用者身份验证。
4.5 攻击面综合评估与防护策略
实际安全评估中,攻击者会组合多种攻击手段。例如,先通过软件漏洞获取固件,逆向分析定位密钥存储位置,再用激光注入绕过访问控制,最后用DPA提取残余密钥。因此,评估人员应建立攻击树(Attack Tree),识别所有可能的攻击路径,并计算每条路径的攻击潜力值。
| 攻击路径 | 所需设备成本 | 所需技能 | 时间成本 | 攻击潜力 | 对应防护 |
|---|---|---|---|---|---|
| 纯软件攻击 | <1万元 | 中 | 1~4周 | 中 | 安全编码/MPU/加密固件 |
| 电压毛刺+DPA | 5~20万元 | 高 | 2~8周 | 中高 | 掩码/故障计数器 |
| 激光注入+FIB | >100万元 | 极高 | 1~6月 | 高 | 主动屏蔽/传感器/总线加扰 |
| 全逆向工程 | >500万元 | 极高 | 3~12月 | 极高 | 版图混淆/物理不可克隆函数 |
安全芯片的攻击面分析是CC EAL认证的核心环节。评估人员需深入理解每种攻击的物理原理和统计特性,结合芯片的具体实现(工艺节点、防护电路、固件架构)设计测试方案。值得注意的是,攻击技术仍在快速演进——如基于机器学习的侧信道分析、利用芯片老化效应的故障注入、以及针对先进封装(2.5D/3D)的背面攻击。因此,安全评估不应是一次性活动,而应在芯片全生命周期内持续进行威胁建模和渗透测试,确保防护措施始终有效。