3. 嵌入式安全基础
在嵌入式系统中,安全启动、安全存储、可信执行环境(TEE)、硬件安全模块(HSM)与密钥管理并不是五个彼此独立的功能点,而是一条从“信任建立”到“密钥使用”再到“密钥保护”的完整链条。理解它们之间的关系,是后续设计密钥生命周期管理方案的基础。
一、核心原理:五者构成一条信任链
嵌入式设备上电后,最先运行的是不可篡改的引导代码。它用固化在芯片内的公钥或哈希值验证下一级引导程序的签名,验证通过后才把控制权交出去。这个过程就是安全启动,它解决的是“我运行的代码是不是被允许的”。
安全启动建立的是代码信任,而代码运行过程中需要读取密钥、证书、配置等敏感数据,这些数据必须被保护,这就是安全存储要解决的问题。安全存储通常依赖芯片内的一次性可编程存储、受保护闪存区或加密文件系统,保证密钥不被明文读出。
当系统需要同时运行普通业务和敏感操作时,可信执行环境提供隔离的执行空间。普通操作系统运行在非安全世界,密钥运算、身份认证等敏感操作运行在安全世界,两者通过受控接口通信。TEE 解决的是“敏感代码和普通代码如何共存而不互相污染”。
硬件安全模块则进一步把密钥的生成、存储和运算封装在独立硬件中。密钥永远不以明文形式离开 HSM,外部只能调用加解密、签名等接口。HSM 解决的是“即使主处理器被攻破,密钥仍然安全”。
而密钥管理是贯穿以上四者的主线:密钥在哪里生成、如何注入、如何存储、何时使用、如何轮换、如何销毁,每一步都要依赖安全启动、安全存储、TEE 和 HSM 提供的能力。
二、方法流程:从信任根到密钥使用的典型路径
以一个带安全启动和 HSM 的嵌入式网关为例,典型流程如下:
- 芯片上电,BootROM 用固化公钥验证一级引导程序签名,失败则停止启动。
- 一级引导程序验证二级引导程序,二级引导程序验证操作系统内核。
- 内核启动后,安全存储驱动从受保护区域读取设备密钥密文。
- 密钥解密操作在 TEE 或 HSM 内部完成,明文密钥不进入普通内存。
- 业务进程通过 TEE 或 HSM 提供的接口请求签名、解密等操作。
- 密钥管理策略决定何时轮换、何时吊销、何时销毁。
# 典型安全启动校验日志(示意)
[BOOTROM] verify stage1... OK
[BL1] verify stage2... OK
[BL2] verify kernel... OK
[TEE] secure world init... OK
[HSM] key slot 0 loaded, policy=sign-only
[KEYMGR] key rotation check: next in 72h
三、案例/场景:智能门锁的密钥使用路径
智能门锁需要保存开锁密钥、设备证书和固件更新公钥。安全启动保证固件不被替换;安全存储把开锁密钥保存在受保护区域;TEE 负责在安全世界完成开锁鉴权;HSM 负责生成和保存设备私钥,并完成与云端的双向认证签名。密钥管理则规定:设备私钥不可导出,开锁密钥每 90 天轮换一次,固件更新公钥在出厂时注入且不可修改。
四、误区与复盘
| 常见误区 | 问题本质 | 正确做法 |
|---|---|---|
| 做了安全启动就等于密钥安全 | 安全启动只保证代码可信,不保护密钥读取 | 安全启动 + 安全存储 + 密钥使用策略一起设计 |
| 把密钥明文放在文件系统里加密 | 解密密钥本身仍可能被读出 | 使用 HSM 或 TEE 内部密钥槽,密钥不出安全边界 |
| TEE 里什么敏感操作都放 | 安全世界代码膨胀,攻击面增大 | 只把密钥运算、身份认证等最小必要操作放入 TEE |
| 密钥从不轮换 | 长期密钥一旦泄露影响不可控 | 按密钥用途设定轮换周期,并保留吊销能力 |
总结来看,安全启动是信任的起点,安全存储是密钥的静态保护层,TEE 是密钥运行时的隔离层,HSM 是密钥运算的硬件保护层,而密钥管理是贯穿始终的策略与流程。五者协同,才能支撑嵌入式设备从启动到运行、从密钥生成到销毁的完整安全生命周期。