3、信任根(Root of Trust):什么是信任根、为何需要、常见实现方式(如OTP、eFuse、ROM代码)

在嵌入式设备的安全启动(Secure Boot)体系中,信任根(Root of Trust,RoT)是整个安全链路的起点和基石。如果把Secure Boot比作一座大厦,那么信任根就是这座大厦的地基——地基不牢,大厦越高越危险。本章将深入剖析信任根的本质、必要性以及三种主流实现方式(OTP、eFuse、ROM代码),帮助你在实际项目中做出正确的信任根选型与部署决策。

信任根(RoT)在Secure Boot中的核心地位与实现路径 信任根(RoT) 不可变、可信、唯一起点 核心属性 • 不可篡改性(物理/逻辑) • 不可绕过性(强制校验) • 可验证性(公开公钥) 核心功能 • 存储根密钥/根公钥 • 执行首次校验动作 • 派生后续信任链 方式一:OTP(一次性可编程) • 熔丝/反熔丝阵列 • 出厂后不可修改 • 适合存储根公钥哈希 • 成本低,容量有限 • 需防物理探测 方式二:eFuse(电子熔丝) • 芯片内集成,可多次烧写 • 支持锁定/永久熔断 • 可存密钥、配置、版本 • 主流SoC标配方案 • 支持安全回滚控制 方式三:ROM代码(BootROM) • 芯片出厂固化,不可更改 • 上电后最先执行 • 负责加载并验证下一级 • 是信任链的物理起点 • 需防代码漏洞利用

3.1 核心原理:信任根的本质与安全锚点

信任根(Root of Trust)是指在一个安全系统中,被无条件信任、无需外部验证即可作为安全基准的硬件、固件或数据实体。在嵌入式Secure Boot场景中,信任根通常由芯片内部的不可变代码(BootROM)和不可变数据(OTP/eFuse中存储的根公钥或根密钥)共同构成。其核心思想是:信任必须有一个起点,而这个起点本身必须是可信的、不可伪造的、不可篡改的。

从密码学角度看,信任根解决的是"先有鸡还是先有蛋"的悖论。如果所有代码都需要被验证,那么第一段执行的代码由谁来验证?答案就是信任根——它不需要被验证,因为它被物理地固化在芯片内部,攻击者无法修改。信任根通常承担以下职责:

  • 存储安全关键参数:包括根公钥(RSA/ECC公钥)、根密钥哈希、安全配置位(如是否强制启动校验)、版本号等。
  • 执行首次验证动作:BootROM上电后,从固定地址读取下一级引导程序(如Bootloader),使用信任根中存储的公钥验证其签名。
  • 建立信任链:验证通过后,将控制权移交给下一级,同时传递安全上下文(如已解锁的外设、安全配置),形成逐级验证的信任链。

信任根的设计必须满足三个关键属性:不可篡改性(物理上无法修改)、不可绕过性(系统启动路径必须经过信任根)、可验证性(信任根的公钥可以被外部工具验证,确保设备身份真实)。

关键认知:信任根不是"一个芯片"或"一段代码",而是一个信任锚点组合——通常由硬件(OTP/eFuse)+ 固件(BootROM)共同构成。硬件提供不可篡改的存储,固件提供不可绕过的执行逻辑。两者缺一不可。

3.2 判断方法与选型:如何确定你的设备需要哪种信任根

在实际项目中,选择信任根实现方式需要综合考虑安全等级、成本、开发周期和供应链因素。以下是判断流程和选型建议:

  1. 第一步:评估安全需求等级。如果产品涉及金融支付、车联网、医疗设备等高安全场景,必须使用硬件级信任根(OTP/eFuse + BootROM);如果是消费类IoT设备,可考虑使用eFuse方案;如果只是内部工具或原型验证,可暂时使用软件模拟信任根,但量产前必须升级。
  2. 第二步:确认芯片支持能力。查阅芯片手册,确认是否集成BootROM、是否有OTP/eFuse区域、是否支持安全启动(Secure Boot)硬件加速。主流MCU/SoC(如STM32MP1、i.MX8、NXP LPC55xx、ESP32等)均内置了完整的信任根方案。
  3. 第三步:确定密钥存储策略。根公钥通常以哈希形式存储在OTP/eFuse中(节省空间且防提取);根私钥则保存在安全的生产环境中(HSM或离线电脑),永不进入设备。
  4. 第四步:规划密钥生命周期。包括密钥生成、注入、备份、吊销、轮换策略。eFuse支持多次烧写,可实现在线升级密钥;OTP一旦烧写不可更改,需在出厂前确定最终密钥。
对比维度 OTP(一次性可编程) eFuse(电子熔丝) ROM代码(BootROM)
可写性 出厂后不可写 可多次烧写,可锁定 不可写(掩膜固化)
存储容量 小(几KB~几十KB) 中等(几KB~几百KB) 代码区(几十KB~几百KB)
典型用途 根公钥哈希、安全配置位 密钥、版本号、配置、安全策略 启动代码、验证逻辑、安全监控
抗物理攻击 较高(熔丝状态难探测) 中等(可通过电子显微镜分析) 高(掩膜难以逆向)
灵活性 低(一次性决定) 高(支持密钥轮换) 极低(出厂后无法修改)
成本 低 中 高(需芯片流片时固化)
选型建议:对于大多数量产嵌入式产品,推荐使用eFuse + BootROM的组合方案。eFuse提供了足够的灵活性(支持密钥更新和版本管理),BootROM保证了启动路径的不可绕过性。OTP适合对成本极度敏感、安全策略简单且不需要更新的场景。

3.3 案例拆解:基于eFuse的Secure Boot信任根部署实战

下面通过一个具体的工业网关项目案例,展示信任根的实际部署过程。该案例基于NXP i.MX8M Plus处理器,该芯片内置BootROM和eFuse安全子系统。

项目背景与约束:某工业设备厂商需要为边缘计算网关实现Secure Boot,要求:① 防止固件被篡改后运行;② 支持远程固件升级(需密钥轮换能力);③ 满足IEC 62443工业安全标准;④ 量产规模5万台,成本敏感。

初始现象与目标:早期产品无安全启动机制,曾发生固件被篡改导致设备被植入挖矿程序的事件。目标是通过信任根机制,确保只有经过签名的固件才能运行。

关键输入数据:

  • 芯片:i.MX8M Plus,内置4KB eFuse区域,支持SRK(Super Root Key)哈希存储
  • 密钥算法:RSA-2048,SHA-256哈希
  • BootROM支持:从eFuse读取SRK哈希,验证Bootloader签名

实施步骤:

  1. 密钥生成:在离线HSM中生成RSA-2048根密钥对,私钥保存在HSM中,公钥导出。
  2. 计算SRK哈希:对根公钥进行SHA-256哈希,得到32字节的SRK_HASH。
  3. 烧写eFuse:在产线上通过JTAG或专用工具,将SRK_HASH写入eFuse的SRK区域,并设置安全启动使能位(SEC_CONFIG[1])。
  4. 签名Bootloader:使用根私钥对U-Boot二进制进行签名,生成签名文件。
  5. 验证启动流程:上电后BootROM读取eFuse中的SRK_HASH,从Boot设备加载Bootloader签名文件,使用SRK_HASH对应的公钥验证签名,验证通过后跳转执行。
  6. 密钥轮换准备:eFuse支持追加烧写,预留了SRK_HASH[1]区域,用于未来根密钥轮换。

结果对比:部署后,任何未签名的固件或篡改过的Bootloader都无法通过验证,设备启动失败并进入恢复模式。安全事件清零,且通过了IEC 62443认证审核。

风险与代价:eFuse烧写是一次性操作,如果烧写错误(如SRK_HASH错误),设备将变砖。因此产线烧写必须增加校验步骤,且需要准备备用芯片。另外,eFuse区域有限,需合理规划密钥和配置位的使用。

复盘经验:① 信任根部署必须与产线流程紧密结合,烧写工具需要防呆设计;② 密钥管理是信任根安全性的关键,私钥必须存储在HSM中;③ 建议在eFuse中预留安全版本号区域,用于防回滚攻击。

高风险警示:eFuse烧写不可逆,一旦将安全启动使能位熔断,芯片将强制校验签名。如果Bootloader签名丢失或错误,设备将无法启动。务必在量产前完成完整的签名和验证流程测试,并保留未熔断的调试芯片。

3.4 常见误区与总结复盘

在信任根的设计与部署中,工程师常犯以下错误,需要特别注意:

  • 误区一:信任根等同于加密芯片。信任根是安全体系的一部分,而非独立组件。即使有独立安全芯片(如TPM),仍需在SoC内部建立信任根,否则安全芯片与主处理器之间的通信可能被劫持。
  • 误区二:OTP和eFuse可以互相替代。两者在可写性、容量、抗攻击能力上差异显著。OTP适合一次性写入的固定信息,eFuse适合需要更新的场景。选错会导致后期无法升级密钥。
  • 误区三:信任根只需要保护Bootloader。信任根是整个信任链的起点,后续的每个引导阶段(Bootloader→内核→文件系统→应用)都需要逐级验证。如果只保护Bootloader,攻击者可以篡改内核或文件系统。
  • 误区四:信任根可以完全防止物理攻击。信任根能防软件攻击和大部分物理攻击,但高级攻击者仍可通过探针、电子显微镜等手段提取eFuse内容。高安全场景需配合主动屏蔽层、传感器等防护措施。
  • 误区五:信任根部署后无需维护。密钥轮换、版本管理、证书吊销等都需要持续维护。eFuse虽然支持多次烧写,但次数有限,需合理规划。
总结复盘:信任根是Secure Boot的基石,其核心价值在于提供一个不可篡改、不可绕过、可验证的安全锚点。OTP、eFuse和ROM代码各有优劣,实际项目中通常组合使用:BootROM提供不可变的执行代码,eFuse提供可更新的密钥存储,OTP提供一次性安全配置。选型时需综合评估安全等级、成本、可维护性和供应链风险。部署时务必重视密钥管理、产线烧写流程和防回滚设计。信任根不是一劳永逸的解决方案,而是需要持续维护和演进的安全基础设施。