4. 可信升级链概述

在安全OTA体系中,升级包从开发者构建到最终写入车端ECU,往往要跨越云端、传输网络、车机、网关、目标控制器等多个环节。任何一个环节被篡改、替换或降级,都可能导致车辆功能异常甚至安全事故。可信升级链(Trusted Upgrade Chain)正是为了解决“升级包从哪来、是否被改过、能否被信任”这一核心问题而提出的系统性安全机制。它不是一个单一算法,而是一条贯穿升级全生命周期的信任链条。

一、可信升级链的定义

可信升级链是指:以硬件信任根为起点,通过密码学手段将信任逐级传递到升级包、传输通道、车端验证模块和刷写执行模块,使升级过程中的每一个关键对象和操作都可验证、可追溯、不可抵赖,最终保证只有经过授权且未被篡改的软件才能被安装到目标ECU上。

通俗地说,可信升级链回答三个问题:

  • 身份可信:升级包确实来自合法发布者,而非攻击者伪造。
  • 完整性可信:升级包从发布到刷写全程未被篡改。
  • 执行可信:车端验证和刷写逻辑本身运行在可信环境中,不被绕过或劫持。
可信升级链的核心思想不是“某一点绝对安全”,而是“信任从不可篡改的根开始,逐级传递、逐级验证,任何一级断裂都会导致升级被拒绝”。

二、组成要素

一条完整的可信升级链通常由以下要素构成:

组成要素 作用 典型实现
信任根 RoT 提供不可篡改的信任起点 HSM、TPM、Secure Boot ROM
密钥体系 签名、验签、加密、会话保护 非对称密钥、对称密钥、证书链
升级包元数据 描述版本、目标ECU、依赖关系、哈希 Manifest、SBOM、版本清单
签名与证书 证明发布者身份和包完整性 CMS、X.509、代码签名证书
安全传输通道 防止传输过程中被窃听或替换 TLS、mTLS、安全会话
车端验证模块 验签、校验哈希、检查版本和策略 OTA Agent、Secure Bootloader
可信执行环境 保护验证和刷写逻辑不被篡改 TEE、HSM、Secure World
审计与日志 记录升级全过程,支持追溯和取证 安全日志、区块链存证

这些要素并非孤立存在,而是通过“信任传递”串联成链。缺少任何一环,整条链的可信性都会下降。

三、信任根:链条的起点

信任根(Root of Trust, RoT)是可信升级链的绝对起点。它必须满足两个条件:第一,自身不可被软件篡改;第二,其行为可被外部验证。常见信任根包括:

  • 硬件信任根:如HSM、TPM、SE安全单元,提供密钥存储、签名验签和真随机数。
  • 启动信任根:如Secure Boot ROM,在芯片上电时首先执行,验证Bootloader签名。
  • 证书信任根:如车厂根CA,用于签发和验证升级包证书链。

信任根一旦被攻破,整条链就失去意义。因此,工程上通常要求根密钥永不导出、根证书离线保存、根固件不可回滚。

四、信任传递与链式验证思想

信任传递是指:上一级可信实体对下一级实体进行验证,验证通过后,下一级实体获得信任,并继续验证再下一级。这个过程形成一条“信任链”。

在OTA场景中,典型的信任传递路径如下:

  1. 芯片上电,Secure Boot ROM验证Bootloader签名。
  2. Bootloader验证操作系统或OTA Agent镜像。
  3. OTA Agent启动后,建立与云端的mTLS安全通道。
  4. 云端下发升级包及其签名、证书链和Manifest。
  5. OTA Agent使用根CA公钥验证证书链,再用发布者公钥验证升级包签名。
  6. 验证通过后,OTA Agent将升级包交给目标ECU的Secure Bootloader。
  7. 目标ECU再次验签并校验哈希,确认无误后写入Flash。
  8. 刷写完成后,ECU重启并再次进行Secure Boot验证,确认新固件可信。

这一过程中,每一级都只信任“上一级验证过的对象”,而不是盲目信任输入。这就是链式验证思想:不信任任何未经校验的数据,信任必须逐级建立、逐级传递。

可信升级链:信任根 → 信任传递 → 链式验证 硬件信任根 HSM / TPM / ROM 根密钥不可导出 Secure Boot 验证Bootloader 建立启动信任 OTA Agent mTLS安全通道 验签与策略检查 目标ECU Secure Bootloader 二次验签与刷写 验证 验证 验证 链式验证关键对象 证书链 根CA→发布者 升级包签名 CMS / X.509 Manifest 版本/哈希/依赖 安全日志 审计与追溯 拒绝策略 验签失败即停 信任传递路径 1 上电启动 2 Boot验证 3 安全通道 4 验签校验 5 刷写执行 6 重启复验 7 审计记录

五、典型场景:一次完整的可信升级

假设车厂发布一个针对VCU的固件升级包,版本从1.2.0升级到1.3.0。可信升级链的工作过程如下:

1. 车厂构建服务器生成固件镜像 firmware_v1.3.0.bin
2. 计算镜像SHA-256哈希,写入Manifest
3. 使用发布者私钥对Manifest签名,生成signature.bin
4. 将镜像、Manifest、签名、证书链打包为OTA包
5. 云端通过mTLS通道将OTA包下发到车端OTA Agent
6. OTA Agent用根CA公钥验证证书链,确认发布者身份
7. 用发布者公钥验证Manifest签名,确认元数据完整
8. 按Manifest中的哈希校验firmware_v1.3.0.bin
9. 检查版本号是否高于当前版本,防止降级攻击
10. 将固件转发给VCU的Secure Bootloader
11. VCU再次验签、校验哈希,写入Flash
12. VCU重启,Secure Boot验证新固件签名
13. 验证通过,升级完成;失败则回滚到旧版本
14. 全过程写入安全日志,上传云端审计

在这个场景中,攻击者如果篡改固件镜像,哈希校验会失败;如果替换签名,证书链验证会失败;如果尝试降级到有漏洞的旧版本,版本检查会拒绝;如果试图绕过OTA Agent,Secure Boot会在启动时拦截。这就是链式验证的防御纵深。

六、常见误区与复盘

误区一:只做签名,不做证书链验证。如果车端只验证签名,而不验证证书是否由可信根CA签发,攻击者可以用自签名证书伪造升级包。正确做法是验证完整证书链,并检查证书有效期、吊销状态和用途。
误区二:信任根放在可写Flash中。如果根公钥或根证书可以被OTA更新,攻击者一旦获得写权限,就能替换信任根。根密钥和根证书应存储在OTP、HSM或只读区域。
误区三:忽略降级攻击。攻击者可能将高版本固件替换为存在已知漏洞的低版本。必须在Manifest中携带版本号,并在车端执行单调递增检查。
复盘要点:可信升级链的强度取决于最弱一环。设计时应逐项检查:信任根是否不可篡改?密钥是否安全存储?证书链是否完整验证?版本是否防降级?刷写后是否复验?日志是否可追溯?只有每一环都成立,整条链才可信。

总结来说,可信升级链以信任根为起点,以密码学为传递手段,以链式验证为执行逻辑,将升级包从发布到刷写的全过程纳入可验证的安全边界。它既是安全OTA的技术底座,也是车厂满足法规合规、保障车辆全生命周期安全的关键工程实践。