蓝牙mesh的基本架构:

承载层(bearer layer):承载层定义了如何使用底层低功耗堆栈传输PDU。目前定义了两个承载层:广播承载层(Advertising Bearer)和GATT承载层。

网络层(network layer):网络层定义了各种消息地址类型和网络消息格式。中继和代理行为通过网络层实施。

底层传输层(lower transport layer):在需要之时,底层传输层能够处理PDU的分段和重组。

上层传输层(upper transport layer):负责对接入层进出的应用数据进行加密、解密和认证。它还负责称为“传输控制消息”(transport control messages)这一特殊的消息,包括与“friendship”相关的心跳和消息。

接入层(access layer):负责应用数据的格式、定义并控制上层传输层中执行的加密和解密过程,并在将数据转发到协议栈之前,验证接收到的数据是否适用于正确的网络和应用。

基础模型(foundation models):基础模型层负责实现与mesh网络配置和管理相关的模型。

模型(models):模型层与模型等的实施、以及诸如行为、消息、状态等的实施有关。

蓝牙mesh的配网流程:

Beacon广播     

蓝牙mesh网络规格中介绍了新的GAP广播类型,包括 <<Mesh Beacon>> 广播类型[ii]。

设备( Device)可采用<<Mesh Beacon>> 广播类型来发出广播,声明自己是未经启动配置的设备,可被启动配置。用户可能需要根据制造商的说明,按照一定的流程,例如键入一组按钮,或将某一按钮长按一段时间等,以此方式启动新设备的广播。

用户还需要在启动配置设备中启动“添加设备到网络”的流程,以便从Beacon设备(Device)接收广播数据包。需要记住的一点是,启动配置设备可能是智能手机或平板电脑应用,因此在实际操作中会涉及到智能手机解锁、应用程序启动、也许还需要登录应用程序(为了进一步确保安全性),并通过其用户界面启动Beacon设备(Devices)搜寻。这样,启动配置设备就会意识到新设备(Device)的存在和准备就绪状态,可进入后续的启动配置流程。

邀请   

接下来,启动配置设备将以启动配置邀请PDU(Provisioning Invite PDU)的形式向要进行启动配置设备发送邀请,这是启动配置协议的一部分。Beacon设备会在启动配置功能PDU中回应有关自身的信息。

启动配置功能PDU可提供一系列信息,例如其所拥有的元素数量、所支持的启动配置相关算法等。它还能指示设备(Device)拥有的输入输出功能类型,这些信息将用于认证(Authentication)步骤。

交换公共密钥(Public Key)   

包括启动配置设备在内的所有蓝牙mesh设备都支持FIPS P-256椭圆曲线算法,因此必须拥有公共密钥。可通过基于该算法的非对称加密来创建安全通道,以完成剩余的启动配置流程。为此,启动配置设备会与将被启动配置的设备(Device)交换公共密钥。需注意的是,将被启动配置的设备(Device)可以通过带外方式(Out of Band),例如QR码,来提供公共密钥。本系列的后续文章将重点讨论mesh安全性,包括启动配置的安全性。

认证(Authentication)

启动配置设备基于对新设备(Device)功能的了解,向其发送消息,指示其输出单一或多位数值,对其所支持的多种用户操作(例如按下按钮)作出响应。值的形式会因设备差异而有所不同。一台设备可能会在LED面板上显示一个三位的数值,另一台设备则可能是红色LED灯闪烁几次,闪烁的次数就是输出的验证值。启动配置设备的用户将观察到设备(Device)输出的值,并将值输入启动配置设备的用户界面。

然后,设备(Device)和启动配置设备交换密码散列,这些数据来源包括设备(Device)输出的随机值,允许它们完成对彼此的验证

启动配置数据的分配   

认证成功完成之后,会通过两台设备的私有密钥(Private Key)和交换的对等公共密钥生成会话密钥(Session Key)。随后,会话密钥即可用于保护完成启动配置流程所需数据的后续分发,包括网络密钥(NetKey)和设备的唯一地址,即单播地址(Unicast Address)。

启动配置完成后,启动配置设备就会拥有网络的NetKey,这是一个称为“IV索引(IV Index)”的蓝牙mesh安全性参数,且拥有一个由启动配置设备分配的单播地址[iii]。至此,新设备就正式成为了节点,即成为蓝牙mesh网络中的一员。

从网络中移除节点涉及两个步骤:

  1. 首先,使用启动配置设备应用,将想要移除的节点添加至“黑名单”。

  2. 其次,启动一项称为密钥刷新程序(Key Refresh Procedure)的流程。

黑名单

使用启动配置设备,用户必须将想要移除的节点添加至黑名单。黑名单的目的很简单,就是当启动密钥刷新程序时,确保新的安全密钥不会被发放至黑名单中的节点。

密钥刷新程序

通过密钥刷新程序,除了黑名单中的节点,网络中的所有节点都会被发放新的网络密钥、应用密钥、以及所有相关衍生数据。也就是说,构成网络和应用安全性基础的整套安全密钥都会被替换。

用户可使用启动配置设备启动密钥刷新,启动配置设备会创建新密钥,并通过配置消息向mesh网络中的所有节点发送新密钥,但黑名单中的成员除外。

低功耗节点(Low Power Node)将从好友节点处接收到新密钥,因此它们可能需要经过相当长的一段时间才会接收到新密钥,随后整个网络将全部更换密钥。

由于所有节点不会在同一时间接收到新密钥,因此密钥刷新程序定义了一个称为“第二阶段”的过渡周期,在此期间新旧密钥均可使用。具体来说,传输过程中会使用新密钥,但支持消息接收的节点会同时使用新旧密钥。

第二阶段完成之后,启动配置设备会通知所有节点废除它们的旧密钥。至此,黑名单之外的每个节点都收到了新密钥。

此时,从网络中移除的节点、以及包含旧网络密钥(NetKey)和旧应用密钥(AppKey)的节点将不再是网络中的成员,因此也无法构成任何威胁。

蓝牙mesh节点定义:

低功耗 (Low-Power) 特性

功率受限的节点可能会利用低功耗特性来减少无线电接通时间并节省功耗。同时低功耗节点(LPN)可以与friend节点协同工作。

Friend 特性

功率不受限的节点很适合作为friend节点。Friend 节点能够存储发往低功耗节点(LPN)的消息和安全更新;当低功耗节点需要时再将存储的信息传输至低功耗节点。

中继 (Relay) 特性

中继节点能够接收和转发消息,通过消息在节点之间的中继,实现更大规模的网络。节点是否能够具备这一特性取决于其电源和计算能力。

代理 (Proxy) 特性

代理节点能够实现GATT和蓝牙mesh节点之间的mesh消息发送与接收。承担这一角色的节点需要固定的电源和计算资源。

一些节点的复杂性高于其他节点,由多个称为元素(Element)的独立部分组成。每个节点至少拥有一个元素,称为主元素(Primary Element),同时还可能包含其他多个元素(图3)。元素由定义节点功能和元素条件的实体组成

节点中的每个元素都有一个唯一的地址,称为单播地址(unicast address),使每个元素都有址可寻。我们将在后续的解密蓝牙mesh系列文章中进一步解释“寻址”。

三种密钥:APPKEY,NETKEY,DEVKEY

应用密钥(AppKey):用来保护应用层消息,它不同于用于保护特定应用(如照明、物理安全、温控等)相关数据安全的密钥。比如没有对应应用密钥,接收到消息时,不能对改要洗进行处理,比如中继节点。

所有节点都拥有一个或多个网络密钥(NetKey):每个网络密钥对应一个子网,它也可能是主要子网。节点必须拥有网络密钥,才能成为网络中的成员。网络加密密钥(Encryption Key)和隐私密钥(Privacy Key)直接源于网络密钥。拥有NetKey让节点能够对网络层的数据进行解密和验证,以便执行诸如中继等网络功能。但应用程序数据不可被解密。比如节点拥有对应子网的NetKey,才能在该子网中传递数据和信息。但没有APPKEY依然不能解析该数据。

设备密钥(DevKey):用于节点的启动配置(Provisioning)和配置流程。在配置结束后分配appkey和netkey。

蓝牙技术联盟的学习路径:

1、解密蓝牙mesh系列 | 第一篇

2、解密蓝牙mesh系列 | 第二篇

3、解密蓝牙mesh系列 | 第三篇

4、解密蓝牙mesh系列 | 第四篇

5、解密蓝牙mesh系列 | 第五篇

6、解密蓝牙mesh系列 | 第六篇

7、解密蓝牙mesh系列 | 第七篇

8、解密蓝牙mesh系列 | 第八篇

9、解密蓝牙mesh系列 | 第九篇

10、解密蓝牙mesh系列 | 第十篇

蓝牙Mesh的基本架构/配网流程/节点定义相关推荐

  1. BLE Mesh(六)配网流程

    配网流程 概述 配网协议 配网承载层(Provisioning Bearer) 配网协议(Provisioning Protocol) 流程详解 发送Beacon信号 邀请 交换公共密钥 认证 输出带 ...

  2. 蓝牙mesh组网实践(配网基础篇)

    转载自:蓝牙mesh组网实践(配网基础篇) - JayWell - 博客园 (cnblogs.com) 本测试基于CH582m单片机,尝试进行简单的组网. 沁恒官方EVT中提供了两种配网方式--配网器 ...

  3. 浅述蓝牙Mesh的配网流程

    所谓配网就是将未配网的设备变为配网的节点,一般需要一个配网器与末配网设备进行配网交互.验证然后通过后将一些密钥交给对方的一个过程. 一般过程有5个阶段: 1. 信标(Beaconing)阶段 2.邀请 ...

  4. Airoha BLE SIG Mesh AB1611 天猫精灵配网过程整理

    目录 1:BLE SIG Mesh初始化 2:未配网设备的unprovisioned mesh beacon 3:配网数据传输控制 4:天猫精灵PB-ADV配网过程 4.1 provisioning ...

  5. Android 物联网基于WIFI tcp配网流程

    1配网流程 1.2流程说明 1.2.1 由用户手动输入WiFi的SSID 和pwd 1.2.2 此时需要配网的设备进入配网模式打开热点,热点令名规则为Tlink-xxx-xxx格式,第一个xxx为设备 ...

  6. 自动行政审批流程组件的审批流程节点定义【民间称为工作流组件、官方称为审批流程组件】...

    我们在上一篇文章 多年一直想完善的自由行政审批流程组件[2002年PHP,2008年.NET,2010年完善数据设计.代码实现] 中讲述了"自由行政审批流程组件"的用法及设计参考, ...

  7. MESH标准配网流程

    Mesh标准配网流程图: Mesh配网主要分为两个阶段: 1,Provision阶段,2,Config阶段. 1,Provision阶段: 2,Config阶段: 对于Config阶段是可以把部分数据 ...

  8. 蓝牙mesh的网络拓扑

    蓝牙mesh的网络拓扑 拓扑 拓扑是一种不考虑物体的大小.形状等物理属性,而仅仅使用点或者线描述多个物体实际位置与关系的抽象表示方法.拓扑不关心事物的细节,也不在乎相互的比例关系,而只是以图的形式表示 ...

  9. (八)深入理解蓝牙Mesh的安全性和优缺点

    目录 蓝牙Mesh的安全性: 配网安全性: 防中间人攻击(Man-in-the-MiddleAttack): 通信安全性: 安全分级:

最新文章

  1. 汇编语言(王爽 第三版) ret retf总结 以及检测点10.1
  2. Java黑皮书课后题第8章:*8.3(按考分对学生排序)重写程序清单8-2,按照正确答案个数的升序显示学生
  3. iframe 子父窗口互掉 js
  4. Python函数嵌套定义的洪荒之力
  5. for /r命令实现全盘搜索指定文件
  6. 前端智勇大闯关-第二季-第三题
  7. 课文电子计算机与多媒体减写,课文电子计算机与多媒体关系介绍
  8. vscode 调试找不到对应的python模块(根本,简单,有效)
  9. ultraedit 运行的是试用模式_原来用Unittest框架写接口测试用例这么简单!
  10. WPS个人版安装VBA教程
  11. html 多选框获取值数组,前端获取checkbox复选框的值 通过数组形式传递
  12. zoj 3332 Strange Country II
  13. 字节跳动实习面试:三面无修改公开,看看他到底通过了吗?
  14. 在c语言中下列类型属于构造地震,C语言课后习题解析及答案
  15. 泰国80亿互联网记录数据库泄漏,疑遭黑客攻击
  16. 八块腹肌:硅谷程序员的新标配
  17. linux nodemcu 编译,nodeMCU固件云编译没有esp32的版本
  18. JML(2021 EMNLP) 关联图像和文本
  19. 简单理解锁存器和触发器的主要区别
  20. 资源 | 完备的 AI 学习路线资源整理!

热门文章

  1. ngin如何实现负载均衡
  2. IC ,CC系列,单片机芯片MSP430F
  3. [11012:9308:0912/112412.839:WARNING:dns_config_service_win.cc(661)] Failed to read DnsConfig.
  4. oracle远程连接不上问题解决记录
  5. ATA-4315单通道高压功率放大器性能特点
  6. 对比美国的房价, 中国的房价荒唐透顶
  7. KL3611 型号 7脚多位数码管驱动方法
  8. Android壁纸服务WallpaperManagerService
  9. 给肌肤装屏保 对付电脑辐射
  10. 酷比魔方i7手写版linux网卡驱动,酷比魔方i7手写板,Ubuntu 18.04,RTL8723BU wifi驱动安装...