2. 硬件可信根(HRoT) vs 软件可信根(SRoT):各自的优缺点与适用场景
聊完可信根的基本概念,咱们得直面一个现实问题:这玩意儿到底该用硬件实现,还是软件搞定?
说实话,这个问题我在不同项目里被问过不下十次。每次客户拿着需求过来,第一句话就是“我们要做安全启动”,但具体怎么落地,往往一脸茫然。硬件可信根(HRoT)和软件可信根(SRoT),听起来就差一个字,实际差别大了去了。
2.1 先搞清楚定义
简单说,HRoT 是把信任的起点固化在芯片内部的物理模块里,比如一个独立的 ROM 代码段,或者一个专用的安全协处理器。这个模块上电第一件事就是验证下一级代码的签名,没通过就死机。
SRoT 则是在通用处理器上,通过软件逻辑来构建信任链。它可能依赖 BootROM 里的一段不可修改的代码,但后续的验证流程全在 CPU 上跑。
你想想看,一个靠物理隔离,一个靠逻辑隔离。这俩的信任强度能一样吗?
核心区别一句话:HRoT 的信任起点是“不可变的硬件”,SRoT 的信任起点是“不可变的代码”。前者物理上就防篡改,后者依赖代码的只读属性。
2.2 HRoT:硬核但贵
我个人习惯把 HRoT 比作“保险柜里的保险柜”。它独立于主处理器,有自己的存储、自己的执行环境,甚至自己的生命周期管理。
优点
- 物理隔离,抗攻击能力强:HRoT 模块和主系统之间是硬隔离的。就算主 CPU 被攻破了,HRoT 依然能守住底线。我在一个车规项目里遇到过,攻击者通过 CAN 总线注入了恶意固件,但因为 HRoT 独立管理密钥,启动链根本没被污染。
- 防回滚,防降级:硬件里可以集成一次性可编程(OTP)熔丝,记录固件版本号。想刷回旧版本?熔丝烧断了,门都没有。
- 性能开销低:专用的硬件加速器做签名验证,比纯软件快一个数量级。尤其是 RSA-4096 或 ECC-521 这种重型算法,硬件几毫秒搞定,软件可能要几百毫秒。
缺点
- 成本高:多一个硬件模块,芯片面积就大一圈。流片成本、封装成本、测试成本全线上涨。小批量产品根本扛不住。
- 灵活性差:硬件一旦流片,功能就锁死了。想升级算法?想改验证流程?对不起,重新流片吧。
- 开发周期长:硬件验证比软件验证复杂得多。一个 HRoT 模块从设计到量产,少说半年起步。
2.3 SRoT:灵活但脆弱
SRoT 就亲民多了。它不需要额外的硬件,直接在现有的 CPU 上跑。很多 IoT 芯片、MCU 都走这条路。
优点
- 零硬件成本:不需要额外芯片,不需要专用模块。现有的 BootROM 改一改就能用。
- 可升级,可定制:算法过时了?换一个。验证流程不合理?改。软件更新就能搞定,不用动硬件。
- 开发门槛低:团队里找个懂安全协议的软件工程师,几个月就能把启动链搭起来。
缺点
- 信任链脆弱:SRoT 的起点是 BootROM 里的代码。但 BootROM 本身也是软件,如果被找到漏洞(比如缓冲区溢出),整个信任链就崩塌了。我曾经在分析一个开源 BootROM 时发现,它的签名验证函数里有个整数溢出漏洞——攻击者可以伪造一个超大长度的签名,绕过验证。
- 易受侧信道攻击:软件跑在通用 CPU 上,功耗、电磁辐射、执行时间都能被观测。攻击者可以通过这些侧信道信息反推出密钥。
- 性能瓶颈:纯软件做非对称加解密,CPU 占用率很高。尤其是在低端 MCU 上,一个签名验证可能让系统启动时间翻倍。
避坑指南:我曾经在一个智能门锁项目里,客户坚持用 SRoT 省钱。结果量产三个月后,安全团队发现攻击者可以通过电压毛刺(Voltage Glitch)让 BootROM 跳过签名验证。嗯,从那以后,但凡涉及人身安全的产品,我都建议至少上 HRoT。
2.4 对比表格:一目了然
| 维度 | HRoT | SRoT |
|---|---|---|
| 信任起点 | 物理硬件模块 | BootROM 代码 |
| 抗物理攻击 | 强(硬件隔离) | 弱(依赖软件防护) |
| 防回滚能力 | 强(OTP 熔丝) | 弱(需额外软件逻辑) |
| 灵活性 | 低(流片后锁定) | 高(可 OTA 升级) |
| 成本 | 高(芯片面积+验证) | 低(仅软件投入) |
| 性能 | 快(硬件加速) | 慢(CPU 算力消耗) |
| 典型场景 | 汽车、金融、军工 | IoT、消费电子、MCU |
2.5 适用场景:别选错了
说白了,选 HRoT 还是 SRoT,取决于你的产品要面对什么样的威胁模型。
- HRoT 适合的场景:高价值资产、人身安全相关、需要长期防篡改。比如汽车 ECU、金融 POS 机、医疗设备。这些产品一旦被攻破,后果可能是致命的。多花几块钱的硬件成本,值得。
- SRoT 适合的场景:成本敏感、威胁等级低、允许快速迭代。比如智能灯泡、温湿度传感器、玩具。攻击者就算破解了你的固件,也捞不到什么好处。这时候用 SRoT 就够用了。
我的建议:如果你不确定,可以做一个“威胁建模”评估。列出攻击者可能的手段、攻击成本、攻击成功后的损失。如果损失超过硬件成本的 10 倍,果断上 HRoT。
2.6 一张图看懂 HRoT vs SRoT
下面这张图展示了两种可信根在安全启动中的核心差异。左边是 HRoT,右边是 SRoT。注意看信任链的起点和隔离方式。
2.7 混合方案:我个人的推荐
其实在实际项目中,我很少见到纯 HRoT 或纯 SRoT 的方案。更多时候是混合的——用 HRoT 保护最关键的部分,用 SRoT 处理次要环节。
举个例子,我在一个车载网关项目里,用了独立的 HSM 芯片做密钥管理和签名验证(HRoT),但启动链里的镜像加载和完整性校验,还是靠主 CPU 的软件逻辑(SRoT)。这样既保证了核心密钥的安全,又保留了软件升级的灵活性。
说白了,安全不是非黑即白。你需要在成本、性能、安全等级之间找到平衡点。而找到这个平衡点的前提,就是搞清楚 HRoT 和 SRoT 各自的脾气秉性。