BLE MESH组网(五)配置BLE MESH

2023-11-12

BLE MESH(五)配置BLE MESH


前言

2017 年 5 月,全球最臭名昭著的勒索软件 WannaCry 在全球范围内积极攻击计算机,劫持用户数据索要赎金。这次攻击影响了 150 个国家/地区的数百万台计算机,该软件要求以加密货币比特币支付赎金。如果没有稳健的基于标准的安全系统设计,物联网 (IoT) 可能会发生类似的情况。不难想象,物联网设备的用户如何被迫向黑客付款,以打开上锁的门并进入他们自己的家。

安全性是蓝牙®MESH网络设计的核心。它的使用对于每个加密和验证的数据包都是强制性的。蓝牙MESH网络的安全性可防止各种威胁和问题,包括:

通过明智地使用序列号来防止重放攻击。
中间人攻击,通过在重要程序中使用非对称密码术(例如椭圆曲线 Diffie-Hellman (ECDH) 密钥协商协议)来防止中间人攻击。
垃圾桶攻击通过确保在必要时更新安全密钥来利用废弃设备。

概述

配置是将新的、未配置的设备添加到蓝牙MESH网络的过程,例如灯泡。该过程由供应商管理。供应商和未配置设备遵循蓝牙MESH网络规范中定义的固定程序。供应商为未配置的设备提供配置数据,使其成为蓝牙MESH节点。

provisioner通常是运行配置应用程序的智能手机或其他移动计算设备。尽管每个网络只需要一个provisioner来执行配置,但可以使用多个provisioner设备。

配置协议

所述蓝牙网规范定义了配置协议,其定义的PDU使用的设置过程中一个配置者和一个新的,未接通的装置之间进行通信。图 1 描绘了配置协议栈以及完整的蓝牙MESH网络协议栈。在这里插入图片描述
图 1:MESH系统架构与供应协议栈。
从下到上,我们有以下组件:

  • 配置承载
    配置承载层支持在配置器和未配置设备之间传输配置 PDU。定义了两个供应承载:

    • PB-ADV:用于通过蓝牙广播通道配置设备的配置承载。PB-ADV 承载用于传输通用供应 PDU。支持 PB-ADV 的设备应以尽可能接近 100% 的占空比执行被动扫描,以避免丢失任何传入的通用配置 PDU。

    • PB-GATT:用于使用来自代理协议的蓝牙MESH网络代理 PDU 来配置设备的配置承载。代理协议使节点能够通过面向连接的低功耗蓝牙 (LE) 承载发送和接收网络 PDU、MESH信标、代理配置消息和配置 PDU。PB-GATT 将供应 PDU 封装在 GATT 操作中,涉及 GATT 供应服务,并在供应器不支持 PB-ADV 时提供使用。

  • 供应协议
    定义供应 PDU、行为和安全性的要求。了解供应协议将帮助您选择一种基于应用程序要求的身份验证方法。

供应程序

供应协议定义了十种类型的供应 PDU:

  1. 供应邀请
  2. 供应能力
  3. 供应状态
  4. 提供公钥
  5. 配置输入完成
  6. 供应确认
  7. 随机配置
  8. 配置数据
  9. 配置完成
  10. 配置失败

有关这些 PDU 的详细信息,开发人员可以参考蓝牙MESH网络规范的第 5.4.1 节。

整个供应过程必须在较高级别完成两项重要任务:

  1. 验证未配置的设备。在蓝牙mesh网络中,一个小空间内可能有几个、几十个或数百个设备。执行身份验证以确保供应商与之交互的设备是用户想要供应的设备。
  2. 与未配置的设备建立安全链接并与其共享相应的信息。在该过程结束时,未配置的设备将成为蓝牙MESH网络中的一个节点。

供应过程包括五个阶段:

  1. 信标
  2. 邀请函
  3. 交换公钥
  4. 验证
  5. 供应数据的分布

这里将介绍前三个阶段。我们将在配置蓝牙MESH网络,第 2 部分中回顾最后两个阶段。

信标

信标是Bluetooth ® Low Energy 中的传统应用场景。想象一下 GAP 外围设备,例如智能手表或活动跟踪器,它希望与 GAP 中央设备(例如智能手机或平板电脑)连接。GAP 外围设备切换到广告状态并开始广播广告数据包。GAP 中央设备扫描广告数据包以发现其他设备并接收有关它的基本信息。蓝牙MESH网络配置使用相同的广告机制。

如果未配置的设备支持 PB-ADV 承载则它会作为未配置的设备信标进行广告。这涉及指定的数据包格式,并由未供应设备使用,以允许供应商发现它们。

当未配置的设备使用 PB-GATT 承载时,称为 Mesh Provisioning Service 的 GATT 服务支持整个配置过程以及与配置者的交互。在信标阶段,未配置的设备广播包含 Mesh Provisioning Service 的 UUID 的广告数据包。它是由供应商通过标准的蓝牙低功耗扫描程序发现的。

邀请

设置信标后,供应商和未配置设备建立配置承载,PB-ADV 或 PB-GATT。然后供应商发送配置邀请 PDU,设备以配置能力 PDU 响应。

配置邀请 PDU 包括一个注意持续时间字段,该字段使用某种形式的视觉指示指示未供应设备的主要元素应该吸引用户注意多长时间。

配置能力 PDU 包括:

  • 设备支持的元素数量。
  • 支持的安全算法集。
  • 其公钥的可用性使用带外 (OOB) 技术。
  • 此设备向用户输出值的能力。
  • 此设备允许用户输入值的能力。

Provisioning_Part1_Fig2
图2 -配置邀请
图2中的流程图让人想起Bluetooth Low Energy中的配对过程,这在一篇文章《Bluetooth配对第1部分:配对特性交换》中有所介绍。蓝牙低功耗配对使用的配对特性交换类似于蓝牙MESH配置过程中的配对邀请阶段。在配置邀请阶段,目的是向配置程序提供关于未配置设备的功能的信息。有了这些信息,配置者就可以决定下一步要做什么。

交换公钥

有两种基本的信息加密技术:对称加密(也称为密钥加密)和非对称加密(也称为公钥加密)。

对称加密使用相同的密钥进行加密和解密。只要发送方和接收方都知道密钥,他们就可以解密所有使用此密钥加密的消息。但是,很难通过链接安全地交换密钥并防止它们落入坏人之手。

非对称加密使用两个相关的密钥,一个密钥对来解决上述问题:公钥和私钥。任何想要向您发送消息的人都可以免费使用公钥。私钥是保密的,只有你知道。任何使用公钥加密的消息(文本、二进制文件或对称密钥)只能通过应用相同的算法并且只能使用匹配的私钥来解密。这意味着您不必担心通过链接传递公钥,因为它们仅用于加密而不用于解密。但是,非对称加密比对称加密慢,并且需要更多的处理能力来加密和解密消息内容。

在蓝牙®MESH网络用例中,大多数设备都基于嵌入式芯片组或模块,因此它们无法使用计算成本高昂的非对称密码术来加密/解密每条消息。对称密码术更适合缺乏非对称密码术所需的处理器能力的设备,但我们仍然存在安全交换密钥以便使用的问题。蓝牙mesh使用非对称和对称方法的组合来解决这个问题。

非对称加密:Elliptic Curve Diffie-Hellman (ECDH) 是一种匿名密钥协商协议,它允许两方(每一方都有一个椭圆曲线公私密钥对) 在不安全的通道上建立 共享密钥。ECDH 在蓝牙MESH网络配置中的目的是允许在配置者和未配置的设备之间创建安全链接。它使用公钥和私钥来分发对称密钥,然后两个设备可以使用该密钥对后续消息进行加密和解密。

对称加密:在蓝牙MESH网络中传输的每条消息都使用 AES-128 加密进行加密。AES-128 算法是一种常见的对称加密/解密引擎,常用于嵌入式平台。

在交换公钥阶段,ECDH 公钥有两种可能的交换方式。它们可以通过蓝牙链接或 OOB 隧道进行交换。在配置邀请阶段,未配置的设备已经报告它是否支持通过 OOB 隧道发送其公钥。如果是,供应商可以继续使用它并通过发送配置开始 PDU 通知未配置的设备。

如果未配置设备的公钥可通过 OOB 隧道获得,则临时公钥将从配置程序传输到设备,并使用适当的 OOB 技术(例如 QR)从未配置设备读取静态公钥代码。参见图 3。
Provisioning_Part1_Fig3
图 3 – 未配置设备使用 OOB 方法时的公钥交换。

如果没有,两个公钥将通过蓝牙链接交换,如图 4 所示。Provisioning_Part1_Fig4
图 4 – 未配置的设备公钥未知时的公钥交换。

ECDHSecret = P-256(私钥,对等公钥)

在这个等式中,P-256 是 FIPS-P256 曲线,它在FIPS 186-3中定义。

本文的第 2 部分将检查配置过程的最后两个阶段:配置数据的身份验证和分发。我还将解释蓝牙MESH网络中使用的安全工具箱。
BLE MESH组网(一)简介
BLE MESH组网(二)友谊功能和设备管理
BLE MESH组网(三)普通BLE如何添加到网络
BLE MESH组网(四)安全概述
BLE MESH组网(五)配置BLE MESH
BLE MESH组网(六)配置BLE MESH

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BLE MESH组网(五)配置BLE MESH 的相关文章

  • 反思深度学习与传统计算机视觉的关系

    来源 算法与数学之美 某种程度上 深度学习最大的优势就是自动创建没有人会想到的特性能力 如今 深度学习在众多领域都有一席之地 尤其是在计算机视觉领域 尽管许多人都为之深深着迷 然而 深网就相当于一个黑盒子 我们大多数人 甚至是该领域接受过培

随机推荐

  • 【C++进阶】二叉搜索树递归与非递归的模拟实现(附源码)

    一 什么是二叉搜索树 二叉搜索树又称二叉排序树 它或者是一棵空树 或者是具有以下性质的二叉树 根据二叉搜索树的性质 它的中序遍历结果就是一个升序列 二 二叉搜索树的模拟实现 节点 Node 在实现二叉搜索树之前 要先定义一个节点 成员变量包
  • Shiro权限框架-在线并发登录人数控制(9)

    1 实现原理 在实际开发中 我们可能会遇到这样的需求 一个账号只允许同时一个在线 当账号在其他地方登陆的时候 会踢出前面登陆的账号 那我们怎么实现 自定义过滤器 继承AccessControlFilter 使用redis队列控制账号在线数目
  • 基于Directshow的H.264流媒体播放器设计

    0引言 DirectsHow应用框架完成了流媒体处理的底层工作 使得编程者无需关心数据如何输入 以及处理完后如何输出 而只需关心如何对输入数据进行处理 H 264视频编解码标准具有高压缩比和优良的网络亲和性 被普遍认为是最有影响力的流媒体视
  • 变分推断

    变分推断 MATLAB实现变分贝叶斯蒙特卡洛模拟的贝叶斯推断 目录 变分推断 MATLAB实现变分贝叶斯蒙特卡洛模拟的贝叶斯推断 效果一览 基本介绍 研究内容 模型描述 模型设计 参考资料 效果一览 基本介绍 MATLAB实现变分贝叶斯蒙特
  • input输入框获取焦点之后,显示搜索记录下拉表,点击其他地方搜索记录框消失

    给input框绑定一个focus事件 获取焦点时给全局绑定一个点击事件 判断下次点击的地方在不在输入框和下拉框内 不在则下拉框消失 记得清除这个点击事件 具体代码如下 处理搜索框获取焦点 handleInputSearch this isO
  • elementui中多个table同步滚动

    问题描述 element admin中同时使用多个table 要求头部固定 给每个并列的table设置max height 通过监听一侧的table滚动情况去控制另外一侧的table滚动 问题分析 table分成两部分 左侧是一个table
  • 用python画基本初等函数的图像(未完成)

    要用到matplotlib库 一 绘制 y x 图像 import numpy as np import matplotlib pyplot as plt x np linspace 50 50 200 定义x的范围为 50到50 分为20
  • UVA-11059 最大乘积 题解答案代码 算法竞赛入门经典第二版

    GitHub jzplp aoapc UVA Answer 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 数据量不大 暴力即可 include
  • 【AI】《动手学-深度学习-PyTorch版》笔记(二十):图像增强、微调

    AI学习目录汇总 1 图像增强 图像增强可以扩展训练样本数量 减小对某个属性的依赖 比如 裁剪图像 可以减少模型对对象出现位置的依赖 调整亮度 颜色等因素来降低模型对颜色的敏感度等 1 1 准备工作 头文件 matplotlib inlin
  • 01C++11多线程编程之thread,join,detach,joinable以及简说detach传引用地址的大坑

    01C 11多线程编程之thread join detach joinable以及简说detach传引用地址的大坑 1 thread类对象创建线程与join回收线程 1 thread创建线程很简单 定义一个对象然后传一个可调用对象即可 可调
  • Java反射机制【看这一篇就够啦!!!】

    Welcome Huihui s Code World 接下来看看由辉辉所写的关于反射机制的相关操作吧 目录 Welcome Huihui s Code World 一 是什么 二 为什么要使用 三 怎么使用 辉辉小贴士 什么是Class类
  • 数字电路设计之同步电路的一些经验

    在设计的过程中 异步复位电路对硬件要求更低 更容易实现 但是使用同步复位电路却有着诸多优点 使得在实际的工业设计中更多使用的是同步复位电路 使用同步电路一般有以下好处 第一个就是避免毛刺 使用逻辑电路就一定会有毛刺 使用同步电路就有效避免毛
  • Vue生成二维码组件封装

    1 使用方法 1 1 载入 JavaScript 文件 1 2 调用 简单方式 new QRCode document getElementById qrcode your content 设置参数方式 var qrcode new QRC
  • Ubuntu彻底卸载pycharm的方法

    1 查看配置信息位置 首先在解压的pycharm 2020 2 1文件夹中 查看Install Linux tar txt 找到配置信息的位置 下图中蓝色标识 2 卸载安装文件 首先找到安装文件所在的目录 cd 切换至其目录 然后 sudo
  • 深入了解React:组件化开发与状态管理

    简介 React是一个流行的JavaScript库 用于构建用户界面 它以其高效的虚拟DOM和组件化开发的思想而闻名 使得构建复杂的Web应用程序变得更加简单和可维护 本篇博客将带您深入了解React的基本概念 组件化开发和状态管理 帮助您
  • FISCO BCOS(三十六)———Python Sdk window环境部署及应用开发

    1 环境要求 Python环境 python 3 6 3 3 7 3 最好是3 7 3 因为我是 FISCO BCOS节点 可以直接建链 可以是节点前置 也可以是一键部署 2 安装python 2 1 python下载地址 https ww
  • COM 组件设计与应用(十一)

    COM 组件设计与应用 十一 IDispatch 及双接口的调用作者 杨老师 下载源代码一 前言 前段时间 由于工作比较忙 没有能及时地写作 其间收到了很多网友的来信询问和鼓励 在此一并表示感谢 咳 我也需要工作来养家糊口呀 上回书介绍了两
  • linux系统函数总结(一)

    realpath include
  • c陷阱与缺陷

    第一章 词法陷阱 1 这一章没有太多 干货 唯一比较有趣的就是 1 3 语法分析中的 贪心法 所讲内容 这个 贪心 就是编译器会读入字符 如果能新读入的字符和之前所读入字符能组成符号 则编译器会继续读入下一个字符 直到读入的字符不能和之前的
  • BLE MESH组网(五)配置BLE MESH

    BLE MESH 五 配置BLE MESH 前言 概述 配置协议 供应程序 信标 邀请 交换公钥 前言 2017 年 5 月 全球最臭名昭著的勒索软件 WannaCry 在全球范围内积极攻击计算机 劫持用户数据索要赎金 这次攻击影响了 15