3. Boot ROM与安全启动基础
在 MCX 系列 MCU 的启动链中,Boot ROM 是芯片上电后第一段被执行的代码,它固化在芯片内部只读区域,出厂后不可修改。正因为不可修改,它才具备成为“信任根”的资格:后续所有启动阶段的合法性判断,最终都要回溯到 Boot ROM 中保存的密钥或摘要。理解 Boot ROM 的功能边界、信任根如何建立、签名验证如何逐级传递,是掌握 MCX 安全启动与固件升级的前提。
Boot ROM 在启动链中的位置与职责
MCX 上电或复位后,CPU 从固定地址取指,进入 Boot ROM。Boot ROM 并不直接运行用户应用,而是完成一系列“判断与搬运”工作:初始化最基础的时钟与引脚、判断启动模式(内部 Flash、外部接口、ISP 下载等)、读取启动配置(如 BOOT_CFG 引脚或 OTP 中的配置字)、定位镜像入口,并在安全启动使能时对镜像进行验证。只有验证通过的镜像才会被跳转执行。
需要区分两类启动路径:一类是“非安全启动”,Boot ROM 只做基本搬运与跳转,不校验镜像;另一类是“安全启动”,Boot ROM 会使用信任根对镜像头部、镜像体及签名逐项校验,失败则拒绝跳转,并按配置进入恢复或下载模式。MCX 的安全启动特性正是围绕后者展开。
信任根:从不可变代码到可验证密钥
信任根(Root of Trust, RoT)是安全启动的起点。MCX 的信任根由三部分构成:不可修改的 Boot ROM 代码、芯片内一次性可编程(OTP/eFuse)区域中保存的密钥摘要或公钥哈希、以及由硬件保证的只读属性。Boot ROM 在验证镜像时,不会直接信任镜像里附带的公钥,而是先计算公钥的哈希,与 OTP 中烧录的哈希比对;只有哈希一致,才认为该公钥可信,再用它验证镜像签名。
这种“先验公钥、再验镜像”的两级结构,避免了攻击者替换公钥后重新签名的风险。OTP 区域一旦烧录便不可更改,因此信任根在芯片出厂配置完成后即被冻结。实际工程中,密钥哈希的烧录通常与生命周期状态(Life Cycle)配合:开发阶段可保留调试口,量产阶段则关闭调试并锁定 OTP,使信任根真正生效。
签名验证流程:逐级传递的信任
MCX 安全启动的签名验证遵循“先验公钥、再验镜像”的顺序,具体可分为四步。第一步,Boot ROM 读取镜像头部中的公钥或证书;第二步,计算该公钥的哈希,与 OTP 中烧录的哈希比对,若不一致则立即终止启动;第三步,使用通过比对的可信公钥验证镜像签名,签名验证覆盖镜像头部与镜像体,确保二者均未被篡改;第四步,验证通过后,Boot ROM 将控制权交给镜像入口,启动链进入下一阶段。
这一流程的关键在于“信任不传递到未验证对象”。Boot ROM 只信任 OTP 中的哈希,公钥必须通过哈希比对才能被信任,镜像必须通过公钥验签才能被执行。若镜像还包含二级引导程序,二级引导程序可继续用同样的方式验证应用镜像,形成链式信任。每一级都只信任上一级验证过的对象,任何一级失败都会中断启动。
MCX 安全启动特性与工程要点
MCX 系列在安全启动上提供了若干可配置特性,工程中需要重点关注以下几点。其一,安全启动使能位通常位于 OTP 中,一旦置位便不可关闭,因此必须在量产前确认镜像已正确签名并验证通过,否则芯片将无法启动。其二,MCX 支持多种密钥长度与签名算法(如 ECDSA P-256、RSA 等),选择时需与镜像签名工具链保持一致,避免算法不匹配导致验证失败。其三,生命周期状态决定调试口是否开放,开发阶段可保留调试以便排查,量产阶段应切换到安全生命周期并关闭调试。
实际配置时,一个常见的教学示例参数如下:使用 ECDSA P-256 生成密钥对,公钥哈希为 32 字节,烧录到 OTP 的指定区域;镜像头部包含公钥、签名值和镜像长度;Boot ROM 在验证时先比对公钥哈希,再用公钥验证签名。若验证失败,芯片根据配置进入串行下载模式,此时可通过 ISP 接口重新烧录已签名的镜像。需要说明的是,上述参数为教学示例,实际项目中应以 MCX 参考手册和签名工具的输出为准。
验证结果如何观察与判断
在开发阶段,可以通过调试口观察 Boot ROM 的执行状态。若安全启动验证通过,Boot ROM 会跳转到镜像入口,调试器可看到 PC 指向应用代码区域;若验证失败,Boot ROM 会停留在内部循环或进入下载模式,此时通过串行接口可观察到下载握手信息。另一种判断方式是读取启动状态寄存器,MCX 通常提供启动状态或安全状态寄存器,用于指示上次启动是否通过安全验证、失败原因(如公钥哈希不匹配、签名无效等)。工程中应把该寄存器状态纳入启动日志,便于快速定位问题。
综合来看,Boot ROM 是 MCX 启动链的起点,信任根由不可变代码与 OTP 共同构成,签名验证按“公钥哈希比对 → 镜像验签 → 跳转执行”的顺序逐级传递信任。掌握这一流程,才能在后续固件升级中正确设计签名、烧录与回滚策略,确保升级后的镜像仍能被 Boot ROM 信任并正常启动。