3. 可信启动基本概念

在车载计算平台中,启动过程是攻击面最集中、权限最高、最难事后补救的阶段。理解可信启动,必须先厘清五个高频概念:信任根(Root of Trust, RoT)、信任链(Chain of Trust, CoT)、度量启动(Measured Boot)、安全启动(Secure Boot)与可信启动(Trusted Boot)。它们不是同义词,而是同一安全目标下不同层次、不同职责的机制组合。

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

信任根是整个启动信任体系的起点,是"无需验证即可被信任"的最小硬件或固件单元。它通常由不可篡改的硬件实现,例如 SoC 内部的 Boot ROM、一次性可编程熔丝(OTP/eFuse)中固化的公钥哈希、以及独立安全岛(HSM/SE)中的只读引导代码。信任根的核心属性是:不可修改、可被验证、具备最小可信计算基(TCB)。

信任链是把信任根的可信性逐级传递下去的机制。上一级组件在把控制权交给下一级之前,先验证下一级组件的完整性(签名或哈希),验证通过才加载执行。这样信任就像接力棒一样,从 Boot ROM → 一级引导 → 二级引导 → 内核 → 关键应用逐级延伸。信任链的关键在于"验证者必须先于被验证者运行",且验证者自身已被上一级验证过。

信任根解决"从哪里开始信任",信任链解决"信任如何传递"。二者共同构成可信启动的骨架,而度量启动、安全启动、可信启动则是这条骨架上的不同策略与能力。

二、度量启动、安全启动与可信启动的区别

度量启动的核心动作是"记录":在每一级组件加载前,计算其哈希(如 SHA-256),并将结果按顺序扩展到 TPM/TPM2.0 的 PCR 寄存器中(PCR = Hash(PCR_old || 新度量值))。度量启动不阻止任何组件运行,它只负责留下不可否认的证据,供本地或远程证明(Remote Attestation)使用。它的价值在于"可审计、可证明"。

安全启动的核心动作是"拦截":用公钥验证每一级组件的数字签名,签名不合法或哈希不匹配就拒绝加载并停机或回滚。安全启动阻止未授权代码进入启动流程,是强制性的门禁。它的价值在于"防篡改、防植入"。

可信启动是二者的融合与工程化落地:既做签名验证(安全启动的拦截能力),又把度量结果记录到 TPM(度量启动的证明能力),并在此基础上支持策略决策、失败恢复与远程证明。可以说,可信启动 = 安全启动 + 度量启动 + 可信报告与恢复策略。

信任根 → 信任链 → 三类启动策略关系图 信任根 RoT Boot ROM / OTP 公钥哈希 / HSM 信任链 CoT:逐级验证 + 逐级传递 BootROM → BL1 → BL2 → Kernel → App 度量启动 Measured Boot 动作:计算哈希 → 扩展 PCR 特点:只记录,不拦截 价值:可审计、可远程证明 PCR[0..7] 记录启动各阶段 安全启动 Secure Boot 动作:验签 → 通过才加载 特点:强制拦截,失败停机 价值:防篡改、防植入 RSA/ECC 签名 + 公钥哈希 可信启动 Trusted Boot 动作:验签 + 度量 + 报告 特点:拦截与证明并重 价值:可信证明 + 失败恢复 策略决策 + 回滚 + 远程证明 可信启动 = 安全启动(拦截能力) + 度量启动(证明能力) + 策略与恢复 三者共享同一条信任链,区别在于"是否拦截"与"是否记录"

三、方法流程:一次可信启动的典型时序

以车载域控制器为例,一次完整的可信启动通常包含以下步骤:

  1. 上电复位:CPU 从 Boot ROM 固定地址取指,Boot ROM 校验自身完整性(部分芯片支持 ROM 自检)。
  2. 加载一级引导:Boot ROM 用 OTP 中固化的公钥哈希验证 BL1 签名,同时把 BL1 哈希扩展到 PCR0。
  3. 加载二级引导:BL1 验证 BL2 签名,扩展 PCR1;BL2 初始化 DDR、时钟等。
  4. 加载内核与根文件系统:BL2 验证 Kernel 与 dtb 签名,扩展 PCR2~PCR4。
  5. 加载关键应用:内核验证 dm-verity 根哈希,扩展 PCR5;关键服务做 IMA 度量。
  6. 本地策略判定:将 PCR 值与基线策略比对,决定是否进入正常模式、恢复模式或受限模式。
  7. 远程证明:向车云/TSP 提交 TPM Quote,云端校验 PCR 与签名,确认车辆启动状态可信。
# 典型度量与验签日志片段(示意)
[BL1] verify BL2 sig: OK  (RSA-3072, key_id=0x01)
[BL1] extend PCR1: 3f2a...c9d1
[BL2] verify kernel sig: OK
[BL2] extend PCR2: 8b7e...41aa
[KERNEL] dm-verity root hash match: OK
[KERNEL] IMA: app=telematics, hash=OK, PCR10 extended
[TPM] Quote PCR[0-7,10] signed by AK: OK

四、案例与场景:OTA 升级后的启动判定

某车型通过 OTA 升级了二级引导程序。升级包在写入 A/B 分区后,重启时 BL1 验证新 BL2 签名失败(升级包被中间人替换)。此时:

  • 安全启动会直接拒绝加载新 BL2,回退到旧分区或进入恢复模式,车辆无法进入正常业务。
  • 度量启动会把失败前的哈希记录到 PCR,但不会阻止加载,攻击者可能已获得执行机会。
  • 可信启动则先验签拦截,再把"验签失败"事件扩展到 PCR,并触发恢复策略:回滚到已知良好分区,同时向云端上报异常证明。

这个场景说明:只有度量没有拦截,等于"事后取证";只有拦截没有度量,等于"无法证明"。可信启动把两者结合,才形成闭环。

五、误区与复盘

常见误区一:把安全启动等同于可信启动。安全启动只解决"能不能加载",不解决"加载后能否向第三方证明"。没有度量与远程证明,云端无法判断车辆是否被篡改。
常见误区二:认为信任根一定在 CPU 内部。部分车载 SoC 把信任根放在外部安全芯片(SE)或 HSM 中,通过安全总线交互。关键是信任根必须不可篡改且先于其他组件运行。
复盘要点:设计可信启动方案时,先明确信任根位置与密钥存储方式,再定义信任链每一级的验证对象与度量对象,最后确定 PCR 分配、基线策略与恢复动作。三者缺一不可。
维度 度量启动 安全启动 可信启动
核心动作 计算哈希并扩展 PCR 验签,不通过则拒绝加载 验签 + 度量 + 策略决策
是否拦截 否 是 是
是否记录 是 通常否 是
主要价值 可审计、可远程证明 防篡改、防植入 可信证明 + 失败恢复
依赖组件 TPM/TPM2.0、哈希引擎 公钥基础设施、OTP 哈希 TPM + PKI + 恢复分区
典型失败后果 攻击可执行,但留痕 启动中断,业务不可用 回滚或受限模式,可上报

总结来看,信任根是起点,信任链是路径,度量启动是"记录仪",安全启动是"门禁",可信启动是"门禁 + 记录仪 + 应急策略"的完整体系。在车载可信启动工程中,只有把五者放在同一架构下协同设计,才能既挡住攻击,又能在出问题时说清楚、恢复得了。