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

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 文件。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL的日志undolog、binlog、redolog

1. 日志层次 binlog是Server层,undolog和redolog是innodb引擎层特有的。 2. 记录了什么 & 作用 binlog 记录了所有数据库结构变更和表数据修改的SQL日志。 主要用于数据备份和主从复制,比如误删数据了可以用binlog找回。 undolog 如下图&#…

计算机网络-笔记-第五章-运输层

目录 五、第五章——运输层 1、运输层概述 2、运输层端口号、复用、分用 (1)熟知端口号、登记端口号、短暂端口号 (2)熟知端口号 (3)发送方复用、接收方分用 3、UDP与TCP对比 (1&#x…

什么是响应式图片?如何在网页中实现响应式图片?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 响应式图片&#xff08;Responsive Images&#xff09;⭐ 实现响应式图片的方法1. 使用<img>标签的srcset属性2. 使用<picture>元素3. 使用CSS的max-width属性4. 使用响应式图片库 ⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&…

【AI】数学基础——高数(函数微分部分)

参考&#xff1a;https://www.bilibili.com/video/BV1mM411r7ko?p1&vd_source260d5bbbf395fd4a9b3e978c7abde437 唐宇迪&#xff1a;机器学习数学基础 文章目录 1.1 函数1.1.1 函数分类1.1.2 常见函数指/对数函数分段函数原函数&反函数sigmod函数Relu函数(非负函数)复…

nlp系列(7)三元组识别(Bert+CRF)pytorch

模型介绍 在实体识别中&#xff1a;使用了Bert模型&#xff0c;CRF模型 在关系识别中&#xff1a;使用了Bert模型的输出与实体掩码&#xff0c;进行一系列变化&#xff0c;得到关系 Bert模型介绍可以查看这篇文章&#xff1a;nlp系列&#xff08;2&#xff09;文本分类&…

windows环境下QuestaSim软件的使用

文章目录 前言一、QuestaSim使用方法1、编译vlog2、映射vmap3、仿真vism4、ifndef和define&#xff08;常用&#xff09;5、QuestaSim的仿真界面6、完整QuestaSim仿真——TCL脚本 前言 2023.8.29 一、QuestaSim使用方法 1、编译vlog vlog&#xff1a;questasim的编译命令 -s…

开始MySQL之路——MySQL 事务(详解分析)

MySQL 事务概述 MySQL 事务主要用于处理操作量大&#xff0c;复杂度高的数据。比如说&#xff0c;在人员管理系统中&#xff0c;你删除一个人员&#xff0c;你即需要删除人员的基本资料&#xff0c;也要删除和该人员相关的信息&#xff0c;如信箱&#xff0c;文章等等&#xf…

Andorid 属性动画ObjectAnimation整理

属性动画相关内容可参考官网 动画资源 属性动画概览 来自官网的说明&#xff0c; 属性动画与视图动画的区别 视图动画系统仅提供为 View 对象添加动画效果的功能&#xff0c;因此&#xff0c;如果您想为非 对象添加动画效果&#xff0c;则必须实现自己的代码才能做到。视图动…

【桌面小屏幕项目】ESP32开发环境搭建

视频教程链接&#xff1a; 【【有手就行系列】嵌入式单片机教程-桌面小屏幕实战教学 从设计、硬件、焊接到代码编写、调试 ESP32 持续更新2022】 https://www.bilibili.com/video/BV1wV4y1G7Vk/?share_sourcecopy_web&vd_source4fa5fad39452b08a8f4aa46532e890a7 一、esp…

使用亥姆霍兹线圈的注意事项

亥姆霍兹线圈由一对完全相同的圆形导体线圈组成。采用直角坐标系&#xff0c;两个半径为R的圆形线圈的中心轴与z轴同轴。两个圆形线圈的z坐标分别为和。每个导体线圈都有相同的电流I。 设置可以减少两个线圈中心O(即原点)的磁场不均匀性。这种动作促使&#xff0c;也意味着非零…

从0开始配置eslint

没有在.eslintrc文件中配置parserOptions指定语言版本和模块类型 {"parserOptions": {"ecmaVersion": 7, //指定es版本为es2016"sourceType": "module", //使用import导入模块} }eslint还不能识别jsx语法 {"parserOptions"…

通义千问本地化部署不调用GPU只调用CPU的检查方法

今天部署本地版通义千问的时候遇到一个问题。 启动他的cli_demo.py调用的一直都是CPU模式的。 检查cuda已经正确安装&#xff0c;后面发现是torch即PyTorch的安装问题。 我安装torch的时候&#xff0c;用的是默认指令&#xff0c;没有增加别的参数。 检测一下&#xff0c;输出…

【大山里的女孩】

我生来就是高山而非溪流&#xff0c;我欲于群峰之巅仰视平庸的沟壑。 这是她们的呐喊&#xff01; “我不知道我还有多少时间&#xff0c;现在还能动&#xff0c;我想做点事。” 这是张桂梅平凡的宣言&#xff0c;也是她一生都在践行的梦想。 17岁的她&#xff0c;为了祖国建…

设计模式—策略模式

目录 一、定义 二、特点 三、优点 四、缺点 五、实例 六.涉及到的知识点 1、一个类里面有哪些东西&#xff1f; 2、类和实例 什么是类&#xff1f; 什么是实例&#xff1f; 什么是实例化&#xff1f; 3、字段和属性 什么是字段&#xff1f; 属性是什么&#xff1…

[论文阅读笔记25]A Comprehensive Survey on Graph Neural Networks

这是一篇GNN的综述, 发表于2021年的TNNLS. 这篇博客旨在对GNN的基本概念做一些记录. 论文地址: 论文 1. 引言, 背景与定义 对于图像数据来说, CNN具有平移不变性和局部连接性, 因此可以在欧氏空间上良好地学习. 然而, 对于具有图结构的数据(例如社交网络 化学分子等)就需要用…

RSA私钥解密操作

RSA私钥解密操作 一、背景二、操作三、常见问题3.1 invalid key format3.2 解密的数据太长3.3 Decryption error 一、背景 项目数据库中存放的敏感字段已使用rsa加密的方式&#xff0c;将内容加密成密文存放, 现在需要在使用的时候&#xff0c;使用私钥进行解密。 二、操作 …

万户协同办公平台 ezoffice存在未授权访问漏洞 附POC

文章目录 万户协同办公平台 ezoffice存在未授权访问漏洞 附POC1. 万户协同办公平台 ezoffice简介2.漏洞描述3.影响版本4.fofa查询语句5.漏洞复现6.POC&EXP7.整改意见8.往期回顾 万户协同办公平台 ezoffice存在未授权访问漏洞 附POC 免责声明&#xff1a;请勿利用文章内的相…

【MySQL】引擎类型

与其他DBMS一样&#xff0c;MySQL有一个 具体管理和处理数据的内部引擎 。在使用create table语句时&#xff0c;该引擎具体创建表&#xff0c;而在使用select或进行其他数据库处理时&#xff0c;该引擎在内部处理你的请求。多数时候&#xff0c;引擎都隐藏在DBMS内&#xff0…

[ES]二基础 |

一、索引库操作 1、mapping属性 mapping是对索引库中文档的约束&#xff0c;常见的mapping属性包括&#xff1a; 1)type&#xff1a;字段数据类型&#xff0c;常见的简单类型有&#xff1a; ①字符串&#xff1a;text(可分词的文本)、keyword&#xff08;精确值&#xff0c…

记录《现有docker中安装spark3.4.1》

基础docker环境中存储hadoop3--方便后续查看 参考&#xff1a; 实践&#xff1a; export JAVA_HOME/opt/apache/jdk1.8.0_333 export SPARK_MASTER_IP192.168.0.220 export SPARK_WORKER_MEMORY4g export SPARK_WORKER_CORES2 export SPARK_EXECUTOR_MEMORY4g export HADOOP_H…