硬件信任根(RoT)基础:从不可克隆到信任链

大家好,我是你们这堂课的主讲人。今天我们来聊聊芯片安全里最核心、也最基础的一个概念——硬件信任根。

说实话,我做了十几年芯片安全,见过太多系统被攻破的案例。追根溯源,大部分问题都出在「信任」这两个字上。你凭什么相信一个芯片是安全的?凭什么相信它没被篡改过?

答案就是:你得有一个绝对可信的起点。这个起点,就是硬件信任根。

什么是信任根?

信任根,英文叫 Root of Trust,简称 RoT。你可以把它理解成整个安全体系的「锚」。就像盖房子打地基一样,地基不稳,上面盖得再漂亮也没用。

我个人习惯把信任根比作「芯片的出生证明」。它是一组在芯片制造时就被固化下来的硬件机制,从芯片通电的第一纳秒开始,就负责验证一切是否正常。

核心定义:信任根是一个不可伪造、不可篡改、不可绕过的硬件实体,它是所有安全操作的起点和信任基准。

你想想看,如果信任根本身能被篡改,那整个安全体系就崩塌了。所以,信任根必须满足三个核心属性。

三大核心属性

1. 不可克隆

什么叫不可克隆?就是每一颗芯片的信任根都是独一无二的。哪怕你是芯片原厂,也无法制造出两颗完全一样的信任根。

这里就要提到一个关键技术——PUF,物理不可克隆函数。我在项目中遇到过用 PUF 做芯片指纹的场景。简单说,就是利用芯片制造过程中不可避免的工艺偏差,比如晶体管的阈值电压差异,来生成一个唯一的、不可预测的密钥。

我的经验:PUF 虽然好,但容易受温度和电压影响。我曾经在一个项目中,PUF 在常温下表现完美,一到高温测试就翻车。后来我们加了纠错电路才搞定。嗯,这里要注意,PUF 不是万能的,需要配合辅助数据才能稳定输出。

2. 不可篡改

信任根一旦被写入,就不能再被修改。这通常通过一次性可编程存储器来实现,比如 eFuse 或 OTP ROM。

为什么不能改?因为如果攻击者能改写信任根,他就能植入自己的恶意代码,让芯片「认贼作父」。我见过一个案例,某款 IoT 芯片的信任根存储在 Flash 里,结果被攻击者通过电压毛刺攻击篡改了,整个安全体系瞬间瓦解。

避坑指南:千万不要把信任根放在可擦写的存储器里。我曾经吃过这个亏,后来所有设计都强制要求使用 OTP 或 eFuse。记住,信任根必须是「写一次,管一生」。

3. 不可绕过

这是最容易被忽视的一点。信任根必须是系统启动的第一条指令,没有任何其他路径可以跳过它。

说白了,芯片上电后,CPU 必须从信任根所在的地址开始执行代码。如果攻击者能通过 JTAG 接口或 DMA 通道绕过信任根,那前面两个属性就白费了。

我记得有一次做安全审计,发现某款芯片的 Boot ROM 虽然固化了信任根,但调试接口没锁死。攻击者直接通过 JTAG 跳过了信任根检查,系统被攻破只用了 30 秒。

信任链的建立

有了信任根这个「锚」,接下来就要建立信任链。信任链说白了就是「一级验证一级」的过程。

我画了一张图,帮你理解这个过程:

信任链建立流程 硬件信任根 (RoT) Boot ROM / eFuse 验证 第一级 Bootloader (BL1) 验证 BL2 的签名和哈希 验证 第二级 Bootloader (BL2) 验证操作系统内核 验证 操作系统内核 (OS) 验证应用程序 关键原则 • 逐级验证 • 不可跳过 • 失败即停止 安全边界 信任根 → BL1 硬件强制隔离

从图中你可以看到,信任链是这样建立的:

  1. 芯片上电:CPU 从 Boot ROM 开始执行,这是信任根所在的位置。
  2. 验证第一级 Bootloader:信任根使用公钥验证 BL1 的签名。如果签名不匹配,直接死循环或进入安全错误状态。
  3. 验证第二级 Bootloader:BL1 验证通过后,将控制权交给 BL2。BL2 继续验证下一级。
  4. 验证操作系统:BL2 验证 OS 内核的完整性。
  5. 验证应用程序:OS 启动后,继续验证用户空间的应用程序。

这个过程就像多米诺骨牌,每一级都验证下一级的合法性。只要有一级验证失败,整个系统就停止启动。

关键点:信任链的强度取决于最弱的一环。如果 BL1 的验证逻辑有漏洞,那信任根再强也没用。我建议你在设计时,重点关注 BL1 的代码质量和安全审计。

实际项目中的避坑指南

讲了这么多理论,我分享几个实际项目中的教训:

  • 公钥存储位置:公钥必须存储在信任根内部,不能从外部加载。我曾经见过一个设计,公钥放在 Flash 里,结果被攻击者替换了。
  • 回滚攻击:攻击者可能试图加载旧版本的固件,利用已知漏洞。解决办法是在信任根中维护版本号计数器,只允许升级,不允许降级。
  • 侧信道攻击:信任根在执行签名验证时,可能通过功耗或电磁辐射泄露密钥信息。我建议在硬件层面加入掩码技术,让功耗曲线变得随机。

我的习惯:每次设计信任根时,我都会问自己三个问题:

  1. 攻击者能不能物理访问芯片?
  2. 攻击者能不能篡改信任根的内容?
  3. 攻击者能不能绕过信任根的验证?

如果三个答案都是「不能」,那这个信任根才算合格。

小结

硬件信任根是整个芯片安全体系的基石。它必须满足不可克隆、不可篡改、不可绕过这三个核心属性。通过信任链的逐级验证,我们可以确保从芯片上电到操作系统启动的每一个环节都是可信的。

记住,安全不是靠某一个环节的铜墙铁壁,而是靠整个链条的环环相扣。信任根再强,如果信任链断了,一切归零。


专注资料整理