MshPRF阅读笔记之章节5 Provisioning

https://blog.csdn.net/abc517789065/article/details/97392170?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control

https://blog.csdn.net/chengdong1314/article/details/78602693

配置是一个将未配网设备添加到一个mesh网络的过程,此过程受配置器管理控制。配置器向未配网设备提供配置数据,让未配网设备变成一个mesh网络中节点。这些配置数据主要包含:network key、当前的IV index和每个元素的单播地址。

典型的配网器就是智能手机或者其他移动计算机设备。一般要求一个网络只有一个配网器来进行配网操作,但有时候一个网络会有到多个配网器,此时需要通过某种方式实现在多个配网器之间共享数据。

配置设备之前,配网器与待配设备必须先建立初始化一个配置承载层。配网器可以通过未配网设备的Device UUID来识别设备,也可能会要求提供其他补充信息给到配网器。

配置承载层建立后,配网器使用椭圆曲线(ECDH)协议和设备建立一个共享密钥(怎么和设备?不是配网器自己生成一个密钥?)。配网乐使用设备特有的OOB信息来认证设备。OBB信息可能包含一个公钥、一个长密钥、向设备输入数据的接口或者向外输出数据的接口。OOB信息也可以设备的认证??一旦设备通过认证,配网数据会被共享密钥加密,然后传给待配网设备。Device key是衍生自椭圆曲线协议的。

设备的配网过程是通过上图的配网协议发送配网数据来完成的。配网数据通过一般配网层(Generic Provisioning layer)和代理协议层(Proxy protocol layer)传给待配网设备。这些层定义了配网数据怎么分包和重组。配网数据最后通过承载层发出去。承载层定义会话是怎么建立。

5.2 Provisioning bearer layer

配网承载层可以在配网器与待配网设备间传输配网数据,两个配网承载层:

  • PB-ADV
  • PB-GATT

未配网设备可支持PB-ADV,也可能支持PB-GATT。强烈推荐同时支持PB-ADV和PB-GATT。配网器应该至少支持这两者中的一个,强烈推荐支持PB-ADV。

5.3.2 Link Establishment procedure

链路建立过程用于为没有固有会话管理的承载者建立会话。为了防止会话之间发生冲突,会话通过在会话期间静态的、随机生成的Link ID来标识。在配网器和未配网设备之间建立用于发送供应消息的链接。未供应的设备由设备UUID标识。配网器应主动扫描未配网设备。

在接收到未配网的设备beacon信标后,配网器建立一个由此设备的UUID来标识的链接。

当设备使用link ack来回应收到的link open消息时,此设备的link是打开的。当配网器收到的link ack消息中的link id与发出去的link id相同时配网器的link被打开。待配link打开后,网设备即处在被配网中,设备就可以接收任何Provisioning PDU了。

当link没有打开时设备收到link open消息,设备通过回复一个Link ACK消息来接受此消息,该消息的链路ID与PB-ADV PDU中设置的链路ID相同。当link是打开的,但设备没有被正在配网,设备收到相同link id的link open消息时,设备应该回复一个Link ACK消息来接受此消息,该消息的链路ID与PB-ADV PDU中设置的链路ID相同。

疑惑注解:link打开的标志是啥?不收到open回复ack就算打开吗?哪怎么还存在收到open没有打开的情况?还是说设备因为其他原因不想打开?不想打开应该叫open fail而不是not open吧

至此,配网的链路就通了,接下来就是交互配网数据provisioning data了。

link打开后,设备应该开启一个60s的定时器,当这个定时器超时了就关闭link。当收到Provisioning PDU或者link close消息时,设备要取消此定时器。(Provisioning PDU就只有一条?)。

为了打开link,配网器也开启一个60s的建立定时器然后发送link open消息。配网器可以随时终止这个过程。link open消息包含设备的Device UUID。在PB-ADV帧中,PB-ADV PDU格式是包含了link ID的。

当link建立定时器超时,link被认为没有打开然后过程被重启。当link打开了,配网器会取消建立定时器。

link可以在任何时候发送link close后关闭。两边都可以塔发送link close消息。

5.3.3 Generic Provisioning behavior


5.4 Provisioning protocol

解释注:文档好像喜欢从下往上描述,前面5.3描述的是provisioning pdus下面PB-ADV和PB-GATT格式,现在才回头介绍上层provisioning pdus协议。
5.4.2 Provisioning behavior
配网过程通常有五个步骤:

  1. beaconing
  2. invitation
  3. exchanging public keys
  4. authentication
  5. distribution of the provisioning data

认证:在此阶段,根据未经启动配置设备的功能,启动配置设备(Provisioner)选择合适的验证方法,并通知未经启动配置设备将要采取的方式。之后,启动配置设备和未经启动配置设备会创建一个椭圆曲线公私密钥对交换公钥。然后,每台设备使用自己的私钥和对等设备的公钥来计算对称密钥,即ECDHSecret。该密钥用于验证对端设备的身份。

静态带外(Static OOB) 或无带外(No OOB) 

在输入带外或输出带外都不可用的情况下,启动配置设备(Provisioner)和未经启动配置的设备可采用静态带外(Static OOB)验证或无带外(No OOB)验证:采用静态OOB信息;或静态OOB信息不可用,直接以数值0代替。在此情况下,启动配置设备和未经启动配置的设备各自生成一个随机数,然后进行检查确认值操作

5.4.2.4 Authentication
If a static OOB value is available, then this value shall be included as part of the confirmation value

如果使用静态OOB方式,那么OOB数据将作为provisioning confirmation帧的一部分交互给配网器,天猫精灵就是采用这次方式,文档说明描述“ mesh设备在Provisioning Capabilities阶段提供OOB方式,模块支持唯一一种Static OOB方式,其中的AuthValue= SHA256(Product ID,MAC,Secret)。即:将ProductID,MAC,Secret三元组通过字符串用英文逗号连接,然后进行SHA256摘要计算,取前16字节”

https://doc-bot.tmall.com/doc.htm?spm=0.7629140.0.0.389f1780KPibfE#?docType=1&docId=108982&previewCode=C0264D62C9C5AF3241A28183D9D40158

本来自己要试着翻译来加深理解的,后面看到这位仁兄的文章,瞬间就决定了献丑了,链接如下:

https://blog.csdn.net/wang_yunpeng/article/details/103860537

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值