4. 安全启动信任根

在英飞凌TRAVEO系列MCU的安全启动体系中,“信任根”不是某一个单独模块,而是一组按固定顺序被验证、且自身不可被普通应用代码修改的启动资产。理解信任根,关键要抓住三个问题:谁先运行、谁验证谁、验证失败后谁负责终止。TRAVEO的启动路径通常从芯片上电复位开始,先执行固化在ROM中的Boot ROM代码,再由它依次校验HSM固件、安全启动配置和用户应用镜像,最终把控制权交给通过校验的实体。

一、信任根的四个组成对象

TRAVEO安全启动的信任根由四类对象构成,它们的位置、可变性和职责各不相同:

  • ROM固件(Boot ROM):芯片出厂即固化,位于只读存储区,是整条信任链的起点。它包含复位向量、初始时钟与电源配置、启动模式判断、以及最核心的镜像校验逻辑。ROM代码不可被任何用户代码改写,因此构成“不可变信任根”。
  • HSM固件:运行在独立的安全处理单元(HSM)上,负责密钥管理、加解密、签名验证和访问控制。HSM固件本身通常存放在受保护的Flash区域,由ROM或HSM引导代码校验后加载。
  • 密钥存储:包括ROM中固化的根公钥哈希、HSM密钥槽中的对称密钥或私钥、以及OTP/SFlash中的密钥元数据。密钥存储决定了“用什么验证、验证谁”。
  • 信任锚(Trust Anchor):指被无条件信任的初始密钥或哈希值。它可以是不可变的(固化在ROM/OTP中),也可以是可更新的(存放在受HSM保护的SFlash区域,通过安全服务更新)。

二、信任链建立过程

信任链的本质是“逐级验证、逐级传递信任”。TRAVEO典型的安全启动流程如下:

  1. 上电复位后,CPU从ROM固定地址取复位向量,执行Boot ROM。
  2. Boot ROM读取启动模式引脚或eFuse配置,判断进入正常启动、调试启动还是HSM恢复模式。
  3. Boot ROM计算HSM固件镜像的哈希,并用固化在ROM中的根公钥或哈希进行验证。若验证失败,根据策略进入锁定或恢复流程。
  4. HSM固件启动后,初始化密钥存储,读取SFlash中的安全启动配置和用户密钥元数据。
  5. HSM对用户应用镜像(CM0+/CM4代码区)计算哈希或验证数字签名,验证通过后释放CPU复位,跳转到用户应用入口。
  6. 应用运行期间,HSM可继续提供安全服务,如密钥派生、安全存储访问和运行时完整性检查。

整个过程中,每一级只信任上一级验证过的结果,形成一条从ROM到HSM再到用户应用的完整信任链。任何一级校验失败,后续代码都不会被执行。

TRAVEO 安全启动信任链建立过程 ① Boot ROM 固化不可变代码 复位向量 / 启动模式 根公钥哈希校验 ② HSM 固件 安全处理单元 密钥管理 / 加解密 签名验证引擎 ③ 密钥存储 OTP / SFlash 密钥槽 根公钥 / 对称密钥 密钥元数据与策略 ④ 用户应用 CM0+ / CM4 应用镜像 运行时安全服务 校验 加载 验证 信任链:ROM → HSM固件 → 密钥存储 → 用户应用(逐级验证,信任传递) 校验失败处理路径 • ROM校验HSM失败 → 进入恢复模式或永久锁定 • HSM校验应用失败 → CPU保持复位,不跳转 • 密钥元数据不匹配 → 拒绝加载,记录安全事件 不可变 vs 可更新信任锚 不可变:ROM/OTP固化,安全性最高,无法远程轮换 可更新:SFlash受HSM保护,支持密钥轮换,需防回滚 折中:ROM存根哈希,SFlash存可更新密钥证书链 关键配置参数(示例) 启动模式:Normal / Debug / HSM Recovery 哈希算法:SHA-256 签名算法:ECDSA P-256 密钥槽:Slot 0(根)/ Slot 1(应用) 回滚保护:单调计数器 失败策略:Lock / Recovery

三、不可变信任根与可更新信任锚的设计权衡

信任根的设计面临一个核心矛盾:不可变性带来安全性,可更新性带来灵活性。TRAVEO通过分层设计来平衡两者。

不可变信任根通常指固化在ROM中的Boot ROM代码和根公钥哈希。它的优势是攻击者无法通过软件手段篡改,即使Flash被完全擦写,ROM代码仍然可信。但缺点也很明显:一旦芯片流片,ROM中的根密钥或哈希就无法更改。如果根密钥泄露,整批芯片的安全启动都会失效,只能通过更换芯片或依赖HSM中的可更新层来缓解。

可更新信任锚则把信任锚放在SFlash或OTP中,由HSM保护其读写。这样可以在产品生命周期内轮换密钥、吊销泄露的密钥、支持OTA安全更新。但可更新性引入了新的攻击面:攻击者可能尝试回滚到旧版本密钥、篡改密钥元数据、或利用更新流程中的漏洞。因此,可更新信任锚必须配合单调计数器(Monotonic Counter)、密钥版本号和HSM访问控制策略一起使用。

实际工程中,常见的折中方案是:ROM中固化一个“根哈希”或“根公钥的哈希”,SFlash中存放由该根签名的密钥证书链。启动时,ROM先验证证书链的根签名,再从证书链中提取应用验证公钥。这样既保留了ROM的不可变信任起点,又允许通过安全更新替换证书链中的中间密钥和应用密钥。

设计建议:对于量产阶段,建议将根公钥哈希固化在OTP中而非仅依赖ROM默认值,这样即使ROM存在通用根密钥,也能通过OTP实现每批次差异化。同时,HSM固件应实现密钥吊销列表(CRL)或版本白名单,防止降级攻击。

四、信任链建立中的关键检查点

在实现和调试安全启动时,以下检查点决定了信任链是否真正成立:

检查点验证对象失败后果典型配置
ROM→HSMHSM固件哈希/签名进入恢复模式或锁定SHA-256 + ECDSA P-256
HSM→密钥存储密钥元数据完整性拒绝加载密钥HMAC-SHA256 校验
HSM→应用应用镜像签名CPU保持复位ECDSA P-256 + 证书链
运行时关键代码段哈希触发安全异常周期性或事件触发

需要特别注意的是,信任链的每一级都必须验证“下一级的完整性和真实性”,而不仅仅是完整性。只做哈希校验而不做签名验证,攻击者可以在替换镜像的同时替换哈希值。因此,签名验证是信任链的必要条件,哈希校验只是签名验证的输入之一。

五、从启动到运行的信任延续

安全启动完成并不意味着信任链结束。TRAVEO的HSM可以在应用运行期间继续提供信任服务:例如,应用可以通过HSM接口请求对特定Flash区域进行签名验证,或者让HSM监控关键代码段是否被篡改。这种“运行时信任延续”把信任链从启动阶段延伸到了整个产品生命周期。

在工程实践中,建议把信任根的设计文档化,明确记录:根公钥哈希的固化位置、HSM固件的版本策略、密钥槽的分配、回滚保护的实现方式、以及校验失败后的恢复流程。这些信息不仅是安全审计的依据,也是后续OTA更新和密钥轮换的基础。

常见误区:把“安全启动”等同于“启动时校验一次”。实际上,如果应用运行后可以随意修改Flash中的代码而不被检测,信任链在启动后就断裂了。TRAVEO的HSM提供了运行时完整性检查能力,应结合具体安全等级要求决定是否启用。

总结来说,TRAVEO的安全启动信任根是一个从ROM到HSM再到用户应用的分层验证体系。ROM固件提供不可变的信任起点,HSM固件承担密钥管理和验证执行,密钥存储决定验证策略,而信任链的建立过程则是逐级校验、逐级传递信任。不可变信任根与可更新信任锚之间的权衡,最终要落到具体的产品安全需求、生命周期管理能力和攻击面控制上。