1. 信任根概述:什么是信任根(RoT)、为什么需要硬件信任根、Boot ROM在信任链中的位置
1.1 信任根到底是什么?
先问个问题:一个系统怎么证明自己是「可信」的?
说白了,信任不能凭空产生。你得有一个最底层的、绝对可靠的起点。这个起点,就是信任根(Root of Trust,简称RoT)。
我个人的理解很简单:信任根是一个永远不被怀疑的实体。它可以是硬件、固件,或者两者的组合。关键是,它的行为是可预测的、不可篡改的,并且是整个安全体系的锚点。
举个例子。你拿到一台新手机,怎么知道它里面的系统没被动过手脚?
答案是:你没法直接验证。但手机可以自己证明——从按下电源键的第一微秒开始,一个固化在芯片里的代码就开始执行。这段代码谁都没法改,它去校验下一级代码,下一级再去校验下下一级……直到整个系统启动完毕。
这个「谁都没法改」的起点,就是信任根。
信任根的核心属性:
- 不可伪造:攻击者无法冒充或替换
- 不可篡改:运行时和存储时都不能被修改
- 行为可预测:每次执行结果一致,没有「后门」
- 最小化:代码量越少越好,减少攻击面
1.2 为什么非要用硬件信任根?
你可能会想:软件信任根不行吗?我在Flash里放一段校验代码,不也能当起点?
嗯,我以前也这么想过。直到我在一个IoT项目里踩了坑——那台设备用的纯软件信任根,结果攻击者通过电压毛刺攻击(Voltage Glitching),让CPU跳过了校验代码,直接加载了恶意固件。那次教训挺深刻的。
软件信任根的问题在于:它本身也是可被修改的。攻击者只要能改写Flash,就能把你的信任根换成他的「信任根」。这就像让囚犯自己给自己写假释证明——逻辑上就站不住脚。
硬件信任根就不一样了。它通常固化在芯片的只读存储器(ROM)里,或者用一次性可编程(OTP)熔丝实现。物理上就无法改写。
| 对比维度 | 软件信任根 | 硬件信任根 |
|---|---|---|
| 存储介质 | Flash / 磁盘 | Boot ROM / OTP / eFuse |
| 可篡改性 | 可被改写 | 物理不可变 |
| 抗物理攻击 | 弱(探针、电压扰动) | 强(布局保护、金属屏蔽) |
| 启动时间 | 较慢(需加载驱动) | 微秒级上电即执行 |
| 典型场景 | PC BIOS(传统) | 手机SoC、TPM、汽车MCU |
你看,硬件信任根在安全性上几乎是碾压级的。代价是灵活性差——ROM里的代码出厂后就改不了了。但这恰恰是它可信的原因。
我的建议: 只要产品涉及安全启动、固件升级或敏感数据保护,就别省硬件信任根。省下来的几毛钱成本,可能换来一次灾难性的召回。
1.3 Boot ROM在信任链中的位置
现在聊聊Boot ROM。它是硬件信任根最常见的载体。
芯片上电后,CPU的第一条指令从哪里取?就是从Boot ROM。这段代码是芯片设计阶段就写好的,掩膜到硅片里。你拿显微镜看,它就是一堆固定的晶体管排列。
Boot ROM的任务很简单:加载并验证下一级启动代码。下一级可能是SPL(Secondary Program Loader)或者BL1(Boot Loader Stage 1)。验证通过,就把控制权交出去;验证失败,就死循环或者进入恢复模式。
整个信任链是这样的:
这张图我画得比较直观。你看,Boot ROM在最顶端,它是整个链条的「锚」。它不需要被验证——因为它本身就是验证的起点。
这里有个关键点:每一级只信任上一级。Boot ROM信任BL1,BL1信任U-Boot,U-Boot信任内核。攻击者只要打破其中任何一环,整个信任链就断了。但想打破Boot ROM那环?除非你把芯片拆了,用电子显微镜改硅片——这成本够买几架战斗机了。
注意: 我曾经见过一个设计,Boot ROM里留了个调试后门——只要拉高某个GPIO引脚,就跳过所有校验。这等于在信任根上开了个天窗。千万别干这种事。信任根必须是「六亲不认」的,连开发者自己都不能绕过。
1.4 信任根的实际形态
除了Boot ROM,硬件信任根还有几种常见形态:
- TPM(可信平台模块):独立的安全芯片,专门做密钥存储和度量。PC和服务器上很常见。
- HSM(硬件安全模块):更高级的专用设备,用于金融、CA等场景。性能强,价格也感人。
- SoC内置安全岛:比如ARM的TrustZone、RISC-V的M-mode。在芯片内部划出一块隔离区域。
- PUF(物理不可克隆函数):利用芯片制造时的工艺偏差生成唯一指纹。不需要存储密钥,天生防物理提取。
这些形态各有优劣。但不管哪种,核心思想都一样:找一个物理上不可篡改的起点,然后从这个起点开始,一层层建立信任。
选型建议: 做消费电子,SoC内置Boot ROM就够了。做金融安全,得上独立HSM。做车规,TPM或HSM二选一,还得过功能安全认证。别为了省成本选错方案——安全这东西,欠的债迟早要还。
1.5 小结
这一章我们聊了信任根的本质——一个不可篡改的信任起点。为什么需要硬件实现?因为软件信任根自己都保不住自己。Boot ROM作为最常见的硬件信任根,站在信任链的最顶端,负责启动并验证整个系统。
记住一句话:没有硬件信任根的安全启动,就像没有地基的高楼。看着挺高,风一吹就倒。