2、硬件安全基础:威胁模型、攻击面分析、常见硬件攻击类型及防护原则
硬件安全是SoC(片上系统)与嵌入式系统安全的基石。与纯软件安全不同,硬件攻击者通常拥有物理访问权限,能够直接观察、探测甚至篡改芯片的电气行为、时序特征与物理结构。理解威胁模型与攻击面,是进行安全SoC架构设计的第一步。本章将系统梳理硬件安全的威胁建模方法、攻击面分类、典型攻击手段(侧信道、故障注入、逆向工程等)以及对应的防护原则,为后续安全岛(Secure Island)设计奠定理论基础。
2.1 威胁模型:从资产识别到攻击路径
核心原理:威胁模型(Threat Model)是安全设计的起点,它回答三个关键问题:要保护什么(资产)、谁在攻击(攻击者)、如何攻击(攻击路径)。在硬件安全领域,资产不仅仅是密钥和数据,还包括芯片的信任根、安全启动流程、调试接口控制权、固件完整性以及物理不可克隆功能(PUF)等。攻击者的能力假设决定了防护强度——例如,能够进行激光故障注入的攻击者与仅能通过软件发起攻击的攻击者,对SoC设计的要求完全不同。
操作流程:在SoC架构设计阶段,威胁建模通常遵循以下步骤:
- 资产清单(Asset Inventory):列出所有需要保护的数字资产,包括密钥(根密钥、会话密钥)、安全配置位(OTP)、固件镜像、用户数据、调试凭证等。
- 攻击者画像(Attacker Profiling):定义攻击者的物理访问级别(无接触、近距离接触、完全物理控制)、设备预算(从几百元到百万级实验室设备)、时间投入(从小时到数月)。
- 攻击路径枚举(Attack Path Enumeration):结合攻击面分析,逐一列出可能的攻击路径,例如“通过JTAG读取OTP密钥”或“通过功耗分析恢复AES密钥”。
- 风险评估与优先级排序:使用DREAD或CVSS等模型评估每条路径的风险值,确定必须阻断的高危路径。
| 资产类型 | 典型攻击者目标 | 攻击难度 | 影响等级 |
|---|---|---|---|
| 根密钥(Root Key) | 提取后伪造固件签名 | 极高(需物理攻击) | 致命 |
| 安全启动配置 | 绕过签名校验加载恶意固件 | 中高 | 高 |
| 调试接口(JTAG/SWD) | 获取CPU控制权、读取内存 | 低(若未锁定) | 高 |
| 会话密钥(Session Key) | 解密通信数据 | 中(需侧信道) | 中 |
| PUF响应 | 克隆芯片身份 | 极高 | 高 |
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)或改变时钟频率来触发故障注入攻击。
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和启动流程,确保安全岛固件的完整性和真实性。
2.5 常见误区与总结复盘
常见误区:
- 误区一:认为安全启动等于安全。安全启动只保证固件的完整性,但无法防御侧信道攻击或故障注入。安全启动只是安全体系的一部分。
- 误区二:忽略物理攻击的可行性。许多设计者认为“攻击者不会拆芯片”,但在高价值目标(如金融终端、汽车ECU)中,物理攻击是常态。
- 误区三:安全功能过度集中导致单点故障。如果所有安全逻辑都依赖一个模块,该模块一旦被攻破,整个系统将失去防护。应设计分层、分布式的安全机制。
- 误区四:忽视供应链安全。芯片在制造、封装、测试过程中可能被植入硬件木马。应在设计阶段考虑可信制造流程和交付后的完整性验证。
总结复盘:硬件安全设计是一个系统工程,威胁模型定义了“防谁”,攻击面分析明确了“防哪里”,攻击类型研究揭示了“怎么防”,而防护原则则指导了“如何设计”。安全SoC架构师必须建立“攻击者视角”,在架构设计初期就将安全岛、总线隔离、物理防护等机制融入其中,而非事后打补丁。本章的知识框架将贯穿后续所有章节,尤其是安全岛的具体实现、密钥管理方案和抗侧信道设计。