证明

认证设备是指已通过 Connectivity Standards Alliance (Alliance) Matter 认证流程的设备。

在调试过程中,认证设备需要证明自身。换句话说,它需要证明自己是它声称的产品,并且是正品。因此,所有 Matter 设备都具有包含认证密钥对和关联证书链的凭据。 设备认证证书 (DAC) 是此链的一部分。当正在调试的设备向其调试器提供 DAC 后,调试器将证明:

  • 它是由经过认证的制造商生产的。
  • 是真实设备。
  • 它已通过 Matter 项合规性测试。

在开发阶段,制造商无需完成完整的认证流程即可测试其设备。应明确告知测试人员,设备正在接受测试,尚未获得认证,也尚未发布。制造商进入生产阶段后,配置器的生态系统应强制执行所有认证要求。

认证使用公钥基础架构 (PKI),该基础架构利用根证书授权机构和中间证书,其方式类似于广泛采用的用于 SSL/TLS 的服务器身份验证证书。此过程称为设备认证证书链。

设备认证 PKI

DAC 是 X.509 v3 证书。X.509 的第一个版本由 ITU-T 于 1988 年发布。Matter 使用的 X.509 v3 公钥基础架构证书和证书吊销列表 (CRL) 由 RFC5280 指定。它包含:

  • 公钥
  • 颁发者
  • 主题
  • 证书序列号
  • 有效期,其中到期时间可能不确定
  • 签名

供应商 ID 和产品 ID 是 DAC 主题中 MatterDACName 的属性。

DAC 对于每个设备都是唯一的,并与产品内的唯一认证密钥对相关联。它由与设备制造商关联的 CA 颁发。

DAC 的签名会根据产品认证中间证书 (PAI) 进行验证,该证书也由 PAA 颁发。不过,供应商可以选择为每个产品(特定于 PID)、产品组或其所有产品创建一个 PAI。

在信任链的根部,产品认证机构 (PAA) 证书授权机构 (CA) 公钥会验证 PAI 的签名。请注意,Matter 受信任证书存储区是联合的,并且受调试器信任的 PAA 证书集在中央可信数据库(分布式合规性账本)中维护。在可信集中输入 PAA 需要满足由 Alliance 管理的证书政策。

Matter 认证公钥基础架构
图 1:Matter 认证公钥基础架构

PAI 也是 X.509 v3 证书,其中包含:

  • 公钥
  • 颁发者
  • 主题
  • 证书序列号
  • 有效期,其中到期时间可能不确定
  • 签名

供应商 ID 和产品 ID(可选)是 DAC 主题中 MatterDACName 的属性。

最后,PAA 是链中的根证书,并且是自签名证书。其中包括:

  • 签名
  • 公钥
  • 颁发者
  • 主题
  • 证书序列号
  • 有效期

其他证明文件和消息

认证流程涉及多个文档和消息。以下各项简要概述了其功能和组成。下图有助于理解其层次结构。

证明文件层次结构
图 2:证明文档层次结构
文档 说明
认证声明 (CD) CD 允许 Matter 设备证明其符合 Matter 协议。每当 Matter 认证流程完成时,Alliance 都会为设备类型创建 CD,以便供应商将其包含在固件中。CD 包含以下信息:
  • VID
  • PID (一个或多个)
  • 服务器类别 ID
  • 客户类别 ID
  • 安全级别
  • 安全信息
  • 认证类型(开发、临时或官方)
  • 签名
固件信息(可选) Firmware Information 包含 CD 版本号以及固件中组件(例如操作系统、文件系统、引导加载程序)的一个或多个摘要。摘要可以是软件组件的哈希,也可以是软件组件的已签名清单的哈希。

供应商也可以选择在固件信息中仅包含其组件的“哈希的哈希”,而不是单个哈希的数组。

固件信息是认证流程中的可选元素,适用于供应商具有处理认证密钥对的安全启动环境的情况。
认证信息 从受托人发送给委托人的消息。证明信息结合了包含证明元素的 TLV 和证明签名。
认证元素 这是一个 TLV,其中包含:

  • 证书 声明
  • 时间戳
  • 证明 Nonce
  • 固件信息(可选)
  • 特定于供应商的信息(可选)
证明质询 在 Passcode Authenticated Session Establishment (PASE)/Certificate Authenticated Session Establishment (CASE) 会话建立期间派生的带外质询,用于进一步保护过程并避免重放签名。来自 CASE 会话、PASE 会话或恢复的 CASE 会话。
证明 TBS(待签名) 包含证明元素和证明质询的消息。
认证签名 认证 TBS 的签名,使用设备认证私钥进行签名。

证明程序

委托方负责对受托方进行认证。它会执行以下步骤:

  1. Commissioner 会生成一个随机的 32 字节认证 Nonce。在加密术语中,Nonce(仅使用一次的数字)是在加密过程中生成的随机数,仅使用一次。
  2. Commissioner 将 Nonce 发送到 DUT 并请求认证信息。
  3. DUT 生成认证信息,并使用认证私钥对其进行签名。
  4. Commissioner 从设备中恢复 DAC 和 PAI 证书,并从其 Matter 受信任证书存储区中查找 PAA 证书。
  5. Commissioner 验证认证信息。以下是验证条件:
    • 必须验证 DAC 证书链,包括对 PAI 和 PAA 进行撤消检查。
    • DAC 上的 VID 与 PAI 上的 VID 匹配。
    • 认证签名有效。
    • 设备认证元素中的 Nonce 与 Commissioner 提供的 Nonce 匹配。
    • 证书声明签名有效,使用的是 Alliance 的一个知名证书声明签名密钥。
    • 固件信息(如果存在且受配网器支持)与分布式合规账簿中的条目匹配。
    • 此外,还会在设备基本信息集群、认证声明和 DAC 之间进行额外的 VID/PID 验证。