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:
- 供应邀请
- 供应能力
- 供应状态
- 提供公钥
- 配置输入完成
- 供应确认
- 随机配置
- 配置数据
- 配置完成
- 配置失败
有关这些 PDU 的详细信息,开发人员可以参考蓝牙MESH网络规范的第 5.4.1 节。
整个供应过程必须在较高级别完成两项重要任务:
- 验证未配置的设备。在蓝牙mesh网络中,一个小空间内可能有几个、几十个或数百个设备。执行身份验证以确保供应商与之交互的设备是用户想要供应的设备。
- 与未配置的设备建立安全链接并与其共享相应的信息。在该过程结束时,未配置的设备将成为蓝牙MESH网络中的一个节点。
供应过程包括五个阶段:
- 信标
- 邀请函
- 交换公钥
- 验证
- 供应数据的分布
这里将介绍前三个阶段。我们将在配置蓝牙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) 技术。
- 此设备向用户输出值的能力。
- 此设备允许用户输入值的能力。
图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。
图 3 – 未配置设备使用 OOB 方法时的公钥交换。如果没有,两个公钥将通过蓝牙链接交换,如图 4 所示。
图 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 MESHBLE MESH组网(六)配置BLE MESH