0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

蓝牙mesh安全的启动配置流程分析

电子设计 作者:电子设计 2018-09-28 08:22 次阅读

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

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所示。

蓝牙mesh安全的启动配置流程分析

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

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

输入带外(Input OOB)

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

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

蓝牙mesh安全的启动配置流程分析

图 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部分,了解更多详细信息。(详见: )

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

蓝牙mesh安全的启动配置流程分析

表1 - 用于确认值计算的参数

让我们来看看用于确认值生成的算法。图3是一个流程图,其中包括了几轮AES-CMAC和SALT生成[1]。该流程图对于ConfirmationProvisioner和ConfirmationDevice值均适用。

如果由启动配置设备(Provisioner)执行输入,则从一个名为RandomProvisioner的值开始(下图中以蓝色表示),并生成ConfirmationProvisioner值。

如果由未经启动配置设备执行输入,则从一个名为RandomDevice的值开始(下图中以绿色表示),并生成ConfirmationDevice值。

蓝牙mesh安全的启动配置流程分析

图 3 – 确认值生成图

确认值检查(Confirmation Value Check)

当确认值生成之后,两台设备就会进行交换,并且都会检查接收值的完整性。图4表示确认值检查的过程。

确认过程的开始就是启动配置设备(Provisioner)将其随机数RandomProvisioner发送到未经启动配置的设备。未经启动配置设备使用它来重新计算确认值,并与之前接收的确认值进行比较,进行验证。

蓝牙mesh安全的启动配置流程分析

图 4 –确认值检查

如果由未经启动配置设备计算所得的确认值与接收到的ConfirmationProvisioner不匹配,则启动配置(Provisioning)过程将被中止。

如果由未经启动配置设备计算所得的确认值与接收到的ConfirmationProvisioner匹配,则未经启动配置设备将其RandomDevice值发送给启动配置设备。

然后,启动配置设备(Provisioner) 使用相同的过程来重新计算确认值,并通过比较计算所得值与先前接收值来进行验证。

如果由启动配置设备(Provisioner) 计算所得的确认值与接收到的ConfirmationDevice不匹配,则启动配置(Provisioning)流程将被中止。

如果由启动配置设备(Provisioner) 计算所得的确认值与接收到的ConfirmationDevice匹配,则表示验证成功。后续只要启动配置设备(Provisioner)和未经启动配置设备完成启动配置流程的第五步:启动配置数据分发,则未经启动配置设备就能成为蓝牙mesh网络中的节点(node)。

5、启动配置数据分发

认证步骤完成之后,就可以确保在启动配置设备(Provisioner)和未经启动配置设备之间建立的承载层的安全,然后就进入启动配置(Provisioning)过程中最重要的一步:导出并分发启动配置数据(provisioning data)。启动配置设备(Provisioner) 负责生成启动配置数据,启动配置数据由多个数据项组成,包括一个称为网络密钥 (NetKey) 的安全密钥。表2列出了启动配置数据字段。

蓝牙mesh安全的启动配置流程分析

表 2 – 启动配置数据(provisioning data)

为安全地进行启动配置数据分发,启动配置设备(Provisioner)采用AES-CCM [2],借助共享的会话密钥(SessionKey)对启动配置数据(provisioning data)进行加密,启动配置设备和未经启动配置设备都会进行计算。 AES-CCM需要三个输入参数:会话密钥、会话随机数和纯文本。纯文本参数值包含需要被加密的启动配置数据。设备密钥(DevKey)、会话密钥(SessionKey)和会话随机数(SessionNonce)的值通过图5所示的过程导出。

蓝牙mesh安全的启动配置流程分析

图5 - DevKey / SessionKey / SessionNonce生成过程

从图5可以看出:

如果将prsk(绿色)的输入值代入k1函数中,则会生成SessionKey。这是用于启动配置数据加密的关键。

如果将prsn(黄色)的输入值代入k1函数中,将生成SessionNonce。这是用于启动配置数据加密的随机值。

如果将prdk(蓝色)的输入值代入k1函数,则将生成DevKey。

启动配置设备(Provisioner)和未经启动配置设备都需要生成会话密钥(SessionKey)和会话随机数(SessionNonce)。当SessionKey和SessionNonce值准备就绪时,启动配置设备将对包含导出启动配置数据的启动配置数据PDU (Provisioning Date PDU) 进行加密,并将其发送至未经启动配置的设备。此处,相同的SessionKey和SessionNonce值也可用来对接收到的数据进行解密。

至此,启动配置流程完成。两台对等设备都已知晓新的设备密钥(DevKey)和全网的网络密钥(NetKey),这就意味着我们的新设备已成为蓝牙mesh网络中的节点(node)和成员。

开发mesh

启动配置过程是蓝牙mesh安全的基础,让网络设备之间能够可靠安全地进行通信

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 蓝牙
    +关注

    关注

    114

    文章

    5760

    浏览量

    169726
  • 密钥
    +关注

    关注

    1

    文章

    137

    浏览量

    19730
  • 配置
    +关注

    关注

    1

    文章

    187

    浏览量

    18348
收藏 人收藏

    评论

    相关推荐

    蓝牙mesh系列的网络安全

    。物联网系统如果存在安全漏洞,就可能会导致灾难性的后果。蓝牙mesh网络的安全性从设计之初就是重中之重。本文将着重分析主要的
    发表于 07-22 06:27

    蓝牙mesh系列的安全

    作者:任凯 蓝牙技术联盟亚太区技术项目经理蓝牙mesh网络启动配置Part1受WannaCry攻击的国家地区2017年5月,臭名昭著的勒索软
    发表于 07-22 06:11

    蓝牙mesh系列的启动配置流程

    作者:任凯 蓝牙技术联盟亚太区技术项目经理蓝牙mesh网络启动配置Part2在本文的Part1中,我介绍了
    发表于 07-22 08:47

    解密蓝牙mesh系列 | 第七篇

    消息使用核心蓝牙mesh协议栈,因此消息包含在网络PDU内。网络PDU可被封装在代理PDU中。 蓝牙mesh配置文件规格中定义了各种Beac
    发表于 07-25 08:36

    蓝牙Mesh的架构及如何通过蓝牙Mesh网络收发消息?

    在本系列文章的和,我们讨论了蓝牙Mesh的架构及如何通过蓝牙Mesh网络收发消息,这一篇文章主要讨论Mesh网络的隐私与
    发表于 02-25 07:59

    什么是蓝牙mesh网络安全

    蓝牙mesh网络安全性的基本概念
    发表于 02-25 08:22

    如何向蓝牙mesh网络中添加或移除设备

    蓝牙mesh启动配置安全流程如何向蓝牙
    发表于 03-02 07:01

    【平头哥蓝牙Mesh网关开发套件试用体验】mesh开关控制mesh灯 + 测试视频

    本帖最后由 jf_11671167 于 2021-10-9 16:20 编辑 本文对 PHY6220 蓝牙mesh 开关、蓝牙mesh配置
    发表于 09-26 23:16

    【平头哥蓝牙Mesh网关开发套件试用体验】mesh开关控制mesh灯 + 视频介绍

    本文对 PHY6220 蓝牙mesh 开关、蓝牙mesh配置,并用蓝牙
    发表于 03-09 07:33

    蓝牙mesh启动配置流程资料下载

    电子发烧友网为你提供蓝牙mesh启动配置流程资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用
    发表于 04-03 08:43 4次下载
    <b class='flag-5'>蓝牙</b><b class='flag-5'>mesh</b><b class='flag-5'>启动</b><b class='flag-5'>配置</b><b class='flag-5'>流程</b>资料下载

    蓝牙mesh网络的启动配置协议资料下载

    电子发烧友网为你提供蓝牙mesh网络的启动配置协议资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到
    发表于 04-04 08:57 13次下载
    <b class='flag-5'>蓝牙</b><b class='flag-5'>mesh</b>网络的<b class='flag-5'>启动</b><b class='flag-5'>配置</b>协议资料下载

    蓝牙mesh的“启动配置(provisioning)”的安全流程资料下载

    电子发烧友网为你提供蓝牙mesh的“启动配置(provisioning)”的安全流程资料下载的电
    发表于 04-06 08:52 6次下载
    <b class='flag-5'>蓝牙</b><b class='flag-5'>mesh</b>的“<b class='flag-5'>启动</b><b class='flag-5'>配置</b>(provisioning)”的<b class='flag-5'>安全</b><b class='flag-5'>流程</b>资料下载

    如何用蓝牙mesh开关控制蓝牙mesh

    本文对 PHY6220 蓝牙mesh 开关、蓝牙mesh配置,并用蓝牙
    的头像 发表于 10-09 09:22 7660次阅读

    泰凌微电子自研蓝牙Mesh解密分析工具操作说明

    在调试开发蓝牙Mesh产品时,除了打开设备端的Log外,有时还需要用到抓包工具分析空中的Mesh消息格式和交互流程是否正确。目前市面上的抓包
    的头像 发表于 05-17 10:43 2917次阅读
    泰凌微电子自研<b class='flag-5'>蓝牙</b><b class='flag-5'>Mesh</b>解密<b class='flag-5'>分析</b>工具操作说明

    蓝牙mesh组网模块的七个特点

    智能家居领域具有很大的优势。  蓝牙mesh组网模块的网络有以下几个特点:  ①网络无需中心节点  蓝牙Mesh与其他Mesh拓扑的很大不同
    的头像 发表于 05-24 17:27 1132次阅读
    <b class='flag-5'>蓝牙</b><b class='flag-5'>mesh</b>组网模块的七个特点