蓝牙网状网络就像一个俱乐部。如果您是俱乐部会员,则可以进入俱乐部并使用您的会员类型允许的设施和服务。如果你不是,不管你怎么说,你都不能进门。
蓝牙网状设备可以是或者不是蓝牙网状网络的成员。如果是会员,则有权至少以一种基本的方式与其他也是该网络成员的设备进行通信。如果不是会员,那么设备传送的任何内容都将被网络中的其他设备忽略。
蓝牙网络设备也可以被认为具有会员类型,例如可以访问特定的俱乐部设施(健身房,高尔夫球场等),而不是整个俱乐部。它只能与网络中的某些设备交互。其背后就是应用程序的概念。例如,蓝牙网状灯开关可以在网络中打开或关闭蓝牙网状灯,因为这些设备中的每一个都是照明应用的一部分。由于加热系统不是照明应用的一部分,灯开关不能接通加热系统。
蓝牙网状网络安全性
要使设备成为蓝牙网状网络的成员,必须使用称为provisioning的安全过程将其添加到网络中。
安全是蓝牙网状网络的核心,我们将在本系列的后面详细介绍这个主题。在蓝牙网状网络中添加或移除设备都是安全性要求的过程。
蓝牙网状网络使用不同安全密钥类型的系统来保护整个网络,以及保护和分离网络中的各个应用。作为网络的成员并有权参与特定的应用程序,在这两种情况下都是设备拥有正确安全密钥的结果。网络中的所有节点都拥有一个称为网络密钥或NetKey的密钥。它拥有使该设备成为该网络成员的这个密钥,即它的一个节点。
蓝牙网状网络术语
在之前的蓝牙网状网络系列中,我们介绍了正式的技术术语‘device’和‘node’。您可能还记得,一个网状网络成员的设备称为node,而不是device。现在,我将使用带有大写“D”的“device”来表示尚未成为网状网络一部分的设备,并继续像我一直使用的那样使用“device”来表示更通用的电子设备,非正式的感觉。
蓝牙网状网络配置
配置将一个简单的设备转换成一个节点,一个蓝牙网状网络的正式成员。该过程使用应用程序来完成,该应用程序通常由产品制造商提供以供在智能手机或平板电脑上使用,但也可以采用其他形式,例如桌面或网络应用程序。
运行配置应用程序的设备称为Provisioner。提供者必须物理性的安全,因为它具有特殊的角色。
配置协议
在配置期间,Provisioner和要配置的设备使用称为配置协议的蓝牙网状协议进行通信。 Provisioner可以在PB-ADV或PB-GATT承载[i]上使用配置协议,以确保Provisioner应用可以在旧的智能手机上实现,只需要它们支持蓝牙低功耗(LE)和GATT。
向网络添加新的设备
将设备添加到网络主要涉及为其提供该网络的所有其他节点所拥有的网络密钥。当然,这个过程本身必须是安全的,这样恶意设备就不能窃听在添加新设备和窃取NetKey时发生的通信。
当购买新设备并且需要将其添加到现有的蓝牙网状网络时,用户将使用Provisioner以及来自新设备的制造商的指令将其添加到蓝牙网状网络。这将新设备转换为蓝牙网状网络的节点和成员。
该过程涉及几个步骤,如下面的流程图所示。
配置过程
步骤1:信标
蓝牙网状网络规范已经引入了新的GAPAD类型,包括“Mesh Beacon”广告类型[ii]。
设备通过使用> AD类型将自身宣告为未提供的设备来指示其可用性。用户可能需要按照制造商所描述的程序,例如按下按钮的组合或按住按钮一段时间的方式开始新的设备广告。
用户还将在Provisioner中启动“Add Deviceto Network”过程,这将导致它从信标设备接收广告数据包。请记住,Provisioner可能是智能手机或平板电脑应用程序,因此实际上,这涉及到解锁智能手机,启动应用程序,可能登录到应用程序(以获得额外的安全性),并使用其用户界面来启动寻找信标设备。通过这种方式,Provisioner就会意识到新的配置,并准备好通过配置过程的其余部分。
步骤2:邀请
接下来,Provisioner向要配置的设备发送邀请消息。邀请采用配置邀请协议(PDU)的形式。信标设备在ProvisioningCapabilities PDU中响应有关其自身的信息。
Provisioning Capabilities PDU提供的信息包括元素的数量以及它支持的与供应相关的算法。它还指示设备具有的输入和输出功能的类型,这是在“Authentication”步骤中使用的信息。
步骤3:交换公钥
所有蓝牙网状设备(包括Provisioner)都支持FIPS P-256Elliptic Curve算法,因此必须具有公钥。基于该算法的非对称密码术被用于创建安全通道,通过该通道来执行剩余的provisioning过程。为此,Provisioner和设备交换其公共密钥。请注意,设备可能会通过带外方法(如QR码)提供其公钥。我们将在后面的蓝牙网状网络系列文章中关注网状网安全性,包括配置安全性。
步骤4:授权
Provisioner利用其对新设备功能的知识并向其发送消息,指示消息输出单个或多个数值以响应各种支持的用户动作之一,例如按下按钮。根据设备的不同,输出的值会有所不同。一个设备可能在LED面板上显示一个三位数字值,而另一个设备可能会多次闪烁红色LED,闪烁次数为输出验证值。Provisioner的用户将观察设备输出的值,并将其输入到Provisioner用户界面。
然后,设备和Provisioner交换一个加密哈希,该加密哈希由包含由该设备输出的随机值的数据导出,从而允许它们完成其认证。
步骤5:分配Provisioning数据
在authentication成功完成之后,会话密钥由两个设备中的每一个从它们的私钥和交换的对等公钥得出。会话密钥随后用于保护完成供应过程所需的数据的后续分配,包括设备的NetKey和唯一地址(称为UnicastAddress)。
配置完成后,配置的设备拥有网络的NetKey,这是一个被称为IVIndex的蓝牙网状网安全参数,它具有由Provisioner分配的UnicastAddress[iii]。新设备现在正式成为节点和蓝牙网状网络的成员。
从网络中移除节点
蓝牙网状网络的节点需要被删除。该设备可能已经损坏,需要更换,或者可能需要将该设备移到其他城市另一家办事处的另一个蓝牙网络网络。同样,该设备可能已经出售,预计新的拥有者将使用上述供应过程将设备添加到他们自己的蓝牙网状网络。
有时候有些设备会损坏
如果设备出现故障而无法修复,您可能会试图将其扔到垃圾箱中。如果您将设备出售给某人,您也同样可能只想拿钱,忘记旧设备。然而,这是不明智的。
节点包含通过供应过程提供的安全密钥。请记住,它是拥有主要的NetKey,它确定一个设备是一个网络的成员,因此有权访问它。丢弃或销售设备时,将与您的蓝牙网络网络相关的密钥留在设备内可能会使您的网络容易受到攻击。因此,已经定义了一个消除节点的安全过程,这个过程将在这里进行描述。
从网络中删除节点涉及两个步骤。首先,Provisioner应用程序用于将要删除的节点添加到“黑名单”中。其次,启动一个称为密钥刷新过程的过程。
黑名单
使用Provisioner,用户必须将要删除的节点添加到黑名单中。黑名单的目的只是充当那些在启动密钥刷新过程时不能用新的安全密钥发布的节点的列表。
The Key Refresh Procedure
秘钥刷新过程
密钥刷新过程导致网络中的所有节点(黑名单的成员除外)被发布新的网络密钥,应用密钥和所有相关的派生数据。换句话说,构成网络和应用程序安全基础的整套安全密钥被替换。
用户使用Provisioner启动密钥刷新,Provisioner使用配置消息创建新密钥并将其发送到网状网络中的每个节点,但黑名单的成员除外。
低功率节点将接收他们的Friend的新密钥。因此,在接收它们之前可能需要相当长的时间,因此整个网络都要更换密钥。
由于每个节点不会在同一时间收到新的密钥,因此密钥刷新过程定义了一个称为“Phase 2”的过渡阶段,在此过程中使用旧密钥和新密钥。具体而言,传输使用新密钥,但支持接收消息的节点同时使用旧密钥和新密钥。
Provisioner通知所有节点,当Phase2完成时,它们应撤销旧密钥,并且每个非黑名单的节点都收到其新密钥。
此时,从网络中删除并且包含旧的NetKey和旧的AppKeys的节点不再是网络的成员,因此不构成威胁。
结论
安全性是蓝牙网状网络技术设计的核心。我们已经看到了这种情况如何在网络管理场景中最基本的地方体现出来,将新设备添加到蓝牙网状网络并将其删除。
-
通信
+关注
关注
18文章
5969浏览量
135830 -
蓝牙
+关注
关注
114文章
5765浏览量
169778 -
协议
+关注
关注
2文章
598浏览量
39164
发布评论请先 登录
相关推荐
评论