3. FDO设备身份与凭证体系

FDO(FIDO Device Onboard)自动入网的核心安全前提,是让“设备是谁、设备归谁、设备能信谁”三件事在出厂前就被固化下来,并在入网过程中可被验证。这三件事分别对应设备证书(Device Certificate)、所有权凭证(Ownership Voucher)和信任锚点(Trust Anchor)。它们不是三个独立文件,而是一条从芯片到平台的信任链:密钥在设备内部生成,设备证书由制造商签发,所有权凭证把设备公钥与所有者绑定,信任锚点则让接收方能够验证整条链的真实性。

一、设备身份:密钥对与设备证书

FDO设备身份的基础是非对称密钥对。设备在制造阶段(或首次上电初始化阶段)在安全存储区内生成密钥对,私钥永不离开设备,公钥则用于对外证明身份。推荐使用ECDSA P-256或Ed25519,前者兼容性更好,后者签名更短、性能更优。设备证书由制造商CA签发,典型字段包括:设备序列号、公钥、制造商标识、有效期、签名算法。设备证书的作用不是“证明设备能做什么”,而是“证明这个公钥确实属于某台合法设备”。

实际工程中,设备证书通常采用X.509格式,但FDO并不强制要求完整X.509链,很多实现使用精简的CBOR编码证书以降低资源占用。对于资源受限的MCU设备,证书体积可控制在300~600字节。设备证书的私钥必须存放在安全元件(SE)、TPM或芯片内置OTP区域,不能以明文形式存放在普通Flash中。

二、所有权凭证:设备与所有者的绑定

所有权凭证是FDO最具特色的凭证。它由制造商在设备出厂时生成,核心内容是:设备公钥、设备证书哈希、所有者公钥(Owner Public Key)、制造商标识、凭证签名。所有权凭证的本质是“制造商声明:这台设备的控制权属于持有对应所有者私钥的一方”。

所有权凭证的流转过程是:制造商生成凭证 → 设备首次上电时获取凭证 → 设备将凭证发送给FDO服务器(如RV Server)→ 服务器验证凭证签名 → 服务器根据凭证中的所有者公钥确认设备归属。凭证中还可以包含“设备服务信息”(Device Service Info),例如设备支持的FDO协议版本、可用的网络配置方式等。

一个关键设计点是:所有权凭证中的所有者公钥可以更换。当设备所有权转移时,新所有者用自己的私钥重新签名凭证,旧凭证作废。这实现了设备所有权的可转移性,而不需要设备本身重新烧录。

三、密钥存储:私钥的保护层级

FDO设备涉及多类密钥,保护要求不同:

  • 设备私钥:用于签名设备身份,必须不可导出。推荐存放在SE、TPM 2.0或芯片安全区。若只能存放在普通Flash,至少应使用芯片唯一密钥加密后存储。
  • 所有者私钥:由设备所有者持有,用于签署所有权凭证和后续的TO2(Transfer Ownership 2)协议。通常存放在服务器HSM或管理平台密钥库中,不落在设备上。
  • 会话密钥:TO2过程中协商的临时密钥,用于加密设备与服务器之间的通信。生命周期短,可存放在RAM中,掉电即失。
  • 信任锚点公钥:用于验证制造商签名,可公开存储,但必须防篡改。通常固化在设备固件或安全存储中。

密钥存储的常见错误是:把设备私钥和信任锚点放在同一个可读写区域,导致攻击者可以同时替换两者,从而伪造整条信任链。正确做法是:设备私钥放在只写不可读的安全区,信任锚点放在只读区域,两者物理隔离。

四、信任锚点设计:验证的起点

信任锚点是设备或服务器用来验证对方证书链的根公钥。在FDO中,设备需要验证所有权凭证的制造商签名,服务器需要验证设备证书的制造商签名。因此,信任锚点通常是制造商CA的公钥或中间CA的公钥。

信任锚点的设计要点:

  • 唯一性:每台设备应只信任一个制造商根,避免多根导致验证歧义。
  • 不可变性:信任锚点应在设备出厂时固化,后续不可通过远程方式修改。若必须更新,应使用带版本号的信任锚点列表,并限制更新来源。
  • 可验证性:信任锚点本身应带有自签名或由上级CA签名,便于设备在启动时自检。
  • 最小化:只信任必要的根,不引入无关的第三方CA,减少攻击面。

实际部署中,信任锚点通常以DER编码的X.509证书或CBOR编码的公钥形式存在。设备启动时,先加载信任锚点,再验证设备证书,最后验证所有权凭证。这个顺序不能颠倒,否则攻击者可以用伪造的信任锚点替换真实根。

五、凭证链的验证流程

下面用一张图展示FDO设备身份与凭证体系的完整信任链。图中从设备内部密钥生成开始,经过制造商签发设备证书和所有权凭证,最终到FDO服务器验证并完成入网。图中标注了各环节的输入、输出和验证关系,便于理解凭证如何在设备、制造商和服务器之间流转。

设备侧(Device) 安全存储区 设备私钥(不可导出) 信任锚点(只读) 设备证书 序列号 + 公钥 + 签名 由制造商CA签发 所有权凭证 设备公钥 + 所有者公钥 制造商签名 TO2 会话密钥 临时协商,掉电即失 设备启动自检 加载信任锚点 → 验证证书 制造商侧(Manufacturer) 制造商CA 根证书 + 中间证书 签发设备证书 所有权凭证生成 绑定设备公钥与所有者公钥 附加设备服务信息 凭证签名 使用制造商私钥签名 ECDSA P-256 / Ed25519 凭证交付 写入设备或由设备拉取 信任锚点固化 根公钥写入设备只读区 FDO服务器侧(Server) RV Server 接收所有权凭证 验证制造商签名 信任锚点验证 用制造商根公钥验证 设备证书 + 所有权凭证 所有者身份确认 用所有者公钥验证 确认设备归属 TO2 完成 设备入网,会话密钥建立 结果判定 签名有效 → 允许入网 设备公钥 设备证书 所有权凭证 凭证 + 设备证书 信任链:设备私钥 → 设备证书 → 所有权凭证 → 制造商签名 → 信任锚点验证 → 所有者确认 → TO2入网

六、工程实践中的关键检查点

在真实项目中,FDO凭证体系最容易出问题的环节往往不是密码学本身,而是工程实现。以下检查点建议在设备出厂前逐项确认:

检查项 正确做法 常见错误
设备私钥生成位置 在SE/TPM内部生成,永不导出 在PC上生成后导入,私钥曾暴露
信任锚点存储 只读区域,带版本号 可读写Flash,可被远程替换
所有权凭证签名 制造商私钥在HSM中签名 私钥以文件形式存放在服务器
凭证有效期 设备证书设合理有效期,所有权凭证可长期 所有凭证都设永久有效
密钥隔离 设备私钥与信任锚点物理隔离 两者在同一存储区,可同时篡改

最后需要强调:FDO的凭证体系不是“一次配置就永久有效”。设备所有权转移、制造商CA轮换、信任锚点升级,都需要有明确的流程和回退机制。建议在设备端保留至少两个信任锚点槽位,支持灰度更新;所有权凭证的更换应通过TO2协议在线完成,而不是重新烧录固件。只有把凭证生命周期管理纳入运维体系,FDO自动入网才能真正做到安全、可扩展、可审计。