硬件安全基础:常见硬件攻击面、安全原语与失效模式概述
硬件安全是信息系统安全的底层基石。与软件漏洞不同,硬件攻击往往具有不可逆性、隐蔽性强且难以通过补丁修复的特点。本章聚焦于硬件攻击面的三大核心类别——侧信道攻击、故障注入与硬件木马,并深入解析信任根与安全启动这两大安全原语,最后系统梳理硬件失效模式及其对安全机制的影响。理解这些内容,是设计具备抗物理攻击能力的安全芯片、可信计算模块及嵌入式系统的基础前提。
2.1 侧信道攻击:物理泄漏的密码分析
核心原理
侧信道攻击(Side-Channel Attack, SCA)利用密码设备在运行过程中泄漏的物理信息来恢复密钥。这些物理信息包括功耗轨迹、电磁辐射、运算时间、缓存访问模式等。其根本原因在于,CMOS电路的动态功耗与翻转的比特位相关,不同数据操作会产生不同的功耗特征。例如,在AES加密中,S盒查找表的索引值直接反映在功耗曲线上,通过统计功耗与猜测密钥之间的相关性(如CPA攻击),即可在无需破解算法数学难度的前提下恢复密钥。
侧信道攻击的核心分类如下表所示:
| 攻击类型 | 物理载体 | 典型方法 | 防护对策 |
|---|---|---|---|
| 功耗分析 | 芯片VDD/GND引脚 | SPA / DPA / CPA | 掩码、隐藏、功耗平衡 |
| 电磁辐射 | 芯片表面电磁场 | EMA / CEMA | 屏蔽层、随机延时 |
| 时序分析 | 执行时间 | 计时攻击 | 常数时间算法 |
| 缓存攻击 | CPU Cache | Prime+Probe / Flush+Reload | 缓存分区、硬件隔离 |
判断方法与操作流程
在实际安全评估中,侧信道攻击的测试流程通常包括以下步骤:
- 信号采集:使用高精度示波器(如12-bit ADC,采样率≥1GS/s)同步采集功耗或电磁信号,同时记录加密操作的输入输出。
- 预处理:对采集到的轨迹进行对齐、滤波和降噪,消除时钟抖动和噪声干扰。
- 泄露分析:利用差分功耗分析(DPA)或相关功耗分析(CPA)计算假设功耗与实际功耗之间的相关性。
- 密钥恢复:当相关性峰值超过阈值(通常t检验的p值<0.001)时,即可确定正确的密钥字节。
常见误区与总结
一个常见误区是认为侧信道攻击只对智能卡有效。实际上,任何处理密钥的硬件设备——包括FPGA、SoC、甚至云端服务器中的硬件安全模块(HSM)——都可能存在侧信道泄漏。另一个误区是过度依赖算法本身的数学强度,而忽略了物理实现层面的防护。正确的设计思路是:在硬件架构层面引入掩码(Masking)、隐藏(Hiding)和混淆(Obfuscation)技术,并在流片前进行侧信道评估测试。
2.2 故障注入:破坏计算完整性的主动攻击
核心原理
故障注入(Fault Injection, FI)攻击通过人为引入瞬态或永久性故障,使目标设备产生错误计算输出,从而绕过安全机制或泄露密钥。常见注入手段包括:时钟毛刺(Clock Glitch)、电压毛刺(Voltage Glitch)、电磁脉冲(EMFI)、激光注入(Laser Injection)以及温度冲击。其攻击效果取决于故障的时序精度和空间精度。例如,在RSA-CRT签名过程中,注入单比特故障即可通过公钥验证恢复私钥。
故障注入的工程实施需要精确控制以下参数:
- 毛刺宽度:通常为时钟周期的10%~30%,过宽会导致设备复位,过窄则无法影响时序逻辑。
- 注入时间:需要与目标操作(如循环计数、分支判断)对齐,通常通过触发信号或功耗特征定位。
- 能量强度:对于激光注入,需要控制光斑直径(通常1~5μm)和脉冲能量(nJ级)。
案例拆解:绕过安全启动的故障注入
在某款物联网安全芯片的渗透测试中,我们尝试通过电压毛刺绕过其安全启动机制。该芯片的Boot ROM在验证固件签名后,会跳转到应用代码执行。初始现象是:直接修改固件会导致启动失败,无法进入调试模式。
分析过程:通过逻辑分析仪抓取启动时序,发现签名验证循环在约2.3ms处完成。我们使用FPGA控制的电压毛刺发生器,在验证完成后的第100μs窗口内注入一个宽度为5ns、幅度为1.2V的负向毛刺。经过约500次尝试,成功跳过了签名校验分支,进入了未经验证的应用代码。
修复方案:在硬件层面增加电压监控器(Voltage Supervisor),当检测到VDD跌落超过±10%时立即触发复位;同时在软件层面增加双重校验和随机延时,使攻击者难以精确对齐毛刺窗口。
常见误区
许多设计者认为故障注入需要昂贵的设备,实际上,使用低成本的Spartan-6 FPGA和简单的MOSFET开关即可实现纳秒级电压毛刺。另一个误区是只关注单点故障注入,而忽略了多故障注入(Multi-Fault Injection)的可能性——攻击者可以在不同时间点注入多个故障,逐步瓦解安全机制。
2.3 硬件木马:供应链中的潜伏威胁
核心原理与检测方法
硬件木马(Hardware Trojan)是在集成电路设计、制造或封装阶段被恶意植入的电路修改,其目的是在特定条件下触发恶意功能(如信息泄露、功能失效或权限提升)。木马通常由触发电路(Trigger)和有效载荷(Payload)两部分组成。触发条件可以是内部状态(如计数器达到特定值)、外部输入(如特定指令序列)或物理条件(如温度/电压阈值)。
硬件木马的检测是业界难题,目前主要依赖以下方法:
| 检测方法 | 原理 | 局限性 |
|---|---|---|
| 侧信道指纹分析 | 木马电路会增加额外功耗/延迟 | 微小木马难以与工艺偏差区分 |
| 逻辑测试 | 随机向量激励触发木马 | 触发条件极难覆盖 |
| 逆向工程 | 逐层去层并拍照比对 | 成本极高,仅适用于高价值芯片 |
| 安全设计(DFTS) | 内建自测与监控电路 | 需要额外面积和功耗预算 |
实战场景:供应链安全审查
在某金融终端设备的芯片选型过程中,我们要求供应商提供完整的IP核来源清单和制造记录。通过对比GDSII版图与原始设计网表,发现某第三方USB PHY IP中多了一个未被文档记录的有限状态机(FSM)。该FSM在USB复位序列的第7个周期后,会向内部寄存器写入一个固定值,从而禁用安全启动的签名校验。
处置过程:立即停止该批次芯片的使用,要求供应商更换IP核,并委托第三方实验室进行全面的侧信道和功能测试。最终确认该木马仅在特定工艺批次中存在,属于制造环节的恶意插入。
2.4 安全原语:信任根与安全启动
信任根(Root of Trust, RoT)
信任根是硬件安全体系中无条件可信的组件,通常由不可变ROM代码、物理不可克隆函数(PUF)和一次性可编程存储器(OTP)组成。信任根的核心职责是提供密钥存储、身份认证和度量启动的锚点。PUF利用芯片制造过程中的工艺偏差生成唯一且不可预测的密钥,即使攻击者获得了芯片封装,也无法复制其物理指纹。
信任根的设计需满足以下要求:
- 不可篡改性:信任根代码必须存储在只读存储器中,且不支持任何写入或更新操作。
- 隔离性:信任根应运行在独立的CPU核心或安全协处理器中,与主应用处理器物理隔离。
- 密钥保护:私钥永不离开信任根硬件,所有签名操作均在内部完成。
安全启动(Secure Boot)
安全启动是一种逐级验证的机制,确保系统从复位向量开始执行的每一级代码都经过签名验证。典型的启动链为:Boot ROM → Bootloader → OS Kernel → 应用固件。每一级在跳转前必须验证下一级镜像的签名和完整性。
安全启动的工程实现要点包括:
- 密钥管理:使用非对称签名(如RSA-2048或ECDSA-P256),公钥存储在OTP或eFuse中,私钥保存在HSM中。
- 防回滚:在OTP中维护版本号计数器,禁止加载低于当前版本的固件。
- 故障处理:任何一级验证失败,应立即进入安全恢复模式,而非继续执行。
2.5 失效模式概述及其对安全的影响
失效模式分类
硬件失效模式可分为物理失效、逻辑失效和安全失效三大类。物理失效包括电迁移(EM)、热载流子注入(HCI)、时间依赖介质击穿(TDDB)等,这些现象会导致信号延迟增加、漏电流增大或功能中断。逻辑失效则表现为状态机死锁、总线冲突或时序违规,通常由设计缺陷或极端工作条件引发。安全失效特指安全机制本身的失效,例如随机数发生器熵源退化、传感器校准漂移或安全状态机被旁路。
失效模式与安全机制的关联如下表所示:
| 失效模式 | 对安全的影响 | 检测手段 |
|---|---|---|
| 时钟偏移 | 故障注入窗口扩大 | 时钟监控器、冗余时钟 |
| 电压跌落 | 存储单元数据翻转 | 电压传感器、BIST |
| 温度漂移 | PUF密钥稳定性下降 | 温度传感器、纠错电路 |
| 老化效应 | 安全启动超时 | 时序裕量监控 |
失效安全设计原则
在硬件安全设计中,必须遵循"失效安全"(Fail-Safe)原则:当检测到任何异常或失效时,系统应进入最安全的默认状态,而非继续运行。例如,安全MCU在检测到时钟频率超出±5%范围时,应立即触发复位并禁止密钥操作。同时,安全机制本身也需要冗余设计——例如使用双核锁步(Lockstep)比较器来检测CPU计算错误,或使用CRC-32对关键配置寄存器进行周期性校验。
总结复盘
本章系统梳理了硬件安全的三大攻击面、两大安全原语和失效模式框架。核心要点可归纳为:攻击面分析是安全设计的前提,安全原语是防护的基石,失效模式管理是保障长期可靠性的关键。在实际项目中,建议采用"威胁建模→安全架构→原语集成→失效检测→安全响应"的闭环流程,并在每个阶段引入独立的验证环节。硬件安全没有一劳永逸的解决方案,必须结合具体应用场景、成本预算和威胁模型进行权衡设计。