证明

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

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

  • 该设备由已认证的制造商制造。
  • 该设备是正品。
  • 该设备已通过 Matter 合规性测试。

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

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

设备证明 PKI

DAC 是 X.509 v3 证书。ITU-T 于 1988 年发布了第一个版本的 X.509。Matter使用的具有公钥基础架构证书和 证书吊销列表 (CRL) 的 X.509 v3 由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) 借助 CDMatter 设备 可以证明其符合 Matter 协议。 每当 Matter 认证流程完成时, Alliance都会为设备类型创建一个 CD ,以便供应商将其包含在 固件中。CD 除其他信息外,还包括:
  • VID
  • PID(一个或多个)
  • 服务器类别 ID
  • 客户端类别 ID
  • 安全级别
  • 安全信息
  • 认证类型(开发、临时或正式)
  • 签名
固件信息(可选) 固件信息 包含 CD 版本号以及固件中一个或多个组件的摘要,例如操作系统、文件系统、引导加载程序。摘要可以是软件组件的哈希值,也可以是软件组件的已签名清单的哈希值。

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

固件信息是证明流程中的可选元素,适用于供应商具有处理证明密钥对的安全启动环境的情况。
证明信息 从被调试器发送到调试器的消息。证明信息结合了包含证明元素 的 TLV 和证明签名
证明元素 这是一个包含以下内容的 TLV:

  • 认证声明
  • 时间戳
  • 证明 Nonce
  • 固件信息(可选)
  • 供应商特定信息(可选)
证明质询 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 验证。