蓝牙Mesh协议三 设备配网

前言

蓝牙Mesh配网就是通过配网器配置未配网设备,将未配网设备加入网络中,使其成为蓝牙mesh网络的节点;配网数据中包括分发网络密钥(network key)、元素单播地址(unicast address)和IV Index

为了提高配网效率,厂家会增加私有协议来完成快速配网的功能如有异议,欢迎留言指正

配网协议

配网分层架构

在这里插入图片描述

配网承载

承载层是用来在配网器和未配网设备之间传输配网PDU的,蓝牙Mesh规范定义了两种承载:

  • PB-ADV:通过蓝牙BLE广播信道(不可连接且不能扫描的非定向广播),用于传输通用配网PDU,MTU(最大传输单元)是24字节。一个支持PB-ADV的设备需要开启BLE扫描(100%的执行占空比)获取配网PDU
字段字节长度描述
Length1AD类型和PDU的长度
AD Type1AD类型(PB-ADV)
Contents可变PB-ADV PDU

PB-ADV的PDU数据格式

字段字节长度描述
Link ID4当前承载层建立的连接ID(标识两个设备之间的连接)
Transaction Number1每个PDU的唯一标识符(分包与重传)
Generic Provisioning PDU1-24通用配网PDU
  • PB-GATT:PB-GATT是另一种配置承载,通过代理PDU来配网(手机平板通过代理协议配网)
配网协议

配网PDUs用来在配网器和未配网设备之间进行通信的基本单元

字段长度(bits)描述
Padding20b00,其他值被禁止
Type6配网PDU的类型值
Parameters可变消息参数

在这里插入图片描述

蓝牙Mesh定义了10种配网PDU,所有PDU都可以在整个配网流程中使用

TypeNameDescription
0x00Provisioning Invite邀请设备加入mesh网络
0x01Provisioning Capabilities设备配置能力
0x02Provisioning Start启动配置,配网器选择配置方法
0x03Provisioning Public Key配置公钥
0x04Provisioning Input Complete配置输入完成
0x05Provisioning Confirmation配置确认
0x06Provisioning Random Contains包含配网器和设备的随机数
0x07Provisioning Data配置数据,包括主元素的指定单播地址、网络密钥、网络密钥索引、标志和IV索引
0x08Provisioning Complete配置完成
0x09Provisioning Failed配置失败
配网流程

配网流程分为5个阶段:

  • 信标(Beconing)阶段
  • 邀请(Invitation)阶段
  • 交换公钥(Exchange Public Keys)阶段
  • 身份认证(Authentication)阶段
  • 分发配网数据(Distribution Of Provisioning Data)阶段
信标阶段

信标主要是为了配网器发现周边未配网的设备

  • 支持PB-ADV bearer的设备,会广播未配网的设备信标,信标中会带有设备的UUID,每个设备的UUID均不相同
  • 支持PB-GATT bearer的设备,也会广播带有配网服务UUID的广播报文
    两种配网都支持的话,设备会间隔广播两个类型;(如下图中无OOB信息认证)
    在这里插入图片描述
    在这里插入图片描述
邀请阶段

在信标阶段结束后,配网器和未配网设备通过PB-ADV或PB-GATT承载建立连接,进入邀请阶段
在这里插入图片描述

配网能力消息由设备发给配网器,表示设备支持的能力,包括加密算法、公钥类型、静态OOB类型、最大输出OOB大小、是否支持OOB输出行为、最大输入OOB大小、是否支持OOB输入行为

交换公钥阶段

交换公钥阶段,可以使用两种算法交换设备的ECDH公共密钥:明文交换和通过OOB隧道进行交换
在蓝牙mesh规范中,先采用非对称密钥方式计算出对称加密密钥,在网络中消息传输通过对称密钥进行加解密

  • 无OOB机制
    在这里插入图片描述

  • 使用OOB公钥交互方式
    在这里插入图片描述

身份认证阶段

身份认证阶段是配网器和设备的互相认证过程,通过使用ECDH密钥以及OOB消息对随机数RandomValue加密计算得到ConfirmationValue,双方对比换算得到的ConfirmationValue和接收到的ConfirmationValue来完成认证;
根据配网器和设备的输入输出能力,定义了三种方式

  • 输出式OOB认证
  • 输入式OOB认证
  • 静态OOB认证
  • 无OOB认证
输出式OOB认证

输出式OOB认证方式通过未配网设备产生一个随机数,通过显式的方式(LCD屏幕、LED灯光闪烁等)让使用者获取到并输入到配网器来完成OOB的认证
在这里插入图片描述

输入式OOB认证

输入式OOB认证是通过配网器生成一个随机数,同样由用户将随机数输入未配网器。与输出式OOB认证对比,输入式OOB认证时,未配网器在随机数输入后需要发送一个输入完成的报文,来通知配网器
在这里插入图片描述

静态OOB认证和无OOB认证

当配网器和未配网设备的输入输出受限的情况下,此时可以使用静态OOB或无OOB认证;静态OOB的话双方会预存静态的OOB信息,无OOB认证使用数值0来代替,但可能存在中间人攻击
在这里插入图片描述

分发配网数据

身份认证完成之后,会进入分发配网数据阶段,配网器会负责生成分发配置数据,包括如网络密钥(Network Key)、密钥索引、单播地址、IV索引等;分发的数据会通过ECDH密钥派生的会话密钥,然后使用AES-CCM算法进行加解密
配置数据格式

FieldSize(byte)Note
Network Key16网络密钥
Key Index2网络密钥索引
Flags1标识
IV Index4当前IV索引
Unicast Address2主元素单播地址

分配数据流程
在这里插入图片描述

总结

设备配网是蓝牙mesh安全的基石,分发的密钥需要多方数据换算验证,这意味着后续节点能在网络中安全的通信,更多详细请参考蓝牙mesh协议规范

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
iOS蓝牙Mesh开发是指在iOS系统中使用蓝牙Mesh技术进行开发。蓝牙Mesh是一种用于无线网络通信的技术,它基于蓝牙低功耗(Bluetooth Low Energy,BLE标准,并支持多对多的网络连接。通过使用蓝牙Mesh,可以实现设备间的直接通信,而无需通过传统的中心设备来中转数据。 在iOS蓝牙Mesh开发中,开发者可以利用iOS系统提供的CoreBluetooth框架来实现蓝牙Mesh的功能。CoreBluetooth框架提供了一系列API,可以用于扫描、连接和通信等操作。开发者可以使用这些API与蓝牙Mesh设备进行通信,并实现各种功能,如设备发现、数据传输、网络配置等。 在进行iOS蓝牙Mesh开发时,需要特别注意以下几点: 1. 版本要求:要使用蓝牙Mesh功能,需要iOS 11及以上的版本。 2. 硬件支持:要使用蓝牙Mesh功能,需要确保设备支持蓝牙4.0及以上版本。 3. 学习Mesh协议蓝牙Mesh开发需要了解蓝牙Mesh协议的相关知识,如网络拓扑结构、节点之间的通信方式等。 4. 设备兼容性:不同厂商的设备蓝牙Mesh的支持程度可能有所不同,需要考虑设备的兼容性。 总体来说,iOS蓝牙Mesh开发可以用于构建无线传感器网络、智能家居和物联网等应用。开发者可以根据具体需求,利用iOS系统提供的CoreBluetooth框架实现各种功能,并通过蓝牙Mesh技术实现设备间的直接通信。这将为用户带来更好的体验和更广泛的应用场景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值