matter设备配对流程详解

2023-11-05 11:50

本文主要是介绍matter设备配对流程详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

matter配网流程介绍

概述

matter配网分为三个阶段

1、设备发现阶段,此时设备发出蓝牙广播,数据是明文,所以敏感数据不能通过蓝牙发送

2、PASE阶段,CD(设备证书认证),NOC(节点信息配置) 都是通过PASE协商出的密钥进行加密

3、CASE阶段,完成CASE后,后续所有的数据交互都是通过CASE协商出的密钥来保证数据安全性的

入网信息

设备发现过程中用到的配网信息如下:

Onboarding Payload ElementDescription
VersionOnboarding Payload的版本号
Vendor IDCSA联盟分配的厂商ID
Product ID厂商为产品分配的ID
Commissioning Flow- Standard commissioning flow: 未入网的设备上电自动广播advertising
- User-intent commissioning flow: 未入网的设备上电不会自动广播advertising,需要用户触发
- Custom commissioning flow: 用户自定义Commissioning流程
Discovery Capabilities Bitmask入网设备支持的发现方式:
- Soft-AP
- BLE
- On IP Network
Discriminator设备鉴别码,Commissioner通过Discriminator找到想要添加的设备
Passcode入网密码
TLV Data(可选的) TLV (Tag-length-value) data. 支持用户自定义

PASE介绍

Passcode-Authenticated Session Establishment(密码认证会话建立)

建立蓝牙连接后,需要通过PASE协商出共享密钥,来加密蓝牙连接上传输的matter数据,PASE基于 SPAKE2+ 协议

PASE会话建立完成后:设备和配网设备(APP\Matter control)交换设备证书,进行设备证书(DAC)认证以及操作证书(NOC)安装

CASE介绍

Certificate-authenticated session establishment(基于证书的会话建立)

CASE的目的是为同一fabric中的2个节点建立安全的连接是设备与节点之间建立的 即待配对设备完成前面的入网信息获取后,进行入网时建立CASE流程

配网流程

matter设备有三种配网流程

Commissioning Flow NameDescription
标准Commissioning流程未入网的设备上电自动广播advertising
用户介入的Commissioning流程未入网的设备上电不会自动广播advertising,需要用户触发
用户自定义 Commissioning流程用户自定义

以正常配网流程为例

整体流程概览

在这里插入图片描述

建立蓝牙连接前:

设备周期性的发出蓝牙广播,广播包中包含:vid、pid、discriminator、TLV data。Discriminator 为必须参数,其他为可选参数配对设备(APP\Matter control)扫描到广播包后,会和扫码得到的数据信息进行比对,如果VID、PID、Discriminator 一致,表明已经成功发现想要添加的设备

然后开始建立蓝牙连接

建立蓝牙连接后,需要通过PASE协商出共享密钥,来加密蓝牙连接上传输的matter数据,PASE基于 SPAKE2+ 协议

PASE会话建立完成后:设备和配网设备(APP\Matter control)交换设备证书,进行设备证书(DAC)认证以及操作证书(NOC)安装

PASE会话建立完成后:

设备和配网设备(APP\Matter control)交换设备证书,进行设备证书(DAC)认证以及操作证书(NOC)安装
PASE完成后会协商出如下密钥:

类型作用
I2RKey加/解密Initiator到Rsaponder的数据
R2IKey加/解密Rsaponder到Initiator的数据
AttestationChallenge设备认证时用到此参数
所有matter设备都有一个唯一的DAC证书以及DAC证书的对应私钥

在这里插入图片描述

所有matter设备都有一个唯一的DAC证书以及DAC证书的对应私钥

PAA证书
由CAS联盟认证的根证书颁发机构颁发  是一个自签名证书
PAI由PAA签发    PAA会为产品认证中间机构签发PAI证书  这个证书签发过程是用PAA的私钥为PAI的公钥进行签名
DAC由PAI签发    是由PAI签发,PAI用自己的私钥为设备的公钥签名,产生DAC证书设备生产厂家可以向CSA联盟申请成为PAA证书颁发机构,产生PAA证书,为产品签发PAI证书,也可以使用CSA联盟认证的第三方PAA证书机构,申请签发PAI证书,PAI证书包含VID和PID ,一款产品可以使用相同的PAI证书来签发DAC证书

DAC证书和PAI证书需要烧录到matter设备上

NOC证书
NOC (节点操作证书)
1、用来证明设备在该Fabric中的合法性 
2、设备中保存与NOC相对应的私钥
matter设备加入到Fabric后,配网设备(APP\Matter control)会为其颁发NOC证书

证书链RCAC-> ICAC -> NOC

RCAC由Commissioner自签名产生

ICAC由RCAC签发

NOC由ICAC签发

NOC不需要烧录到Matter设备,在设备加入Fabric后,配网设备(APP\Matter control)通过Matter将NOC安装到设备
Matter设备退出Fabric后,NOC信息需要清除

CD(认证声明)
Certification Declaration (CD)是由CSA联盟签发的产
品认证声明,拥有CD的设备表明它已通过了Matter认
证
§ 设备通过Matter认证后,CSA联盟会为其产生一个CD
文件,主要包含以下内容:
• format_version
• vendor_id
• product_id_array
• certificate_id
• certification_type  --  0测试CD   1做matter认证时使用     2 通过认证的CDCD文件需要烧录到Matter设备上,在Commissioning
过程中Commissioner会验证CD文件的有效性
• 是否由CSA联盟签发
• CD中的VID/PID是否与Matter设备匹配在建立了PASE安全蓝牙连接后  进行设备认证和NOC证书安装
验证DAC和CD是否合法有效

CD认证声明需要烧录到matter设备上

小结: DAC证书、PAI证书、CD认证声明 这三个信息需要烧录\集成到matter设备上

在这里插入图片描述

设备认证
device attestation
1、配对设备(APP\Matter control) 向需要配对设备请求设备证书链(DAC和PAI)
2、收到证书后,配对设备(APP\Matter control)会产生一个AttestationNonce 并向需要配对设备发送Attestaion Request 命令
3、 需要配对的设备收到Attestaion Request 后,会创建一个Attestaion Information(认证信息)的数据结构
这个数据结构中包含以下内容: 
Attestation Information 
• Attestation Elements▸ Certificate Declaration      	(CD证书)▸ Timestamp                        (时间戳)▸ Attestation Nonce            ▸ Firmware Information (optional)▸ Vendor Specific information (optional)
• Attestation Challenge(generated by PASE)        -->  是由PASE产生
• Attestation Signature(singed by Device Attestation Private Key )  -->  使用DAC相对应的私钥对Attestation Elements 和Attestation Challenge 进行签名产生
4、产生这个认证信息后,发送到配对设备(APP\Matter control)
5、配对设备对个信息进行认证  通过验证后进行下一步操作
节点操作证书签名请求
NOCSR request 
1、配对设备(APP\Matter control)产生一个CSR nonce
2、发送这个CSR nonce到需要配对的设备
3、待配对设备产生一个密钥对,基于这个密钥对生产CSR infomation
这个数据结构中包含以下内容: 
CSR(Certificate Signing Request) Information
• NOCSR Elements    ▸ CSR▸ CSRNonce▸ Vendor_Reserved (optional)    
• Attestation Challenge(generated by PASE)
• Attestation Signature(singed by Device Attestation Private Key )  -->使用DAC相对应的私钥对Attestation Elements 和Attestation Challenge 进行签名产生
4、待配对设备通过NOCSR Response 将这个数据发送到配对设备(APP\Matter control)
5、配对设备(APP\Matter control)对这个NOCSR information 进行验证 验证Attestation Signature 是否由与DAC相应的私钥进行签发的

安装NOC与节点信息配置

校验通过后
1、配对设备(APP\Matter control)通过 AddTrustedRootCertificate 将rootCA证书 发送给待配对设备
2、配对设备(APP\Matter control)通过AddNOC指令将中间证书和NOC证书发送给待配对设备
3、待配对设备将整个证书链保存,并从NOC中提取设备的Node id和 Fabric id
4、待配对设备创建一个ACL条目 ,授予配对设备(APP\Matter control)管理员权限
5、完成后,待配对设备会发送NOC Response 到配对设备
6、配对设备(APP\Matter control)将 Configure the operational network info(如wifi 会写入wifi账号密码、thread 会写入PANid、netwokrKey)发送到待配对设备
配置operational network information
• Thread
▸ Channel
▸ Panid
▸ ExtPanid
▸ Network Key• WiFi
▸ SSID
▸ Password7、待配对设备收到上面发送的入网信息后,可以直接加入到网络中
8、待配对设备会广播设备的域名:Fabricid-Nodeid._matter._tcp 进行设备发现

在这里插入图片描述

CASE会话建立
CASE 基于SIGMA协议
设备与节点之间建立的 即待配对设备完成前面的入网信息获取后,进行入网时建立CASE流程

在这里插入图片描述

1、sigma1阶段和sigma2阶段:发起连接的一方,产生临时密钥对并将公钥发送给回复方,回复方也产生临时密钥对,并将公钥回复给发起连接的一方,协商出共享密钥,为后续sigma通讯进行加密 (Sigma1.initiatorEphPubKey and Sigma2.responderEphPubKey)
2、sigma2和sigma3阶段:双方交换彼此的NOC 和 ICAC  (Sigma2.encrypted2.responderNOCand Sigma3.encrypted3.initiatorNOC)
3、通过NOC所对应的私钥进行身份鉴别 (sigma-2- tbsdata and sigma-3-tbsdata)
4、协商出I2RKey ,R2IKey 和 AttestationChallengeCASE会话建立成功后 ,commissioner 会通过CASE 会话发送 commissioning Complete 到 Commissionee  ,Commissionee  成功解密这个条命令后,回复Response后,整个配网流程完成。

完整流程如下图

在这里插入图片描述

这篇关于matter设备配对流程详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/349653

相关文章

MySQL游标和触发器的操作流程

《MySQL游标和触发器的操作流程》本文介绍了MySQL中的游标和触发器的使用方法,游标可以对查询结果集进行逐行处理,而触发器则可以在数据表发生更改时自动执行预定义的操作,感兴趣的朋友跟随小编一起看看... 目录游标游标的操作流程1. 定义游标2.打开游标3.利用游标检索数据4.关闭游标例题触发器触发器的基

Python容器转换与共有函数举例详解

《Python容器转换与共有函数举例详解》Python容器是Python编程语言中非常基础且重要的概念,它们提供了数据的存储和组织方式,下面:本文主要介绍Python容器转换与共有函数的相关资料,... 目录python容器转换与共有函数详解一、容器类型概览二、容器类型转换1. 基本容器转换2. 高级转换示

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格

C++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Java中ArrayList与顺序表示例详解

《Java中ArrayList与顺序表示例详解》顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构,:本文主要介绍Java中ArrayList与... 目录前言一、Java集合框架核心接口与分类ArrayList二、顺序表数据结构中的顺序表三、常用代码手动

JAVA线程的周期及调度机制详解

《JAVA线程的周期及调度机制详解》Java线程的生命周期包括NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED,线程调度依赖操作系统,采用抢占... 目录Java线程的生命周期线程状态转换示例代码JAVA线程调度机制优先级设置示例注意事项JAVA线程

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

C++构造函数中explicit详解

《C++构造函数中explicit详解》explicit关键字用于修饰单参数构造函数或可以看作单参数的构造函数,阻止编译器进行隐式类型转换或拷贝初始化,本文就来介绍explicit的使用,感兴趣的可以... 目录1. 什么是explicit2. 隐式转换的问题3.explicit的使用示例基本用法多参数构造