Zigbee安全概述

一、Zigbee概述

随着物联网(IoT)行业的发展,越来越多的无线技术应运而生。

众所周知,在物联网行业中,我们有两种典型的网络。一个是WAN(广域网),另一个是PAN(个人区域网)。

  • 对于LoRa,NB-IoT,2G / 3G / 4G等无线技术,通常传输距离超过1 km,因此它们主要用于广域网(WAN)。
  • 对于WiFi,蓝牙,BLE,Zigbee和Zwave等无线技术,通常的传输距离小于1公里,因此它们主要用于个人局域网(PAN)。

Zigbee是IoT网络(尤其是家庭自动化行业)中最流行的无线技术之一。其特点包括:

  • 短距离 – 无线覆盖范围在10到100米之间。
  • 低数据速率 – 最大数据速率为250 Kbps。
  • 低功耗 – 处于睡眠状态的Endpoint设备在睡眠模式下可以使用低于5uA的电流;
  • 这是一种网状技术 – 网络可以轻松扩展到很大。理论上最大节点数为65535

Zigbee说白了就是类似wifi、蓝牙的一种交换数据的方式,学术点说就是低成本、用于低功耗嵌入式设备(无线电系统),用以促进机器与机器之间高效且有效通信(通常相距10-100米)的无线技术。它建立在IEEE802.15.4的基础上,比起蓝牙,它能建立更大的网络(蓝牙的piconet最多支持7个设备),比起wifi,它虽然速度差很多,但功耗相应的也要低不少,因此它非常适合家庭、工厂等应用场景。小米近期推出的家庭网关设备也正是因为Zigbee的这些优势才选择了这项技术。

上面提到的IEEE的802.15.4主要是定义了协议栈的PHY层和MAC层,而Zigbee则是在其基础上建立了完整的协议栈。之后我们会对Zigbee的每一层再进行详细的说明。

Zigbee安全概述_第1张图片

Zigbee将设备划分成了三类,协调器(Coordinator)、路由器(Router)、终端(EndPoint或是EndDevice)。

  • 协调器是整个Zigbee网络的发起者、管理者,功能包括:对网络进行初始化,包括制定网络的信道、PANID(网络的标识符,比如一个信道内可以存在多个Zigbee网络,每个网络就由PANID来区分);配置网络的安全级别和配置信任中心的地址(默认是协调器自己,且每个Zigbee网络只能有一个信任中心),信任中心用来分发网络和端到端应用程序配置管理的密钥,当一个路由器想要加入网络,也需要信任中心的许可;维护当前关联的设备信息。如图,可以在给的Sample中Tools目录下的f8wConfig.cfg中修改信道和PANID

Zigbee安全概述_第2张图片

 

  • 路由器负责在终端设备之间或终端设备与协调器之间路由数据包,同样需要维护当前关联的设备的信息,而且它作为网络的连接点,是不能休眠的。
  • 终端负责感知信息,它不允许其他设备关联自己,相当于树的叶子

Zigbee常见的网络拓扑结构主要有一下几种

Zigbee安全概述_第3张图片

图中提到的PAN协调点也就是协调器的意思,FFD(FFD-Full Function Device全功能设备)即可以当做三类设备中任一一类使用的设备,而RFD(RFD-Reduced Function Device精简功能设备)则只可以当做终端使用。实际上我们一般买到的都是FFD,只是在将代码导入设备时,根据选择的不同编译器会做不同的处理,最终生成三类不同的设备,如图,在IAR中可以直接修改。

Zigbee安全概述_第4张图片

Zigbee采用short地址方式标识网络内的设备,short地址是16位的,是由所属的网络分配的,类似我们网卡的ip地址,要注意因为short地址只有16位,所以Zigbee的最大接入设备数是65535。

二、Zigbee的协议栈

上面说了Zigbee的协议栈是在IEEE802.15.4的基础上建立的,那么要搞懂Zigbee的协议栈就要首先把15.4给搞明白,这就要涉及到无线网络的知识了。

协议体系结构。

Zigbee安全概述_第5张图片

  1. 物理层和MAC层由IEEE-802.15.4定义。物理层负责无线电管理,包括诸如调制/解调,信号强度检测等功能。MAC层负责单跳通信。
  2. 网络层负责消息的发送和接收,设备维护,路由等。
  3. 应用程序支持层(APS)负责端到端消息的传输。
  4. 应用层留给用户设计。每个应用程序实例称为一个Endpoint。为管理功能保留了一个特殊的Endpoint,即Endpoint 0。我们也将此管理功能模型称为Zigbee设备对象(ZDO)。
  5. 在APS层和网络层中,有一些安全功能可用于保护网络免遭黑客攻击。

802协议的相关内容,15实际上是WPAN(wireless personal area network无线个域网),也就是为了实现近距离通信而设置的,其中15.1就是我们熟悉的蓝牙,15.4是zigbee,而我们最了解的wifi其实是802.11,也就是WLAN(Wireless Local Area Network 无线局域网)。

Zigbee安全概述_第6张图片

物理层(PHY)

Zigbee在ISM频率上工作。通信信道定义如下:

Zigbee安全概述_第7张图片

Zigbee最常见的工作频率是2.4GHz。它指定了Zigbee使用的是2.4GHz物理层和868、915MHz物理层,均基于直接序列扩频(DSSS)技术。而DSSS技术有如下两个特点:

  • DSSS使用一串连续的伪随机码(pseudonoise, PN)串行,用相位偏移调制的方法来调制信息。这一串连续的伪随机码称为码片(chips),其每个码的持续时间远小于要调制的信息位。即每个信息位都被频率更高的码片所调制。因此,码片速率远大于信息位速率。
  • DSSS通讯架构中,发送端产生的码片在发送前已经被接收端所获知。接收端可以使用相同的码片来解码接收到的信号,解调用此码片调制过的信号,还原为原来的信息。

该层最主要的任务就是在两个对等MAC实体间提供可靠链路,它提供PHY数据服务和PHY管理服务两种服务,PHY数据服务使PHY能通过物理无线信道传输和接收PHY协议数据单元(PPDU);PHY管理服务为PLME(这是一个管理该层的实体,可以通过调用它提供的接口对该层进行管理)提供的接口。

调制

物理层还处理数据原始数据的发送和接收。PHY层在868/915 MHz频带中使用二进制相移键控(BPSK),并在2.4 GHz下使用偏移正交相移键控(O-QPSK)。信息通过直接序列扩频(DSSS)编码到载波上,DSSS是一种固有的鲁棒方法,可通过信号处理增益来提高多径性能和接收机灵敏度。请注意,2.4 GHz是全球Zigbee通信最常用的频段。唯一官方Sub GHz的支持是英国的Smart Energy。

输出功率

802.15.4是专为低功耗,低数据速率,低成本的网络设计的。这些通常称为PAN或个人局域网。它主要是为中小无线电范围的应用而设计,但是外接功率放大器也是可以的。在大多数国家中,允许获得大约+20 dBm的输出功率。在欧洲,最大发射功率被限制到+10 dBm左右。但是,这足以使您到达大约一到三公里的距离,这取决于您的链路预算,所使用的功率放大系数和/或所拥有的天线的类型。

数据速率

使用2.4 GHz直接序列扩频Phy或DSSS,原始比特率为250 kb / s。在实际应用中,通常只有理论速率的四分之一或五分之一。预期的吞吐率与56k波特调制解调器相当。单跳链路上每秒约52700 kb。放入多跳效果后,传播所需的时间会更长一些。

开阔场地的传输距离

对于2.4GHz的PHY,在视线可达的空间,传输距离大约可以达到2KM。这是在大部分地区的无线法规允许的范围内,经过放大发射功率来实现的。由于存在大量信道的缘故,你可以选择一个相对安静的信道来避免干扰,从而保证可靠的通信。如果你选择了一个嘈杂的信道,Zigbee的网络管理单元可以切换到一个新的信道,这就是被称为“frequency agility”的特性。工作在2.4GHz频段还有一个好处,因为这个频段在全球范围内都是可用的,这样可以让你的产品具有更广阔的应用空间。

物理层的功能包括:

  • 物理无线和MAC层的接口
  • 无线电开/关控制
  • 调制与解调
  • 信道选择
  • 链接质量估算
  • 能量检测

MAC层

MAC帧格式:

Zigbee安全概述_第8张图片

在每个MAC帧的末尾,有两个字节的CRC用于验证数据包的完整性。在MAC标头中,有一个2个字节的“帧控制”字段。字段“帧控制”的0〜2位指示帧类型。有四种框架类型:

  • 信标,用于扫描网络
  • 数据,用于从更高层传输数据
  • ACK,确认
  • MAC命令,MAC层的控制命令,如MAC关联过程。

在《计算机网络》这门课中我们学过非常经典的CSMA/CD(也就是多点接入、载波监听、碰撞检测)来避免线缆传输信息时造成的碰撞,实际上这是定义在802.3的内容,它定义了MAC通过这种方式来避免冲突。但上面提到了“线缆”二字,也就是说这玩意是针对有线网络而言的,实际上它是通过电压变化检测来冲突,那么问题来了,我现在是无线网络,这上哪检测电缆电压去?所以这里我们换了一种想法,我们不再去检测它是不是冲突了,而是尽可能避免冲突,这也就是CSMA/CA(多点接入、载波监听、碰撞避免)。Zigbee的802.15.4和wifi的802.11都是在MAC层通过这种办法来避免冲突的。

MAC层还为节点提供了一种方法,该方法可通过确认得知节点已成功接收到1跳单播传输,并且已通过验证CRC保留了所传输消息的完整性。 多跳传输应在每个跳上进行确认。节点执行CCA检查并发送消息后,它会等待MAC确认。如果未收到消息,则该节点应尝试多次重发该消息,直到其最终成功或最大的重试次数已用尽。

我们需要关注的还有安全性的问题。上层会将MAC层的默认密钥设置为网络的密钥,而MAC层则会将上层的链接密钥设置为自己的链接密钥。此外,MAC层采用cbc-mac来进行加密。(关于各类密钥的说明见下文)。

同样,MAC也提供了MAC数据服务和管理服务,也有管理实体,叫做MLME。

以上是对802.15.4规定的层的简单说明,以下便是Zigbee建立的上层。

网络层(NWK)

网络层向上通过NLDE实体与应用层联系,通过NLME管理该层,主要包括了配置新设备,启动网络,执行加入网络,重新加入网络和离开网络的功能,提供寻址功能,邻居发现,路由发现,接收控制和路由等功能。安全性方面主要是AES-CCM*

Zigbee网络的一些基本概念,包括:

  • 设备类型
  • 网络地址
    • PAN ID
    • 扩展 PAN ID
  • 设备地址
    • 节点编号
    • Eui64

设备类型

IEEE-802.15.4定义了两种设备类型:

  • FFD, 全功能设备,能够执行IEEE 802.15.4标准中描述的所有职责,并且可以在网络中担任任何角色。
  • RFD, 剪裁功能设备,功能有限。

注意: RFD设备的处理能力和内存大小通常小于FFD设备。

在Zigbee中,存在三种设备类型:

  • 协调器
  • 路由设备
  • 终端设备,包括睡眠终端设备和非睡眠终端设备。

Zigbee安全概述_第9张图片

Zigbee安全概述_第10张图片

网络地址

Zigbee使用PAN ID和扩展的PAN ID来识别网络。

PAN ID

PAN,又称个人区域网络,通过其PAN ID与其他网络分开。这是同一PAN中所有节点将共享的16位标识符。因此,这与以太网世界中的子网掩码类似,因为您通常只与本地网络内的设备通信,在这种情况下为PAN。该标识符放置在每个传出数据包中的低层MAC层标头中,它使接收该数据包的设备可以过滤出与他们的网络无关的消息。 他们可以将其与自己的PAN ID进行比较,并确定这是来自自己网络中某人的消息,还是来自恰好在此信道上的其他网络中的某人的消息,因此无需尝试解码或解密。

Zigbee安全概述_第11张图片

PAN ID由协调器在网络创建时选择。因为PAN ID是一个网络与另一个网络之间的区别因素,所以它应该是随机的以确保其唯一性。建议您为PAN ID选择一个随机的16位值,以防止您的网络与该区域中碰巧存在的任何其他网络重合。

现在,如果您碰巧选择了另一个网络已经使用的PAN ID,该怎么办?或者,如果您确实选择了一个与任何其他网络都没有冲突的随机PAN ID,但后来又有另一个网络与您的网络重叠,该怎么办?如果曾经发生过PAN ID冲突,则协议栈实际上可以检测到这种冲突并可以自动更新其PAN ID,并通知其网络中的所有节点都移至新的PAN ID,以便每个节点可以继续与原始网络中的节点进行通信,并排除冲突网络上的任何节点。如果PAN ID冲突,我们需要使用扩展的PAN ID来区分网络。

扩展 PAN ID

扩展PAN ID是PAN中所有节点都知道的另一个网络标识符。

正常的短16位PAN ID由于简短,在空中传输的所有数据包中都有包含,但64位扩展PAN ID很少通过空中传输。扩展的PAN ID对于每个PAN也是唯一的,当16位PAN ID不足以始终将一个网络与另一个网络区分开时,它基本上用作备份标准。例如,当发生PAN ID冲突并且您要通知网络中的所有设备更新PAN ID时,将网络与冲突的网络区分开的方式是,网络中的这些设备都共享相同的扩展PAN ID。扩展PAN ID极不可能发生冲突,因为与短PAN ID中的16位相比,它具有64位。

Zigbee安全概述_第12张图片

扩展的PAN ID也由协调器在网络创建期间选择。仅在节点请求网络或进行PAN ID更新时,才通过无线发送以响应活动扫描。

这也是允许您选择网络的有用因素。如果您尝试加入一个网络而不是创建一个网络,那么您可能想知道如何判断哪些网络可用。网络之间可区分的方式不仅在PAN ID中,而且在扩展的PAN ID中。您可能想做一些特别的事情,决定只使用扩展PAN ID的特定子集,以便您可以将网络与其他网络区分开来,但不要太限制自己,因为您限制得越多您发生冲突的可能性就越大,并且如果您的扩展PAN ID曾经发生冲突,您实际上无能为力。它有点像WiFi SSID,不同之处在于WiFi网络之间的SSID可以相同,而Zigbee不同网络间的扩展PAN ID则不能相同。

节点地址

除了其网络范围的标准外,一个节点还通过其单独的节点地址与另一个节点区分开。

节点具有短地址和长地址。长地址是IEEE分配的MAC地址或EUI-64。它是一个全球唯一的64位地址,这意味着世界上没有两个基于IEEE的无线电设备具有相同的EUI-64。通常在制造时分配。芯片在出厂之前,它们会被分配,并且它们永远不会改变。它用来区分不同的无线设备。但是因为64位是相对比较大的数据量,所以这个长地址不是经常通过空中发送的。

Zigbee安全概述_第13张图片

在大多数情况下,更短的16位地址是通过无线方式使用的。这被称为节点ID,在网络中是唯一的,类似于以太网世界中的IP地址。它是在节点进入网络时分配的,并且在该网络内应该是唯一的。可能有两个网络,每个网络都有一个具有相同节点ID的节点,但是因为它们位于不同的PAN中,所以没有关系。

请注意,两个节点在进入网络时可能选择了相同的随机节点ID。如果发生这种情况,就像PAN ID方案一样,有一种解决冲突的方法。当节点注意到冲突时,基于EUI-64信息作为后备,它们可以商定新地址。因此,如果需要,节点可以根据冲突在运行时更改地址。

应用层(APL)

在应用层主要分为两部分,一是APS,也就是应用支持子层,二是一堆的object。

APS目的是为了提供NWK和APL之间的接口。和其他层一样,同样提供了两项服务,一是APSDE在应用实体之间提供数据传输服务,二是APS管理实体APMSE,主要是提供安全服务,设备绑定和组管理。APS层基于链接密钥或网络密钥的帧安全性。APS层负责安全的传输向外传出的帧和安全的接收传入的帧以及安全的建立和管理加密密钥所需的处理步骤。上层通过向APS层发布原语来控制加密密钥的管理。

一堆的object则又可以分为两部分,一部分是254个用户可以自己选用的应用object,他们通过绑定端号实现,实际上就和我们在计算机上常说的端口类似,应用间的通信也是基于端号实现的;另一部分是ZDO(Zigbee Device Object,Zigbee设备对象),ZDO负责初始化APS,NWK和安全服务提供商。它组装了来自末端应用程序的配置信息,来确定和实现设备和服务发现,安全管理(密钥加载,密钥建立,密钥传输和身份验证),网络管理(网络发现,离开/加入网络,重置网络连接和创建),绑定,节点和组管理,负责管理设备的安全策略和安全配置。

三、Zigbee安全策略

由于Zigbee是一种无线技术,因此安全性非常重要,因为黑客可以通过无线检测到这些数据包。想象您有一个智能门锁。如果黑客捕获了打开您的门的数据包,那么他可以重发该文件以打开您的门。那很危险。为了防止这种情况发生,Zigbee定义了许多安全功能。

网络层安全:

Zigbee安全概述_第14张图片

它显示了如何在网络层中保护不安全的网络帧。

首先,网络有效负载将被加密。之后,将在加密的有效负载之前添加安全标头。然后根据网络标头,安全标头和加密的有效负载来计算哈希值。最后,将32位哈希值附加到帧的末尾。如果更改了网络标头,安全标头和加密的有效负载中的任何字节,则哈希值将不同。我们将此值称为MIC,是消息完整性检查的缩写。

网络加密使用对称加密算法(AES128),这意味着使用相同的密钥进行加密和解密。该密钥称为Network Key。由于它是一种对称加密算法,因此同一Zigbee网络中的所有设备都将使用相同的Network Key。

在网络安全标头中,添加了“帧计数器”的字段和加密信息节点的源Eui64,以防止重发攻击。还添加了密钥序列号以支持Network Key更新。

逐跳安全

网络层安全性是逐跳安全性。

Zigbee安全概述_第15张图片

路由器节点需要解密该消息,然后对其进行加密,然后替换安全标头中的信息,再将其发送出去。如果解密失败,该消息将立即被丢弃。

这样的好处是可以尽快丢弃攻击消息。

Zigbee安全密钥

上面我们提到了链接密钥和网络密钥,但并没有具体解释到底是什么,这里我们就来详细说明一下。

  • 主密钥:构成两个设备之间长期安全性的基础,仅由APS使用。
  • 网络密钥,主要用在广播通信,每个节点都要有网络密钥才能与其他节点安全通信。可以是通过密钥传输(网络设备向信任中心发出请求,要求将密钥发送给它)获得,或者是预安装(制造商将密钥安装到设备本身,用户进行选择)获得,由NWK和ZigBee的APL应用该密钥
  • 链接密钥,主要用在单播通信,当节点与节点应用通信时,信任中心会生成一个链接密钥并通过网络密钥加密发送至节点,也被叫做唯一密钥;而节点在加入网络时信任中心会给它分配与信任中心通信的链接密钥,这叫做全局密钥。当然,也可以用过与安装的方式获得。链接密钥比起网络密钥多了一种获得方式——密钥构造。所谓构造就是通过主密钥和其他参数算出来一个链接密钥出来,这样就可以避免了服务之间可能存在的冲突和安全隐患(毕竟算出来,你是你,我是我,井水不犯河水)默认的全局信任中心链路密钥由ZigBee联盟定义。如果应用程序在加入时未指定其他链接密钥,则默认值为5A 69 67 42 65 65 41 6C 6C 69 61 6E 63 65 30 39

Zigbee安全模型

Network Key是一个16字节的八位位组。通常,它是在网络创建时由协调器随机生成的。当新设备加入网络时,它们必须获得Network Key的副本。

在Zigbee网络中,将Network Key分发给新设备的角色称为Trust Center。Zigbee支持两种不同的网络安全管理方式,即集中式安全网络和分布式安全网络,主要区别就是新设备的处理方式和信息的保护。

Zigbee安全概述_第16张图片

集中式安全模型,这种模型需要我们上面提到过的信任中心来负责安全事务。我们可以通过协调器来指定信任中心或默认使用协调器作为信任中心。当有一个新设备要加入网络时,首先在配置信息添加新设备的信息,然后为该设备建立唯一的信任中心链接密钥(也就是在MAC层我们提到过的链接密钥),以实现与信任中心的通信。

在集中式安全网络中,只有一个Trust Center,通常是协调器。所有新设备将从协调器获取Network Key。

建立的过程主要是根据安装码,安装码说白了就是一串通过16位循环冗余校验的128位随机数字,信任中心会通过Matyas-Meyer-Oseas(MMO)哈希函数从安装码派生唯一的128位信任中心链接密钥。

信任中心会维护一个网络密钥用来加密信息,并且定期或根据需要切换,来保证网络信息的安全性。

另外,在集中式模型中,可以使用基于证书的密钥建立协议(CBKE)来分发密钥。可以根据制造时存储在两个设备中并由证书颁发机构(CA)签名的证书与信任中心协商对称密钥。

我们提到的大多数技术也是在此模型上建立的。

Zigbee安全概述_第17张图片

在分布式安全网络中,每个路由器都是一个Trust Center。新设备可以从每个路由器获取Network Key。由于需要将Network Key从一个设备传输到另一台设备,因此在传输过程中需要对密钥值进行加密。此加密在应用程序层中完成。我们稍后再讨论。

分布式安全模型,最主要的就是信任中心被“分散”了,负责安全的成了路由器,路由器来注册接入网络的设备,链接密钥在加入网络时各设备预先配置,而网络密钥由路由器分发给接入的设备,并且同一网络使用同一密钥。

帧计数器

添加了帧计数器以防止重发攻击。让我们看看它是如何工作的。

Zigbee安全概述_第18张图片

首先,一个节点将记录接收到的帧的帧计数器和该节点的Eui64。来自同一节点的下一条消息的帧计数器必须大于记录的帧计数器。否则,该消息将被视为重发并将被丢弃。

为此,在发送方,每个节点将保存其传出帧计数器。在接收端,节点需要保存所有邻居的帧计数器。

由于帧计数器是一个32位值,因此如果设备长时间保持运行状态,它可能会自动溢出。
显然,如果帧计数器被覆盖,可能会出现问题。为防止这种情况发生,必须在溢出之前更新Network Key。如果更新了Network Key,帧计数器则可以再次从零开始。

APS层安全性:

应用中对传输Network Key的消息进行了加密。让我们看看应用程序层的安全性。

Zigbee安全概述_第19张图片

它与网络安全性非常相似。还使用对称加密算法(AES128)。该密钥称为Link key。在大多数情况下,只有传输Network Key消息需要在应用层被加密,并且这仅在Trust Center和新设备之间发生。因此,在这种情况下,我们也将其称为Trust Center Link key。

APS层安全性是端到端安全性,因为只有参与通信的两个对等方才知道Link key。

网络中的设备可以使用相同的Link key或不同的Link key。如果设备使用相同的Link key,则此密钥是Global Link key。

在分布式模型中,由于每个路由器都可能是Trust Center,因此将使用Global Link key。在集中式模型中,还使用了特殊的Global Link key,即已知的Link key。这是字符串“ ZigbeeAlliance09 ”。Zigbee 3.0之前的标准中使用了此功能,并保持了向后兼容性。

Trust Center Link key必须在设备上预先配置,以便它们可以加入并工作。如果他们使用已知的Link key,那将很容易。但是,如果他们需要使用其他Link key怎么办?

Zigbee定义了一种带外配置Link key的方法。这是Install Code。

Zigbee安全概述_第20张图片

Install Code

Zigbee安全概述_第21张图片

Install Code是16字节多项式+ 2字节CRC。

在设备出厂时,将在设备中编写Install Code。之后,在设备标签上还将记录设备的Install Code和Eui64。

当将要安装设备时,用户会从标签上获得Install Code和Eui64。然后在协调器上作相应配置,协调器从Install Code中获取Link key,并设置一个表以使用该特定设备的Link key。

之后,此Link key将用于在应用程序层中加密消息。

在设备方面,它从闪存读取Install Code,然后使用相同的算法得出Link key。此Link key应与协调器端的派生Link key相同。这样,即使消息已加密,他们也可以在应用程序层进行通信。

Zigbee安全措施

Zigbee采用了AES-CCM*的来保证数据的完整性、可靠性、安全性。

  • 发送端,将要发送的数据组织为128位的数据块,然后进行AES-CCM*的处理,得到的是加密的128位数据和一个生成的MIC(消息完整性代码,它是通过使用128位密钥加密IEEE MAC帧的部分而创建的)
  • 接收端将收到的数据去除掉MIC,然后进行AES-CCM*处理,得到解密的128位数据,并且有生成了一个MIC,检查这个MIC和接收的MIC是否一致即可判断数据是否完整、正确。

Zigbee安全概述_第22张图片

上文讲述了设备加入集中式安全模型的网络时信任中心会给予其一个链接密钥,Zigbee通过住宅模式和商业模式进行不同的处理

  • 住宅模式,新加入的设备有可能没有网络密钥,没有受保护的链路,但是还是要接收信任中心的链接密钥,这时候就是不安全的发送了;当然,如果有网络密钥的话,会等待信任中心的消息,通过这条特殊的消息确认信任中心的地址,然后在进行相应的设置。
  • 商业模式,信任中心通过不安全的方式向加入设备发送一个主密钥,然后双方通过密钥建立协议(SKKE),然后建立链接密钥。

Zigbee还在预防重放攻击(啥是重放攻击这里就不再展开了)上做了很多工作。Zigbee的每个节点维护了一个32位的帧计数器,数据包每次传递时它就会自增,同时它也会跟踪自己连接设备的帧计数器,当发过来数据包,上一个的帧计数器还是和自己相同或者甚至还比自己小,那就说明有问题了,于是就把这个包丢掉。

上文我们还说到了Zigbee会更新自己的网络密钥。当信任中心认为该更新网络密钥时,它先生成一个新的密钥,然后借助旧的密钥加密分发给其他节点,并将节点的帧计数器清0。注意,新网络密钥建立存在延时,节点仍旧会保持旧的密钥一段时间。

你可能感兴趣的:(5G,IoT与嵌入式系统安全,网络,物联网)