Device Attestation
(DA) 是验证 Matter 设备是否经过认证并由连接标准联盟成员制造商生产的过程。 目标是确保没有假冒设备加入 Matter 网络,并且被检查的设备是正品。 设备证明过程基于信任链概念,对于所有 Matter 设备都是必需的。
进行设备证明的阶段
设备证明验证过程在调试期间进行。 在commissioner将新设备预配到 Matter fabric之前,它必须检查设备的证书并获取有关它的信息。 为此 commissioner
首先使用Passcode-Authenticated Session Establishment
(PASE)与 commissionee
建立加密会话,以确保通信的机密性再继续验证设备证书。
Device Attestation certificates (DAC)
在设备证明过程中,commissioner会检查设备上的证书等。 这些证书形成了一个相互依赖的链条。
所有证书均来自 Matter 证书颁发机构(CA)。 Matter 证书颁发机构政策的主要来源是CSA的测试和认证监督委员会(TCOC),该委员会根据连接标准联盟(CSA)认证政策制定这些政策.
CSA 将产品认证机构 (PAA) 的状态分配给选定的组织,这些组织将成为设备认证过程的根证书颁发机构。 每个 PAA 都拥有一个密钥对,该密钥对由私钥和公钥以及自签名 PAA 证书组成。 PAA 使用私钥对产品认证中间体 (PAI) 的证书进行签名,PAI 是直接负责颁发设备认证证书(DAC) 的实体。 每个 PAI 证书都是由 PAI 以证书签名请求的形式创建的,并提交给 PAA,PAA使用其私钥进行认证。
PAI证书位于认证链的中间层。 它还包括分配的私钥和公钥,并由它源自的更高级别的 PAA 证书签名。 PAI 私钥用于对设备证明证书 (DAC) 进行签名。 虽然单个 PAI 只能颁发属于单个设备供应商的 DAC,但单个设备供应商可以操作多个 PAI,例如,为不同的产品系列颁发证书。
Public Key Infrastructure (PKI)
PAA、PAI 和 DAC 证书构成公钥基础设施(PKI
),这是一种安全结构,其中实体的真实性由另一个实体确认,每个此类证书链都以其中一个 PAA 证书结束。 证书的所有权是使用关联的私钥来证明的。
设备证明数据
制造商需要从 CSA 获取以下信息:
Vendor ID
(VID) - 标识制造商的唯一 16 位数字。 当制造商成为连接标准联盟成员之一时,可以从 CSA 获得.Certification Declaration
(CD) - CSA 为每种设备类型创建的加密文档,用于确认给定类型的设备是否经过认证。 从CSA获取CD之前,您可以在调试期间使用通用的CD进行测试。
制造商获得(Certification Declaration
)认证声明后,可以将其提供给具有新固件版本的设备,例如使用设备固件升级功能或直接在制造过程中提供。 另一方面,VID 是用于生成工厂数据的数据元素之一.
除了 VID,制造商还需要分配一个唯一的 16 位Product ID (PID) 编号来识别其产品。 最后,工厂数据必须包括 PAI 和 DAC 证书,以及制造商必须事先生成的 DAC 私钥。
如何生成证书
若要为工厂数据生成证书,可以使用以下选项之一。
借助联盟成员的 PKI 生成 DAC
制造商可以向作为CSA 成员的 PKI 提供商之一请求 PAI 和 DAC。 这样,制造商就不必设置自己的证书颁发机构链,并且可以使用符合 PKI 认证策略的受信任认证源。 PKI 提供商的 PAA 证书不包含任何特定的 VID,这使得提供商可以为多个制造商提供服务。 从 PKI 提供商的 PAA 证书生成的制造商的 PAI 证书具有制造商的 VID,可用于颁发和签署 DAC。
使用自己的 PKI 生成 DAC
制造商可以设置自己的公钥基础设施,以使用自己现有的 PKI 生成 PAI 和 DAC 证书。 Matter Certification Policy 文档中概述了设置自己的 PKI 的规则。 通过设置自己的 PKI,制造商可以获取以下证书:
PAA
- 前提是制造商在 DCL 中具有根证书颁发机构。 PAA 可以嵌入 VID(VID-scoped PAA)或 (Non-Vendor Scoped PAA)。PAI
- 前提是制造商拥有足够且安全的逻辑链,可以为大量设备提供 DAC,因为每个设备都有一个唯一的 DAC。
借助平台商一起生成 DAC
该解决方案使设备制造商能够使用内置 DAC 附带的 SoC 开发产品。 在这种情况下,制造商的 VID 和 PID 将与 DAC 的 VID 和 PID 不同。
生成设备的工厂数据
制造商获得 VID、PID、PAI 和 DAC 后,可以将它们收集到制造过程中写入设备的工厂数据中。 设备将出厂数据存储在出厂数据分区中,与固件分开。 这是因为每个设备实例的出厂数据都不同,而整个设备系列的固件保持不变。 使用单独的分区允许制造商在设备启动时应用写保护。 为此目的专用一个单独的分区可以避免在设备的最终应用程序发生更改时重新认证。
Device Attestation 数据摘要
获取所有必需的设备证明数据后,制造商的设备将包含其唯一的以下信息:
-
Device Attestation Certificate
设备证明证书 (DAC) 用于设备证明过程,并对fabric 执行调试。 DAC 是 DER 编码的符合 X.509v3 的证书,如 RFC 5280 中所定义。 它是使用产品证明中间证书创建的,包含有关给定设备的供应商 ID 和产品 ID 的信息。 它在工厂数据中提供。
-
DAC的私钥
与 DAC 关联的私钥,对设备是唯一的。 必须保护此密钥不被泄露,并且在将其作为工厂数据的一部分生成时必须保证最大的安全性。
-
Product Attestation Intermediate certificate
(PAI)产品认证中间 (PAI) 证书是由产品认证机构 (PAA) 颁发的一种文件。 它用于创建设备的DAC,并在工厂数据中提供。
-
验证程序
验证程序本身不是 DAC 的一部分,尽管它包含在工厂数据中。
-
Certification Declaration
(CD)这是 CSA 为每种设备类型创建的加密文档,用于确认给定类型的设备是否经过认证。 它包含设备证明(DA)所需的一系列信息,包括供应商 ID、证书 ID、证书类型、与 DAC 相关的可选信息等。 CD 包含在commissionee在设备证明过程中发送的证明信息包中.
CD 信息不位于工厂数据中,而是位于应用程序本身中。 这是因为在重新认证新软件版本后,CD 会发生变化。 执行设备软件更新时,新 CD 将应用于设备。 因此,您可以在固件中配置 CD,并在认证完成后对其进行修改.
Device Attestation 流程
分为以下步骤:
-
commissioner
生成一个随机的 32 字节证明随机数。 -
commissioner
将证明随机数发送给commissionee
,并使用适当的命令请求证明信息。 -
commissionee
使用适当的命令将证明信息包返回给commissioner
。信息主要包含如下:- 认证声明 (CD)
- 证明随机数
- Timestamp
- Optional firmware information
-
commissioner
验证从commissionee
那里收到的信息。 在验证过程中,commissioner会根据设备上包含的信息确认收到的证明信息。 例如,根据 DAC 和基本信息群集中的供应商 ID 审查证明信息数据包中的供应商 ID,根据 DCL 中的条目验证 CD 中的证书 ID,等等。 详细请参见Matter Core Specification 6.2.3.1 (Attestation Validation Information)
。
通过设备证明过程的设备已被验证为正品 Matter 设备。 然后,commissioner可以继续进行 Matter 网络调试的下一阶段。
DAC永远不会从设备中移除,而是保留在设备上以备后用,例如用于调试到新网络上。 它只能通过工厂数据的更改来覆盖。