硬件信任根(HRoT):TPM芯片选型、物理防篡改设计、一次性编程熔丝

各位同学,今天我们聊一个硬核话题——硬件信任根。说白了,就是给导弹的“大脑”装一个不可伪造的身份证。我参与过几个军工项目,深刻体会到:软件层面的安全做得再好,如果硬件本身能被物理篡改,那一切防护都是白搭。你想想看,攻击者要是能直接拆开芯片、读取或修改固件,那你的加密算法再强也没用。

TPM芯片选型:不是随便买个就能用

TPM(可信平台模块)是硬件信任根的核心。但军工级选型,跟民用完全不是一个概念。我建议重点关注三个维度:

  • 安全等级认证:必须通过CC EAL4+以上认证,最好是EAL5+。我在项目中遇到过一款号称“军工级”的TPM,结果仔细一看,只过了EAL2,根本不符合要求。
  • 密钥存储能力:至少支持RSA-2048和ECC-256,且私钥必须硬件隔离,不能通过任何软件接口导出。说白了,密钥一旦生成,连CPU都读不到。
  • 抗物理攻击能力:包括主动屏蔽层、光传感器、温度传感器等。攻击者一旦尝试开盖或探针,芯片会立即擦除敏感数据。

重要提示:选型时一定要确认TPM是否支持“平台配置寄存器(PCR)”的扩展功能。PCR是度量启动过程完整性的关键,没有它,信任链就断了。

我个人的习惯是,优先选择Infineon或NXP的军工级TPM,它们有成熟的抗物理攻击方案。当然,国产替代方案也在快速进步,比如国民技术的某些型号,但需要仔细验证其抗攻击能力。

物理防篡改设计:让攻击者无从下手

物理防篡改,说白了就是让攻击者一碰就“炸”。嗯,这里要注意,不是真的爆炸,而是让芯片自毁。我见过一个项目,攻击者用聚焦离子束(FIB)去修改芯片内部连线,结果触发了主动屏蔽层的报警,芯片直接清空了所有数据。

常见的物理防篡改技术包括:

  1. 主动屏蔽层:在芯片顶层覆盖一层蛇形走线的金属网格,一旦被切断或短路,立即触发报警。我记得有一次,供应商提供的屏蔽层设计有漏洞——网格间距太大,攻击者可以用细探针绕过。后来我们重新设计了网格密度,确保任何物理接触都会触发报警。
  2. 光传感器:检测芯片是否被开盖或暴露在光线下。一旦检测到异常光照,立即擦除密钥。我曾经测试过一款芯片,用红外光照射时传感器没反应,后来发现是传感器波长范围不够宽。嗯,这个坑大家要注意。
  3. 温度传感器:防止攻击者用液氮降温来冻结芯片状态,或者用热风枪加热来破坏防护层。温度阈值要设置合理,既要防止攻击,又不能因为正常环境变化而误触发。
  4. 电压传感器:检测电源电压的异常波动。攻击者常用电压毛刺攻击来绕过安全校验,传感器可以及时检测并触发保护。

警告:物理防篡改设计不是堆砌传感器就完事了。传感器之间的联动逻辑、报警后的响应策略(是擦除数据还是永久锁定?),都需要仔细设计。我曾经见过一个设计,传感器报警后只是记录日志,没有立即擦除数据,结果攻击者利用这个时间窗口读出了密钥。

一次性编程熔丝:写进去就改不了

一次性编程熔丝(OTP fuses),说白了就是芯片上的“只写一次”存储单元。一旦写入,就永久锁定,无法修改。这玩意儿在导弹制导系统中特别重要——比如存储根密钥、芯片ID、安全策略等。

为什么不用Flash或EEPROM?因为那些可以擦写,攻击者可以用编程器反复尝试。OTP熔丝一旦烧断,物理上就无法恢复。我建议把以下内容写入OTP:

  • 根密钥哈希:用于验证后续加载的固件签名
  • 芯片唯一ID:防止芯片被替换或克隆
  • 安全策略位:比如是否启用JTAG调试接口、是否允许外部访问某些寄存器

OTP熔丝的实现方式主要有两种:

类型 原理 优点 缺点
电熔丝(eFuse) 通过大电流熔断金属连线 工艺成熟,集成度高 熔断后不可逆,但可能被FIB修复
反熔丝(Anti-fuse) 通过高电压击穿绝缘层形成导电通道 抗物理攻击能力强,难以逆向 需要特殊工艺,成本较高

我个人更倾向于反熔丝方案,虽然贵一点,但安全性高一个量级。你想想看,攻击者想用FIB修复反熔丝?那几乎不可能,因为击穿后的绝缘层已经彻底改变了物理结构。

经验之谈:OTP熔丝编程时一定要做“读回验证”。我曾经遇到过一批芯片,编程时显示成功,但读回时发现某些位没烧断。后来排查发现是编程电压不稳定。所以,编程后必须逐位读回确认,否则芯片出厂后才发现问题,那就只能报废了。

信任链的建立:从OTP到启动代码

硬件信任根不是孤立存在的,它要支撑整个启动过程的信任链。流程大概是这样的:

  1. 芯片上电后,ROM代码首先读取OTP中的根密钥哈希
  2. ROM代码验证Bootloader的签名,如果签名不匹配,直接死循环或擦除数据
  3. Bootloader验证操作系统内核的签名
  4. 内核验证应用程序的签名

每一级验证通过后,才将控制权交给下一级。任何一级验证失败,系统都拒绝启动。这就是所谓的“信任链度量”。

嗯,这里要注意一个细节:ROM代码本身必须是不可修改的。所以ROM通常也是OTP或者掩膜ROM,不能是Flash。我见过一个设计,ROM放在Flash里,结果攻击者直接替换了ROM代码,绕过了所有验证。这个教训很深刻。

总结一下

硬件信任根是导弹制导系统安全的第一道防线,也是最后一道防线。TPM芯片选型要关注安全认证和抗攻击能力;物理防篡改设计要覆盖屏蔽层、传感器和联动逻辑;OTP熔丝要选对类型并做好编程验证。说白了,这些技术都不复杂,但细节决定成败。我做了这么多年嵌入式安全,最大的体会就是:攻击者永远比你有耐心,所以你的防护必须做到极致。

下一章我们会聊安全启动的具体实现,包括如何用硬件信任根来度量每一级代码的完整性。到时候我会分享一个实际项目中的启动流程代码,大家可以看看信任链是怎么一步步建立起来的。