close
当前位置: 物联网在线 > 技术文库 >

解密蓝牙mesh系列 | 第十篇

在本文的Part1中,我介绍了启动配置承载层(provisioning bearer layer)和蓝牙mesh启动配置流程的前三个阶段:发送Beacon信号、邀请和交换公共密钥。

启动配置流程包括五个阶段:

1、发送Beacon信号
2、邀请
3、交换公共密钥
4、认证
5、启动配置数据分发

1、发送Beacon信号:如果未经启动配置的设备支持PB-ADV承载层,则其作为未经启动配置设备Beacon进行广播;如果使用的是PB-GATT承载层,则发送可连接的广播数据包。这就向启动配置设备(Provisioner)表明未经启动配置的设备已做好准备,可进入启动配置流程。

2、邀请:启动配置设备(Provisioner)邀请未经启动配置的设备发送自身启动配置功能信息。

3、交换公共密钥:在此阶段,根据未经启动配置设备的功能,启动配置设备(Provisioner)选择合适的验证方法,并通知未经启动配置设备将要采取的方式。之后,启动配置设备和未经启动配置设备会创建一个椭圆曲线公私密钥对并交换公钥。然后,每台设备使用自己的私钥和对等设备的公钥来计算对称密钥,即ECDHSecret。该密钥用于验证对端设备的身份。

本文将介绍启动配置流程的后两个阶段:认证和启动配置数据分发。

4、认证

在此步骤中,启动配置设备使用所选的验证方法,对未经启动配置设备进行验证。有三种可用的验证方法(OOB, Out-Of-Band):输出OOB(Output OOB)、输入OOB(Input OOB)、以及静态OOB(Static OOB)或无OOB(No OOB)。

输出带外(Output OOB)

若选择的是输出带外(Output OOB)验证方法,则未经启动配置设备会选择一个随机数,并通过与其功能兼容的方式输出该数字。例如,如果未经启动配置设备是一个灯泡,则它能够闪烁指定的次数。如果设备具有LCD屏幕,则可以将随机数显示为多位数值。启动配置设备(Provisioner)的用户需要输入观察到的数字,来验证未经启动配置的设备。输出带外验证方法的工作流程如图1所示。

“”

图1 – 通过输出OOB进行验证

输入随机数后,启动配置设备(Provisioner)生成并检查确认值。无论采用哪种验证方式,整个验证步骤中的检查确认值(check confirmation value)计算方式都是相同的,请继续往下看。

输入带外(Input OOB)

输入带外(Input OOB)验证方法与输出带外(Output OOB)方法类似,但设备的角色相反。启动配置设备(Provisioner)生成并显示随机数,然后提示用户采取适当的操作,将随机数输入未经启动配置的设备。以照明开关为例,用户可以在一定时间内数次按下按钮,以这种形式输入随机数。

与输出带外验证(Output OOB)相比,输入带外(Input OOB)方法需要发送一个附加的启动配置协议PDU。在完成认证操作之后,未经启动配置的设备向启动配置设备发送一个启动配置输入完成PDU(Provisioning Input Complete PDU),通知其随机数已输入完成。随后进入到执行检查确认值操作的步骤。

“”

图 2 – 通过输入OOB进行验证

静态带外(Static OOB) 或无带外(No OOB)

在输入带外或输出带外都不可用的情况下,启动配置设备(Provisioner)和未经启动配置的设备可采用静态带外(Static OOB)验证或无带外(No OOB)验证:采用静态OOB信息;或静态OOB信息不可用,直接以数值0代替。在此情况下,启动配置设备和未经启动配置的设备各自生成一个随机数,然后进行检查确认值操作。

检查确认值(Check Confirmation Value)

无论采用何种验证方法,都会进行确认值生成和检查。根据蓝牙mesh规格,启动配置设备(Provisioner) 和未经启动配置设备应分别计算确认值。这两个值被称为ConfirmationProvisioner和ConfirmationDevice。这两个值的计算都使用一系列相同的函数,不同之处仅在于所使用的随机数输入。

蓝牙mesh规格中有两页关于计算过程的内容说明。确认值生成函数需要8个参数,参数值来自启动配置(Provisioning)过程中的后续步骤。可参考规格的5.4.2.4认证和5.4.1启动配置PDU部分,了解更多详细信息。(详见:https://www.bluetooth.com/specifications/mesh-specifications )

表1列出了用于确认值生成及其来源的参数。

“”

表1 - 用于确认值计算的参数
(责任编辑:ioter)

用户喜欢...

蓝牙网状网络中的设备管理

蓝牙网状网络就像一个俱乐部。如果您是俱乐部会员,则可以进入俱乐部并使用您的会员类型允许的设施和服务。如果你不是,不管你怎么说,你都不能进门。 蓝牙网状设备可以是或者不是...


蓝牙mesh | “三大法宝“让你的网络无懈可击

随着我们越来越深入物联网(IoT)领域,无论是新技术还是现有的技术,对安全这一问题的关注从未停止过。如果用户和提供商数据存在任何风险,那么灵活性、能源效率和互通性等优势便无...


解密蓝牙mesh系列 | 第八篇

蓝牙mesh网络安全性概览 为何安全性如此关键? 安全性可谓是物联网(IoT)最受关注的问题之一。从农业到医院、从智能家居到商业智能建筑、从发电站到交通管理系统,物联网系统和技术将...


解密蓝牙mesh系列 | 第七篇

市场上的低功耗蓝牙设备 低功耗蓝牙 低功耗蓝牙(Bluetooth Low Energy)是一项相当成功的无线技术。如今已经很难找到不支持低功耗蓝牙的智能手机或平板电脑了。可以说它是可穿戴技术兴起...


解密蓝牙mesh系列 | 第六篇

蓝牙mesh网络好比是一个VIP俱乐部。如果您是这个俱乐部的会员,就可以随意进入,享受与会员类别相对应的设施和服务。如果您不是会员,便无论如何也过不了门卫这一关。 蓝牙mesh设备有可...


百度云RSA解密加速服务

RSA算法是一种最广为使用的“非对称加密算法”,一般公钥/私钥长度越长,安全性就越好,计算也越复杂。百度云https改造中应用了RSA 2048加解密算法,针对高计算复杂度的RSA解密任务,我...


【原创深度】蓝牙扩展了开源应用

得益于开源软件的成功经验,Arduino开创了开源硬件(OSHW)模型,鼓励业余和专业工程师去学习、修改、宣传、制作和销售其设计的公开可用硬件产品。开源硬件在个人和商业应用中的作用借...


解密蓝牙mesh系列 | 第二篇

在本系列的第一篇中,我们介绍了全新的蓝牙mesh网络技术。如果您还未阅读第一篇,建议先从头阅读,然后再进入第二篇。 本篇将介绍蓝牙mesh网络的基本概况,包括大型mesh网络中的消息传...


基于DSP与FPGA的蓝牙数据采集系统设计

作者: 杨勇 杨润生 刘品 基于DSP与FPGA的蓝牙数据采集系统设计,数据采集系统广泛地应用于工业、国防、图像处理、信号检测等领域。DSP处理器是一种高速的数字信号处理器 数据采集系统广...


新型视频压缩技术大解密

介绍在 2014年NAB大会上所展出的所有与视频压缩和SMPTE 2022有关的产品。如果您正在开发高清晰度视频产品,相信这篇博客会对您有所帮助 数字视频的优点是,使用数字视频流可完成多项任务...