1. 摘要

ZigBee被认为是一种安全的通信协议。它的安全体系结构是对IEEE 802.15.4标准提供的安全服务的补充。ZigBee提供的安全服务范围包括:安全**建立、安全**传输、通过对称加密的帧保护以及安全设备管理。

但是,其安全功能基于某些固有假设:

  • ZigBee采用“开放信任”模型;也就是说,协议栈层相互信任,并且发起帧的层负责最初对其进行保护。
  • 安全服务仅以密码方式保护不同设备之间的接口。
  • 同一设备上不同堆栈层之间的接口以非加密方式排列。
  • **传输过程中不会无意间泄露出秘***。(例外是在新设备的预配置加入期间,其中单个**可能不受保护地发送。)
  • 随机数生成器的高可用性
  • 防篡改硬件的高可用性。

本文探讨了ZigBee标准提供的安全模型,用于安全通信的各种**,ZigBee建议的**管理方法以及其他固有的安全机制,例如身份验证,重播保护等。

2. Zigbee 协议

Zigbee网络结构图如下:
Zigbee安全漏洞分析

  • Coordinator:ZigBee协调器是负责建立,执行和管理整个ZigBee网络的设备。它负责配置网络的安全级别并配置信任中心的地址(此地址的默认值是ZigBee协调器自己的地址,否则ZigBee协调器可以指定备用信任中心)。ZigBee协调器还维护当前关联设备的列表,并促进对孤立扫描和重新加入处理的支持,以使先前关联的设备能够重新加入网络。每个网络只有一个协调器,因此,它永远无法进入睡眠状态(网络中可能没有协调器)。协调器还可以根据需要兼作路由器
  • Router:ZigBee路由器是一个中间节点设备,负责在终端设备之间或终端设备与协调器之间路由数据包。如果在网络上启用了安全性,则路由器需要信任中心的许可才能加入网络,并且还可以兼作终端设备。在某些情况下,路由器可以允许其他路由器和终端设备加入网络,并将维护当前关联设备的列表,并促进对孤立扫描和重新加入处理的支持,以使先前关联的设备能够重新加入网络。由于路由器链接网络的多个部分,因此它们无法进入睡眠状态。
  • End Device:ZigBee终端设备通常是监视和收集环境数据的传感器节点设备。与路由器或协调器不同,终端设备是低功率或电池供电的。因此,如果没有要监视的活动,只要路由器或协调器不加倍作为终端设备,它们就可以休眠一定时间以节省能量。终端设备通常不会路由流量或允许其他节点加入网络,只要路由器或协调器不加倍作为终端设备。

3. Zigbee安全模型

ZigBee支持两种类型的安全模型,如下图所示,主要区别在于它们如何允许新设备进入网络以及如何保护网络上的消息。
Zigbee安全漏洞分析
集中式安全模型:复杂但最安全的模型,涉及第三个逻辑设备;信任中心(网络协调者,例如智能家居网关)。信任中心负责:

  • 配置和验证加入网络的路由器和终端设备
  • 生成用于通过网络进行加密通信的网络**
  • 定期或根据需要切换到新的网络**。因此,如果攻击者获取了网络**,则该**在到期之前将具有有限的生存期
  • 当每个设备加入网络以与信任中心安全通信时,为每个设备建立唯一的信任中心链接**
  • 维护网络的整体安全性

分布式安全模型:简单,但是安全性较低。该模型仅支持路由器和终端设备。路由器形成分布式网络,并负责注册其他路由器和终端设备。路由器向新加入的路由器和终端设备发布网络**(用于加密消息)。网络中的所有节点都使用相同的网络**来加密消息。同样,所有节点在注册入网络之前都已预先配置了一个链接**(用于加密网络**)。

4. 安全**

4.1 **类型

ZigBee标准中使用三种类型的**(每种**长度为128位)。

网络**:用于广播通信,由NWK和ZigBee的APL应用。每个节点都需要网络**,以便与网络上的其他设备进行安全通信。信任中心将生成网络**,并将其分发给网络上的所有设备。网络上的设备通过**传输(用于保护传输的网络**)或预安装来获取网络**。有两种不同类型的网络**:标准(公开发送网络**)和高安全性(网络**已加密)。网络**的类型决定了网络**的分发方式。并可以控制如何初始化网络帧计数器。但是,其类型不影响消息的保护方式。

链接**:用于单播通信,并由ZigBee堆栈的APS应用。设备通过**传输(**加载**用于保护传输的链路**),**建立(基于“主”**和其他网络参数)或预安装(例如,在安装过程中)获取链路**。出厂安装)。通常,与信任中心相关的链接**是使用带外方法预先配置的,例如包装中的QR码,而节点之间的链接**由信任中心生成并在使用之前使用网络**加密发送到节点。

ZigBee定义了两种类型的链接**:全局和唯一(可以依次为两种类型:第一种是信任中心链接**;其中**在信任中心和设备之间建立,第二种是在两个设备之间建立的应用程序链接**在信任中心以外的网络中)。链接**的类型确定设备如何处理各种信任中心消息(APS命令),包括是否应用APS加密。

此外,每个节点还可以具有以下预配置的链接**,这些链接**将用于导出信任中心链接**(通过基于证书的**建立协议(如果启用了SE安全性),APS请求**方法来进行导出 ,Touchlink调试或通过使用Matyas-Meyer-Oseas哈希函数):

  • 一个默认的全局信任中心链路**由ZigBee联盟定义。它的默认值为5A 69 67 42 65 65 41 6C 6C 69 61 6E 63 65 30 39(ZigBeeAlliance09),并且如果在连接时应用程序未指定其他链接**,则设备会使用或支持该默认值。
  • 一个分布式安全的全球链路**,用于从同一厂商的设备之间交互的制造者特有的**。
  • 安装代码是预配置的链接**。所有ZigBee设备都可以包含唯一的安装代码,即由16位循环冗余校验(CRC)保护的随机128位数字。信任中心可能要求每个新设备使用唯一的安装代码来加入集中式安全网络,并且安装代码必须与先前带外输入到信任中心的代码(即QR码)匹配。验证安装代码后,加入设备和信任中心将使用Matyas-Meyer-Oseas(MMO)哈希函数从安装代码中获得唯一的128位信任中心链接**。
  • Touchlink预配置的链接ley。

主**:构成两个设备之间长期安全性的基础,并且仅由APS使用。它的功能是对对称****建立协议(SKKE)中两个节点之间的链接**交换保密。设备通过**传输(**加载**用于保护传输的主**),预安装或用户输入的数据(例如PIN或密码)获取主**。

4.2 **管理

ZigBee的一个特点是,如上所述,它具有多种关键管理机制:

预安装:制造商将**安装到设备本身中。用户可以使用设备中的一系列跳线(在预安装了多个**的设备中)选择一个已安装的**。

**建立:这是基于主**生成链接**的本地方法。ZigBee网络的不同安全服务使用从单向功能派生的**(以链接**作为输入),以避免由于服务之间不必要的交互作用而导致的安全泄漏。使用不相关的**可确保对不同安全协议的执行进行逻辑隔离。该**建立是基于 SKKE(对称****建立) 协议的。通信所涉及的设备必须拥有主**,该主**可能是通过预安装或**传输或用户输入获得的。

**传输:网络设备向信任中心发出请求,要求将**发送给它。此方法适用于在商业模式下请求三种**中的任何一种,而在住宅模式下,信任中心仅保留网络**。信任中心使用**装入**来保护主**的传输。

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

5. ZigBee Stack安全措施

Zigbee安全漏洞分析
IEEE 802.15.4 提供了抵抗来自其他网络的干扰的鲁棒性,并将具有 128位**长度(16字节)的AES (高级加密标准)用于:

  • 数据安全性 –通过加密数据有效负载和
  • 数据完整性 –使用 消息完整性代码(MIC)或消息认证代码(MAC) 附加到要发送的消息中来实现。此代码确保MAC报头和附加的有效载荷数据的完整性。它是通过使用128位**对IEEE MAC帧的一部分进行加密来创建的)

在IEEE 802.15.4 MAC帧中,仅当打开了“帧控制字段”的“已启用安全性”子字段时,才启用“辅助安全标头”。这个特殊的标头包含3个字段:

  • 安全控制指定网络提供的保护类型。这是设置全局安全策略的地方。安全级别的选择确定**的长度以及要加密的内容。即,每个安全级别提供一定程度的帧加密和完整性检查。ZigBee定义了可供NWK和APS层使用的8种不同的安全级别,如下图所示。
    Zigbee安全漏洞分析
  • 帧计数器是由当前帧的源给定的计数器,以防止消息受到重播保护。
  • **标识符指定了解节点用于通信的**类型所需的信息。

尽管IEEE 802.15.4提供了安全措施,但是它没有指定必须如何管理**或要应用的身份验证策略的类型。这些问题由ZigBee管理。ZigBee标准支持以下可选的安全服务:

  • 加密/解密 :ZigBee帧可以选择使用安全套件AES-CCM *保护,以提供数据保密性,数据身份验证和数据完整性。AES-CCM *是经过修改的CCM模式(带有CBC-MAC的计数器)的AES(高级加密标准)的一个较小变体。
  • 重放保护:ZigBee网络中的每个节点都包含一个32位帧计数器,该计数器在每次数据包传输时都会增加。每个节点还跟踪其连接到的每个设备(节点)的前一个32位帧计数器。如果节点从邻居节点接收到的帧计数器值与先前接收到的帧计数器值相同或更小的数据包,则该数据包将被丢弃。此机制通过跟踪数据包并将其丢弃(如果节点已接收到它们)来启用重播保护。帧计数器的最大值可以为0XFFFFFFFF,但是如果达到最大值,则无法进行传输。帧计数器唯一重置为0的时间是在更新网络**时。
  • 设备认证:ZigBee标准支持设备认证和数据认证。设备身份验证是确认加入网络的新设备为真实设备的行为。新设备必须能够在给定时间内接收网络**并设置适当的属性,才能视为已通过身份验证。设备身份验证由信任中心执行。在住宅和商业模式下,身份验证过程有所不同。
  • 安全的空中(OTA)固件升级:OTA更新允许制造商添加新功能,修复其产品中的缺陷以及在发现新威胁时应用安全补丁。但是,如果协议未提供足够的保护,或者设备制造商未使用所有可用的防护措施,则OTA更新也可能构成潜在的安全漏洞。ZigBee设备和关联的硅平台提供了多层安全性,可以在现场更新设备并确保未恶意修改更新的代码映像。
  • 基于逻辑链接的加密:另一个关键安全工具是能够在网络中的一对设备之间创建应用程序级安全链接。通过在一对设备之间建立一组唯一的AES-128加***来进行管理。这允许在网络中的任何两个设备之间建立逻辑,安全的链接,从而支持网络中的一对设备与许多其他设备之间的“虚拟专用链接”。此措施限制了攻击者通过拦截或注入其他设备将要执行的消息来获取网络**的能力。
  • 运行时**更新:定期或在需要时,信任中心会主动更改网络**。信任中心会生成一个新的网络**,并使用旧的网络**对其进行加密,从而将其分布在整个网络中。在更新后,所有设备将在短时间内继续保留旧的网络**,直到网络上的每个设备都已切换到新的网络**。此外,设备在收到新的网络**后会将其帧计数器初始化为零。
  • 网络干扰保护:在低成本ZigBee节点中,由于成本或节点大小的限制,可能无法选择使用带选择滤波器来保护网络免受干扰。但是,IEEE 802.15.4和ZigBee网络的基本属性(例如低RF传输功率,低占空比和CSMA / CA信道访问机制)有助于减少ZigBee无线网络的存在对附近其他系统的影响,反之亦然。反之亦然。有两种方法可以提高ZigBee网络的共存性能:协作和非协作。

6. Zigbee 安全漏洞

**分发嗅探攻击

**分发攻击主要是在新节点入网向信任中心请求**时对**进行窃听,有多种工具都可以用于窃听,例如Killerbee、Ubiqua、Packet Sniffer等。当**采用协调器分发而不是预置在设备中时,分发**很可能被嗅探窃取,攻击者可以利用获取的**对通信解密。

  • 被动式**嗅探是藉由ZigBee设备加入安全网络的流程,会有传输**的过程,因此攻击者可以监听ZigBee网络的流量,并等待新设备加入网络,借此嗅探到传输**的封包。
  • 主动式**嗅探是针对信任中心重新加入(Trust Center Rejoin)的资安弱点来取得**,信任中心重新加入是当设备可能没有目前使用的网路**时(例如:网络**更新时,设备没有收到。),因此需要在没有网络层安全性的情况下发送rejoin指令,而且允许设备能够取得目前的网络**。根据上述的流程,攻击者可能藉由信任中心重新加入的资安弱点,轻易的伪造此流程主动的获取传输**的封包。

从设备中获取**

如果采用的是**预置的方式或者**派生的方式部署**,那么预置的网络**或者主**需要与固件一起存储在设备的ROM中,而这些**是网络中的所有设备共享的,如果能够读出设备的固件就可以设法找到**。

篡改攻击

修改Frame Counter大于当前最新的数据包的Frame Counter,篡改数据后使用链接**重新加密,发送出去。

拒绝服务攻击

EPID冲突、媒体存取控制位址冲突、最大Frame Counter、不安全的Leave

常用攻击工具: KillerBee,是攻击ZigBee和IEEE
802.15.4网络的框架和工具。使用killerBee工具和一个兼容的IEEE 802.15.4无线接口,你就能窃取zigbee网络流量,重放流量,攻击密码系统等等。使用KillerBee框架,你能构建你自己的工具,定义zigbee
fuzzing,模仿和攻击终端设备,路由器设备和协调器设备等等。可以在GitHub下载使用Killerbee

7. 总结

尽管ZigBee在设计时就考虑到安全性,但仍需要做出权衡以保持设备的低成本,低能耗和高度兼容性。它允许在同一设备上不同层之间重复使用相同的**材料,并允许在设备到设备的基础上而不是在成对的特定层(甚至是成对的应用程序)之间实现端到端的安全性)在两个通讯设备上。此外,为了实现设备的互操作性,ZigBee对给定网络上的所有设备以及设备的所有层使用相同的安全级别。但是,这些措施不可避免地会导致安全风险。因此,开发人员有责任解决这些问题,并包括检测和处理错误,丢失**同步,定期更新**等的策略。

相关文章: