1. 硬件安全概述:威胁模型、攻击面与设计目标
各位同学,咱们今天聊硬件安全。说实话,这个领域在十年前还是个「小众话题」,大多数工程师觉得安全是软件的事,硬件嘛——只要功能对、时序过、功耗低就行了。但我在项目中吃过亏之后,才真正意识到:硬件才是安全的根。你软件层做得再花哨,底层芯片被人动了手脚,一切归零。
这一章,我们先搭框架。把威胁模型、攻击面、安全目标这三个概念理清楚。后面每一章都会反复用到这些基础。
1.1 硬件安全威胁模型
什么叫威胁模型?说白了,就是谁、在什么位置、用什么手段、想破坏什么。做安全设计,第一步不是写代码,而是画威胁模型。我习惯用一张表把威胁方列清楚:
| 威胁方 | 物理接触 | 典型手段 | 攻击目标 |
|---|---|---|---|
| 芯片代工厂 | 完全接触晶圆 | 插入硬件木马、修改光罩 | 窃取密钥、破坏功能 |
| 板级攻击者 | 接触PCB | 探针、侧信道、故障注入 | 提取固件、绕过认证 |
| 远程软件攻击者 | 无物理接触 | 利用固件漏洞、JTAG后门 | 提权、持久化控制 |
| 内部人员 | 设计/测试阶段 | 植入后门、泄露文档 | 窃取IP、破坏产品 |
你可能会问:「代工厂不是合作伙伴吗?为什么要防他们?」嗯,这个问题我当年也问过。实际情况是——信任是分层的。你委托代工厂生产芯片,不代表你可以把根密钥裸片交给他们。我在一个IoT项目里就遇到过:某批次芯片的OTP区域被代工厂多写了一个测试向量,导致量产设备全部暴露调试接口。后来查出来是产线脚本没清干净,但损失已经造成了。
1.2 攻击面分析
攻击面,就是攻击者能碰到你的所有入口。硬件攻击面比软件多得多——你想想看,软件只有网络和本地接口,硬件还有电源、时钟、电磁辐射、温度……
我习惯把攻击面分成三类:
- 物理接口:JTAG/SWD、UART、I²C、SPI、USB、以太网PHY。这些是直接可接触的引脚。
- 侧信道泄露:功耗分析(SPA/DPA)、电磁辐射(EMA)、时序分析、缓存命中率。
- 故障注入:时钟毛刺、电压毛刺、激光照射、电磁脉冲、温度冲击。
举个例子。我在做一款金融支付终端时,攻击者只需要一根探针接触PCB上的SPI Flash引脚,就能把整个固件dump出来。为什么?因为设计时没考虑物理隔离,Flash和主控之间的走线直接暴露在板边。后来我们加了加密存储+物理屏蔽层,才堵上这个口子。
1.3 安全设计目标:CIA三元组
硬件安全的目标,绕不开三个词:机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)。简称CIA。你可能会觉得这是信息安全的老生常谈,但在硬件层面,每个目标的实现方式完全不同。
| 目标 | 硬件实现手段 | 常见攻击 |
|---|---|---|
| 机密性 | 硬件加密引擎、PUF、安全存储、总线加密 | 侧信道分析、探针读取、JTAG dump |
| 完整性 | 安全启动(Secure Boot)、HMAC、eFuse校验 | 固件篡改、回滚攻击、故障注入绕过校验 |
| 可用性 | 看门狗、电压监测、时钟监测、冗余设计 | 时钟毛刺导致死锁、电压跌落触发复位 |
这里我想特别强调一下可用性。很多硬件工程师觉得「可用性就是系统不宕机」,但在安全语境下,可用性还包括抗拒绝服务(DoS)。比如攻击者通过注入故障让安全芯片进入死循环,导致整个系统无法启动——这算不算安全事件?当然算。我在一个汽车ECU项目里就遇到过:攻击者通过CAN总线发送特定报文,触发安全芯片的异常中断处理,导致看门狗无法喂狗,系统反复重启。
1.4 知识结构总览
下面这张图,把本章的核心逻辑串起来了。你可以把它当作后续学习的导航图:
1.5 本章小结
这一章我们只做了一件事:建立硬件安全的全局视角。威胁模型告诉你「谁在对面」,攻击面告诉你「哪里能打」,CIA告诉你「要守什么」。这三者缺一不可。
我个人习惯,每次启动一个新项目,第一周就是画这三张图。画完之后,团队对「我们要防谁、防什么、怎么防」就有了共识。后面再谈具体技术,才不会跑偏。