Bluetooth® Mesh 远程调配
技术概览
发布 : | 1.0.0 |
文件版本 : | 1.0 |
最后更新 : | 2023 年 9 月 19 日 |
作者 : |
马丁-伍利Bluetooth SIG |
Version |
Date |
Author |
Changes |
1.0.0 |
September 19, 2023 |
Martin Woolley, Bluetooth SIG |
Initial version |
备注 Bluetooth Mesh 配置文件 规范已更名,现称为Bluetooth Mesh 协议规范。本文件和相关文件在提及 1.1 版规范时将使用这一名称,但在提及 1.0 版规范时,仍将继续称其为Bluetooth Mesh 配置文件规范。 |
1.背景情况
远程供应功能是在Bluetooth® Mesh 协议规范的 1.1 版本中引入的。要充分了解其功能和优点,有必要先了解Bluetooth Mesh 1.0 版的某些方面。本节提供了相关的背景信息,为下文回顾远程调配功能提供支持。
1.1 预备
设备通过供应行为成为Bluetooth 网格网络的会员 。供应是一个由专员使用设备或应用 称为供应器)执行的程序。对设备进行供应会使其拥有某些关键数据项,包括网络的主网络密钥(NetKey)和分配给设备网元的连续单播地址的唯一范围。正在进行供应的设备被称为被供应者(Provisionee)。
最初,根据Bluetooth Mesh 配置文件 规范 1.0 版的定义,提供者必须处于被提供者的直接无线电范围内。
1.1.1 预置协议
仅用于供应目的的协议称为供应协议。在Bluetooth® Mesh 配置文件 规范的 1.0 版本中,协议包括 10 种不同类型的 PDU。
1.1.2 提供承载器
在蓝牙®Mesh 1.0 版中,供应协议可通过连接使用Bluetooth LE 广告数据包或 GATT 程序运行。使用广告数据包作为供应协议 PDU 的容器被称为PB-ADV 承载。使用 GATT 进行配置称为PB-GATT 承载。
1.1.3 筹备阶段
供应工作分为以下五个阶段:
- Beacon广播
- 邀请函
- 交换公钥
- 应用密钥
- 分配供应数据
1.1.3.1Beacon广播
准备就绪的新设备会根据设备所支持的承载,通过广播一种或两种可能类型的Bluetooth LE 广告数据包来显示其可用性。如果支持 PB-ADV 承载,则未配置设备信标将作为不可连接、不可扫描、无定向Bluetooth LE 广告数据包进行广播。如果支持 PB-GATT,则会广播包含网格供应服务UUID 的可连接广告数据包。如果支持两种承载,则这两种广告形式将交错进行。
无论哪种情况,Beacon广播 数据都包括未配置设备的设备UUID。设备 UUID 是设备的唯一标识符,在物理或product 的生命周期内不会改变,通常在出厂时分配。
1.1.3.2 邀请
供应者扫描未供应设备信标和/或表明支持 GATTmesh 供应服务 的可连接广告,并在 PB-ADV 或 PB-GATT 承载实例上与选定的未供应设备建立会话(称为链路)。然后,它发送调配邀请 PDU 以启动调配流程。现在被称为被供应者的设备会响应一个供应能力 PDU,其中包含用于控制供应流程下一步的信息。供应者根据这些信息构建一个内容为 "供应开始 "的 PDU 并发送。
1.1.3.3 交换公开密钥
椭圆曲线加密法 (ECC) 用于将 NetKey 从供应者安全地传输到未供应的设备。ECC 是一种基于椭圆曲线数学特性的公钥加密方法。它要求的密钥大小相对较小,非常适合计算能力有限的设备使用。
提供方生成一个短暂的公钥/私钥对,并使用选定的承载通过Bluetooth 链路将其公钥发送给被提供方。被提供方可以通过同一链路发送公钥,或者为了提高安全性,使用带外(OOB)方法提供公钥,例如通过二维码或使用近场通信(NFC)。被提供方的公钥/私钥对可以是静态定义的,也可以是动态生成的。
一旦掌握了对方的公开密钥,就可以通过密钥协议计算出共享秘密,并由此计算出会话密钥。会话密钥用于确保网钥传输的安全。共享应用密钥 还用于计算应用密钥 步骤中使用的确认应用密钥 和设备的设备密钥。
1.1.3.4应用密钥
配置通常会在有许多Bluetooth®Mesh 设备的地方进行。为确保正在配置的设备是预定的设备,并防止中间人(MITM)攻击,配置过程包括应用密钥 步骤。
应用密钥可以有多种形式,其中一种是根据未配置设备的能力选择的,供应方在邀请阶段收到的供应能力 PDU 会告知供应方这些能力。
输出 OOB 方法涉及未配置设备使用其支持的操作输出数值或文本值。例如,它可能会闪烁 LED 或发出若干次蜂鸣声。输出数字会被输入到 Provisioner,然后确认程序会检查是否输入了预期值。
如果使用输入 OOB 方法,则供应程序会生成一个随机数,通过适当的操作(如按若干次按钮)将其输入未供应设备,并通过确认程序进行验证。
静态 OOB 方法涉及一个固定值,可能印在设备上或其包装上,将其输入 Provisioner 并在确认程序中使用。
无论使用哪种方法,结果都是成功或失败验证正在配置的设备,并将结果通知用户。
1.1.3.5 分配供应数据
成功应用密钥后,将生成会话应用密钥并用于加密和验证通过链路发送的供应数据 PDU。供应者发送的数据包括主网密钥和设备主元素的唯一单播地址 。现在,该设备可以说已完成供应。
图 2 - 配置流程的第 2-5 阶段 |
1.2 设备密钥和调试程序
Bluetooth® Mesh 安全系统包含多个安全密钥,每个密钥都有其特定的作用。
网络应用密钥 用于对 PDU 中与网络层有关的字段进行加密和应用密钥 。拥有一个特定的网络密钥(以这种方式使用该密钥为证),就意味着节点拥有该网络密钥所属子网的会员资格 。
应用应用密钥 用于对与蓝牙网格协议栈高层相关的 PDU 中的字段进行加密和应用密钥 ,通常发给属于特定楼宇系统(如照明或空调)的设备。
一个节点可能拥有多个网络密钥和多个应用 密钥。
所有节点都有一个设备密钥(DevKey)。该密钥用于保护属于特定型号的信息,通常与设备配置有关。节点在配置时会计算其 DevKey。DevKey 不会通过网络传输。
最初创建Bluetooth® Mesh 网络时,尤其是在智能楼宇领域,设备通常由承包商团队安装、调配和配置,并最终将完成的网络移交给楼宇业主。为了达到最佳的安全性,楼宇业主此时最好可以选择更改网络中每个节点的安全密钥。
Bluetooth Mesh 1.0 定义了 "密钥刷新 "程序,允许在整个网络内更改网络密钥和应用 密钥。Bluetooth Mesh 1.0 中没有定义更改设备密钥的程序。
1.3 节点地址
Bluetooth® Mesh 包括一个寻址方案。
所有元素都有一个唯一的 16 位单播地址 ,它被用作所有信息的来源地址 ,有时也被用作目的地地址。
组地址和虚拟地址是两种地址 类型,它们允许在单个信息中对节点集合进行寻址。节点若要接收和回复发送到特定组地址或地址 的信息,就必须订阅该地址。
最初,在Bluetooth Mesh 的 1.0 版本中,如果不先将元素从网络中删除,然后重新配置,就无法更改元素的单播地址 。
1.4 节点构成
节点具有逻辑结构。一个节点由一个或多个元素组成。元素是设备中可单独寻址的部分,有自己的单播地址。节点内的元素地址必须在连续范围内分配,主元素的地址最低。
元素包含一个或多个模型。模型是标准化的软件组件,可为元素提供某些功能,如控制设备开关或改变亮度。模型有相关的状态和信息。在大多数情况下,节点到元素到模型的关系是分层的,1 个节点包含 1:n 个元素,每个元素包含 1:m 个模型。不过,某些类型的模型可能由不止一个元素拥有,因此这并不是一个严格的层次结构。
节点的具体元素数量和每个元素包含的特定模型是节点组成的一部分。节点的构成由 "构成数据"状态中的信息表示。该状态将其内容划分为若干页,这些页都有索引。第 0 页非常重要,它包含节点当前活动的组成数据。
在Bluetooth® Mesh 1.0 版中,如果不执行节点重置和重新配置,就无法更改节点的组成。
1.5 复杂设备
有些设备非常复杂,有许多独立的组件,每个组件都为整个设备增加了专门的功能。例如,DALI(数字可寻址照明接口)设备是围绕通信总线建立的,传感器等单个组件可以插入或拔出通信总线。这些设备不仅结构复杂,具有复杂的逻辑结构,而且由于可以方便地添加或移除组件,其组成结构也是动态的。
2.关于远程调配
Bluetooth® Mesh 协议规范 1.1 版引入了远程供应(RPR)功能,可通过mesh 网络对不在供应者直接无线电范围内的节点进行供应和重新供应。
2.1 能力和优势
RPR 提供的功能和优势可分为三个主题:
2.1.1 多跳设备供应
使用远程调配功能,调配者和未调配设备可以在任何地点,只要两台设备之间能通过网络形成通信路径。这使得该过程在许多实际情况下更加实用。
2.1.2 所有权变更
RPR 定义了当网络中的设备所有权发生变化时可以使用的程序,并允许建立新的设备密钥值。
2.1.3 动态设备组成
能够检测自身物理组成变化的复杂设备现在可以指示所需的mesh 组成状态数据变化。供应程序可识别这一点并启动 RPR 程序,更新活动的组成数据状态以反映新的组成。不再需要重置、重新供应和重新配置设备,而这在以前是必须的。
与新的即插即用功能相关的是,mesh 协议规范 1.1 为设备的生命周期及其结构和配置引入了一个新的正式名称。规范中对 "终端"的概念描述如下:
A 期是节点生命周期中的一段时间,在此期间,节点的结构(即特征、元素和模型)以及节点元素的单播地址不会发生变化。 可能需要启动一个新术语,以支持物理设备硬件配置的更改(如附加辅助传感器),或支持节点上子系统配置的更改(如在灯具内部网络上附加新设备)。节点通过填充组成数据页 128(见第 4.2.2.3 节)来显示这些更改,并在新的 开始时生效。开始时生效。 初始 期限在网络上配置节点时开始。 A 任期结束结束,新的 开始(见第 3.11.8 节)。在执行节点地址 刷新程序或节点组成刷新程序时开始(见第 3.11.8 节)。 最后一个 项在网络上的节点从网络中删除时结束。 |
2.2 技术要点
2.2.1 结构
远程供应涉及两种新模式,即远程供应客户端模式和远程供应服务器模式。远程供应客户端模型使供应者设备能与远程未供应设备通信,并控制供应过程。这种设备被称为 PB 远程客户端。客户端模型使用模型信息发送和接收供应协议 PDU。报文以通常的方式在网络上转发,可使用管理泛洪、定向转发或两种方法的组合。远程供应服务器模型使 PB-Remote 客户端能在其直接无线电范围内扫描和供应未供应的设备。实施这种模式的设备称为 PB-Remote 服务器。服务器模式还支持执行更改设备密钥或即插即用设备配置所需的程序。
远程供应还定义了 PB-Remote 供应承载。当在 PB-Remote 服务器设备上执行时,PB-Remote 承载使用 PB-ADV 或 PB-GATT 与未配置设备通信。在 PB-Remote 服务器设备上实施时,该承载器可让供应者与参与供应流程的远程设备通信。
定义了一个名为 "节点供应协议接口"的接口,该接口支持一系列重要的新程序,包括更改 设备密钥和即插即用设备配置。
远程调配模式定义了以下信息
- 可发现网络中任何地方的设备,这些设备都可进行配置,并处于 PB-Remote 服务器的直接无线电范围内。
- 允许在 PB-Remote 服务器和选定的未配置节点之间建立链接。
- 对配置协议 PDU 进行封装,使其可以在客户端和服务器之间进行双向传输。
- 使用作为服务器的节点的设备密钥 (DevKey) 进行加密。
- 与节点供应协议接口程序有关。
概括地说,远程供应的工作原理是 PB-Remote 服务器根据 PB-Remote 客户端的请求,与选定的未供应设备建立链接。然后,PB-Remote 服务器接收封装在远程供应信息中的供应协议 PDU,提取这些 PDU 并通过链路发送,同时接收响应的供应协议 PDU,并将其封装在其他远程供应信息中发送回 PB-Remote 客户端。见图 3。
这样,PB-Remote 客户端就能与远程未配置设备一起执行通常的配置流程。PB-Remote 服务器在此过程中充当中间人,在承载之间进行转换,并将客户端发送的 PB-Remote 信息中的供应 PDU 转发给未配置设备。
图 3 - 远程调配架构
2.2.2 远程调配的各个阶段
远程调配可分为以下四个阶段:
- 执行远程扫描
- 打开未配置设备的链接
- 配置设备
- 关闭链接
2.2.2.1 远程扫描
图 4 - 远程调配扫描程序
PB-Remote 客户端可请求两种形式的远程扫描,即远程配置扫描启动或远程配置扩展扫描启动。见图 4。
2.2.2.1.1 远程调配扫描程序
远程供应扫描启动信息被发送到 PB-Remote 服务器的单播目标地址 ,指示其开始扫描可供应的设备。该信息可能包括一个设备 UUID,如果该 UUID 存在,则表示只扫描特定设备。或者,扫描 PB-Remote 服务器范围内的所有未配置设备。这两个选项分别称为单设备扫描和多设备扫描。
Remote Provisioning Scan Start(远程调配扫描启动)是一个有应答的消息 ,PB-Remote Server 节点会用Remote Provisioning Scan Status(远程调配扫描状态)消息来应答它。
远程调配扫描报告信息由 PB-Remote 服务器发送回启动扫描的 PB-Remote 客户端。这些信息包含服务器能够调配的每个不同的、已发现的未调配设备的详细信息,其中包括识别设备 UUID、有关设备带外(OOB)应用密钥 功能的信息、PB-Remote 服务器测得的信号强度(RSSI)以及被调配设备的 URI 哈希值(如果有的话)。单个设备扫描只会产生指定设备 UUID 的扫描报告信息(如果发现了该设备)。
2.2.2.1.2 远程调配扩展扫描程序
远程扫描的这种变体允许 PB-Remote 客户端请求有关单个设备的特定附加信息,这些信息在未配置设备信标(PB-ADV 的情况)或服务 Data AD 类型的可连接广告数据包(PB-GATT 的情况)中找不到。Bluetooth®LE 扫描响应数据包或包含来自同一设备的其他内容的附加广告数据包中可能会提供其他相关信息。
扩展扫描可从单个未配置设备或 PB-Remote Server 节点本身获取信息。在第一种情况下,虽然远程供应扩展扫描程序只针对单个设备执行,但如果 PB-Remote 服务器实施支持,则可同时执行多个程序实例,每个实例针对不同的设备 UUID。
由 PB-Remote 客户端发送的远程供应扩展扫描启动信息会启动 PB-Remote 服务器节点的远程扩展扫描,该节点具有指定的单播地址。它可以包含所请求值的 AD 类型列表(受Bluetooth Mesh 协议规范中记载的某些限制)。如果信息中包含设备 UUID,则会对指定的未配置设备进行扫描,否则会从 PB-Remote Server 节点本身获取信息。
远程调配扩展扫描启动是一条未确认的信息。
远程供应扩展扫描报告信息由服务器发送回启动扩展扫描的 PB-Remote 客户端,其中包含 PB-Remote 服务器获取的请求类型信息。
2.2.2.2 打开链接
图 5 - 打开与未配置设备的远程链接
PB-Remote 客户端可发送带有设备 UUID 参数的远程供应链接打开(RemoteProvisioning Link Open)消息,要求 PB-Remote 服务器节点与指定设备建立供应链接。这是一个有应答的消息 ,会导致服务器向客户端发送一个Remote Provisioning Link Status(远程供应链接状态)消息。请参见图 5。
请注意,"远程供应链接打开 "报文可用于让 PB-Remote 服务器为其他程序做好准备,这些程序可通过新的节点供应协议接口使用(见 2.2.3)。
2.2.2.3 配置设备
图 6 - 远程调配
一旦 PB-Remote 服务器节点与目标未配置设备之间的链接建立,PB-Remote 客户端就可自行推进配置流程。该流程与 1.1.3.2 至 1.1.3.5 中描述的四个阶段基本相同,只是所需的供应协议 PDU 被封装在一个称为远程供应 PDU 发送信息的 PB-Remote 信息类型中。服务器从 PB-Remote 消息中提取供应协议 PDU,并通过链路将其转发到未供应设备。未调配设备发送到 PB-Remote 服务器的调配协议 PDU 将封装在远程调配 PDU 报告信息中,并发回 PB-Remote 客户节点。请参见图 6。
2.2.2.4 关闭链接
图 7 - 关闭远程调配链接
供应完成后,PB-Remote 客户端会指示 PB-Remote 服务器关闭与已供应设备的链接。为此,服务器会发送一条远程供应链接关闭信息,并回复一条远程供应链接状态信息。
2.2.3 节点供应协议接口
PB-Remote 定义了一系列程序,可通过一个新定义的接口(称为节点供应协议接口 (NPPI))使用。支持远程供应服务器模型的节点必须支持 NPPI 接口及其相关程序。任何一个 NPPI 程序都可以通过远程供应客户端模型发送远程供应链接打开信息来启动,该信息包含一个 NPPI 程序字段,指明所需的 NPPI 程序。NPPI 程序由远程供应服务器模型执行。
节点供应协议接口是关闭的,直到远程供应服务器模型收到远程供应链接打开消息,该消息是发给远程供应服务器模型本身的。接口打开后,供应协议 PDU 将按照正常流程(但对供应数据 PDU 值有一些限制)交换,这些 PDU 封装在远程供应信息中。这些 PDU 随后由远程供应服务器模型处理,以执行选定的程序。请注意,这与 2.2.2.3 中描述的行为不同,在 2.2.2.3 中,供应协议 PDU 通过链路转发到未供应设备,如图 5、6 和 7 所示。
图 8 - NPPI 架构
Bluetooth Mesh 1.1 协议规范中定义的 NPPI 程序如下。
2.2.3.1 设备密钥刷新
通过该程序可为节点分配新的设备密钥,而无需重新全面配置节点。节点的元素地址及其 NetKeys 和 AppKeys 列表等现有数据不受影响。
该程序分两个阶段执行,使用标准配置协议和程序计算新的候选密钥(称为设备候选密钥)。该密钥永远不会离开设备,而且基于椭圆曲线加密技术的 Diffie-Hellman 密钥协议可安全地使配置管理器拥有该密钥的副本。这就确保了与此程序相关的安全等级与设备初始配置时的安全等级相同。在此阶段,节点的设备密钥尚未更改,但它知道一个候选新密钥值。在第 2 阶段,当接收到使用候选新设备密钥加密的访问消息时,候选设备密钥将成为节点的新 DevKey。这表明新密钥正在使用中。此时,旧密钥被废止,新的候选设备密钥取而代之。
2.2.3.2 节点地址 刷新
节点地址 刷新程序允许更改节点的单播地址 及其设备密钥,而无需重置和重新配置。节点的 NetKeys 和 AppKeys 列表等现有数据不受影响。它还可用于更改节点的元素数量,每个元素都会分配一个地址 ,形成一个连续的范围,从分配给主元素的新单播地址 开始。
2.2.3.3 节点构成刷新
这一程序允许改变节点的组成(即元素和模型的数量),并为物理组成结构是动态的复杂设备提供了一种即插即用的能力。
想象一下网络中的 DALI 设备。该设备是一种精密的照明product ,其内部总线最多可容纳 128 个不同的组件。例如,各种类型的传感器可以插入或拔出节点。这类设备在使用合适的固件编程后,可以检测到这些类型的变化。
此 NPPI 程序要求检测到其物理组成发生变化的节点将详细信息写入组成数据状态的第 128 页。该程序由 PB-Remote 客户端启动,最终会将新的组成状态数据从第 128 页复制到存储活动组成状态数据的第 0 页,从而实现所需的更改。
执行该过程时,也会为节点分配一个新的设备密钥。节点的 "组成数据"(Composition Data)状态由程序更新,但其他状态保持不变。
2.2.4 远程调配和安全
图 9 描述了远程配置的安全方式。PB-Remote 客户端和服务器交换的信息使用 PB-Remote 服务器节点的设备密钥进行加密。随后执行的调配程序采用标准调配安全机制,经过第 1.1.3 节所述的常规调配程序的第 2-5 阶段。
图 9 - 远程调配安全性
设备支持的某些应用密钥 方法依赖于用户能够看到、听到或触摸到设备。远程供应的设计目的是允许供应离供应者有相当距离的设备,因此在某些情况下,这些类型的应用密钥 方法可能不是最佳的或不切实际的。幸运的是,Bluetooth® Mesh 1.1 版还增加了一种新的应用密钥 方法,非常适合在看不见的情况下远程配置设备,即基于证书的配置。基于证书的供应技术概述文件》中讨论了这一功能。
2.2.5 批量供应
Bluetooth® Mesh 1.0 需要在新设备的直接无线电范围内进行调配,因此无法在不重新定位调配器的情况下调配大量设备,甚至是网络中的所有设备。
远程调配与基于证书的调配相结合,为调配工具提供了潜力,这些工具可用于在专员启动的单一程序中,以编程方式调配新网络中的每一台设备。
3.关闭
Bluetooth® Mesh 远程配置功能使在网络中配置新设备的工作变得更加简单。新的节点配置协议接口程序反映了现实世界中的使用案例,确保建立新网络和维护复杂设备所涉及的常规工作流程得到良好支持。