Bluetooth® Mesh网络中的设备管理

如需要了解更多蓝牙相关知识,请点击下方连接

https://blog.csdn.net/weixin_47456647/article/details/155188246?spm=1011.2415.3001.5331

蓝牙网状网络就像一个专属俱乐部:如果你是会员,就能进入俱乐部并使用会员等级对应的设施与服务;若不是会员,无论如何都无法进门。

蓝牙网状网络设备要么是某一蓝牙网状网络的成员,要么不是:

  • 若是成员,它至少能以基础方式与网络内的其他成员设备通信;
  • 若不是成员,它传输的所有内容都会被网络内的其他设备忽略。

蓝牙网状网络设备也有 "会员类型",类似只能使用俱乐部特定设施(如健身房、高尔夫球场)而非全部设施 ------ 它只能与网络中的特定设备完全交互。这一逻辑由 "应用" 概念管控:例如,蓝牙网状网络灯开关可以控制网络中所有属于 "照明应用" 的灯具,但无法控制供暖系统,因为供暖系统不属于照明应用。

设备要成为蓝牙网状网络的成员,必须通过一个名为 "配置(provisioning)" 的安全流程加入网络。

安全性

安全性是蓝牙网状网络的核心,本系列后续会详细介绍这一主题。向蓝牙网状网络添加或移除设备的流程,其核心都包含安全要求。

蓝牙网状网络使用多种安全密钥类型的系统,既保障整个网络的安全,也能隔离并保障网络内各独立应用的安全。设备成为网络成员、获得参与特定应用的权限,本质上都是因为它持有对应的安全密钥。网络中的所有节点都持有一个名为 "网络密钥(NetKey)" 的密钥 ------ 正是持有该密钥,才让设备成为网络的一员(即节点)。

术语定义

在蓝牙网状网络系列前文,我们介绍了正式技术术语 "设备(device)" 与 "节点(node)":你可能记得,成为网状网络成员的设备称为 "节点",非成员设备称为 "设备"。接下来我会用首字母大写的 "Device" 表示尚未加入网状网络的设备,而 "device" 则延续此前的用法,泛指一般意义上的电子设备。

配置者

配置流程能将普通的 Device 转变为节点(即蓝牙网状网络的正式成员)。该流程通过一款应用完成 ------ 这类应用通常由产品厂商提供,可运行在智能手机或平板上,也可能是桌面应用或网页应用等形式。

运行配置应用的设备称为 "配置者(provisioner)"。配置者必须具备物理安全性,因为它承担着特殊职责。

配置协议

在配置过程中,配置者与待配置的 Device 通过蓝牙网状网络的 "配置协议" 通信。配置者可通过 PB-ADV 或 PB-GATT 承载层使用配置协议,这确保配置应用能在较旧的智能手机上实现 ------ 只需设备支持蓝牙低功耗(LE)与 GATT 即可。

向网络添加新设备

向网络添加设备的核心是向其提供网络内其他所有节点都持有的 "网络密钥",且该流程本身必须安全,以防恶意设备窃听通信并窃取 NetKey。

当用户购买新设备并需要将其加入现有蓝牙网状网络时,会使用配置者,结合新设备厂商提供的说明完成添加操作 ------ 这会将新设备转变为节点,成为蓝牙网状网络的成员。

该流程包含多个步骤,如下图流程图所示。

步骤 1:广播(beaconing)

《蓝牙网状网络规范》引入了新的 GAP 广播类型,包括 "Mesh Beacon" 广播类型。

设备通过 "Mesh Beacon" 广播类型将自己标识为 "未配置设备",以此表明可被配置。用户可能需要按照厂商说明操作新设备启动广播(比如按下组合按键,或长按某按键一段时间)。

用户还需在配置者中启动 "向网络添加设备" 流程,这会让配置者接收广播设备的广播包。配置者通常是智能手机或平板应用,实际操作包括解锁设备、启动应用(可能需登录以提升安全性),并通过界面发起 "搜索广播设备"------ 这样配置者就能识别新设备,并确认其已准备好完成后续配置流程。

步骤 2:邀请(invitation)

接下来,配置者向待配置设备发送邀请消息,形式是 "配置邀请 PDU"(属于配置协议的一部分)。广播设备会以 "配置能力 PDU" 回应,包含自身信息。

配置能力 PDU 会提供设备的元素数量、支持的配置相关算法等信息,还会说明设备的输入 / 输出能力类型 ------ 这些信息会用于后续的认证步骤。

步骤 3:交换公钥

所有蓝牙网状网络设备(包括配置者)都支持 FIPS P-256 椭圆曲线算法,因此必须拥有公钥。基于该算法的非对称加密技术,会用于创建安全信道,以完成后续配置流程。为此,配置者与设备会交换各自的公钥。(设备也可通过二维码等带外方式提供公钥,后续文章会聚焦网状网络安全,包括配置安全)

步骤 4:认证(authentication)

配置者利用新设备的能力信息,向其发送消息,指示设备通过支持的用户操作(如按键)输出单 / 多位数值。输出形式因设备而异:有的设备会在 LED 面板显示 3 位数字,有的会通过红灯闪烁次数表示数值。用户需观察设备输出的数值,并输入到配置者的界面中。

随后,设备与配置者交换 "加密哈希值"(由设备输出的随机值等数据衍生而来),以此完成对等方的认证。

步骤 5:分发配置数据

认证成功后,双方会从各自的私钥与交换的对等公钥中衍生出会话密钥,用于加密后续配置流程所需数据的分发,包括网络密钥(NetKey)与设备的唯一地址(单播地址)。

配置完成后,已配置设备会持有网络的 NetKey、蓝牙网状网络安全参数(IV 索引),并获得配置者分配的单播地址 ------ 此时新设备正式成为蓝牙网状网络的节点与成员。

从网络移除节点

蓝牙网状网络的节点有时需要被移除:比如设备损坏需更换、需迁移到另一网络,或设备被出售(新 owner 会通过上述配置流程将其加入自己的网络)。

若设备故障无法修复,你可能会直接丢弃;若出售设备,你可能只收钱不管旧设备 ------ 但这很不明智。

节点包含配置流程中获得的安全密钥,持有主 NetKey 是设备成为网络成员的依据。若丢弃 / 出售含密钥的设备,可能导致网络面临 "垃圾桶攻击" 风险。因此,规范定义了安全的节点移除流程,消除这一隐患:

移除节点包含两步:首先,通过配置者应用将待移除节点加入拒绝列表 ;其次,启动密钥刷新流程

拒绝列表

用户需通过配置者将待移除节点加入拒绝列表,其作用是:在启动密钥刷新流程时,拒绝列表中的节点不会被分配新安全密钥。

密钥刷新流程

密钥刷新流程会为网络中除拒绝列表成员外的所有节点,分配新的网络密钥、应用密钥及所有相关衍生数据 ------ 即替换网络与应用安全的整套基础密钥。

用户通过配置者启动密钥刷新,配置者会通过配置消息向网状网络中除拒绝列表外的所有节点发送新密钥。

低功耗节点会从其友节点处接收新密钥,因此可能需要较长时间才能完成密钥更新,整个网络的密钥替换也会相应延迟。

由于并非所有节点都会同时收到新密钥,密钥刷新流程定义了 "阶段 2" 过渡周期:此阶段同时使用新旧密钥 ------ 具体来说,传输用新密钥,支持接收的节点同时兼容新旧密钥。

当阶段 2 完成且所有非拒绝节点都收到新密钥后,配置者会通知所有节点撤销旧密钥。

此时,被移除的节点仅持有旧 NetKey 与旧 AppKey,不再是网络成员,也不会构成威胁。

总结

安全性是蓝牙网状网络技术设计的核心,这一点在 "添加 / 移除设备" 等基础网络管理场景中体现得淋漓尽致。

若你对蓝牙网状网络安全的更多信息感兴趣,后续文章会详细介绍其最重要的安全特性。

相关推荐
qq_479875434 小时前
C++ 网络编程中的 Protobuf 消息分发 (Dispatcher) 设计模式
网络·c++·设计模式
Tandy12356_4 小时前
手写TCP/IP协议——IP层输出处理
c语言·网络·c++·tcp/ip·计算机网络
luoganttcc4 小时前
tcp 三次 握手
网络·网络协议·tcp/ip
土星云SaturnCloud11 小时前
不止是替代:从机械风扇的可靠性困局,看服务器散热技术新范式
服务器·网络·人工智能·ai
liulilittle11 小时前
C++ 浮点数封装。
linux·服务器·开发语言·前端·网络·数据库·c++
lang2015092811 小时前
Sentinel核心机制:Context与EntranceNode解析
网络·sentinel
chuxinweihui11 小时前
数据链路层
运维·服务器·网络
qq_2515335912 小时前
使用 Python 提取 MAC 地址
网络·python·macos
专业开发者12 小时前
Wi-Fi 7 市场增长势头:驱动汽车场景全领域连接
物联网·汽车