证明

经过认证的设备是指已通过 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,或者为其所有产品创建一个 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 还包含其他信息:
  • 视频 ID
  • PID(一个或多个)
  • 服务器类别 ID
  • 客户端类别 ID
  • 安全级别
  • 安全信息
  • 认证类型(开发、临时或官方)
  • 签名
固件信息(可选) 固件信息包含 CD 版本号以及固件中组件(例如操作系统、文件系统、引导加载程序)的一个或多个摘要。摘要可以是软件组件的哈希,也可以是软件组件的已签名清单的哈希。

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

当有启动和适用的认证环境时,固件信息是供应商安全密钥中的可选元素。
证明信息 委员会发送给该委员会的邮件。认证信息将包含认证元素认证签名的 TLV 组合在一起。
证明元素 这是一个 TLV,其中包含:

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

认证过程

总监负责为委员会出证。它会执行以下步骤:

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