4、身份认证机制:设备身份、平台身份与身份绑定

身份认证,说白了就是回答一个问题:「你是谁?」

在远程证明的场景里,这个问题没那么简单。你想想看,一个设备要证明自己是合法的,它得拿出什么凭证?是芯片里烧录的一个序列号,还是某个硬件模块生成的签名?

我个人习惯把设备身份分成两层来看:一层是设备身份,另一层是平台身份。这两者经常被混为一谈,但实际落地时差别很大。

4.1 设备身份(Device Identity)

设备身份,就是设备出厂时被赋予的一个「身份证」。它通常是唯一的、不可篡改的。

我在项目中遇到过不少厂商,直接把 Wi-Fi MAC 地址当设备身份用。嗯,这其实很危险——MAC 地址是可以伪造的。真正的设备身份,应该绑定在硬件层面。

设备身份的常见载体:

  • 唯一设备标识符(UDID):芯片出厂时烧录的 128 位随机数,不可更改。
  • 硬件安全模块(HSM):在安全芯片内部生成并存储的密钥对,私钥永远不离开芯片。
  • 一次性可编程存储器(OTP):芯片内部的一块只写一次的区域,用于存储证书或哈希值。

设备身份的核心要求就两条:唯一性和抗篡改性。缺一不可。

4.2 平台身份(Platform Identity)

平台身份比设备身份高一个层次。它描述的是「这个设备当前运行的环境是否可信」。

举个例子:一台手机,它的设备身份可能是高通芯片里的序列号。但平台身份呢?它要证明这台手机的 Bootloader 没被解锁、系统分区没被篡改、内核是官方签名的。

说白了,平台身份是动态的。它依赖于信任链的度量结果。

对比维度 设备身份 平台身份
生命周期 出厂即固定,终身不变 每次启动时重新建立
存储位置 OTP、安全芯片内部 TPM 平台配置寄存器(PCR)
证明方式 用私钥签名一个挑战值 用 AIK 签名 PCR 度量值
抗伪造能力 高(硬件绑定) 中高(依赖信任链完整性)

我记得有一次调试一个 IoT 网关,设备身份验证通过了,但平台身份始终报错。查了两天才发现,是 UEFI 安全启动被意外关闭了。你看,设备身份没问题,但平台已经不可信了。

4.3 身份绑定与认证协议

有了设备身份和平台身份,接下来要解决一个问题:怎么把它们绑定在一起,并且让远程验证方相信?

这就涉及到身份绑定协议。常见的做法是:

  1. 设备身份注册:设备在首次联网时,用设备私钥签名一个注册请求,服务器记录设备公钥。
  2. 平台身份证明:设备用 AIK(平台身份认证密钥)签名当前的 PCR 值,证明平台状态。
  3. 绑定凭证生成:服务器将设备身份和平台身份绑定,生成一个联合凭证(如 X.509 证书),下发给设备。
  4. 后续认证:设备每次通信时,出示这个联合凭证,服务器验证签名链。

避坑指南:我曾经在一个项目里踩过坑——设备身份和平台身份用了两套完全独立的密钥体系,结果验证方需要查两次数据库,延迟直接翻倍。后来我们改用联合证书,把两个身份绑定在一个凭证里,性能提升很明显。

4.4 核心认证协议对比

目前主流的身份认证协议有这么几种,我简单列一下它们的差异:

协议 适用场景 优点 缺点
TPM 2.0 远程证明 PC、服务器、网关 标准化程度高,生态成熟 实现复杂,需要 TPM 芯片
DICE(设备标识组合引擎) IoT 设备、嵌入式系统 轻量级,适合资源受限设备 需要硬件支持,灵活性较低
IEEE 802.1AR 网络设备、交换机 与网络层无缝集成 仅适用于网络设备
FIDO 2.0 用户认证、移动设备 用户体验好,支持生物识别 偏重用户身份,设备身份较弱

我个人比较推荐 DICE 方案,尤其是做 IoT 的朋友。它把设备身份和平台身份在硬件启动阶段就绑定好了,后面不用再折腾复杂的协议栈。

4.5 身份认证的完整流程

下面这张图,是我自己画的一个身份认证流程。它把设备身份、平台身份和绑定协议串在了一起。

设备身份与平台身份认证流程 设备身份与平台身份认证流程 设备身份 硬件绑定密钥对 平台身份 AIK + PCR 度量值 身份绑定 联合凭证生成 签名 度量值 远程验证方 验证签名链 联合凭证 挑战-响应 Nonce + 签名 发送挑战 返回签名响应 关键说明 1. 设备身份提供硬件绑定的签名能力,确保设备不可伪造。 2. 平台身份通过 AIK 签名 PCR 值,证明当前运行环境可信。 3. 身份绑定将两者合并为联合凭证,验证方只需一次验证即可确认设备和平台均可信。

注意:身份绑定不是一次性的。设备固件升级、系统更新、硬件更换后,平台身份会发生变化,需要重新执行绑定流程。我曾经见过一个团队,设备升级后忘了重新绑定,结果所有设备都被远程验证方判定为不可信,运维同学差点崩溃。

4.6 小结

身份认证机制,是远程证明的基石。设备身份解决「你是谁」的问题,平台身份解决「你当前是否可信」的问题,身份绑定协议把两者拧在一起。

选型的时候,我建议你根据设备的硬件能力来定。有 TPM 的,走 TPM 2.0 远程证明;资源受限的,用 DICE;网络设备,考虑 802.1AR。别盲目追求高大上的方案,适合的才是最好的。