2. FDO协议栈与核心角色
FDO(FIDO Device Onboard)之所以能实现“设备开箱即用、零接触入网”,关键不在于某一个单点技术,而在于它把入网这件事拆成了几个职责清晰、彼此制衡的角色,并让这些角色通过一套标准化的协议栈完成协作。理解 FDO,首先要理解“谁在什么时候做什么、凭什么做、做完之后谁信任谁”。本节围绕协议栈分层与五类核心角色展开,把抽象的信任关系落到可操作的交互上。
一、协议栈分层:从传输到信任
FDO 协议栈可以自上而下理解为四层。最上层是业务语义层,定义设备所有权凭证(Ownership Voucher)、设备凭证(Device Credential)等对象的含义;其下是消息与状态机层,规定 TO0/TO1/TO2 三类消息的字段、顺序与状态迁移;再往下是安全与密码层,负责密钥交换、签名验证、会话加密,通常基于 ECDSA、ECDH 与 AES 等算法;最底层是传输层,FDO 消息可承载于 HTTP/HTTPS、CoAP 或厂商自定义通道之上。分层带来的好处是:更换传输方式不影响信任模型,升级密码套件不影响业务语义。
需要特别强调的是,FDO 的信任不是“设备信任云”这么简单,而是基于凭证的定向信任:设备只信任由特定制造端签发、且被特定所有者接受的凭证。这决定了后面所有角色的职责边界。
二、五类核心角色的职责
设备(Device)是待入网的终端,例如智能电表、工业网关、摄像头。它出厂时内置设备密钥对与制造端公钥,负责发起 TO0 请求、响应 TO1、完成 TO2 并最终获得所有者下发的凭证与配置。设备的职责是“证明我是我”,而不是“决定我归谁”。
制造端(Manufacturer, 简称 MFG)在产线阶段为设备生成或注入设备密钥,签发设备凭证,并生成初始的所有权凭证。制造端还运行制造端服务(Manufacturing Service),负责把设备的所有权凭证交给初始化服务。制造端是信任链的起点,但它不参与设备运行期的入网决策。
初始化服务(Initialization Service, 简称 INIT)是 FDO 的“介绍人”。它接收制造端提交的所有权凭证,并在设备发起 TO0 时,把设备引导到正确的所有者。初始化服务本身不拥有设备,只负责“牵线”。它通常由设备厂商或第三方托管运营。
所有者(Owner)是设备的实际归属方,例如电力公司、工厂 IT 部门。所有者运行所有者服务(Owner Service),负责接收 TO0、响应 TO1、执行 TO2,最终向设备下发所有权凭证和运行配置。所有者是入网结果的最终决定者,也是设备后续被谁管理的答案。
云服务(Cloud Service)在 FDO 中通常作为所有者的运行环境或凭证托管方存在,例如云上的 IoT 平台。它可能承担所有者服务的部署、凭证存储、设备注册表维护等职责。云服务不是 FDO 协议规定的强制角色,但在实际工程中往往是所有者能力的载体。
三、角色交互关系:TO0、TO1、TO2 的接力
五类角色的交互可以概括为一条“凭证接力链”。制造端把所有权凭证交给初始化服务;设备向初始化服务发起 TO0,声明“我要入网”;初始化服务根据凭证把设备指向所有者;设备向所有者发起 TO1,所有者验证后返回 TO1 响应;设备再发起 TO2,双方完成密钥交换、凭证下发与配置写入。整个过程设备不需要预先知道所有者地址,所有者也不需要预先知道设备 IP。
下面这张图把协议栈分层与角色交互放在同一张视图中,便于对照理解“哪一层在承载哪一段信任”。
四、一次典型入网的参数与判断
为了把角色职责落到可观察的层面,下面给出一个教学示例(参数为合理假设,非实测数据)。某工业网关出厂时,制造端为其生成 P-256 设备密钥对,并签发设备凭证,凭证中记录设备序列号 GW-2024-0001 与制造端标识 MFG-A。初始化服务收到该凭证后,将其与所有者 Owner-X 绑定。设备上电后向初始化服务发起 TO0,携带设备凭证摘要;初始化服务校验摘要与绑定关系,若匹配则返回所有者地址 https://owner-x.example.com/fdo。
设备随后向所有者发起 TO1,所有者检查设备凭证是否由可信制造端签发、是否在有效期内、是否已被其他所有者占用。三项均通过后,返回 TO1 响应,进入 TO2。TO2 阶段双方完成 ECDH 密钥交换,所有者下发所有权凭证与运行配置(如 MQTT 地址、证书、采样周期)。设备写入配置后返回完成消息,所有者将其登记为“已入网”。
判断入网是否成功,可以观察三个信号:设备侧是否收到 TO2 完成响应并持久化凭证;所有者侧注册表是否出现该设备且状态为已授权;设备后续能否用新凭证与云服务建立加密连接。若 TO0 阶段返回“凭证未绑定”,说明初始化服务尚未收到制造端提交的凭证;若 TO1 阶段返回“凭证无效”,则需检查制造端签名与设备密钥是否匹配。
五、常见误区与工程提醒
第一个误区是把初始化服务当成所有者。初始化服务只做引导,不持有设备所有权凭证的最终授权;设备最终信任的是所有者。第二个误区是认为云服务就是所有者。云服务可以承载所有者服务,但 FDO 协议中所有者是逻辑角色,云只是部署形态。第三个误区是忽略制造端凭证的有效期与吊销。若制造端凭证过期,后续 TO1 验证会失败,因此产线阶段需要规划凭证生命周期。
工程上,建议把五类角色的网络可达性、时钟同步与证书链分别检查。TO0 依赖设备能访问初始化服务,TO1/TO2 依赖设备能访问所有者;时间偏差过大会导致凭证有效期判断异常;证书链不完整会导致签名验证失败。把这些检查点与角色对应起来,排障时就能快速定位是“谁”的问题,而不是笼统地认为“FDO 不通”。