4. 网关硬件安全基础

工业IoT网关通常部署在无人值守的配电房、泵站、产线机柜或户外机箱中,攻击者一旦获得物理接触机会,软件层的加密与鉴权都可能被绕过。因此,硬件安全不是“可选项”,而是网关信任链的根。本节围绕五个相互衔接的硬件安全机制展开:安全芯片与TPM/SE、安全启动、调试接口防护、物理防拆,以及侧信道攻击的初步认知。

一、安全芯片、TPM与SE:信任根落在哪里

网关中的“安全芯片”是一个统称,实际常见三类载体:TPM(Trusted Platform Module,可信平台模块)、SE(Secure Element,安全元件)和安全MCU/SoC内置安全子系统。它们的共同点是:内部保存密钥、执行密码运算,并且密钥不可被主处理器直接读出。

TPM遵循TCG标准,核心能力是平台度量与密钥封装。它内部有一组PCR(Platform Configuration Register),启动过程中每加载一段固件,就把其哈希值“扩展”进PCR:PCR_new = Hash(PCR_old || 度量值)。这个操作不可逆,因此PCR值能反映启动路径是否被篡改。TPM还可以把密钥绑定到特定PCR状态,只有度量值符合预期时密钥才能被解封。

SE则更偏向“保险箱”角色,常见于智能卡、eSIM和工业安全模块,提供安全存储、真随机数、对称/非对称运算,并通过I²C或SPI与主控通信。它通常不具备TPM那样标准化的平台度量接口,但抗物理攻击能力更强。

选型时可参考以下判断:需要与操作系统启动状态绑定的密钥保护,优先TPM 2.0;需要保存设备身份私钥并执行签名,SE更合适;若主控本身带TrustZone或安全核,也可作为轻量信任根。示例参数:某网关采用TPM 2.0(SPI接口,支持SHA-256、RSA-2048/ECC-P256),设备身份私钥在TPM内生成且标记为不可导出,应用层仅能通过TSS接口请求签名,私钥永不进入内存。

二、安全启动:把信任链从ROM传到应用

安全启动的目标是确保每一级代码在被执行前都经过验证。典型链条为:不可变ROM → 一级引导(BL1)→ 二级引导(BL2/U-Boot)→ 内核 → 根文件系统 → 应用容器。每一级用上一级保存的公钥验证下一级的签名,验证通过才跳转执行。

实现要点有三:第一,根公钥必须固化在OTP/eFuse或ROM中,不能放在可写Flash;第二,签名算法与摘要要与安全芯片能力匹配,常见为ECDSA-P256 + SHA-256;第三,失败策略要明确——验证失败应停止启动并进入恢复模式,而不是“警告后继续”。

下面给出一个可参考的镜像签名与验证流程示例(示例参数,非实测结果):

# 生成镜像摘要并签名(开发机侧,私钥离线保存)
openssl dgst -sha256 -sign priv.pem -out u-boot.sig u-boot.bin

# 打包:镜像 + 签名 + 公钥证书
mkimage -f fit.its u-boot.itb

# 网关侧验证(U-Boot 命令行)
=> fuse prog 0 0x10 <root_pubkey_hash>   # 固化根公钥哈希
=> bootm 0x80000000                       # 触发 FIT 签名校验
## 校验通过:Starting kernel ...
## 校验失败:FIT: Bad hash in 'signature' node,启动中止

判断依据很直接:正常启动日志中应出现签名校验通过信息;若人为篡改镜像一个字节,启动应在BL2阶段中止,且不进入内核。这就是安全启动是否真正生效的验证方法。

三、调试接口防护:关掉最容易被利用的门

JTAG、SWD、UART console、USB下载模式是生产和研发的必需接口,也是攻击者读取内存、绕过安全启动的首选入口。防护策略分三层:

  • 熔断/锁定:量产阶段通过eFuse永久关闭JTAG或设置调试密码,一旦熔断不可恢复。
  • 认证调试:保留接口但要求挑战-响应认证,密钥由安全芯片保存,未通过认证只能读取有限状态。
  • 物理与逻辑隐藏:PCB上不标注测试点、关闭U-Boot命令行、禁用USB DFU,减少信息暴露。

实操中建议在产线增加一道“安全封测”工序:烧录固件 → 写入设备证书 → 熔断调试接口 → 回读确认熔断状态。回读确认是关键,因为熔断失败在批量生产中并不罕见。

四、物理防拆与侧信道初步认知

物理防拆包括:机箱开盖检测开关、防拆标签、灌封胶、屏蔽罩,以及检测到开盖后触发密钥擦除。设计要点是擦除动作要由硬件或安全芯片独立完成,不能依赖可能已被控制的主CPU。

侧信道攻击则利用设备运算时的功耗、电磁辐射或时间差异推断密钥。对网关而言,最现实的威胁是简单功耗分析(SPA)和计时攻击。防护思路包括:密码算法使用常数时间实现、关键运算加入随机掩码、在安全芯片内完成私钥运算而不暴露给主控。初学者应建立的基本判断是:只要私钥运算发生在可被物理接触的通用CPU上,就存在侧信道风险;把它移入SE/TPM是成本最低的缓解手段。

工业IoT网关硬件安全信任链与防护面 信任链(自底向上) 不可变ROM / 根公钥 eFuse固化,不可改写 BL1 / BL2 引导 ECDSA-P256 + SHA-256校验 内核 / 根文件系统 dm-verity / FIT镜像 应用容器 / 业务进程 签名镜像,只读挂载 TPM / SE 密钥解封 PCR绑定,度量不符则拒绝 失败 → 停止启动 / 进入恢复模式 物理与接口防护面 调试接口防护 JTAG / SWD / UART / USB DFU eFuse熔断 · 认证调试 关闭命令行 · 隐藏测试点 物理防拆 开盖检测开关 · 防拆标签 灌封胶 · 屏蔽罩 触发密钥擦除(硬件独立) 侧信道风险与缓解 功耗分析(SPA/DPA) · 电磁辐射 · 计时差异 常数时间实现 · 随机掩码 · 私钥运算移入SE/TPM 判断:私钥在通用CPU上运算 = 存在侧信道暴露面 典型物理攻击路径 开盖 → 接JTAG → 读Flash/内存 → 提取密钥或篡改固件 防护闭环:熔断调试 + 安全启动 + 密钥擦除 + 安全芯片 任一环节缺失,信任链即被击穿 保护 攻击入口

五、把五项机制串成一条可验证的闭环

硬件安全的价值不在于单点堆砌,而在于形成闭环:安全芯片提供不可导出的密钥与度量能力;安全启动用这些能力逐级校验固件;调试接口防护切断最直接的物理入口;物理防拆在机箱被打开时触发密钥擦除;侧信道防护则确保密钥运算过程本身不泄露信息。任何一环缺失,攻击者都可能从最薄弱处突破。

落地时建议按以下顺序推进:先固化根公钥并启用安全启动,再熔断调试接口,随后接入TPM/SE完成密钥托管,最后补充防拆检测与侧信道评估。每完成一步,都应在实验室用“篡改镜像、短接调试口、模拟开盖”三类测试验证防护是否真正生效,而不是仅依赖配置项的存在。