Bluetooth® Mesh网络安全概述

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

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

物联网(IoT)最受关注的问题之一就是安全。从农业到医疗、从住宅智能家居到商用智能建筑、从电站到交通管理系统,物联网系统与技术会触及我们生活的方方面面 ------ 其安全漏洞可能造成灾难性后果。

蓝牙网状网络在设计之初就将安全作为首要优先级,是从底层构建的安全体系。本文会概述其核心安全特性与解决的安全问题,系列后续文章会深入探讨蓝牙网状网络安全的更多细节。

蓝牙网状网络的安全是强制要求

蓝牙低功耗(LE)GATT 设备可实现《蓝牙核心规范》定义的多种安全措施,具体采用哪些措施由产品设计者决定(甚至可选择不启用任何安全特性)------ 也就是说,蓝牙低功耗 GATT 的安全是可选的 。若仅涉及单台设备及其与另一台设备的连接,且产品设计者完成了正确的风险评估,这种设计是合理的。但蓝牙网状网络的安全并非针对单个产品或对等设备连接,而是关注整个设备网络及各类设备组的安全

因此,蓝牙网状网络的安全是强制要求

蓝牙网状网络安全基础

以下安全原则适用于所有蓝牙网状网络:

安全机制 说明
加密与认证 所有蓝牙网状网络消息都经过加密与认证。
关注点分离 网络安全、应用安全、设备安全独立处理(详见下文 "关注点分离")。
区域隔离 蓝牙网状网络可划分为多个子网,每个子网在加密层面独立且安全。
密钥刷新 安全密钥可在网络生命周期内通过 "密钥刷新流程" 更新。
消息混淆 混淆处理让网络内消息难以被追踪,提供隐私保护,降低节点被追踪的风险。
重放攻击防护 蓝牙网状网络安全机制可防御重放攻击。
垃圾桶攻击防护 节点可被安全移除,避免因丢弃 / 出售含密钥的设备而引发攻击。
安全设备配置 设备加入网状网络成为节点的流程(配置)是安全的。

关注点分离与安全密钥

蓝牙网状网络安全的核心是三类安全密钥,它们为网络不同层面提供安全保障,实现了关键的 "关注点分离" 能力。

以兼具中继功能的网状灯具为例:它可能会处理楼宇蓝牙网状门禁系统的消息 ------ 灯具无需访问、处理这些消息的细节,但需要将其中继给其他节点。

为解决这种潜在的利益冲突,蓝牙网状网络使用不同的安全密钥(称为 AppKey):网络层消息的安全密钥,与照明、物理安防、暖通等特定应用数据的安全密钥是分离的。

蓝牙网状网络中的所有节点都持有一个或多个网络密钥(NetKey)(每个对应一个子网,可能是主子网)。持有网络密钥是节点成为网络成员的依据,网络加密密钥与隐私密钥直接由 NetKey 衍生而来。

持有 NetKey 的节点可解密并认证到网络层,从而执行中继等网络功能,但无法解密应用数据。

每个节点还拥有唯一的安全密钥 ------设备密钥(DevKey),用于节点的配置与设置流程。

区域隔离

持有主 NetKey 意味着成为网络成员并获得网络访问权,同时也可将网络划分为多个独立子网,每个子网有自己的子网密钥。这意味着只有持有某子网密钥的设备,才能与该子网的成员设备通信。子网密钥也可按需创建分配,典型示例是隔离酒店不同房间的节点。

节点移除、密钥刷新与垃圾桶攻击

如前文所述,节点包含各类蓝牙网状网络安全密钥。若节点故障需丢弃,或所有者决定将其出售,必须确保该设备及所含密钥无法被用于攻击原网络。

规范定义了节点移除流程:通过配置者应用将节点加入拒绝列表 ,再启动密钥刷新流程

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

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

隐私保护

由 NetKey 衍生的隐私密钥会对网络 PDU 的头部值(如源地址)进行混淆处理,避免随意的被动窃听用于追踪节点及使用者,同时增加了流量分析类攻击的难度。

重放攻击防护

网络安全中,重放攻击是指窃听者拦截并捕获消息,之后重新发送,诱使接收方执行攻击者未被授权的操作。典型示例是汽车无钥匙进入系统被攻击:攻击者拦截车主与车辆的认证序列,之后重放消息来开锁、启动车辆。

蓝牙网状网络通过两个网络 PDU 字段(序列号(SEQ)IV 索引)防御重放攻击:元素每次发布消息都会递增 SEQ 值;若节点收到某元素的消息 SEQ 值小于等于该元素最后一条有效消息的 SEQ 值,则会丢弃该消息(判定为疑似重放攻击)。同理,IV 索引是与 SEQ 配合的独立字段,同一元素消息中的 IV 索引值必须大于等于该元素最后一条有效消息的 IV 索引值。

加密工具库

蓝牙网状网络的大部分安全特性依赖行业标准的加密算法与流程,系列后续安全相关文章会提及这些内容,本文先介绍最重要的部分。

蓝牙网状网络协议栈使用两类核心安全功能:AES-CMACAES-CCM------ 它们是基础的加密与认证功能,其他密钥生成相关功能均基于这两者实现。

AES-CMAC

基于分组密码的消息认证码(CMAC)是一种算法,可为任意长度的输入生成固定长度(128 位)的消息认证值。使用 AES-CMAC 算法生成消息认证码(MAC)的公式为:

AES-CMAC 的输入包括:

  • k:128 位密钥
  • m:待认证的可变长度数据

AES-CMAC 具备出色的错误检测能力:校验和或错误检测码等技术仅能检测数据的意外修改,而 AES-CMAC 可同时检测有意的未授权修改与意外修改。若想了解更多,可参考其定义文档 RFC4493。

AES-CCM

AES-CCM 是一种通用的认证加密算法,适用于密码分组密码。在《蓝牙网状网络规范》中,AES-CCM 是所有场景下的基础加密与认证功能,其使用公式如下:

AES-CCM 包含 4 个输入参数:

  • k:128 位密钥
  • n:104 位随机数(nonce)
  • m:待加密与认证的可变长度数据
  • a:待认证但不加密的可变长度数据(也称为 "附加数据"),该参数长度可为 0 字节

AES-CCM 会输出 2 个结果:

  • ciphertext(密文):加密后的可变长度数据
  • MIC(消息完整性校验值):对m和a的完整性校验值

图 1 展示了一个明文载荷(可能来自蓝牙网状网络层或上层传输层),结合输入的加密密钥、随机数与明文载荷,经 AES-CCM 处理后,输出加密载荷与 MIC 的流程。

SALT 生成

蓝牙网状网络安全定义了一种名为s1的 SALT 生成函数,它基于 AES-CMAC 功能实现。如前文所述,AES-CMAC 有两个输入参数:k和m。但在 SALT 生成场景中,只有输入参数m是可变的,k会固定设为 128 位值0x0000 0000 0000 0000 0000 0000 0000 0000------ 在《蓝牙网状网络规范》中,该值被称为 "ZERO"。

SALT 生成函数的输入

m ------ 非零长度的字节数组或 ASCII 编码字符串。

SALT 生成函数的输出是 128 位 MAC 值,s1的公式表示为:

其他安全函数

在《蓝牙网状网络规范》的 3.8.2 节 "安全工具库" 中,还定义了其他安全函数(如各类密钥衍生函数)。这些函数均基于 AES-CMAC 与 SALT 生成函数s1(而s1本身也基于 AES-CMAC 实现)。

后续内容

安全是蓝牙技术的重要议题,也会在本蓝牙网状网络系列文章中反复出现。读完本文后,你应该已充分理解蓝牙网状网络的核心安全特性,以及部分底层加密技术。

后续文章会深入探讨这一主题,届时你可以进一步了解蓝牙网状网络安全的细节。

相关推荐
Suckerbin2 小时前
BTRSys: v2.1靶场渗透
安全·web安全·网络安全
Tao____3 小时前
基于若依RuoYi框架开发的物联网平台
java·物联网·mqtt·ruoyi·设备对接
hui133630982164 小时前
远程倾斜位移裂缝计:守护工程结构安全的 “智能监测卫士”
安全
飞睿科技4 小时前
24GHz毫米波雷达核心技术解析:原理、优势与应用全景
物联网·智能家居·雷达模块·人体存在
专业开发者4 小时前
智能照明平台的互操作性
物联网
一目Leizi5 小时前
Burp Suite物联网渗透测试实战指南:从HTTP到MQTT/CoAP的全面攻防
物联网·http·iphone
wzx_Eleven5 小时前
【论文阅读】多密钥低通信轮次的联邦学习安全聚合
论文阅读·深度学习·神经网络·安全·同态加密
墨北x5 小时前
2025江西省职业院校技能“信创适配及安全管理“赛项解析答案
服务器·网络·安全
MarkHD5 小时前
车辆TBOX科普 第60次 深度解析系统集成与EMC、功能安全及网络安全测试
网络·安全·web安全