×

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

消耗积分:2 | 格式:pdf | 大小:228.46KB | 2021-04-06

分享资料个

蓝牙mesh网络好比是一个VIP俱乐部。如果您是这个俱乐部的会员,就可以随意进入,享受与会员类别相对应的设施和服务。如果您不是会员,便无论如何也过不了门卫这一关。 蓝牙mesh设备有可能是某一特定蓝牙mesh网络的成员,也有可能不是。如果它是成员,则有权与同为该网络成员的其他设备进行通信(至少以一种基本的方式)。如果它不是成员,那么该设备传输的所有内容都将被网络中的其他设备忽略。 其实可以理解为蓝牙mesh设备也拥有不同的会员类型,例如可以使用某些特定的俱乐部服务设施(如健身房、高尔夫球场等),但不是全部。它只能与网络中的某些设备进行充分的交互。而对其进行管理的就是“应用”(application)这一概念。例如,蓝牙mesh照明开关可以在网络中打开或关闭蓝牙mesh照明灯,因为所有这些设备都是照明应用的一部分。而由于供暖系统并非照明应用的一部分,因此照明开关就无法打开供暖系统。 蓝牙mesh网络 设备要想成为蓝牙mesh网络的成员,则必须经过一个称为“启动配置(provisioning)”的安全流程,将设备添加到网络中。 安全性 安全性是蓝牙mesh网络的核心,我们将在本系列的后续文章中详细介绍这一主题。将设备添加到蓝牙mesh网络、或从中移除设备的过程都将严格遵循安全性要求。 蓝牙mesh网络使用一套包含各类安全密钥的系统,从整体上保护网络,同时保护网络内的各个应用并将其彼此分离。拥有正确的安全密钥,设备才能成为网络成员并有权参与特定应用。网络中的所有节点(node)都拥有一个名为“网络密钥”或“NetKey”的密钥。只有设备拥有了这个密钥,才能成为该网络的成员,即成为其中的节点之一。 命名法 在解密蓝牙mesh系列之前的文章中(第一篇、第二篇、第三篇、第四篇、第五篇),我们介绍了“设备”(Device)和“节点”(Node)这两个正式的技术术语: 作为mesh网络成员的设备称为“节点”,而不构成节点的设备就称为“设备”。本文将用英文首字母大写“D”的“设备(Device)”一词来代指非mesh网络成员的设备,用全部字母小写的“设备(device)”来代指一般的日常电子设备。 启动配置设备(Provisioner) 启动配置的流程会将普通的“设备(Device)”变身为“节点(Node)”,使其正式成为蓝牙mesh网络的成员。这一流程通常需要通过一个应用程序来实现,该程序一般由产品制造商所提供,可在智能手机或平板电脑上使用,但也可以采用其他形式,例如桌面或Web应用程序。 运行启动配置应用程序的设备称为“启动配置设备(Provisioner)”,由于它的作用至关重要,因此在物理上必须要保证它的安全性。 启动配置协议(Provisioning Protocol) 在启动配置期间,启动配置设备会采用称为“启动配置协议”的蓝牙mesh协议,与将要被启动配置的设备进行通信。启动配置设备可通过PB-ADV或PB-GATT承载层[i]两者中的任何一个使用启动配置协议,确保在较早版本的智能手机上亦可实施启动配置设备的应用程序,只要它们支持低功耗蓝牙(Bluetooth Low Energy)和GATT。 向网络中添加新设备 将设备添加至网络的过程中,最重要的一点是要为其提供网络所有其他节点拥有的网络密钥。当然,这一过程本身必须是安全的,这样恶意设备才无法窃取添加新设备时进行的通信,也无法窃取NetKey。 当购买了新的设备(Device)并需要将其添加至当前蓝牙mesh网络时,用户将使用启动配置设备( Provisioner),同时参考这一新设备制造商的说明,将其添加至蓝牙mesh网络。这样,新设备(Device)就变身为节点(Node),成为蓝牙mesh网络的成员。 该流程涉及几个步骤,见下方流程图: 启动配置流程 1、Beacon广播 蓝牙mesh网络规格中介绍了新的GAP广播类型,包括 > 广播类型[ii]。 设备( Device)可采用> 广播类型来发出广播,声明自己是未经启动配置的设备,可被启动配置。用户可能需要根据制造商的说明,按照一定的流程,例如键入一组按钮,或将某一按钮长按一段时间等,以此方式启动新设备的广播。 用户还需要在启动配置设备中启动“添加设备到网络”的流程,以便从Beacon设备(Device)接收广播数据包。需要记住的一点是,启动配置设备可能是智能手机或平板电脑应用,因此在实际操作中会涉及到智能手机解锁、应用程序启动、也许还需要登录应用程序(为了进一步确保安全性),并通过其用户界面启动Beacon设备(Devices)搜寻。这样,启动配置设备就会意识到新设备(Device)的存在和准备就绪状态,可进入后续的启动配置流程。 2、邀请 接下来,启动配置设备将以启动配置邀请PDU(Provisioning Invite PDU)的形式向要进行启动配置设备发送邀请,这是启动配置协议的一部分。Beacon设备会在启动配置功能PDU中回应有关自身的信息。 启动配置功能PDU可提供一系列信息,例如其所拥有的元素数量、所支持的启动配置相关算法等。它还能指示设备(Device)拥有的输入输出功能类型,这些信息将用于认证(Authentication)步骤。 3、交换公共密钥(Public Key) 包括启动配置设备在内的所有蓝牙mesh设备都支持FIPS P-256椭圆曲线算法,因此必须拥有公共密钥。可通过基于该算法的非对称加密来创建安全通道,以完成剩余的启动配置流程。为此,启动配置设备会与将被启动配置的设备(Device)交换公共密钥。需注意的是,将被启动配置的设备(Device)可以通过带外方式(Out of Band),例如QR码,来提供公共密钥。本系列的后续文章将重点讨论mesh安全性,包括启动配置的安全性。 4、认证(Authentication) 启动配置设备基于对新设备(Device)功能的了解,向其发送消息,指示其输出单一或多位数值,对其所支持的多种用户操作(例如按下按钮)作出响应。值的形式会因设备差异而有所不同。一台设备可能会在LED面板上显示一个三位的数值,另一台设备则可能是红色LED灯闪烁几次,闪烁的次数就是输出的验证值。启动配置设备的用户将观察到设备(Device)输出的值,并将值输入启动配置设备的用户界面。 然后,设备(Device)和启动配置设备交换密码散列,这些数据来源包括设备(Device)输出的随机值,允许它们完成对彼此的验证。 5、启动配置数据的分配 认证成功完成之后,会通过两台设备的私有密钥(Private Key)和交换的对等公共密钥生成会话密钥(Session Key)。随后,会话密钥即可用于保护完成启动配置流程所需数据的后续分发,包括网络密钥(NetKey)和设备的唯一地址,即单播地址(Unicast Address)。 启动配置完成后,启动配置设备就会拥有网络的NetKey,这是一个称为“IV索引(IV Index)”的蓝牙mesh安全性参数,且拥有一个由启动配置设备分配的单播地址[iii]。至此,新设备就正式成为了节点,即成为蓝牙mesh网络中的一员。 从网络中移除节点 有时会需要从蓝牙mesh网络中移除节点。设备可能已经损坏并需要更换,或者可能需要将它移到另一蓝牙mesh网络,如公司位于其他城市的另一个办公室。同样,设备可能已经被出售,新的设备所有者可能会采用上述启动配置流程,将设备添加至自己的蓝牙mesh网络。 设备有时会破损

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

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !