2. Thread网络设备硬件安全基础

Thread设备通常以低功耗、长期无人值守的方式部署在家庭、楼宇和工业现场,一旦设备被物理接触或固件被篡改,攻击者就可能伪造节点身份、窃取网络密钥,甚至以合法设备身份长期潜伏。因此,硬件安全并不是软件安全之外的附加项,而是Thread设备信任链的起点。本章围绕安全芯片选型、可信平台模块、安全启动链、硬件调试接口保护和物理攻击防护五个方面展开,重点说明“选什么、怎么接、如何验”的工程判断方法。

一、安全芯片选型:先明确威胁模型,再谈型号

安全芯片(Secure Element,SE)或安全微控制器,本质上是把密钥存储、密码运算和访问控制封装在独立硬件边界内。选型时不应先看型号,而应先回答三个问题:设备会被谁接触?密钥需要保存多久?单台设备的成本上限是多少?

对于Thread终端设备,常见需求包括:保存Thread网络主密钥、设备身份私钥、DTLS会话密钥;支持ECDSA P-256或Ed25519签名;支持AES-128-CCM*加密;具备真随机数发生器(TRNG);提供安全启动和密钥派生能力。若设备部署在可被拆机的场景,应优先选择带主动屏蔽层、电压/频率/温度异常检测的芯片;若仅需防远程提取,则带安全存储和访问控制的低成本SE即可。

选型时可参考以下判断维度:

  • 认证等级:是否通过CC EAL4+、FIPS 140-3或SESIP等认证,认证等级越高,抗物理攻击能力通常越强。
  • 接口与集成:I²C、SPI还是ISO 7816?是否支持与Thread SoC的Secure Boot联动?
  • 密钥容量:至少预留4~8个密钥槽,用于设备身份、网络密钥、固件签名验证和未来轮换。
  • 功耗与寿命:Thread设备常靠电池运行,安全芯片的待机电流和擦写次数需与设备寿命匹配。

例如,某低功耗Thread传感器选用带I²C接口的SE,待机电流约0.5 µA,支持P-256和AES-128,密钥槽8个,成本约0.8美元。该配置适合家庭环境;若用于工业现场,则应升级为带主动屏蔽和侧信道防护的型号,成本可能上升至3~5美元。选型的核心不是“越贵越好”,而是让安全能力与威胁模型匹配。

二、可信平台模块:把信任根固定在硬件中

可信平台模块(TPM)或可信执行环境(TEE)在Thread设备中承担“信任根”的角色。与普通SE相比,TPM更强调平台状态度量、密钥层级和远程证明。对于Thread边界路由器或网关,TPM可用于保存设备身份密钥、度量启动过程,并向Thread网络中的其他节点证明自身可信。

实际集成时,TPM通常通过SPI或I²C与主控连接。上电后,主控首先读取TPM中的设备证书和背书密钥(EK),再逐级度量BootROM、引导加载程序和固件。度量值写入TPM的PCR寄存器,后续可通过Quote操作生成签名证明。若度量值与预期基线不一致,设备应拒绝加入Thread网络或进入受限模式。

需要注意的是,TPM本身并不“自动安全”。如果主控与TPM之间的总线可被探针访问,攻击者仍可能窃听或注入。因此,TPM应尽量靠近主控布置,总线走线短且避免测试点外露;对高安全场景,可选用集成TPM的SoC,减少外部总线暴露。

三、安全启动链:从不可变BootROM到应用固件

安全启动链的目标是确保每一级代码在执行前都经过上一级验证。Thread设备的典型启动链为:BootROM → 引导加载程序 → 安全固件 → Thread协议栈 → 应用。每一级使用非对称签名验证下一级镜像,验证失败则停止启动或回退到已知安全版本。

实现时,BootROM中固化公钥哈希,引导加载程序镜像由私钥签名;引导加载程序验证安全固件时,使用同一公钥或由BootROM派生的子密钥。为支持固件升级,可引入密钥版本号和防回滚计数器,防止攻击者刷入旧版有漏洞固件。

下面给出一个简化的安全启动验证流程示意,重点展示各级镜像、验证关系和失败分支:

Thread设备安全启动链与验证关系 BootROM 固化公钥哈希 引导加载程序 签名镜像 + 版本号 安全固件 Thread协议栈 验证签名 验证签名 验证通过 继续启动下一级 验证失败 停止启动 / 回退 关键工程约束 • BootROM公钥哈希必须固化,不可通过外部接口改写 • 每级镜像签名使用独立密钥或派生密钥,避免单点泄露 • 引入防回滚计数器,拒绝版本号低于当前值的固件 • 验证失败时默认停止启动,仅在受控条件下允许恢复模式

在实际项目中,安全启动的调试往往比实现更耗时。建议在开发阶段保留一条受认证的恢复路径,例如通过签名后的恢复镜像重新烧录,但该路径必须要求物理按键组合或一次性口令,避免成为后门。

四、硬件调试接口保护:关闭、鉴权与物理破坏

JTAG、SWD、UART等调试接口是研发阶段必不可少的工具,但量产设备若保留开放调试口,攻击者可直接读取内存、修改固件或提取密钥。保护策略通常分三层:

  1. 熔断关闭:量产时通过一次性可编程(OTP)熔断器永久禁用JTAG/SWD。优点是彻底,缺点是失去返修调试能力。
  2. 鉴权访问:保留调试口,但要求输入由安全芯片生成的挑战响应或证书。适用于需要现场维护的设备。
  3. 物理破坏:在调试焊盘下方布置易断走线,拆机或探针接触时触发密钥擦除。

以某Thread模组为例,量产固件中设置OTP标志位DEBUG_LOCK=1,上电后BootROM检测到该位即关闭SWD;同时UART仅输出只读日志,不接受命令。若需返修,则通过安全芯片验证维修证书后临时解锁,解锁次数记录在单调计数器中。

五、物理攻击防护:从侧信道到拆机响应

物理攻击包括侧信道分析、故障注入、微探针和拆机重写等。Thread设备通常成本敏感,不可能全部采用高端防护,但可按风险分级配置:

攻击类型典型手段低成本防护高成本防护
侧信道功耗/电磁分析密钥运算随机化、掩码双轨逻辑、专用防护库
故障注入电压毛刺、时钟毛刺电压/时钟监测复位传感器冗余、自检
微探针直接探测总线总线加密、走线埋层主动屏蔽层
拆机开盖、重焊防拆开关、壳体检测网格屏蔽、密钥擦除

工程上,最有效的低成本措施往往是“检测到异常即擦除密钥”。例如,安全芯片检测到外壳被打开、电压低于1.8 V或温度超过85 ℃时,立即清除密钥槽并锁定启动。该策略需要与设备可用性权衡:误触发可能导致现场设备批量失效,因此阈值应留有足够余量,并在实验室进行高低温、跌落和静电测试。

实践建议:在Thread设备硬件安全设计中,优先保证“密钥不可读出、固件不可篡改、调试口不可滥用”三条底线。安全芯片选型、TPM集成、安全启动、调试保护和物理防护应作为整体方案评审,而不是分别选型后简单拼接。

综上,Thread设备的硬件安全基础可以概括为:用安全芯片或TPM建立信任根,用安全启动链保证代码完整性,用调试接口保护和物理防护提高攻击成本。三者相互支撑,缺一不可。实际项目中,应根据设备部署环境、成本预算和生命周期,选择匹配的防护等级,并通过启动日志、度量值和异常擦除记录验证防护是否真正生效。