1. 课程导入

在嵌入式设备、服务器 BMC、车载控制器、工业网关与消费级 IoT 产品中,固件是设备启动后运行的第一段可信代码。一旦固件被篡改、替换或回滚到存在漏洞的旧版本,攻击者就可能获得持久化控制权,甚至绕过操作系统层的所有安全机制。可信固件签名与完整性验证,正是为了解决“设备启动时如何确认固件来源可信、内容未被修改、版本未被降级”这一根本问题而建立的技术体系。

核心定义:可信固件签名是指固件发布方使用私钥对固件镜像或其摘要进行密码学签名,设备端使用预置公钥或可信根验证签名;完整性验证则通过哈希、度量、证书链与安全启动策略,确认固件在存储、传输和加载过程中未被篡改。二者共同构成从固件生产、分发、烧录到启动的信任链。

一、核心原理:从信任根到信任链

可信固件验证不是单一算法,而是一条逐级传递的信任链。设备上电后,最先执行的不可变代码通常称为 Boot ROM 或信任根(RoT, Root of Trust)。它使用固化在芯片内部或一次性可编程区域中的公钥哈希,验证第一级引导程序(BL1/FSBL)的签名;第一级引导程序再验证第二级引导程序;依此类推,直到操作系统内核与根文件系统。每一级都只信任上一级验证通过后的下一级镜像,从而把信任从不可篡改的硬件锚点扩展到整个固件栈。

在密码学层面,常见组合包括:SHA-256/SHA-384 计算镜像摘要,RSA-2048/3072 或 ECDSA P-256/P-384 进行签名与验签;对于资源受限设备,也可采用 Ed25519 或国密 SM2/SM3。签名对象通常不是整个镜像,而是镜像头、元数据与负载的规范化摘要,以便支持分段加载和增量校验。

可信固件签名与完整性验证信任链 信任根 RoT Boot ROM / OTP 一级引导 BL1 签名 + 哈希校验 二级引导 BL2 证书链验证 OS 内核 / 根文件系统 dm-verity / IMA 验证要素 ① 公钥/证书是否可信 ② 签名算法与曲线是否匹配 ③ 镜像摘要是否一致 ④ 版本号是否允许 ⑤ 安全策略是否满足 任一环节失败 → 启动中止、进入恢复模式或触发安全告警 生产阶段 私钥签名、HSM 保护 镜像打包、版本元数据 分发与烧录 安全传输、防回滚 OTP/eFuse 写入公钥哈希 启动验证 逐级验签、度量 日志与远程证明

二、方法流程:签名、分发、验证、度量

工程上,可信固件体系通常按以下流程落地:

  1. 密钥与证书体系设计:确定根密钥、签名密钥、设备密钥的层级关系,明确哪些密钥放入 HSM,哪些公钥哈希烧入 OTP/eFuse。
  2. 镜像构建与签名:构建系统生成固件镜像后,计算摘要并调用签名服务,将签名、证书链、版本号、安全版本计数器写入镜像头。
  3. 安全分发与烧录:通过加密通道分发镜像,烧录工具校验签名后再写入 Flash,并更新防回滚计数器。
  4. 启动验证:Boot ROM 与各级引导程序按信任链逐级验签,失败则停止启动或进入恢复模式。
  5. 运行时度量与证明:通过 TPM/TEE 进行度量启动,生成可信报告,支持远程证明与安全审计。
# 典型签名与验证命令示意(以通用工具链为例)
firmware-sign --key sign.key --cert chain.pem \
  --input firmware.bin --output firmware.signed.bin \
  --version 2.3.1 --security-counter 7

firmware-verify --root-hash otp_pubkey_hash.bin \
  --input firmware.signed.bin --policy anti-rollback
# 输出:Signature OK, Hash OK, Version OK, Counter OK

三、案例与场景:从智能门锁到服务器 BMC

以智能门锁为例,攻击者可能通过 UART 或 SPI 直接读取 Flash,替换固件以绕过开锁鉴权。若门锁芯片支持安全启动,Boot ROM 会先验证固件签名,篡改后的镜像因摘要不匹配而无法启动。再以服务器 BMC 为例,BMC 固件拥有带外管理权限,一旦被植入后门,攻击者可远程重启、重装系统甚至持久化控制。通过 BMC 的安全启动与固件签名,配合 TPM 度量启动,可以把 BMC 纳入数据中心整体可信计算基。

场景提示:在 OTA 升级场景中,除了验签,还必须校验版本号与安全计数器,防止攻击者把设备降级到已知漏洞版本。防回滚策略通常与 eFuse 或 TPM NV 存储配合使用。

四、常见误区与复盘

误区 问题本质 正确做法
只做哈希校验,不做签名 哈希可被攻击者同步替换 必须使用非对称签名,公钥锚定在不可篡改存储
公钥放在可写 Flash 中 攻击者可替换公钥后重新签名 公钥哈希烧入 OTP/eFuse,或由 Boot ROM 固化
忽略版本回滚 旧版本漏洞可被重新利用 引入安全版本计数器与防回滚策略
签名密钥无保护 私钥泄露导致全系列设备失陷 使用 HSM、密钥分片、最小权限与审计
只验证不度量 无法发现运行时篡改 结合 TPM/TEE 做度量启动与远程证明
复盘要点:可信固件不是“加一个签名工具”就结束,而是密钥生命周期、镜像格式、启动流程、升级策略、生产烧录与运维审计的系统工程。任何一环缺失,信任链都会断裂。

五、整体知识框架与工程实践路线

本课程后续将围绕五条主线展开:密码学基础与密钥管理、镜像格式与签名工具链、安全启动与信任链、运行时完整性与远程证明、生产部署与运维审计。学习目标包括:能设计固件签名方案,能实现镜像签名与验签流程,能配置安全启动策略,能排查启动验证失败问题,能制定防回滚与密钥轮换方案。

建议的实践路线是:先在开发板上跑通“签名—烧录—启动验证”最小闭环,再逐步加入证书链、防回滚、度量启动与远程证明。每完成一步,都用真实日志和失败案例验证信任链是否真正闭合。只有把密码学机制落到启动流程、存储介质和生产工具链中,可信固件才具备工程价值。