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。注意看信任链的起点和隔离方式。

HRoT vs SRoT 架构对比 HRoT vs SRoT 信任链对比 HRoT 架构 硬件安全模块(HSM) BootROM(只读) 签名验证(硬件加速) 信任链传递 应用固件 SRoT 架构 BootROM(软件) 签名验证(CPU 软件) 信任链传递 应用固件 HRoT 信任起点在硬件隔离区,SRoT 信任起点在 BootROM 代码,后者更容易被软件漏洞攻破

2.7 混合方案:我个人的推荐

其实在实际项目中,我很少见到纯 HRoT 或纯 SRoT 的方案。更多时候是混合的——用 HRoT 保护最关键的部分,用 SRoT 处理次要环节。

举个例子,我在一个车载网关项目里,用了独立的 HSM 芯片做密钥管理和签名验证(HRoT),但启动链里的镜像加载和完整性校验,还是靠主 CPU 的软件逻辑(SRoT)。这样既保证了核心密钥的安全,又保留了软件升级的灵活性。

说白了,安全不是非黑即白。你需要在成本、性能、安全等级之间找到平衡点。而找到这个平衡点的前提,就是搞清楚 HRoT 和 SRoT 各自的脾气秉性。