设备身份与信任根:设备唯一标识、HSM 与 RoT 的建立

设备入网的第一步,不是连 Wi-Fi,也不是发 MQTT 消息。

而是回答一个问题:你是谁?

我见过太多团队,一上来就搞加密通信、搞证书签发,结果设备本身连个唯一的“身份证”都没有。说白了,你连门锁都没装,就开始研究怎么防撬锁了。这不行。

这一章,我们就来聊聊设备身份怎么确立,信任根怎么种下去。这是整个安全体系的基石。

设备唯一标识:每台设备都得有“户口本”

设备唯一标识,英文叫 Device Unique Identity,简称 DUID。它不只是一个序列号那么简单。

我个人的习惯是,把设备标识分成三层来看:

层级 示例 用途 安全要求
物理标识 MAC 地址、芯片 ID 硬件识别、产线管理 可读,但不可信
逻辑标识 设备序列号、IMEI 业务系统关联 需防篡改
密码学标识 公钥哈希、证书 DN 身份认证、签名验签 不可伪造

你看,物理标识和逻辑标识,更多是给“人”看的。真正给“机器”看的,是密码学标识。

核心原则:设备唯一标识必须满足“三不”——不重复、不篡改、不伪造。

产线上烧录的序列号,如果只是写在 Flash 里,那跟没写一样。我在一个智能门锁项目里就吃过这个亏——攻击者直接读 Flash 改了序列号,冒充另一台设备入了网。后来我们强制把标识写进一次性可编程(OTP)区域,才算堵住这个洞。

硬件安全模块(HSM):把钥匙锁进保险柜

有了身份,还得有“钥匙”。这把钥匙就是私钥。

私钥放哪儿?放 Flash?放文件系统?

我建议你千万别这么干。私钥一旦被读出来,整个设备身份就废了。

硬件安全模块(HSM),说白了就是一个专门干“密码活”的保险柜。它可以是独立的芯片,也可以是 SoC 内部的一个安全区域。

HSM 能做什么?

  • 安全存储:私钥永远不出芯片,只进不出。
  • 密码运算:签名、加密、解密都在内部完成。
  • 防物理攻击:有屏蔽层、光敏检测、温度检测,一拆就自毁。
  • 真随机数生成:基于物理噪声,不是伪随机。

选型小建议:如果你的设备成本敏感,至少选带安全子系统的 MCU,比如 NXP 的 LPC55xx 系列、ST 的 STM32L5 系列。它们内置了类似 HSM 的“安全岛”,虽然性能不如独立 HSM,但比裸奔强太多。

我曾经在一个工业网关项目里,用了独立的 Microchip ATECC608A 安全芯片。那玩意儿成本不到两块钱,但私钥存储、TLS 握手加速全包了。产线烧录时,密钥对在芯片内部生成,私钥从没离开过芯片。嗯,这才是正确的做法。

信任根(RoT):信任链的起点

信任根,Root of Trust,简称 RoT。它不是一个具体的硬件,而是一个不可篡改的信任锚点。

你想想看,设备启动时,谁先跑?Bootloader。Bootloader 怎么证明自己是“真”的?它需要被签名。那签名用的公钥放哪儿?

答案就是:放在 RoT 里。

信任根的三要素

  1. 不可变性:RoT 的代码和数据在出厂后不能改。通常放在 ROM 或 OTP 里。
  2. 可验证性:RoT 能验证下一级固件的签名。
  3. 最小化:RoT 的代码量越小越好。代码越少,漏洞越少。

注意:不要把 RoT 和 HSM 搞混了。

HSM 是“执行者”,负责安全存储和密码运算。

RoT 是“裁判员”,负责决定谁可信。

两者可以集成在一起,但概念上要分清楚。

信任链的建立过程

设备上电后,信任链是这样一级一级建立起来的:

  1. RoT 启动:芯片上电,CPU 从 ROM 执行 RoT 代码。
  2. 验证 Bootloader:RoT 读取 Bootloader 的签名,用内置公钥验签。通过则跳转,不通过则死循环。
  3. 验证 OS/固件:Bootloader 验证主固件的签名。
  4. 验证应用:OS 或固件验证应用层的签名。
  5. 运行时验证:应用层通过 HSM 完成网络身份认证。

每一步,都建立在上一步的信任之上。这就是“信任链”。

一句话总结:信任根是“第一把锁”,HSM 是“保险柜”,设备唯一标识是“户口本”。三者缺一不可。

核心逻辑关系图

下面这张图,把设备身份与信任根的核心逻辑串起来了。我建议你多看两眼,理解每个模块之间的依赖关系。

设备身份与信任根核心逻辑 信任根 (RoT) ROM / OTP 不可篡改 安全 Bootloader 验签后跳转 主固件 / OS 运行时安全策略 硬件安全模块 (HSM) 私钥存储 / 签名 / 加密 设备唯一标识 公钥哈希 / 证书 DN 绑定 信任链:RoT → Bootloader → 固件 → HSM → 网络身份认证 每一级验证下一级签名,私钥始终不出 HSM

实践中的避坑指南

理论说完了,聊点实际的。我在几个项目里踩过的坑,分享给你:

  • 产线烧录环节:密钥对生成一定要在安全芯片内部完成。我曾经见过一个团队,在 PC 上生成密钥对,然后通过 I2C 写进安全芯片。结果中间被人截获了私钥。嗯,那批货全废了。
  • 证书过期问题:设备证书有有效期。如果设备部署在偏远地区,一装就是五年,证书过期了怎么办?我建议你设备端要预置证书续期逻辑,或者用短证书 + 定期轮换的方案。
  • RoT 的更新:RoT 原则上不能更新。但如果发现 RoT 有漏洞呢?我的做法是:在 RoT 里留一个“物理触发”的更新入口,比如通过 JTAG 加物理跳线。平时锁死,只有返厂才能更新。
  • 唯一标识的冲突:多供应商采购时,不同厂家的芯片 ID 可能重复。我建议你在设备标识里加上厂商代码和批次号,确保全局唯一。

一个小技巧:在设备入网的第一步,让设备用 HSM 签名一个随机挑战值(Challenge),服务器验签通过后才允许注册。这样能有效防止“克隆设备”入网。

总结一下

设备身份与信任根,是整个物联网安全体系的“地基”。

没有唯一标识,设备就是“黑户”。没有 HSM,私钥就是“裸奔”。没有 RoT,信任链就是“空中楼阁”。

这三样东西,缺一个,你的安全体系就站不住。