Matter 设备配网流程 ---- 配网材料和 SPAKE2P 机制

news2024/11/20 2:35:06

Matter 设备配网流程 ---- 配网材料和 SPAKE2P 机制

1. Matter 配网材料

Matter 配网(commissioning)使用 SPAKE2P 协议完成 PASE,进而验证 DAC(Device Attestation Credentials),派发 NOC,然后就可以使用 NOC 完成 CASE,在 CASE 上安全地交互控制、查询等命令。

  • SPAKE2P 协议交互需要设备端提供 Spake2pIterationCount,Spake2pSalt,Spake2pVerifier,Passcode。

    • Spake2pIterationCount (下文简称 Iterations)的范围是 1000 ~10000。

    • Spake2pSalt (下文简称 Salt)是 16 ~ 32 bytes 的随机数。

    • Spake2pVerifier (下文简称 Verifier)是由 SPAKE2P 中的 W0 和 L 拼接而成的数据,L 是由 SPAKE2P 的 W1 和 P 计算得来的,固定 97 bytes。

    • passcode 是一个 27 bit 的数值,范围从 0x0000001 to 0x5F5E0FE (即 十进制的 00000001 to 99999998 ),并且不能是以下这些无效值: 00000000, 11111111, 22222222, 33333333, 44444444, 55555555, 66666666, 77777777, 88888888, 99999999, 12345678, 87654321

  • DAC 验证流程需要设备端提供 DeviceAttestationCert,DeviceAttestationKey,ProductAttestationIntermediateCert(PAI),CertificationDeclaration(CD)。

  • 另外,为了优化服务发现的性能,一般设备端还会提供 Discriminator(12bit value)。

    注:这里的设备端指的是commissionee 角色的物理设备,下文也是如此。

2. Matter 配网流程中的 PASE

配网的成功的前提是 commissioner 已经通过 out-of-band 方式获取动了 passcode。

2.1 Matter设备首次配网过程中的 PASE 流程

大致流程如下图:

commissioner commissionee PBKDFParamRequest PBKDFParamResponse PASE_Pake1 PASE_Pake2 PASE_Pake3 status report commissioner commissionee
  1. commissioner 发送 PBKDFParamRequest,commissionee 响应 PBKDFParamResponse,这样 commissioner 获取到 spake2p 的 iteration 和 salt。

  2. commissioner 基于 passocde 、Iterations、Salt 以及 EC 参数中随机选取的 p,计算得出自身的 w0 和 w1,将 w0 和 w1 转换并打包成 pA,在 PASE_Pake1 中发送给commissionee 。

  3. commissionee 也基于 passocde 、Iterations、salt 以及 EC 参数中随机选取的 p,计算得出自身的 w0 、w1和 L(当然可以直接从 pakeVerifier 获取 w0 和 L,对于设备端,目前的代码实现是直接从pakeVerifier 获取 w0 和 L),将 w0 和 L 转换并打包成 pB。同时,基于pA、pB 计算得到 TT,再由 TT 计算得到 cB。 在 PASE_Pake2 中将 pB 和 cB 发送 commissioner 。

    注:双方基于pA、pB 计算得到各自的 TT,再从 TT 得到 cA,cB,Ke。

  4. commissioner 也根据 pA、pB 得出 cA,cB,Ke,比对 PASE_Pake2 收到的 cB 和计算得到的 cB,如果一致,验证成功。同时将 cA 在 PASE_Pake3 发送给 commissionee 。

  5. commissionee 比对 PASE_Pake3 收到的 cA 和 自身计算得到的 cA,如果一致,验证成功,不一致就是失败,并将结果通过 status report 报文发送给 commissioner 。

  6. 在验证成功的情况下,双方根据 Ke 计算得到 I2RKey 和 R2IKey,这是 PASE session 上报文加解密的 key,至此,PASE 完成。

运行日志如下图:
在这里插入图片描述

2.2 Mult-Fabirc 的非首次配网过程中的 PASE 流程

Matter 支持将设备同时加入不同的 Fabric。当设备已经配网,想要将它同时加入其它 Fabric,需要原来 commissioner 的同意和支持。原 commissioner 需要发送 Verifier,Discriminator,Iterations,salt 给设备,并通知设备开启 commission window(这些操作是基于 CASE 的)。同时将 passcode 以 out-of-band 的方式提供给新的 commissioner。注意,passcode 不会通过网络方式传输给 commissionee 以强化安全。设备基于接收到的这套 Verifier,discriminator,Iterations,Salt 执行配网操作加入新的 Fabric。

开启配网窗口命令是 Administrator Commissioning Cluster (0x003C)的 OpenCommissioningWindow 命令,该命令有5个参数:CommissioningTimeout,Verifier,Discriminator,Iterations,Salt。设备端运行日志如下图:
在这里插入图片描述

passcode 或者 QR code 是由 commissioner 提供,运行日志如下图:
在这里插入图片描述

3. 为什么 commissionee 设备内部同时保存 pakeVerifier 和 passcode 呢?

有2个方面的原因:

  1. 设备生产时,需要打印 passcode 和 QR code 到设备上,并且每个设备都不同。在实际产线流程中,从设备读取 passcode 后生成QR code 并打印相关标签是合理简单的操作方式。而 passcode 无法 pakeVerifier 推导出来是保存 passcode 的原因。

  2. 多少情况下,Matter 设备都是资源严重受限的嵌入式设备,从 passcode 计算 pakeVerifier 是个耗资源的操作,所以预置 pakeVerifier 可以优化配网性能。而 PASE 只在配网时用到,所以安全风险很小。

4. pakeVerifier 生成工具

Iterations,Salt,Verifier,Passcode 是一组强关联的数据,需要绑定使用才有效。为了保证安全性,还需要让 passcode、Salt 尽量随机化。通过 Matter 提供的 spake2p 工具 (代码位于 src/tools/spake2p ) 来生成这组数据,比如给定 Iterations、Salt 生成 Verifier,也可以让工具一次性生成多组随机 Iterations、Salt 以及相应的 Verifier,该工具可以将生成的数据输出到 CSV 文件。
生成 Verifier,也可以让工具一次性生成多组随机 Iterations、Salt 以及相应的 Verifier,该工具可以将生成的数据输出到 CSV 文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/945845.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ubuntu入门01——windows上直接部署linux(WSL)

win10安装参考如下教程: 旧版 WSL 的手动安装步骤 | Microsoft Learn 说明:该文档是我按如上教程安装使用Ubuntu写的回顾,家人们参考官方教程更妙。 1.启用适用于Linux的wundows子系统 2.启用虚拟机功能 dism.exe /online /enable-feat…

Java IO操作——BufferedReader

BufferReader Java IO操作——BufferedReader(缓冲区读取内容,避免中文乱码) 要点: 掌握BufferedReader类的使用 掌握键盘输入的基本形式 Buffer:表示缓冲区的。之前的StringBuffer,缓冲区中的内容可以更改,可以提高…

递归算法学习——子集

目录 一,题目解析 二,例子 三,题目接口 四,解题思路以及代码 1.完全深度搜索 2.广度搜索加上深度优先搜索 五,相似题 1.题目 2.题目接口 3.解题代码 一,题目解析 给你一个整数数组 nums &#xff0c…

合宙Air724UG LuatOS-Air LVGL API控件--复选框 (Checkbox)

复选框 (Checkbox) 复选框主要是让用户进行一些内容选择,或者同意用户协议。 示例代码 – 复选框回调函数 function event_handler(obj, event) if event lvgl.EVENT_VALUE_CHANGED then print(“State”, lvgl.checkbox_is_checked(obj)) end end – 创建复选框…

python学习1之安装

前言 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的。由于3.x版越来越普及,我们的教程将以最新的Python 3.9版本为基础。 1、下载 官网地址 https://www.python.org/downloads/ 2、安装 点击…

并发 04(Callable,CountDownLatch)详细讲解

并发 Callable 1 可以返回值 2可以抛出异常 泛型指的是返回值的类型 public class Send {public static void main(String[] args) {//怎么启动Callable//new Thread().start();Aaa threadnew Aaa();FutureTask futureTasknew FutureTask(thread);new Thread(futureTask,&qu…

这款自研RedCap网关终端,获评优秀!

近日,由通信世界全媒体主办的“5GRedCap技术与物联网应用创新研讨会”在北京举办。作为中国电信5GInside合作计划的重要成果,天翼物联自主研发的“RedCap网关终端CTW-GW-01”产品获“5GRedCap优秀产品和解决方案”。此次会议,天翼物联行业总监…

pyqt5 QuickStart

在使用pyqt5之前,建议下载一个Anaconda环境,这样下载python包更方便,本篇文章是建立在已经安装好Anaconda的情况下使用的。IDE就是标准的PyCharm了。 一、pyqt包的安装 python终端执行下面两个安装命令: pip install PyQt5 pip …

HTTP:http上传文件的原理及java处理方法的介绍

为了说明原理&#xff0c;以下提供一个可以上传多个文件的例子&#xff0c;html页面代码如下&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>http upload file</title> </head> <body>…

LeetCode56.合并区间

这道题我想了一会儿&#xff0c;实在想不到比较好的算法&#xff0c;只能硬着头皮写了&#xff0c;然后不断的debug&#xff0c;经过我不懈的努力&#xff0c;最后还是AC&#xff0c;不过效率确实低。 我就是按照最直接的方法来&#xff0c;先把intervals数组按照第一个数star…

gRPC + Spring Boot 编程教程 - piot

在本文中&#xff0c;您将学习如何实现通过 gRPC 通信的 Spring Boot 应用程序。gRPC 是一个现代开源远程过程调用 (RPC) 框架&#xff0c;可以在任何环境中运行。默认情况下&#xff0c;它使用 Google 的 Protocol Buffer 来序列化和反序列化结构化数据。当然&#xff0c;我们…

supervisorctl(-jar)启动配置设置NACOS不同命名空间

背景 由于需要在上海服务器上面配置B测试环境&#xff0c;原本上面已有A测试环境&#xff0c;固需要将两套权限系统分开 可以使用不同的命名空间来隔离启动服务 注&#xff1a;本文章均不涉及公司机密 1、新建命名空间 命名空间默认会有一个public&#xff0c;并且不能删除&a…

「Linux」使用VS Code远程连接Linux

一、VS Code简介 1.VS Code是什么&#xff1f; Visual Studio Code&#xff08;简称“VS Code”&#xff09;是微软公司的一个运行可以于 Mac OS、Windows 和 Linux之上的源代码编辑器。简单地说VS Code是一个编辑器&#xff0c;用来写代码。是一个基于插件的软件。 2.使用VSCo…

C++中的虚函数

一、虚函数 &#xff08;类继承中的一种函数&#xff09; 概念 概念 被virtual修饰的函数叫做虚函数。 为什么说虚函数是类继承中的一种函数呢&#xff1f; 因为虚函数的作用确实主要是在类的继承中体现的&#xff08;即派生类和基类&#xff09; 虚函数的作用就是当基类和派生…

Verilog基础:巴科斯范式(BNF)

相关阅读 Verilog基础专栏https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 由于Verilog HDL标准中对语法的描述使用了Backus Naur Form&#xff08;BNF&#xff09;。本文将对其中的约定进行描述。 小写单词&#xff0c;其中一些包含…

安防监控/视频汇聚平台EasyCVR调用rtsp地址返回的IP不正确是什么原因?

安防监控/云存储/磁盘阵列存储/视频汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等&#xff0c;能对外分发RTSP、RT…

【记录】USSOCOM Urban3D 数据集读取与处理

Urban3D数据集内容简介 Urban3D数据集图像为正摄RGB影像&#xff0c;分辨率为50cm。 从SpaceNet上使用aws下载数据&#xff0c;文件夹结构为&#xff1a; |- 01-Provisional_Train|- GT|- GT中包含GTC&#xff0c;GTI&#xff0c;GTL.tif文件&#xff0c;GTL为ground truth b…

Linux学习之RAID

基础概念 RAID&#xff0c;英文全称为Redundant Arrays of Independent Drives&#xff0c;RAID&#xff0c;中文称为独立冗余磁盘阵列&#xff0c;这项技术把多个硬盘设备组合成一个容量更大的、安全性更好的磁盘阵列&#xff0c;把数据切割成许多区段分别放在不同的物理磁盘…

产品经理NPDP考什么?

一、准备阶段 敲黑板1&#xff1a;考试共200道单选&#xff0c;满分200&#xff0c;手填涂卡&#xff0c;150分通过。考试费3200。条件&#xff1a;2年以上工作经验。 敲黑板2&#xff0c;敲三下&#xff1a;备考宝典《产品经理 认证(NPDP)知识体系指南》——红宝书。 二、精…

C语言——程序执行的三大流程

顺序 : 从上向下&#xff0c; 顺序执行代码分支 : 根据条件判断&#xff0c; 决定执行代码的分支循环 : 让特定代码重复的执行