证明

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

在调试过程中,经过认证的设备需要进行自我证明。换句话说,它需要证明自己是正品,并且是自己声称的那样。因此,所有 Matter 设备都具有凭据,其中包括证明密钥对和关联的证书链。设备证明证书 (DAC) 是此链的一部分。当受调试设备向调试器呈现 DAC 时,调试器将证明:

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

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

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

设备认证 PKI

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

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

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

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

DAC 的签名会根据 Product Attestation Intermediate Certificate (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
  • 安全级别
  • 安全性信息
  • 认证类型(开发、临时或正式)
  • 签名
固件信息(可选) <0x0 固件信息包含 CD 版本号和固件中组件(例如操作系统、文件系统、启动加载程序)的一个或多个摘要。摘要可以是软件组件的哈希,也可以是软件组件的签名清单的哈希。

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

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

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

证明程序

委托人负责证明受托人。它会执行以下步骤:

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