2. 设备身份模型设计

设备身份模型是设备API身份认证的地基。如果设备身份本身不可信、不可区分或可被伪造,那么后续的令牌签发、权限校验和审计追溯都会失去意义。本节围绕四个相互支撑的概念展开:设备唯一标识回答“它是谁”,设备指纹回答“它是否还是原来那台设备”,硬件信任根回答“它的身份凭什么可信”,身份生命周期与注册流程回答“这个身份从产生到注销如何被管理”。

一、设备唯一标识:身份的命名基础

设备唯一标识(Device Unique Identifier)是设备在身份系统中的主键,用于在令牌签发、策略绑定和审计日志中稳定引用一台设备。它必须满足三个条件:全局唯一、长期稳定、不可猜测。常见的标识来源包括芯片级序列号(如 SoC ID、eFuse ID)、安全元件中的证书主体、以及平台提供的硬件标识符。

实践中不建议直接使用 MAC 地址或磁盘序列号作为唯一标识,原因有三:MAC 可被软件修改,磁盘可更换,且这些值在虚拟化环境中可能重复或缺失。更稳妥的做法是采用“厂商前缀 + 设备型号 + 硬件序列号”的组合,或直接使用安全芯片内不可导出的密钥对公钥指纹作为标识。例如,某工业网关的标识可设计为 GW-ACME-24A7-9F3C1D,其中 GW 表示设备类型,ACME 为厂商代码,24A7 为型号批次,9F3C1D 为芯片唯一序列的截断哈希。这样既保证唯一性,又便于运维人员肉眼识别设备归属。

二、设备指纹:持续验证的辅助维度

设备指纹(Device Fingerprint)不是单一字段,而是一组设备属性的集合,用于在设备运行过程中持续判断“当前请求是否来自同一台设备”。它通常包含硬件特征(CPU 型号、内存容量、安全芯片型号)、软件特征(固件版本、操作系统构建号、已安装组件哈希)以及网络特征(首次注册的接入网段、TLS 指纹等)。

指纹的价值在于检测异常变化。例如,一台设备注册时记录的固件版本为 2.3.1,某次请求中上报为 2.3.1 但 TLS 指纹发生变化,系统可判定为可疑并触发二次验证。需要强调的是,指纹不应作为唯一身份依据,因为固件升级、硬件维修都会导致指纹变化。合理的策略是:唯一标识用于“是谁”,指纹用于“是否可信”,两者结合形成判断。

三、硬件信任根:可信身份的锚点

硬件信任根(Hardware Root of Trust, RoT)是设备身份可信的起点。它通常由安全芯片(如 TPM、TEE、SE)或芯片内不可篡改的密钥存储区实现,具备三个特征:私钥不可导出、启动过程可度量、身份凭证可验证。基于 RoT,设备可以在启动时完成安全启动链校验,并在首次注册时生成由硬件保护的密钥对,私钥永不离开安全区域。

在设备API认证场景中,RoT 的典型用法是:设备使用 RoT 内私钥对注册请求签名,服务端用设备预置的公钥或证书验证签名。这样即使设备操作系统被攻破,攻击者也无法伪造另一台设备的身份,因为私钥无法被复制。对于没有专用安全芯片的设备,可采用软件密钥库加白盒密码或远程证明作为降级方案,但安全强度会明显下降,需要在风险评估中明确标注。

四、身份生命周期与设备注册流程

设备身份不是一次性配置,而是有生命周期的。一个完整的生命周期通常包括:预置身份、首次注册、激活、正常运行、凭证轮换、暂停、注销。每个阶段都有明确的触发条件和状态迁移规则。

首次注册是生命周期中最关键的环节。下面给出一个可参考的注册流程示例,适用于具备安全芯片的物联网设备:

  1. 预置阶段:产线为每台设备写入唯一标识和 RoT 公钥证书,私钥在安全芯片内生成且不可导出。
  2. 首次上电:设备完成安全启动,度量固件哈希,生成设备指纹快照。
  3. 注册请求:设备向注册服务发起请求,携带唯一标识、RoT 证书、指纹快照,并用 RoT 私钥签名。
  4. 服务端验证:注册服务验证证书链、签名有效性、唯一标识是否已注册、指纹是否与预置记录一致。
  5. 签发初始凭证:验证通过后,服务端签发短期设备令牌和长期刷新凭证,绑定设备标识与策略。
  6. 激活确认:设备保存凭证并回执,服务端将设备状态置为“已激活”。

在正常运行阶段,设备使用短期令牌访问 API,令牌过期前用刷新凭证换取新令牌。当检测到指纹异常、令牌泄露或设备退役时,进入暂停或注销状态。注销后,唯一标识进入黑名单,RoT 证书被吊销,防止设备被重新激活。

注册服务应记录每次注册和轮换的审计日志,包括时间、源 IP、指纹哈希和签名验证结果。这些日志是后续排障和取证的关键依据。

五、设计要点与常见误区

在实际设计中,有几个容易踩的坑。第一,把设备指纹当作唯一标识使用,导致固件升级后设备“失联”。第二,唯一标识使用可写字段,被篡改后无法追溯。第三,注册流程缺少防重放机制,攻击者可截获注册请求重复提交。第四,RoT 私钥在产线被导出或备份,失去硬件保护意义。第五,生命周期状态机不完整,设备注销后仍能使用旧令牌访问 API。

合理的做法是:唯一标识与指纹分离,指纹变化触发告警而非直接拒绝;注册请求包含随机数和时间戳,服务端校验时效性;RoT 私钥永不导出,产线只写入公钥证书;生命周期状态机在服务端强制执行,任何状态迁移都需经过策略校验。

设备身份模型:四层结构与注册流程 硬件信任根(RoT) 安全芯片 / TEE / SE 私钥不可导出 安全启动度量 证书链验证 作用:为设备身份提供不可伪造的密码学锚点 设备唯一标识 全局唯一 · 长期稳定 · 不可猜测 GW-ACME-24A7-9F3C1D 设备指纹 硬件特征 · 软件特征 · 网络特征 固件 2.3.1 TLS 指纹哈希 身份生命周期状态机 预置 注册 激活 运行 轮换 注销 状态迁移由服务端策略强制执行,注销后唯一标识进入黑名单 首次注册流程(示例) ① 产线预置 ② 签名注册请求 ③ 服务端验证 ④ 签发凭证 ⑤ 激活确认

上图把设备身份模型的四个层次放在同一视图中:最上层是硬件信任根,提供密码学锚点;中间层是唯一标识与设备指纹,分别承担“命名”和“持续验证”职责;第三层是生命周期状态机,约束身份从预置到注销的迁移路径;最下层是首次注册流程,展示设备如何从产线预置状态进入已激活状态。四层之间是支撑关系,而不是简单的先后顺序。

回到工程实践,建议在设备身份模型设计完成后,用一张检查表逐项确认:唯一标识是否来自不可篡改的硬件源;指纹是否覆盖硬件、软件、网络三个维度;RoT 私钥是否确实不可导出;生命周期状态迁移是否全部在服务端校验;注册请求是否包含防重放随机数;注销后旧令牌是否立即失效。只有这些条件同时满足,设备身份模型才能真正支撑起后续的令牌治理体系。