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典型的安全启动流程如下:
- 上电复位后,CPU从ROM固定地址取复位向量,执行Boot ROM。
- Boot ROM读取启动模式引脚或eFuse配置,判断进入正常启动、调试启动还是HSM恢复模式。
- Boot ROM计算HSM固件镜像的哈希,并用固化在ROM中的根公钥或哈希进行验证。若验证失败,根据策略进入锁定或恢复流程。
- HSM固件启动后,初始化密钥存储,读取SFlash中的安全启动配置和用户密钥元数据。
- HSM对用户应用镜像(CM0+/CM4代码区)计算哈希或验证数字签名,验证通过后释放CPU复位,跳转到用户应用入口。
- 应用运行期间,HSM可继续提供安全服务,如密钥派生、安全存储访问和运行时完整性检查。
整个过程中,每一级只信任上一级验证过的结果,形成一条从ROM到HSM再到用户应用的完整信任链。任何一级校验失败,后续代码都不会被执行。
三、不可变信任根与可更新信任锚的设计权衡
信任根的设计面临一个核心矛盾:不可变性带来安全性,可更新性带来灵活性。TRAVEO通过分层设计来平衡两者。
不可变信任根通常指固化在ROM中的Boot ROM代码和根公钥哈希。它的优势是攻击者无法通过软件手段篡改,即使Flash被完全擦写,ROM代码仍然可信。但缺点也很明显:一旦芯片流片,ROM中的根密钥或哈希就无法更改。如果根密钥泄露,整批芯片的安全启动都会失效,只能通过更换芯片或依赖HSM中的可更新层来缓解。
可更新信任锚则把信任锚放在SFlash或OTP中,由HSM保护其读写。这样可以在产品生命周期内轮换密钥、吊销泄露的密钥、支持OTA安全更新。但可更新性引入了新的攻击面:攻击者可能尝试回滚到旧版本密钥、篡改密钥元数据、或利用更新流程中的漏洞。因此,可更新信任锚必须配合单调计数器(Monotonic Counter)、密钥版本号和HSM访问控制策略一起使用。
实际工程中,常见的折中方案是:ROM中固化一个“根哈希”或“根公钥的哈希”,SFlash中存放由该根签名的密钥证书链。启动时,ROM先验证证书链的根签名,再从证书链中提取应用验证公钥。这样既保留了ROM的不可变信任起点,又允许通过安全更新替换证书链中的中间密钥和应用密钥。
四、信任链建立中的关键检查点
在实现和调试安全启动时,以下检查点决定了信任链是否真正成立:
| 检查点 | 验证对象 | 失败后果 | 典型配置 |
|---|---|---|---|
| ROM→HSM | HSM固件哈希/签名 | 进入恢复模式或锁定 | SHA-256 + ECDSA P-256 |
| HSM→密钥存储 | 密钥元数据完整性 | 拒绝加载密钥 | HMAC-SHA256 校验 |
| HSM→应用 | 应用镜像签名 | CPU保持复位 | ECDSA P-256 + 证书链 |
| 运行时 | 关键代码段哈希 | 触发安全异常 | 周期性或事件触发 |
需要特别注意的是,信任链的每一级都必须验证“下一级的完整性和真实性”,而不仅仅是完整性。只做哈希校验而不做签名验证,攻击者可以在替换镜像的同时替换哈希值。因此,签名验证是信任链的必要条件,哈希校验只是签名验证的输入之一。
五、从启动到运行的信任延续
安全启动完成并不意味着信任链结束。TRAVEO的HSM可以在应用运行期间继续提供信任服务:例如,应用可以通过HSM接口请求对特定Flash区域进行签名验证,或者让HSM监控关键代码段是否被篡改。这种“运行时信任延续”把信任链从启动阶段延伸到了整个产品生命周期。
在工程实践中,建议把信任根的设计文档化,明确记录:根公钥哈希的固化位置、HSM固件的版本策略、密钥槽的分配、回滚保护的实现方式、以及校验失败后的恢复流程。这些信息不仅是安全审计的依据,也是后续OTA更新和密钥轮换的基础。
总结来说,TRAVEO的安全启动信任根是一个从ROM到HSM再到用户应用的分层验证体系。ROM固件提供不可变的信任起点,HSM固件承担密钥管理和验证执行,密钥存储决定验证策略,而信任链的建立过程则是逐级校验、逐级传递信任。不可变信任根与可更新信任锚之间的权衡,最终要落到具体的产品安全需求、生命周期管理能力和攻击面控制上。