XBee Zigbee 3.0网络安全介绍及设置示例

Zigbee安全性使用128位AES加密技术保护网络流量。 定义了标准安全模型以支持身份验证和密钥管理安全性是设计网状网络的一个非常重要的因素。 Digi可以轻松为您的特定应用找到合适的安全级别。 其范围从完全开放和未加密的网络到具有带外设备注册的高安全性模型。

警告

开箱即用的默认配置是一个未加密的网络,具有宽广的加入窗口; 这些默认值是为了便于开发,不应在成品上使用。 强烈建议启用安全性!

启用加密也将使源路由与协调器充当高RAM集中器默认情况下。对于较小的网络(少于40个节点)和低吞吐量应用程序,这将不会对网络产生重大影响,因为源路由将由XBee应用程序自动处理。如果部署更大的网络,则很可能需要将协调器配置为低RAM集中器的完整源路由实现。

网络密钥(Network Key)

网络密钥用于网络层,用于加密和解密空中消息。 启用加密后,网络上的每个节点都需要具有与其他节点通信的网络密钥。 网络密钥由网络上的每个设备共享,只需要在网络协调器上设置。 NK参数用于设置用户定义的网络密钥,该参数仅适用于协调器(CE = 1)。在大多数情况下,网络密钥应随机生成(NK = 0)并由网络管理。

如果运行集中式信任中心(Trust Center),则可以更改信任中心上的NK参数,该参数将在几秒钟后传播到网络的其余部分。 这对于可能需要定期网络密钥轮换的高安全性应用程序非常有用。 在分布式信任中心中,密钥在网络形成时定义,并且在不改造网络的情况下不能改变。

链接密钥(Link Key)

APS层使用链接密钥为端到端安全性提供额外级别的加密。 XBee3 zigbee应用程序使用全局链接密钥进行加入和APS加密传输。当加入启用加密的网络时,通过使用链接密钥对网络密钥进行加密来安全地交换网络密钥。

使用集中式信任中心时,用于加入的链接密钥将与信任中心随机生成的更安全的密钥进行交换。

链接密钥的类型:

预配置的链接密钥 - 中等安全性

使用预配置的全局链接密钥提供了一种非常简单的网络安全保护方法,这可以通过在网络上的每个节点上配置相同的只写KY值来实现。 以这种方式定义链接密钥可提供适度的安全性,同时允许轻松的网络部署。 安全配置可以在制造期间而不是在部署期间完成。

如果加入节点具有信任中心不知道的预配置链接密钥,则必须使用带外方法进行注册。 这是通过在信任中心发出0x24注册帧来完成的,该注册帧包含加入设备的链接密钥和序列号。

众所周知的默认链接密钥 - 安全性低

Zigbee联盟指定了一个众所周知的默认链接密钥; 这是一个链接密钥,可用于允许不安全的设备轻松加入安全网络。 默认情况下,XBee3将拒绝任何尝试使用此知名密钥加入的设备; 为了允许这些设备加入,必须在集中式信任中心上设置EO位4(EO = 0x10)。

如果加入设备的KY = 0(默认值),则它将尝试使用众所周知的默认链接密钥进行加入。

安装代码派生链接密钥 - 高安全性

支持Zigbee 3.0的每台设备都需要安装代码。 可以通过查询I?命令来读取安装代码,它包含一个16字节的安装代码+ 2字节的CRC。必须从加入节点读取安装代码,并通过带外方法将其输入信任中心。 通常,用户将从加入节点上的某种类型的指示或应用程序读取安装代码(它不能打印在标签或物理单元上)。然后,用户使用本地发布的0x24注册API帧并设置选项字段的位0,将连接器的安装代码和序列号提供给信任中心。

使用安装代码生成链接密钥是最安全的方法,因为它允许用户清楚地识别到信任中心的加入节点,并且它保证每个加入设备具有随机链接密钥。

为了使连接设备使用安装代码,必须在连接设备上设置DC位0(DC = 1)。 这将根据安装代码生成链接密钥,并忽略KY参数。

加入窗口

Zigbee规定了一个有限的时间窗口,网络可以允许加入; Zigbee规范允许的最大连接窗口为254秒(NJ = 0xFE)。 每当打开连接窗口时,将使用打开窗口的设备的NJ值; 网络的其余部分不共享此超时值。

以下条件将导致网络连接窗口打开NJ秒:

形成网络

路由器加入网络(这将使用路由器的NJ值打开窗口)

启用调试按钮(D0 = 1),并在相应网络上的路由器或协调器模块上物理按两次。

向网络上的路由器或协调器发出CB2命令。

设备通过0x24 API帧成功注册到信任中心。

打开加入窗口时,会向网络的其余部分发送广播。 连接装置不需要与打开连接窗口的装置相邻。

如果NJ设置为0,则除非通过调试按钮或CB命令明确打开,否则连接窗口将保持关闭状态。 在这种情况下,连接窗口将在打开时打开固定的60秒。 对于高度安全的网络,建议在每个设备上将NJ设置为0,以便不会无意中打开连接窗口。

允许始终打开的连接窗口(NJ = 0xFF),但这将导致网络在zigbee规范之外运行。 提供此选项是为了便于开发,不应在成品上使用。

密钥管理

Zigbee为密钥管理定义了两种安全模型:集中式安全模型和分布式安全模型。

集中式安全模型

集中式信任中心网络被定义为zigbee网络,其中一个节点充当集中式密钥管理者。此集中式信任中心定义网络密钥并管理其分发,确定节点何时以及是否可以加入网络,以及发布应用程序链接密钥。 在形成网络时,网络协调器承担信任中心的角色。 信任中心在网络上的保留地址为0,发送到该地址的任何流量都将路由到信任中心。

当节点尝试加入时,它首先与网络上的路由器建立MAC关联。 路由器比向信任中心发送请求,表示节点想要加入。信任中心根据当前的连接策略(打开连接窗口+ EO选项)决定节点是否可以加入。 如果信任中心批准加入尝试,则使用信任中心链接密钥对网络密钥进行加密,并将其发送到加入节点。加入节点必须具有链接密钥的副本才能解密网络密钥并成功加入网络。

如果加入节点没有与网络匹配的链接密钥或具有安装代码派生链接密钥,则必须将其注册到信任中心。 注册是使用带外方法将链接密钥提供给信任中心的手段。注册要求信任中心以API模式(AP = 1或2)运行,不能在命令或透明模式下执行。

分布式安全模型

分布式信任中心没有指定为协调器的节点; 网络中的所有路由器都具有网络密钥的副本,并且能够授权加入设备,这意味着网络上的每个路由器都是信任中心。网络密钥在网络形成时设置,不能更改。 网络将在CE = 1的设备上形成,并且网络上没有协调器(设备将网络形成为路由器。)这意味着任何指向0地址的流量都将失败。

当节点加入分布式信任中心网络时,相邻路由器将该网络密钥的副本共享给加入设备。 通过使用全局链接密钥加密与加入设备的交换来保护网络密钥。通过在网络上的每个设备上设置EO位1,可以选择性地发送网络密钥。这是非常不推荐的,因为它允许不安全的设备访问网络密钥。

可以在分布式信任中心上执行设备注册,但是必须在与加入设备相邻的路由器上发布0x24注册帧,因为注册信息不与网络的其余部分共享。

设备注册

当设备尝试加入安全网络时,它必须获取网络密钥的副本才能成功通信。

网络密钥可以以明文形式发送,但在大多数情况下,它将使用链接密钥进行加密。 如果未在两个设备上预先配置链接密钥,则必须告知信任中心加入设备将使用哪个链接密钥加入。 Digi将此过程称为“注册”,并且是通过物理串行接口将加入设备的链接密钥和序列号安全地提供给信任中心的方法。由于注册信息不是通过空中提供的,因此这被认为是带外注册,并提供最高级别的安全性,因为无法通过RF信道提取凭证。

使用0x24帧执行注册,并将其发布到信任中心(集中式或分布式)。 注册框用于注册链接密钥,注册安装代码派生链接密钥或删除以前注册的设备。

在集中式信任中心(EO = 2)上,注册是暂时的,这意味着注册的设备仅被授权在固定的时间段内加入。此期间与网络连接窗口分开,由集中式信任中心的KT参数定义。 默认情况下,已注册的设备将被授权加入为期5分钟。 如果设备在此期间内无法加入,则需要重新注册。 加入后,它将安全地重新加入,并且不需要再次注册,除非使用NR命令或离开请求明确地从网络中删除设备。 在这种情况下,必须向集中式信任中心发出0x24注册帧,与加入设备相邻的路由器将加入请求路由到信任中心。集中式信任中心上的密钥表条目存储在RAM中,并且不会在电源关启中保留。

在分布式信任中心(EO = 0)上,注册是持久的,这意味着只要加入窗口打开,注册的设备将始终被授权加入。注册信息不会共享给网络的其余部分,因此必须向与加入设备相邻的路由器发出0x24注册帧。 由于链接密钥表的条目数量有限,因此在成功加入后使用0x24帧取消注册设备以添加后续设备时,需要显式删除密钥表条目。 分布式信任中心上的密钥表存储在闪存中,并将在电源关启中持续存在。

一旦设备加入网络并获得网络密钥的副本,它将保留有关网络的信息,并在重新启动时执行安全重新加入。 如果设备上的网络参数发生更改,设备会收到离开请求,或者3次尝试后安全重新加入失败,设备将需要通过关联加入网络,这需要注册。

示例:形成安全网络

以下示例将说明如何构建安全的Zigbee 3.0网络。 这是大多数网络的推荐配置,它允许轻松部署,同时还保持适度的安全性。

使用以下参数配置XBee3设备:

CE=1

这表示设备将尝试形成网络而不是加入现有网络。

EE = 1

这启用了网络加密。

EO = 2

这将形成网络作为集中信任中心。如果需要分布式信任中心,请将此参数设置为0。

任何连接设备必须具有相同的值才能正确处理发生的任何密钥交换。

KY =非零

这将为网络定义预配置的链接密钥。

可以在加入设备时将此密钥配置为预配置的全局链接密钥。

如果加入设备不使用预先配置的链接密钥,则需要在加入之前将其注册到信任中心。

NK=0

优选使用零NK值,因为XBee将生成无法读取的随机网络密钥。

如果充当集中式信任中心,则可以在网络形成后更改此参数,以更新网络上所有设备的网络密钥。

NJ

定义在打开连接窗口时允许设备加入的时间量。这可以在网络形成后修改。

如果您希望提高此网络的安全级别,请在形成节点上设置KY = 0。 这将生成无法读取的随机链接密钥,并且需要单独注册每个加入设备。此配置保证只有授权设备才能加入网络,因为全局链接密钥被混淆且无法读取。

示例:使用预配置的链接密钥加入安全网络

以下示例将说明如何加入已启用安全性,具有预配置链接密钥的现有网络,该网络已在已知网络上配置。 使用此示例,部署安全网络非常容易,因为每个设备都将预先配置为加入网络。安装程序只需要担心打开新设备的连接窗口。

使用以下参数配置加入的XBee3设备:

EE = 1

加入节点必须具有与其将加入的网络相同的加密设置。

EO = 2

如果加入集中式信任中心,则必须设置EO位1,以便加入设备知道需要进行链路密钥交换。

如果加入分布式信任中心,请清除EO位1。

KY = KY(来之信任中心)

由于KY值已知,因此应在连接设备上进行预配置。 只要KY值匹配,就能获得网络密钥并加入。

NJ

您应该考虑在加入设备时配置的加入时间...如果设备成功加入网络作为路由器(SM = 0),那么它将立即打开NJ秒的加入窗口,有效地刷新它。 如果您不希望像这样重新打开连接窗口,请在所有连接设备上设置NJ = 0。

要将设备加入网络,应使用WR命令将上述配置写入闪存,然后将其置于网络的RF范围内。

要打开加入窗口,可以在网络路由器或信任中心按两次调试按钮。 如果按钮不可用,则可以发出CB2命令。

加入设备将不断尝试加入网络(除非明确告知不要通过DJ = 0命令)。 但是,如果您希望模块立即尝试加入,可以在加入节点上按一次调试按钮(或发出CB1命令)。

示例:注册没有预配置链接密钥的加入节点

使用上面的示例加入网络...如果加入节点不知道信任中心上的链接密钥(要么被混淆(KY = 0),要么加入设备未知),那么它必须注册到 信托中心。

使用以下参数配置加入的XBee3设备:

EE = 1

加入节点必须具有与其将加入的网络相同的加密设置。

EO = 2

如果加入集中式信任中心,则必须设置EO位1,以便加入设备知道需要进行链路密钥交换。

如果加入分布式信任中心,请清除EO位1。

KY =非零值

为此特定加入设备配置已知链接密钥值。安装程序必须知道该值,因为它需要在带外传递给信任中心。

在信任中心,您必须使用API帧注册此设备。 生成包含以下信息的0x24帧:

加入设备的链接密钥(KY)

加入设备的序列号(SH&SL)

注册成功后,连接窗口将自动打开NJ秒(如果NJ = 0,则为60秒)。

如果信任中心是集中的,则该注册的密钥表条目是暂时的,并且将在KT秒之后到期。在分布式信任中心,它将持续存在直到明确清除。

示例:使用安装代码注册加入节点

为了提供最高级别的安全性,建议使用安装代码注册设备。 安装代码在工厂随机分配给每个Zigbee3.0设备,以便安全地加入网络。 使用安装代码注册设备的过程类似于注册链接密钥,但还有一些额外的步骤......

使用以下参数配置加入的XBee3设备:

EE = 1

加入节点必须具有与其将加入的网络相同的加密设置。

EO = 2

如果加入集中式信任中心,则必须设置EO位1,以便加入设备知道需要进行链路密钥交换。

如果加入分布式信任中心,请清除EO位1。

DC = 1

这告诉加入设备从设备的安装代码生成链接密钥。 如果启用此位,则忽略KY参数并不使用。

在信任中心,您必须使用API帧注册此设备。 生成包含以下信息的0x24帧:

加入设备的链接密钥(KY)

加入设备的序列号(SH&SL)

注册成功后,连接窗口将自动打开NJ秒(如果NJ = 0,则为60秒)。

如果信任中心是集中的,则该注册的密钥表条目是暂时的,并且将在KT秒之后到期。在分布式信任中心,它将持续存在直到明确清除。

示例:取消注册以前注册的设备

这仅在分布式信任中心中需要,因为密钥表条目是持久的并存储在闪存中。 由于只有有限数量的条目可用,因此如果使用注册加入10个以上的设备,则需要对密钥表进行适当的管理。

要取消注册设备,必须在信任中心发出0x24注册帧,其中包含已注册设备的序列号和空(空)密钥。

注册场景:

可以将上述一些安全功能组合在一起,通过简化部署来保持高级别的安全性,同时还为授权设备提供通过注册安全加入的方法。

例如......具有集中信任中心的已建立的Zigbee网络正在展示一些需要网络工程师进行分析的问题。 由于部署的性质,最终用户不希望向签约网络工程师披露任何安全凭证。

为了允许网络工程师进入网络,必须通过注册授权她加入。 网络管理员将集中信任中心的KT参数设置为0x7080,将注册超时设置为8小时。 由于网络工程师尚未在现场,因此NJ参数设置为0xFF以允许开放连接。

向信任中心发出0x24帧,其中包含网络工程师设备的序列号和一次性链接密钥。然后,网络工程师可以使用此链接密钥加入网络并执行所需的任何工作。

执行分析并且网络工程师离开站点后,网络管理员通过将NJ设置为0来关闭加入窗口。此外,信任中心上的网络密钥(NK)将更新,然后传播到其余部分。网络进一步保护网络。 不需要取消注册,因为这是一个集中的信任中心; 临时链接密钥将在KT秒后过期。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181118G0O5FC00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券