2、硬件安全基础:威胁模型、攻击面分析、常见硬件攻击类型及防护原则

硬件安全是SoC(片上系统)与嵌入式系统安全的基石。与纯软件安全不同,硬件攻击者通常拥有物理访问权限,能够直接观察、探测甚至篡改芯片的电气行为、时序特征与物理结构。理解威胁模型与攻击面,是进行安全SoC架构设计的第一步。本章将系统梳理硬件安全的威胁建模方法、攻击面分类、典型攻击手段(侧信道、故障注入、逆向工程等)以及对应的防护原则,为后续安全岛(Secure Island)设计奠定理论基础。

硬件安全威胁模型与攻击面全景图 SoC 芯片 安全岛 / 加密引擎 / CPU 密钥存储 / 信任根 攻击者物理入口 侧信道攻击 功耗/电磁/时序 故障注入 时钟毛刺/电压/激光 逆向工程 去封装/探针/成像 接口攻击 JTAG/UART/SPI/I2C 防护层 物理防护 屏蔽层/主动网格 架构隔离 安全岛/MPU/总线过滤 检测与响应 传感器/计数器/报警 生命周期管理 OTP/调试端口控制 外部接口面 通信/调试/外设 内部总线面 AXI/APB/片上网络 物理侧信道面 功耗/EM/时序/温度 供应链面 伪造/替换/木马

2.1 威胁模型:从资产识别到攻击路径

核心原理:威胁模型(Threat Model)是安全设计的起点,它回答三个关键问题:要保护什么(资产)、谁在攻击(攻击者)、如何攻击(攻击路径)。在硬件安全领域,资产不仅仅是密钥和数据,还包括芯片的信任根、安全启动流程、调试接口控制权、固件完整性以及物理不可克隆功能(PUF)等。攻击者的能力假设决定了防护强度——例如,能够进行激光故障注入的攻击者与仅能通过软件发起攻击的攻击者,对SoC设计的要求完全不同。

操作流程:在SoC架构设计阶段,威胁建模通常遵循以下步骤:

  1. 资产清单(Asset Inventory):列出所有需要保护的数字资产,包括密钥(根密钥、会话密钥)、安全配置位(OTP)、固件镜像、用户数据、调试凭证等。
  2. 攻击者画像(Attacker Profiling):定义攻击者的物理访问级别(无接触、近距离接触、完全物理控制)、设备预算(从几百元到百万级实验室设备)、时间投入(从小时到数月)。
  3. 攻击路径枚举(Attack Path Enumeration):结合攻击面分析,逐一列出可能的攻击路径,例如“通过JTAG读取OTP密钥”或“通过功耗分析恢复AES密钥”。
  4. 风险评估与优先级排序:使用DREAD或CVSS等模型评估每条路径的风险值,确定必须阻断的高危路径。
资产类型 典型攻击者目标 攻击难度 影响等级
根密钥(Root Key) 提取后伪造固件签名 极高(需物理攻击) 致命
安全启动配置 绕过签名校验加载恶意固件 中高 高
调试接口(JTAG/SWD) 获取CPU控制权、读取内存 低(若未锁定) 高
会话密钥(Session Key) 解密通信数据 中(需侧信道) 中
PUF响应 克隆芯片身份 极高 高
经验提醒:威胁模型不是一次性的文档,而是活的设计工具。在SoC架构评审时,应针对每个安全特性(如安全岛、总线加密)重新审视威胁模型,确认新增的硬件模块没有引入新的攻击路径。

2.2 攻击面分析:硬件暴露的每一个入口

核心原理:攻击面(Attack Surface)是攻击者能够触及的所有硬件接口、调试端口、通信协议和物理特性的总和。SoC的攻击面可以划分为四个主要类别:外部接口面(芯片引脚、无线接口)、内部总线面(AXI/APB总线、片上网络)、物理侧信道面(功耗、电磁辐射、温度变化)以及供应链面(芯片伪造、恶意植入)。

关键攻击面详解:

  • 调试接口(JTAG/SWD):最危险的攻击面之一。若未正确锁定,攻击者可直接控制CPU、读取内存、修改寄存器。防护手段包括:OTP熔丝永久禁用、基于证书的认证调试、物理访问控制。
  • 启动ROM(Boot ROM):作为信任根的一部分,Boot ROM的代码必须不可篡改。攻击者可能尝试利用ROM代码中的漏洞(如缓冲区溢出)来跳过签名校验。
  • 外部存储接口(SPI Flash/QSPI):固件通常存储在外部Flash中,攻击者可以物理替换Flash芯片或通过总线监听读取固件内容。防护手段包括:加密存储、总线加扰、完整性校验。
  • 通信接口(UART/SPI/I2C/USB):这些接口可能暴露调试命令、敏感配置或未加密数据。攻击者可通过协议逆向或模糊测试发现漏洞。
  • 电源/时钟引脚:攻击者可通过向电源引脚注入毛刺(Glitch)或改变时钟频率来触发故障注入攻击。
风险提示:许多SoC设计者只关注外部接口,却忽略了内部总线攻击面。一旦攻击者通过某个外设(如DMA控制器)获得总线访问权限,就可能绕过CPU的安全隔离机制,直接读取安全岛内的密钥。因此,总线级攻击面必须在架构层面进行防护。

2.3 常见硬件攻击类型:原理与案例拆解

2.3.1 侧信道攻击(Side-Channel Attack)

核心原理:侧信道攻击利用密码运算过程中泄露的物理信息(功耗、电磁辐射、运算时间)来恢复密钥。以AES-128为例,芯片在执行S盒替换操作时,功耗与正在处理的中间数据值相关。攻击者采集大量功耗轨迹,通过统计分析方法(如差分功耗分析DPA、相关功耗分析CPA)恢复出每一轮的轮密钥。

案例拆解:某物联网安全芯片采用未加掩码的AES-128硬件引擎。攻击者使用示波器(采样率1GS/s)连接芯片VCC引脚上的10Ω采样电阻,采集10,000条加密功耗轨迹。通过CPA分析,攻击者在普通工作站上仅用2小时便恢复了完整的128位密钥。该攻击无需拆封芯片,成本低于5000元人民币。

防护原则:

  • 掩码(Masking):在算法层面将中间值与随机掩码异或,打破功耗与数据的相关性。
  • 隐藏(Hiding):通过恒定功耗逻辑(如双轨逻辑)或随机化时钟/操作顺序来抹平功耗差异。
  • 去相关(De-correlation):在硬件中引入随机噪声或使用功耗平衡电路。

2.3.2 故障注入攻击(Fault Injection Attack)

核心原理:故障注入通过在特定时间点向芯片引入瞬态故障(电压毛刺、时钟毛刺、电磁脉冲、激光照射),使芯片跳过安全检查、错误执行分支或产生错误的密码运算结果。例如,在安全启动过程中,攻击者可以在签名校验指令执行时注入一个时钟毛刺,使CPU跳过跳转指令,从而加载未签名的恶意固件。

案例拆解:某汽车ECU采用安全启动流程:Boot ROM校验Flash中的固件签名,校验通过后跳转到固件入口。攻击者使用电压毛刺注入设备(Glitch Generator)在芯片VDD引脚上注入一个宽度为5ns、幅度为-30% VDD的负毛刺,时序精确对准签名校验后的条件跳转指令。经过约200次尝试,攻击者成功使CPU跳过跳转指令,执行了未签名的固件。该攻击暴露了芯片缺乏故障检测机制的问题。

防护原则:

  • 电压/时钟监测器:实时监测电源电压和时钟频率,一旦检测到异常波动立即触发复位或报警。
  • 冗余计算:对关键安全判断(如签名校验结果)进行双份或三份冗余计算,结果不一致时进入安全状态。
  • 时序随机化:在安全关键代码路径中插入随机延迟,增加攻击者对时序对齐的难度。
  • 主动屏蔽层:在芯片顶层金属布设网状传感器,检测激光照射或探针接触。

2.3.3 逆向工程攻击(Reverse Engineering Attack)

核心原理:逆向工程攻击旨在通过物理手段提取芯片内部的电路结构、固件代码或密钥。常见手段包括:去封装(Decapsulation)(使用发烟硝酸去除芯片封装)、聚焦离子束(FIB)(切割或修改内部连线)、扫描电子显微镜(SEM)(逐层成像还原电路)、微探针台(Micro-probing)(直接接触内部信号线)。

案例拆解:某安全芯片声称密钥存储在OTP中且无法读取。攻击者使用FIB技术切断了OTP读取电路与CPU之间的数据总线,然后通过微探针直接读取OTP阵列的输出信号。由于OTP数据在读取时以明文形式出现在内部总线上,攻击者成功提取了全部256位根密钥。该攻击耗时约3周,设备成本约200万元人民币,属于高投入高回报的攻击方式。

防护原则:

  • 主动金属屏蔽层:在敏感电路上方布设蛇形走线网格,任何切割或钻孔都会破坏网格的连通性,触发报警并擦除密钥。
  • 密钥分散存储:将密钥拆分为多个部分存储在不同物理区域,并加入纠错码,即使部分被提取也无法恢复完整密钥。
  • PUF(物理不可克隆功能):利用芯片制造过程中的工艺偏差生成唯一且不可预测的密钥,攻击者无法通过逆向工程复制。
  • 顶层金属迷宫布线:增加FIB修改的难度,使攻击者难以定位目标信号线。

2.4 防护原则:纵深防御与安全岛设计

核心原理:硬件安全防护必须遵循纵深防御(Defense in Depth)原则,即多层防护、相互独立、层层设防。单一防护措施(如仅依赖OTP锁定)不足以抵御高级攻击者。安全SoC架构的核心思想是建立安全岛(Secure Island)——一个物理和逻辑上隔离的安全处理环境,包含独立的CPU、内存、加密引擎和密钥存储,与主应用处理器之间通过硬件防火墙进行通信。

防护原则清单:

防护层次 具体措施 对抗攻击类型
物理层 主动屏蔽层、电压/时钟监测器、温度传感器 故障注入、探针攻击
架构层 安全岛隔离、总线防火墙、MPU权限控制 恶意DMA、软件提权
算法层 掩码AES、恒定功耗逻辑、随机化操作 侧信道攻击
生命周期层 OTP熔丝、安全调试认证、密钥轮换 调试接口攻击、供应链攻击
检测响应层 安全事件计数器、入侵检测、自动擦除 多次尝试攻击、物理入侵

安全岛设计要点:安全岛并非简单的“安全CPU”,而是一个完整的可信执行环境。其设计需满足以下要求:

  • 物理隔离:安全岛拥有独立的电源域、时钟域和复位域,避免主处理器侧的故障传播。
  • 总线隔离:安全岛通过AXI防火墙或NIC(Network Interconnect)与主系统总线隔离,只允许经过授权的地址访问。
  • 密钥管理:根密钥仅存在于安全岛内部,主处理器只能通过安全岛提供的API(如加密服务)间接使用密钥,无法直接读取。
  • 安全启动链:安全岛拥有独立的Boot ROM和启动流程,确保安全岛固件的完整性和真实性。
实战复盘:在某车规级SoC项目中,设计团队最初将安全功能分散在多个模块中(加密引擎在模块A、密钥存储在模块B、安全启动在CPU0)。安全评审发现,攻击者可通过DMA绕过CPU直接访问模块B的密钥寄存器。随后团队重构架构,将所有安全功能收敛到一个独立的安全岛中,通过硬件防火墙统一管理访问权限。重构后,攻击面减少了约70%,安全审计时间缩短了50%。这一案例充分说明:安全功能集中化、隔离化是SoC安全设计的关键原则。

2.5 常见误区与总结复盘

常见误区:

  • 误区一:认为安全启动等于安全。安全启动只保证固件的完整性,但无法防御侧信道攻击或故障注入。安全启动只是安全体系的一部分。
  • 误区二:忽略物理攻击的可行性。许多设计者认为“攻击者不会拆芯片”,但在高价值目标(如金融终端、汽车ECU)中,物理攻击是常态。
  • 误区三:安全功能过度集中导致单点故障。如果所有安全逻辑都依赖一个模块,该模块一旦被攻破,整个系统将失去防护。应设计分层、分布式的安全机制。
  • 误区四:忽视供应链安全。芯片在制造、封装、测试过程中可能被植入硬件木马。应在设计阶段考虑可信制造流程和交付后的完整性验证。

总结复盘:硬件安全设计是一个系统工程,威胁模型定义了“防谁”,攻击面分析明确了“防哪里”,攻击类型研究揭示了“怎么防”,而防护原则则指导了“如何设计”。安全SoC架构师必须建立“攻击者视角”,在架构设计初期就将安全岛、总线隔离、物理防护等机制融入其中,而非事后打补丁。本章的知识框架将贯穿后续所有章节,尤其是安全岛的具体实现、密钥管理方案和抗侧信道设计。