4. 硬件信任根

在工业网关的安全启动链条中,硬件信任根(Root of Trust, RoT)是整个信任体系的起点。它是一组不可被软件篡改、始终可信的硬件与固件组合,负责在系统上电的第一时刻提供可信的度量基准与密钥保护能力。没有硬件信任根,后续的引导加载程序、操作系统内核、应用容器乃至证书体系都如同建立在沙地之上——攻击者只需替换一个引导文件,整条信任链便彻底崩塌。

核心结论:硬件信任根不是"一个芯片",而是"一段不可变的启动代码 + 一组受硬件保护的密钥 + 一个可信度量基准"三者的集合。TPM、TEE、安全芯片是三种常见的实现载体,它们解决的是同一类问题,但信任边界与适用场景差异显著。

一、核心原理:信任必须从不可变处开始

信任根的基本逻辑是"信任锚定"。系统上电后,CPU 首先执行固化在 ROM 中的一段代码(通常称为 BootROM 或信任根 ROM),这段代码在芯片制造时写入,运行时不可修改。它完成两件事:一是校验下一级引导程序(如 U-Boot SPL)的数字签名,二是将校验结果通过度量寄存器记录下来。只有校验通过,控制权才交给下一级;校验失败则进入恢复模式或直接停机。

这一过程形成了"度量—校验—传递"的链式结构。每一级在将控制权交给下一级之前,先度量下一级的完整性,再决定是否放行。最终,度量值被写入受硬件保护的寄存器(如 TPM 的 PCR),供远程证明或本地策略判断使用。工业网关常见的做法是:BootROM → SPL → U-Boot → Linux 内核 → 根文件系统 → 容器镜像,每一级都参与签名校验。

硬件信任根在安全启动链中的位置与三类实现载体 安全启动信任链 BootROM(不可变) 信任根 · 首条指令 · 公钥哈希固化 SPL / 一级引导 签名校验 + 度量记录 U-Boot / 二级引导 校验内核 + 设备树 Linux 内核 + 根文件系统 dm-verity / IMA 度量 应用容器 / 证书服务 镜像签名 + 密钥调用 度量与密钥保护 PCR 寄存器 PCR[0-7] 启动度量 PCR[8-15] 运行时度量 密钥存储 EK / SRK / AIK 私钥不出硬件边界 远程证明 Quote 签名 平台配置寄存器报告 信任边界 硬件隔离区 软件不可读写 三类实现载体对比 TPM 2.0(可信平台模块) 独立芯片,LPC/SPI/I2C 接口 标准 PCR、密钥层级、远程证明 适合:合规要求强、需标准接口 局限:额外 BOM 成本、启动延迟 TEE(可信执行环境) CPU 内安全世界,如 ARM TrustZone OP-TEE / Trusty 运行可信应用 适合:低功耗、集成度高、无外置芯片 局限:信任边界依赖 CPU 厂商实现 安全芯片(SE / Secure Element) 专用防篡改芯片,如 ATECC608A 密钥生成、签名、加密一体 适合:成本敏感、密钥保护优先 局限:存储容量小、功能相对单一

二、实现方式:TPM、TEE 与安全芯片的差异

三种载体在工业网关中的落地方式各有侧重。TPM 2.0 是标准化程度最高的方案,它通过独立的物理芯片提供 PCR 寄存器和密钥层级,支持远程证明(Remote Attestation)。网关启动时,BootROM 将各级度量值扩展到 PCR,平台可向管理服务器提交 Quote 签名,证明自身运行状态未被篡改。TPM 的缺点是增加 BOM 成本,且部分低端网关的 CPU 不提供 TPM 接口。

TEE 则利用 CPU 内部的安全世界(如 ARM TrustZone 的 Secure World)运行可信应用。OP-TEE 是工业网关中常见的开源实现,它可以在不增加外置芯片的前提下提供密钥存储与安全服务。TEE 的优势是集成度高、功耗低,适合边缘计算网关;但其信任边界依赖于 CPU 厂商的硬件实现质量,且不同平台的 TEE 移植成本差异较大。

安全芯片(Secure Element)如 Microchip ATECC608A,以极低的成本提供密钥生成、ECDSA 签名和 AES 加密能力。它通常通过 I2C 接口与主控连接,私钥在芯片内部生成且永不导出。对于只需要"设备身份认证 + 证书私钥保护"的工业网关,安全芯片是性价比最高的选择。其局限在于存储容量小(通常仅能存放少量密钥和证书),无法承担完整的度量与证明功能。

三、选型考量:从场景出发的决策清单

选型维度 TPM 2.0 TEE 安全芯片
信任边界 独立芯片,边界清晰 CPU 内部,依赖厂商 独立芯片,防篡改
度量与证明 完整 PCR + Quote 部分支持,需 TA 实现 不支持完整度量
密钥保护 强,密钥层级完整 强,安全世界隔离 强,私钥不出芯片
成本 中高 低(集成于 SoC) 低
典型场景 电力、轨交等合规场景 边缘计算、视频网关 计量、充电桩、小型网关
选型建议:若网关需要向云端证明"我运行的是合法固件",优先选 TPM 2.0;若网关 CPU 已支持 TrustZone 且成本敏感,优先用 TEE;若只需保护设备证书私钥并完成双向 TLS 认证,安全芯片即可满足。三者并非互斥,高端网关常采用"TEE + 安全芯片"组合,由 TEE 负责度量,安全芯片负责密钥。

四、案例与误区复盘

某工业网关厂商在早期产品中仅使用软件方式存储设备私钥,私钥以明文形式保存在文件系统中。攻击者通过调试串口获取 shell 后,直接读取私钥并伪造设备身份接入云平台。整改方案是引入 ATECC608A 安全芯片,将私钥生成与签名操作全部迁移至芯片内部,主控仅能调用签名接口而无法读取私钥。整改后,即使攻击者获得 root 权限,也无法导出私钥。

另一个常见误区是"有了 TPM 就安全了"。实际上,TPM 只提供度量与密钥保护能力,若启动链中某一级未接入度量(例如 U-Boot 未将内核哈希扩展到 PCR),攻击者仍可在该环节替换固件而不被发现。因此,硬件信任根必须与完整的度量链配合,才能形成有效防护。

# 查看 TPM PCR 度量值示例(Linux 环境)
$ cat /sys/class/tpm/tpm0/pcr-sha256/0
3d4f8a2b1c9e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a

# 使用 tpm2-tools 读取 PCR[0] 与 PCR[7]
$ tpm2_pcrread sha256:0,7
sha256:
  0 : 0x3D4F8A2B1C9E7F6A5B4C3D2E1F0A9B8C7D6E5F4A3B2C1D0E9F8A7B6C5D4E3F2A
  7 : 0x9A8B7C6D5E4F3A2B1C0D9E8F7A6B5C4D3E2F1A0B9C8D7E6F5A4B3C2D1E0F9A8B

# 生成 Quote 远程证明(简化示意)
$ tpm2_quote -c 0x81010001 -l sha256:0,7 -q "nonce-2024" -m quote.msg -s quote.sig
复盘要点:硬件信任根的价值在于"不可篡改的起点"和"密钥不出边界"。选型时不要只看芯片规格,更要确认启动链每一级是否真正接入了度量与校验。若度量链存在断点,再强的信任根也无法阻止固件替换攻击。