4. 可信启动基本原理

车载 ECU 上电后,最先运行的代码决定了整台控制器是否可信。可信启动的核心思想是:把“信任”建立在一个不可篡改的起点上,再通过逐级度量与验证,把这份信任像链条一样传递到操作系统和应用。RH850 作为车载安全 MCU,其可信启动通常围绕硬件信任根、逐级度量、签名验证和启动状态机展开。

一、信任根:可信启动的起点

信任根(Root of Trust, RoT)是系统中第一个被无条件信任的组件,它必须满足三个条件:不可修改、可被验证、行为确定。在 RH850 上,信任根通常由以下几部分构成:

  • Boot ROM:芯片出厂固化的只读代码,负责上电初始化、基本自检和启动模式判断,是信任链的第一环。
  • 硬件安全模块(HSM/ICUM):提供密钥存储、加解密和签名验证能力,密钥不出安全边界。
  • OTP / 安全熔丝:保存启动配置、密钥哈希或安全策略,一旦烧写不可回退。

Boot ROM 本身不可改,但它需要验证下一级镜像。验证所需的公钥或公钥哈希通常固化在 OTP 中,这样即使外部 Flash 被替换,攻击者也无法伪造合法签名。

二、信任链:逐级传递的度量与验证

信任链(Chain of Trust)是把信任根的可信性逐级传递到后续镜像的过程。每一级在把控制权交给下一级之前,先对下一级做度量(Measure)和验证(Verify)。度量是计算镜像的密码学摘要,验证是用公钥检查签名是否匹配。只有验证通过,才允许跳转执行。

典型 RH850 可信启动的信任链如下:

Boot ROM
  └─ 度量并验证 → HSM 固件
        └─ 度量并验证 → 一级引导(Primary Bootloader)
              └─ 度量并验证 → 二级引导(Secondary Bootloader)
                    └─ 度量并验证 → 应用固件 / AUTOSAR OS
                          └─ 度量并验证 → 应用任务与标定数据

每一级验证失败时,系统应进入安全状态:停止启动、记录事件、进入恢复模式或触发安全降级。验证通过后,度量值可被记录到安全日志或扩展到 TPM/HSM 的寄存器中,供后续远程证明使用。

RH850 可信启动信任链与状态机 信任根 RoT Boot ROM + OTP + HSM 一级引导 Primary Bootloader 二级引导 Secondary Bootloader 应用固件 / OS AUTOSAR / RTOS 应用任务与标定 App / Calibration 度量+验证 度量+验证 度量+验证 度量+验证 启动状态机 上电复位 度量中 验证通过 验证失败 启动 签名匹配 签名不匹配 / 摘要错误 停机 / 恢复模式

三、度量与验证:密码学机制

度量与验证是可信启动的两个关键动作。度量解决“镜像有没有被改”,验证解决“这个镜像是否被授权”。在 RH850 上,常用组合是 SHA-256 摘要加 ECDSA P-256 签名验证。

动作 输入 输出 典型算法 失败后果
度量 镜像二进制 固定长度摘要 SHA-256 摘要不匹配,拒绝启动
验证 摘要 + 签名 + 公钥 通过 / 不通过 ECDSA P-256 签名无效,进入安全状态
扩展 当前摘要 + 历史值 新的度量寄存器值 SHA-256 扩展 日志不一致,证明失败

度量值通常写入 HSM 的单调计数器或安全寄存器,防止回滚攻击。验证公钥的哈希固化在 OTP 中,私钥保存在 HSM 内部,签名在离线环境中完成。

四、安全启动与可信启动的区别

这两个概念经常被混用,但侧重点不同。安全启动(Secure Boot)强调“阻止”:验证不通过就不允许运行,目标是保证系统只运行合法镜像。可信启动(Trusted Boot)强调“记录”:即使镜像被篡改,也要把度量值记录下来,供后续审计和远程证明使用。

  • 安全启动:验证失败即阻断,系统不可用,安全优先。
  • 可信启动:验证失败可继续运行,但度量日志会暴露异常,适合需要取证和远程证明的场景。
  • 实际工程:两者常结合使用,先做安全启动阻断明显攻击,再用可信启动记录完整启动链。
工程提示:在 RH850 项目中,建议把安全启动作为默认策略,可信启动的度量日志通过 HSM 安全存储,避免日志本身被篡改。

五、启动阶段划分与状态机

RH850 可信启动通常划分为四个阶段:上电复位与自检、Boot ROM 验证、引导加载验证、应用验证。每个阶段都有明确的状态和转移条件,形成启动状态机。

  1. POR 阶段:复位释放,时钟和 RAM 初始化,读取 OTP 启动配置。
  2. RoT 阶段:Boot ROM 计算自身摘要,验证 HSM 固件签名。
  3. Bootloader 阶段:一级引导验证二级引导,二级引导验证应用镜像。
  4. Application 阶段:OS 启动,验证应用任务和标定数据,进入正常运行。

状态机的关键转移条件包括:签名验证通过、摘要匹配、版本号不低于防回滚阈值、安全策略允许。任一条件不满足,状态机应转移到失败状态,执行停机、记录事件或进入恢复模式。

常见误区:只验证应用镜像而忽略 Bootloader,会导致攻击者替换引导程序后绕过全部验证。信任链必须从 Boot ROM 开始逐级覆盖,不能跳级。

六、案例与复盘

某车载网关项目在量产前发现:Bootloader 验证通过后直接跳转应用,但应用镜像的签名校验被放在 OS 启动之后。攻击者利用这个时间窗口注入恶意代码,导致安全启动形同虚设。复盘结论是:验证必须发生在跳转之前,且每一级都要独立验证下一级,不能依赖上一级“已经验证过”的假设。

修正方案是在二级引导中增加对应用镜像的完整度量与签名验证,验证通过后才允许跳转;同时把度量值写入 HSM 日志,支持后续远程证明。该方案在 RH850 上通过 HSM 硬件加速,启动时间增加约 80ms,满足整车唤醒时间要求。

核心结论:可信启动的本质是“不可篡改的起点 + 逐级度量验证 + 可审计的日志”。信任根决定下限,信任链决定覆盖范围,度量与验证决定强度,状态机决定异常时的行为。