Attestation
设备认证特指 CSA Matter 认证产品的验证流程,也就是 Matter 设备在 Commissioning 过程需要向 Commissioner 证明其是一个合法的设备。该流程主要是利用设备在生成阶段烧录的 DAC 证书、私钥和和证书链。Commissioner 会在该阶段完成如下验证:
- 是否是认证厂商生产制造;
- 是否是合法设备;
- 是否通过 Matter 兼容性测试;
在 Matter 开发阶段,开发者是可以在没有认证的前提下完成所有功能开发。一旦打算进入量产,那么需要联系 Matter 认证实验室完成认证,认证实验室会将认证状态同步到 DCL,保证 Commissioning 阶段能够完成 DAC 流程。
认证通过 Public Key Infrastructure (PKI) 系统构造根证书、中间证书和 DAC 的三级证书结构。这和我们常使用的 HTTPs 的认证体系是一致的。
I. 设备认证 PKI
DAC 是一个 X.509 v3 证书,包含一个公钥、以及证书撤销集 Certificate Revocation List (CRL),由RFC5280 完整定义,当然还包含如下其他信息。
- Public Key
- Issuer
- Subject
- Certificate Serial Number
- Validity, where expiration can be indeterminate
- Signature
其中 Vendor ID 和 Product ID 包含在 subject 的 MatterDACName
属性。
DAC 由厂商生成的秘钥对来指示其唯一性。
DAC 证明由 PAI (Product Attestation Intermediate Certificate) 签发。而 PAI 又是由 PAA 签发。生成厂商可选一个产品一个 PAI 或者全部产品线使用同一个 PAI。
PAA 作为根证书机构自签完成。值的注意是,这里并没有统一的根证书。而是通过 Distributed Compliance Ledger (DCL) 的区块链技术,将所有的根证书联合到一起使用。
PAI 也是 X.509 v3 证书格式,包含如下字段。
- Public Key
- Issuer
- Subject
- Certificate Serial Number
- Validity, where expiration can be indeterminate
- Signature
Vendor ID 和可选的 Product ID 作为 DAC 的 MatterDACName 属性。
最后,PAA 作为根证书,只需要自签,包含如下字段:
- Signature
- Public Key
- Issuer
- Subject
- Certificate Serial Number
- Validity
II. 认证信息
如下包含关系指示了在认证阶段的 Commissionee 打包发送给 Commissioner 的所有认证信息,用以证明其是一个合法设备。
Document | Description |
---|---|
Certification Declaration (CD) | 认证声明 (CD) 是一份加密文档,允许 Matter 设备声明其协议合规性。一旦 Matter 设备在 CSA 认证完成,CSA 将为该设备类型创建 CD 。制造商需要将该 CD 信息固化在固件。CD 包含VID/PID (一个或者多个)Server Category 、IDClient Category、 IDSecurity、 LevelSecurity、 Information、Certification Type (development, provisional, or official)以及Signature。 |
Firmware Information (optional) | Firmware Information 包含一个 CD 版本号,以及一系列固件摘要,包含 BootLoader 、RootFS、Kernel、Uboot。当然也可以直接是这一些固件摘要的摘要,也就是 Hash 的 Hash。固件信息的认证在是一个可选的流程,因为它往往需要额外的启动流程称之为: Measured Boot,同时需要 Secure Boot 做安全启动,以及额外的安全子系统做 DAC 私钥、摘要信息的安全存储。 |
Attestation Information | 如上最顶层的用以 Commissionee 最后发送给 Commissioner 的数据信息,包含 TLV 格式的 Attestation Elements 和 Attestation Signature。 |
Attestation | TLV格式,包含 CD、Nonce、时间戳、和可选的 Firmware Information 。 |
Attestation | 在 PASE/CASE 之前阶段带外传输的挑战信息用以接下来 PASE、CASE、CASE恢复等会话的安全。 |
Attestation TBS (to be signed) | 包含 Attestation Elements 和 Attestation Challenge。 |
Attestation Signature | 使用 DAC 对应的私钥对 TBS 进行签名。 |
III. DAC 认证流程
Commissioner 按照如下流程完成 Commissionee 的DAC认证。
- Commissioner 随机产生一个 32 字节 nonce(在密码学范畴 number used once 我们称之为 nonce,也就是使用一次的随机数)。
- Commissioner 发送 nonce 到 DUT 请求认证信息。
- DUT 回复认证信息,并且使用 DAC 证书对应的私钥进行签名。
- Commissioner 从 Commissionee 获取 PAI 和 DAC 证书,然后再从受信任的 DCL 获取 PAA 证书。
开始验证认证信息。
- 使用 PAA 验证 PAI,再使用 PAI 验证 DAC,同时需要确定 PAI 和 PAA没有被撤销。
- PAI 和 DAC 证书中的 VID 需要保持一致。
- 认证信息的签名需要被验证通过。
- Device Attestation Elements 中的 nonce 需要和 Commissioner 提供的保持一致。
- Certificate Declaration Signature 可用,并且使用 CSA's 发布的签名秘钥。
- Firmware Information 如果存在需要和 DCL 上的信息保持一致。
- Device Basic Information Cluster和Certification Declaration 和 DAC 都可能额外验证 VID/PID。
还不快抢沙发