配网流程
概述
配网流程(Provisioning)是向蓝牙 Mesh 网络(如灯泡)添加新的未经配置设备的过程。该过程由配网器(Provisioner) 进行管理。配网器和未经配置设备遵循蓝牙 Mesh 规格中定义的固定过程。配网器向未经配置设备提供使其成为蓝牙 Mesh 节点的配置数据(provisioning data)。
配网器通常是运行配网器应用程序的智能手机或其它移动设备。尽管每个网络只需要一台配网器来执行配网,但可用的配网器可以有多台。
完整的配网过程必须在更高的层面完成两项重要任务:
- 验证未经配置的设备。在蓝牙 Mesh 网络中,一个小空间中可能存在几台、几十台或数百台设备。执行认证是为了确保与配网器进行交互的设备就是用户想要配置的设备。
- 与未经配置的设备建立安全链接,并与之共享相应的信息。在流程的最后,原本未经配置的设备将成为蓝牙 Mesh 网络中的节点。
配网协议
蓝牙 Mesh 规格中定义了配网协议,该协议定义了配网流程中用于在配网器和新的未经配置设备之间进行通信的标准流程以及 PDU。下图描绘了完整蓝牙 Mesh 协议栈之外的配网协议栈。
从下到上的组件如下:
配网承载层(Provisioning Bearer)
配网承载层实现了配网 PDU 在配网器和未经配置设备之间的传输。定义的两个配网承载层包括:
-
PB-ADV:指通过蓝牙广播信道进行设备配置的配网承载层。PB-ADV 承载层用于发送通用配网 (Generic Provisioning) PDU。支持 PB-ADV 的设备应尽可能执行占空比接近 100% 的被动扫描,以避免遗漏任何发送来的通用配网 PDU。
-
PB-GATT:指使用来自代理协议的蓝牙 Mesh 代理(proxy)PDU 来进行设备配置的配网承载层。代理协议能使节点通过面向连接的低功耗蓝牙(Bluetooth Low Energy)承载层来收发网络 PDU、mesh Beacon、代理配置消息和配网 PDU。PB-GATT 在 GATT 操作中包含了配网 PDU,涉及 GATT 配网服务,同时能在配网器不支持 PB-ADV 时供其使用。
配网协议(Provisioning Protocol)
定义对于配网 PDU、行为和安全性的要求。了解配网协议将有助于您根据应用需求选择合适的验证方法。
配网协议定义了 10 种配网PDU:
- 配置邀请 (Provisioning Invite)
- 配置能力 (Provisioning Capabilities)
- 配置状态 (Provisioning State)
- 配置公钥 (Provisioning Public Key)
- 配置输入完成 (Provisioning Input Complete)
- 配置确认 (Provisioning Confirmation)
- 配置随机 (Provisioning Random)
- 配置数据 (Provisioning Data)
- 配置完成 (Provisioning Complete)
- 配置失败 (Provisioning Failed)
流程详解
配网流程包括五个阶段:
- 发送 Beacon 信号:如果未经配置的设备支持 PB-ADV承载层,则其作为未经配置设备 Beacon 进行广播;如果使用的是 PB-GATT 承载层,则发送可连接的广播数据包。这就向配网器(Provisioner)表明未经配置的设备已做好准备,可进入配网流程。
- 邀请:配网器(Provisioner)邀请未经配置的设备发送自身配置功能信息。
- 交换公共密钥:在此阶段,根据未经配置设备的功能,配网器(Provisioner)选择合适的验证方法,并通知未经配置设备将要采取的方式。之后,配网器和未经配置设备会创建一个椭圆曲线公私密钥对并交换公钥。然后,每台设备使用自己的私钥和对等设备的公钥来计算对称密钥,即 ECDHSecret。该密钥用于验证对端设备的身份。
- 认证:在此步骤中,配网器使用所选的验证方法,对未经配置设备进行验证。
- 配置数据分发:认证步骤完成之后,就可以确保在配网器(Provisi