蓝牙™ 网格远程调配

蓝牙™ 网格远程调配

技术概览

发布 : 1.0.0
文件版本 :   1.0
最后更新 : 2023 年 9 月 19 日
作者 :   

马丁-伍利Bluetooth SIG
北欧半导体公司 Omkar Kulkarni
Silvair, Piotr Winiarczyk

修订历史

Version

Date

Author

Changes

1.0.0

September 19, 2023

Martin Woolley, Bluetooth SIG
Omkar Kulkarni, Nordic Semiconductor
Piotr Winiarczyk, Silvair

Initial version

 

备注

Bluetooth Mesh 配置文件 规范已更名,现称为Bluetooth Mesh 协议规范。本文件和相关文件在提及 1.1 版规范时将使用这一名称,但在提及 1.0 版规范时,仍将继续称其为Bluetooth Mesh 配置文件规范。

 

1.背景情况

蓝牙™ Mesh 协议规范 1.1 版引入了远程配置功能。要充分了解其功能和优势,有必要了解蓝牙 Mesh 1.0 版本的某些方面。本节提供了相关的背景知识,为下文回顾远程配置提供支持。

1.1 预备

设备通过供应行为成为蓝牙 Mesh 网络的成员。启动配置设备是一个程序,由专员使用称为 "应用 "的设备或 "应用 "来执行。 启动配置设备.对设备进行配置会使其拥有某些关键数据项,包括分配给设备元素的网络主网络层密钥 网络密钥)和唯一的连续单播地址范围。正在进行供应的设备称为被供应者(Provisionee)。

最初,根据蓝牙网格配置文件 1.0 版规范的定义,启动配置设备 必须处于被提供方的直接无线电范围内。

1.1.1 预置协议

仅用于配置目的的协议称为配置协议。在蓝牙™ Mesh配置文件 规范的 1.0 版本中,协议包括 10 种不同类型的 PDU。

1.1.2 提供承载器

在蓝牙™ Mesh 1.0 版本中,供应协议可通过Bluetooth LE 广告数据包或 GATT 程序在连接上运行。使用广告数据包作为供应协议 PDU 的容器被称为PB-ADV 承载。使用 GATT 进行配置称为PB-GATT承载层

1.1.3 筹备阶段

供应工作分为以下五个阶段:

  1. Beacon广播
  2. 邀请
  3. 交换公钥
  4. 应用密钥
  5. 分配供应数据
1.1.3.1Beacon广播

准备就绪的新设备会根据设备所支持的承载,通过广播一种或两种可能类型的Bluetooth LE 广告数据包来显示其可用性。如果支持 PB-ADV 承载,则未配置设备信标将作为不可连接、不可扫描、无定向Bluetooth LE 广告数据包进行广播。如果支持 PB-GATT,则会广播包含网格供应服务UUID 的可连接广告数据包。如果支持两种承载,则这两种广告形式将交错进行。

无论哪种情况,Beacon广播 数据都包括未配置设备的设备UUID。设备 UUID 是设备的唯一标识符,在物理或产品 生命周期内不会改变,通常由工厂分配。

1.1.3.2邀请

启动配置设备 扫描未配置设备信标和/或表明支持 GATT 网状网配置服务 可连接广告,并在 PB-ADV 或 PB-GATT 承载层实例上与选定的未配置设备建立会话(称为链接)。然后,它发送一个供应邀请 PDU 以启动供应流程。现在被称为被供应者的设备会响应一个 "供应能力 PDU",其中包含用于控制供应流程下一步的信息。启动配置设备 根据这些信息构建一个内容为 "配置启动 PDU "并发送。

1.1.3.3 交换公开密钥

椭圆曲线加密(ECC)用于将网络密钥 从启动配置设备 安全地传输到未配置设备。ECC 是一种基于椭圆曲线数学特性的公钥加密方法。它需要的密钥规模相对较小,非常适合计算能力有限的设备使用。

启动配置设备 生成短暂的公钥/私钥对,并使用选定的承载器通过蓝牙链路将其公钥发送给被提供方。被提供方可以通过同一链路发送公钥,或者为了提高安全性,使用带外(OOB)方法提供公钥,如通过二维码或使用近场通信(NFC)。被提供方的公钥/私钥对可以是静态定义的,也可以是动态生成的。

一旦掌握了对方的公开密钥,就可以通过密钥协议计算出共享秘密,并由此计算出会话密钥。会话密钥用于确保网络密钥 传输的安全。共享应用密钥 还用于计算应用密钥 步骤中使用的确认应用密钥 和设备的设备秘钥 应用密钥 。

1.1.3.4应用密钥

调配通常在有许多蓝牙™ 网状设备的地方进行。为确保所配置的设备是预定的设备,并防止中间人(MITM)攻击,配置程序包括应用密钥 步骤。

应用密钥可以有多种形式,其中一种是根据未配置设备的能力选择的,启动配置设备 通过在邀请 阶段收到的配置能力 PDU 获知该能力。

输出 OOB 方法涉及未配置设备使用其支持的操作输出数值或文本值。例如,它可能会闪烁 LED 或发出若干次蜂鸣声。输出数字被输入到启动配置设备,并由确认程序检查是否输入了预期值。

如果使用输入 OOB 方法,则启动配置设备 生成一个随机数,通过适当的操作(如按若干次按钮)将其输入未配置设备,并通过确认程序进行验证。

静态 OOB 方法涉及一个固定值,可能印在设备上或包装上,输入到启动配置设备 中,并在确认程序中使用。

无论使用哪种方法,结果都是成功或失败验证正在配置的设备,并将结果通知用户。

1.1.3.5 分配供应数据

成功应用密钥后,会生成一个会话密钥,用于加密和验证通过链路发送的配置数据 PDU。启动配置设备 发送的数据包括主网络密钥 和设备主元素 的唯一单播地址 。现在可以说设备已配置完成。

图1图 1 - 第 1 阶段配置 -Beacon广播

图2

图 2 - 配置流程的第 2-5 阶段

1.2 设备密钥和调试程序

蓝牙™ 网格安全系统涉及多个安全密钥,每个密钥都有特定的作用。

网络密钥用于对 PDU 中与网络层有关的字段进行加密和应用密钥 。拥有一个特定的网络层密钥,以这种方式使用该网络层密钥,表明节点的成员资格 是该网络层密钥 所属的子网 。

应用应用密钥 用于对与蓝牙网格协议栈 高层相关的 PDU 中的字段进行加密和应用密钥 ,通常发给属于特定楼宇系统(如照明或空调)一部分的设备。

一个节点可能拥有多个网络密钥和多个应用 密钥。

所有节点都有一个设备秘钥 设备密钥。该密钥用于保护属于特定型号的信息,通常与设备配置有关。节点在配置时会计算其设备密钥 。设备密钥 永远不会在网络上传输。

最初创建蓝牙™ 网状网络时,尤其是在智能楼宇领域,设备通常由承包商团队安装、调配和配置,并最终将完成的网络移交给楼宇业主。为了达到最佳的安全效果,楼宇业主最好可以选择更改网络中每个节点的安全密钥。

蓝牙 Mesh 1.0 定义了密钥更新 程序,允许在整个网络内更改网络密钥和应用 密钥更新 。蓝牙 Mesh 1.0 中没有定义更改设备密钥的程序。

1.3 节点地址

蓝牙™ 网格包括一个寻址方案。

所有元素都有一个唯一的 16 位单播地址 ,它被用作所有信息的地址,有时也被用作目的地 地址 。

组地址和虚拟地址是两种地址 类型,它们允许在单个信息中对节点集合进行寻址。希望接收和回复发送到特定组或地址 的信息的节点必须订阅 该地址。

最初,在蓝牙 Mesh 的 1.0 版本中,如果不先将元素从网络中删除,然后再启动配置设备 ,那么就无法更改元素的单播地址 ,通常还需要再次对其进行全面重新配置。

1.4 节点构成

节点具有逻辑结构。节点由一个或多个元素组成。一个元素 是设备中可单独寻址的部分,有自己的单播地址。节点内的元素 地址必须在一个连续的范围内分配,主元素 的地址最低。

元素包含一个或多个模型。模型是标准化的软件组件,可为元素 提供某些功能,如控制设备开关或改变亮度。模型有相关的状态信息。在大多数情况下,节点到元素 到模型的关系是分层的,1 个节点包含 1:n 个元素,每个元素 包含 1:m 个模型。然而,某些类型的模型可能由不止一个元素所拥有,因此这并不是一个严格的层次结构。

节点的具体元素数量和每个元素 包含的特定模型是节点构成的一部分。节点的构成由 构成数据状态。该状态 将其内容分为若干,并编制了索引。第 0 页很重要,它包含节点的当前活动构成数据 。

在蓝牙™ Mesh 1.0 版本中,如果不执行节点重置和重新配置,节点的组成是无法改变的。

1.5 复杂设备

有些设备非常复杂,有许多独立的组件,每个组件都为整个设备增加了专门的功能。例如,DALI(数字可寻址照明接口)设备是围绕通信总线建立的,传感器等单个组件可以插入或拔出通信总线。这些设备不仅结构复杂,具有复杂的逻辑结构,而且由于可以方便地添加或移除组件,其组成结构也是动态的。

2.关于远程调配

蓝牙™ 网状网络协议规范 1.1 版引入了远程配置 (RPR),以便通过网状网络对不在启动配置设备直接无线电范围内的节点进行配置和重新配置。

2.1 能力和优势

RPR 提供的功能和优势可分为三个主题:

2.1.1 多跳设备供应

使用远程启动配置设备 ,启动配置设备 和未配置设备可以在任何地点,只要两台设备之间能通过网络形成通信路径。这使得该过程在许多实际情况下更加实用。

2.1.2 所有权变更

RPR 定义了当网络中的设备所有权发生变化时可以使用的程序,并允许建立新的设备秘钥。

2.1.3 动态设备组成

能够检测自身物理构成变化的复杂设备现在可以显示所需的网格构成数据状态 变化。启动配置设备 可以识别这一点,并启动 RPR 程序,更新活动构成数据 状态 ,以反映新的构成。不再需要重置、重新配置和重新配置设备,而这在以前是必须的。

与新的即插即用功能相关的是,mesh 协议规范 1.1 为设备的生命周期及其结构和配置引入了一个新的正式名称。规范中对 "终端"的概念描述如下:

A 是节点生命周期中的一段时间,在此期间,节点的结构(即特征、元素和模型)以及节点元素的单播地址不会发生变化。

可能需要启动一个新的术语来支持物理设备硬件配置的更改,如附加辅助传感器,或支持节点上子系统配置的更改,如在灯具内部网络上附加新设备。节点通过填充构成数据 Page 128(参见第 4.2.2.3 节)来显示这些更改,并在新的 期限开始时生效。

初始 期限在网络上配置节点时开始。

A 任期结束结束,新的 开始(见第 3.11.8 节)。在执行节点地址 刷新程序或节点组成刷新程序时开始(见第 3.11.8 节)。

最后一个 在网络上的节点从网络中删除时结束。

 

2.2 技术要点

2.2.1 结构

远程配置涉及两种新模式,即远程配置客户端 模式远程配置服务器模式。Remote Provisioning客户端 模型使启动配置设备 与远程未配置设备通信,并控制配置过程。这种设备被称为 PB-Remote客户端。客户端 模型使用模型消息发送和接收配置协议 PDU。这些信息会以通常的方式在网络上转发,包括使用托管网络泛洪、定向转发或两种方法的组合。远程供应服务器模式可使 PB-Remote客户端 扫描并供应其直接无线电范围内的未供应设备。实现这种模式的设备称为 PB-Remote 服务器。服务器模式还支持执行更改设备秘钥 或即插即用设备配置所需的程序。

远程供应还定义了 PB-Remote 供应承载。当在 PB-Remote 服务器设备上实施时,PB-Remote 承载使用 PB-ADV 或 PB-GATT 与未配置设备通信。当在 PB-Remote 服务器设备上实施时,该承载允许启动配置设备 与参与配置流程的远程设备通信。

定义了一个名为 "节点供应协议接口"的接口,它支持许多重要的新程序,包括更改 设备秘钥 和即插即用设备配置

远程调配模式定义了以下信息

  1. 可发现网络中任何地方的设备,这些设备都可进行配置,并处于 PB-Remote 服务器的直接无线电范围内。
  2. 允许在 PB-Remote 服务器和选定的未配置节点之间建立链接。
  3. 对供应协议 PDU 进行封装,使其可以在客户端 和服务器之间双向传输。
  4. 使用作为服务器的节点的设备秘钥 设备密钥)。
  5. 与节点供应协议接口程序有关。

概括地说,远程供应的工作原理是 PB-Remote 服务器根据 PB-Remote客户端的请求,与选定的未供应设备建立链接。然后,PB-Remote 接收封装在远程供应信息中的供应协议 PDU,提取这些 PDU 并通过链路发送,同时接收响应的供应协议 PDU,并将其封装在其他远程供应信息中发送回 PB-Remote客户端。见图 3。

这样,PB-Remote客户端 就能与远程未配置设备一起执行通常的配置流程。PB-Remote 服务器在此过程中充当中介,在承载之间进行转换,并将客户端 发送的 PB-Remote 信息中的供应 PDU 转发给未配置设备。

图3

图 3 - 远程调配架构

2.2.2 远程调配的各个阶段

远程调配可分为以下四个阶段:

  1. 执行远程扫描
  2. 打开未配置设备的链接
  3. 配置设备
  4. 关闭链接
2.2.2.1 远程扫描

图4

图 4 - 远程调配扫描程序

PB-Remote客户端可请求两种形式的远程扫描,即远程配置扫描启动或远程配置扩展扫描启动。请参见图 4。

2.2.2.1.1 远程调配扫描程序

远程供应扫描启动信息会发送到 PB-Remote 服务器的单播目的地 地址 ,指示其开始扫描可供应的设备。信息可能包括一个设备 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 的情况)或可连接广告数据包的服务 数据 AD 类型(PB-GATT 的情况)中找不到。在蓝牙™ LE 扫描响应数据包或包含来自同一设备的其他内容的附加广告数据包中,可能会提供其他相关信息。

扩展扫描可从单个未配置设备或 PB-Remote Server 节点本身获取信息。在第一种情况下,虽然远程供应扩展扫描程序只针对单个设备执行,但如果 PB-Remote 服务器实施支持,则可同时执行多个程序实例,每个实例针对不同的设备 UUID。

由 PB-Remote客户端发送的 "远程供应扩展扫描启动 "消息会启动 PB-Remote 服务器节点的远程扩展扫描,该节点具有指定的单播地址。它可以包含所请求值的 AD 类型列表(受蓝牙 Mesh 协议规范中记载的某些限制)。如果信息中包含设备 UUID,则会对指定的未配置设备进行扫描,否则会从 PB-Remote Server 节点本身获取信息。

Remote Provisioning Extended Scan Start(远程调配扩展扫描启动)是一项无需应答消息功能。

远程供应扩展扫描报告信息由服务器发送回启动扩展扫描的 PB-Remote客户端 ,其中包含 PB-Remote 服务器获取的请求类型信息。

2.2.2.2 打开链接

图5

图 5 - 打开与未配置设备的远程链接

PB-Remote客户端 可发送带有设备 UUID 参数的远程供应链接打开(Remote Provisioning Link Open)消息,要求 PB-Remote 服务器节点与指定设备建立供应链接。这是一个有应答的消息 ,会导致服务器向客户端发送一个Remote Provisioning Link Status(远程供应链接状态)消息。请参见图 5。

请注意,"远程供应链接打开 "报文可用于让 PB-Remote 服务器为其他程序做好准备,这些程序可通过新的节点供应协议接口使用(见 2.2.3)。

2.2.2.3 配置设备

图片6

图 6 - 远程调配

一旦 PB-Remote 服务器节点与目标未配置设备之间的链接建立,PB-Remote客户端 就可自行推进配置流程。该流程与 1.1.3.2 至 1.1.3.5 中描述的四个阶段基本相同,只是所需的供应协议 PDU 被封装在一个名为 "远程供应 PDU 发送"(Remote Provisioning PDU Send)的 PB-Remote 消息类型中。服务器从 PB-Remote 消息中提取供应协议 PDU,并通过链路将其转发到未供应设备。未调配设备发送到 PB-Remote 服务器的调配协议 PDU 会封装在远程调配 PDU 报告信息中,并发回 PB-Remote客户端 节点。见图 6。

2.2.2.4 关闭链接

图片7

图 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

图 8 - NPPI 架构

Bluetooth Mesh 1.1 协议规范中定义的 NPPI 程序如下。

2.2.3.1设备秘钥 刷新

该程序允许为节点分配新的设备秘钥 ,而无需重新全面配置该节点。节点的元素 地址及其 NetKeys 和 AppKeys 列表等现有数据不受影响。

该程序分两个阶段执行,使用标准配置协议和程序计算新的候选密钥(称为设备秘钥 候选密钥)。该密钥永远不会离开设备,基于椭圆曲线加密技术的 Diffie-Hellman 密钥协议可安全地使配置管理器拥有该密钥的副本。这就确保了与此程序相关的安全等级与设备初始配置时的安全等级相同。在这一阶段,节点的设备秘钥 尚未更改,但它知道一个候选的新密钥值。在第 2 阶段,当收到使用新设备秘钥 候选值加密的访问消息时,设备秘钥 候选值就成为节点的新设备密钥 。这表明新密钥正在使用中。此时,旧密钥被废止,新的候选设备秘钥 取而代之。

2.2.3.2 节点地址 刷新

节点地址 刷新程序允许更改节点的单播地址 及其设备秘钥 ,而无需重置和重新配置。节点的 NetKeys 和 AppKeys 列表等现有数据不受影响。它还可用于更改节点的元素数量,从分配给主元素的新单播地址 开始,为每个元素 分配一个形成连续范围的地址 。

2.2.3.3 节点构成刷新

这一程序允许改变节点的组成(即元素和模型的数量),并为物理组成结构是动态的复杂设备提供了一种即插即用的能力。

想象一下网络中的 DALI 设备。该设备是一个复杂的照明产品 ,其内部总线最多可容纳 128 个不同的组件。例如,可以将各种类型的传感器插入或拔出节点。这类设备只要用合适的固件编程,就能检测到这些变化。

该 NPPI 程序要求检测到其物理构成发生变化的节点将详细信息写入构成数据 状态的第 128 页。由 PB-Remote客户端启动的这一程序,最终会将新的构成状态 数据从第 128 页复制到第 0 页,在第 0 页中存储了活动的构成状态 数据,从而实现所需的更改。

执行该程序时,也会为节点分配一个新的设备秘钥 。程序更新了节点的构成数据 状态 ,但其他状态保持不变。

2.2.4 远程调配和安全

图 9 描述了远程配置的安全方式。PB-Remote客户端 和服务器交换的信息使用 PB-Remote 服务器节点的设备秘钥 进行加密。随后执行的调配程序将使用标准调配安全机制,通过第 1.1.3 节所述的常规调配程序的第 2-5 阶段。

图片9

图 9 - 远程调配安全性

设备支持的某些应用密钥 方法依赖于用户能够看到、听到或触摸到设备。远程配置的目的是允许对距离启动配置设备相当远的设备进行配置,因此在某些情况下,这些类型的应用密钥 方法可能不是最佳的,或者不切实际。幸运的是,蓝牙™ Mesh 1.1 版还增加了一种新的应用密钥 方法,这种应用密钥 非常适合看不见的设备远程配置,即基于证书的配置。基于证书的调配技术概述文件》中讨论了这种功能 。

2.2.5 批量供应

由于蓝牙™ Mesh 1.0 在配置新设备时需要在新设备的直接无线电范围内,因此不适合在不重新定位启动配置设备的情况下配置大量设备,也许是网络中的所有设备

远程调配与基于证书的调配相结合,为调配工具提供了潜力,这些工具可用于在专员启动的单一程序中,以编程方式调配新网络中的每一台设备。

3.关闭

蓝牙™ 网状远程配置功能 使在网络中配置新设备的工作变得更加简单。新的节点配置协议接口程序反映了现实世界中的使用案例,确保建立新网络和维护复杂设备所涉及的常规工作流程得到良好支持。