物联网安全101-6.ZigBee安全(翻译)

ZigBee 安全 101
该博客是“物联网安全”系列的一部分。如果您还没有阅读本系列之前的博客(第 1 部分到第 5 部分),我强烈建议您先阅读它们,除非您已经熟悉这些概念并且只想阅读当前主题。
物联网安全 - 第 1 部分(101 - 物联网介绍和架构)
物联网安全 – 第 5 部分(ZigBee 协议 - 101)
在本文中,我们将讨论 ZigBee 协议的安全架构以及 ZigBee 设备和网络中存在的安全问题。
ZigBee 安全架构(开放信任)
ZigBee 中的安全架构补充或增强了 IEEE 802.15.4 层的安全服务。它是一种基于某些假设的“开放信任”模型,如下所述:
- 在单个设备上运行的不同层和应用程序相互信任。
- 同一设备上不同堆栈层之间的通信不加密。
- 除非受到保护,否则设备不会有意或无意地将密钥传输到其他设备,例如在密钥传输期间。
- 两个设备之间的通信采用密码加密和安全保护。
- 随机数生成器按加密引擎的预期工作
- 硬件防篡改
ZigBee安全架构设计原则:
- 产生帧的层负责最初保护它。
- 只有具有活动网络密钥的设备才能与网络上的多跳通信。
- APS 层和 NWK 层都可以使用相同的活动网络密钥来保护帧。重用密钥有助于减少存储开销。
- 端到端消息安全,即只有源设备和目的设备才能解密共享密钥保护的消息,路由机制是出于信任考虑。
- 组成网络的设备负责网络中节点的基本安全级别、安全策略和身份验证。如果需要,应用层可以在两个设备之间提供额外的应用级安全性。
信任中心
信任中心是在 ZigBee 网络内其他设备信任的设备上运行的应用程序,用于分发网络密钥和潜在的端到端应用程序配置管理。每个网络只能存在一个信任中心,它可以是协调器或协调器指定的设备,所有成员节点都将此设备视为信任中心。信任中心负责 配置和维护网络安全策略 建立端到端的应用密钥。* 通过使用一些密钥建立协议来生成密钥
ZigBee 中的安全模式
分布式安全模式
网络中不需要分布式安全模式,唯一的信任中心,路由器负责终端设备认证。设备上预先配置了链接密钥,网络密钥在设备加入网络时由路由器发布。网络中所有节点的网络密钥保持不变;这使得分布式安全模式的安全性降低。集中安全模式
应用中使用的集中安全模式,一个信任中心控制,维护网络和设备的集中安全策略。在这种模式下,信任中心负责维护整个网络的安全和安全配置
- 验证设备并维护网络上的设备列表
- 维护网络中所有设备的链接密钥和网络密钥
ZigBee 安全密钥
ZigBee 标准定义了两种对称密钥,每种长度为 128 位,用于加密通信。
网络密钥
用于广播通信和任何网络层通信的 128 位网络密钥。每个节点都需要网络密钥才能与网络上的其他设备进行安全通信。网络上的设备通过网络上的密钥传递,即key-transport,获取网络密钥。只有一种类型的网络密钥;但是,它可以用于分布式或集中式安全模型。安全模型控制网络密钥的分发方式,并可控制网络帧计数器的初始化方式。安全模型不影响消息的保护方式。链接键
两个设备共享的 128 位唯一链接密钥,用于 APL 对等实体之间的单播通信。设备可以通过网络上的密钥传输服务或预安装获取链接密钥。信任中心链接密钥有两种不同类型:全局和唯一。本地设备使用的信任中心链接密钥的类型决定了设备如何处理各种信任中心消息(APS 命令),包括是否应用 APS 加密。每个节点还可能具有以下预配置的链接密钥,用于派生信任中心链接密钥。
号码 | 键名 | 描述 |
---|---|---|
1 | 集中安全全球信任中心链接密钥 | 用于加入集中式安全网络的链接密钥。集中式安全全球信任中心链接密钥的默认值是ZigBeeAlliance09,即(“5A 69 67 42 99 23 65 65 41 6C 6C 69 61 6E 63 65 30 39”),如果没有其他链接,设备会使用或支持密钥由应用程序在加入时指定 |
2 | 分布式安全全局链接密钥 | 用于加入分布式安全网络的链接密钥 |
3 | 安装代码链接密钥 | 从加入设备的安装代码派生的链接密钥,以创建用于加入的唯一信任中心链接密钥 |
4 | 应用链接键 | 两个设备之间使用的链接密钥用于应用层加密 |
5 | 设备特定的信任中心链接密钥 | 信任中心和网络中的设备之间使用的链接密钥。用于信任中心命令和应用层加密。 |
密钥管理
ZigBee 规范提到了三种不同的密钥管理机制
- 预安装 – 在带外设备上配置或安装密钥
- 密钥传输——信任中心通过网络向设备发送安全密钥。
- 密钥建立——信任中心和终端设备协商密钥,并且在没有实际通过网络发送任何密钥的情况下建立密钥。此密钥建立基于对称密钥建立 (SKKE) 协议。
ZigBee 协议安全
辅助安全头
如果 NWK 帧控制字段中的安全控制位设置为 1,ZigBee NWK 层和 APS 层可以使用 Auxiliary Security Header 进行安全通信。 Auxiliary Security Header 具有以下字段
字节:1 | 字节数:4 | 八位字节:0 或 8 | 八位字节:0 或 1 |
---|---|---|---|
安全控制 | 帧计数器 | 源地址 | 密钥序列号 |
下面是 ZigBee 数据包的示例快照,其中 NWK 帧控制中的安全字段设置为 true (1),安全标头设置了相应的安全控制字段,以及消息完整性代码 (MIC)

安全控制
8 位安全控制字段由安全级别、密钥标识符和扩展的 nonce 子字段组成,如下所示
少量 | 0 - 2 | 3 - 4 | 5 | 6 - 7 |
---|---|---|---|---|
描述 | 安全级别 | 密钥标识符 | 扩展随机数 | 预订的 |
- 安全级别
安全级别标识符指示如何保护传出帧,据称如何保护传入帧。它还指示有效载荷是否被加密以及提供的帧上的数据真实性的程度,如消息完整性代码 (MIC) 的长度所反映的。MIC 的位长可以取值 0、32、64 或 128,并确定 MIC 的随机猜测正确的概率。下面列出的安全级别的安全属性
安全级别标识符 | 安全属性 | 数据加密 | 帧完整性(MIC 的长度 M,以八位字节数表示) |
---|---|---|---|
0x00 | 没有任何 | 离开 | 否 (M=0) |
0x01 | MIC-32 | 离开 | 是 (M=4) |
0x02 | MIC-64 | 离开 | 是 (M=8) |
0x03 | MIC-128 | 离开 | 是 (M=16) |
0x04 | 启动 | 不 | (M=0) |
0x05 | ENC-MIC-32 | 在 | 是 (M=4) |
0x06 | ENC-MIC-64 | 在 | 是 (M=8) |
0x07 | ENC-MIC-128 | 在 | 是 (M=16) |
- 密钥标识符
密钥标识符子字段由两个比特组成,用于标识用于加密帧的密钥。
密钥标识符 | 描述 |
---|---|
0x00 | 一个数据键 |
0x01 | 网络密钥 |
0x02 | 钥匙传输钥匙 |
0x03 | 钥匙加载钥匙 |
- 扩展随机数
当设置为 1 时,扩展的 nonce 子字段指示发送方地址字段存在于辅助报头中。否则,它设置为 0。
帧计数器
计数器字段用于提供帧新鲜度并防止处理重复帧。
源地址
安全控制中的源地址字段是源设备的扩展 64 位地址,当安全控制字段的扩展 nonce 子字段设置为 1 时出现。
密钥序列号
辅助安全报头中的密钥序列号表示用于保护帧的网络密钥的密钥序列号。来自安全控制字段的密钥标识符子字段,当设置为 1(即网络密钥)时,指示存在于辅助安全报头中的密钥序列号。
ZigBee 漏洞
设备之间的安全性取决于安全密钥的安全初始化和安装
ZigBee 网络中的漏洞分为两类:协议漏洞和产品开发过程中协议执行不力。下面是一些常见的漏洞:
实施漏洞
安全密钥存储不安全
ZigBee 协议要求所有安全密钥(网络、链接)长期存储在设备上。如果密钥没有安全存储,密钥可以通过对固件二进制文件进行逆向工程来识别密钥的位置。
无线不安全的密钥传输
在一些实现中,当节点第一次加入 ZigBee 网络时,节点通过空中获取其密钥,主要是从协调器以明文格式。因此,嗅探器设备网络狙击手或粗糙设备可以从协调器获取密钥,并可以危及整个网络。
能量耗尽攻击
以下是两种非常常见的能量消耗攻击
无效的安全标头
在此类攻击中,攻击者在帧中发送带有无效安全标头的突发数据包,目的是使设备必须花费一些能量来验证帧完整性,从而导致目标设备更快地耗尽电池电量。投票率
在此类攻击中,攻击者将数据包发送到终端设备的速度比网络配置的轮询速率更快,从而导致目标设备更快耗尽电池电量。
协议漏洞
网络干扰漏洞
IEEE802.15.4/ZigBee 标准针对无线电和网络干扰提供了一定的保护机制,但是攻击者可以利用某些技术来干扰网络
以下是 ZigBee 网络中可能存在的两种类型的干扰攻击:
无线电干扰
在此类攻击中,攻击者会增加给定信道的无线电信号发射,导致无线电信道的信噪比降低。链路层干扰
在此类攻击中,攻击者通过以随机间隔或针对特定节点的特定间隔在网络上传输带有无用数据的随机 ZigBee 帧突发来瞄准 MAC 层,从而导致网络中的丢包和 DoS 攻击。
链接密钥漏洞
ZigBee 标准具有开放信任的安全模型,低于标准的漏洞会导致链接密钥相关攻击
默认链接键
ZigBee 标准为链接密钥提供了默认值,以确保不同制造商的 ZigBee 设备之间的互操作性;因此,攻击者可以使用流氓设备以默认网络密钥加入网络。未加密的链接密钥
当没有预配置密钥的设备尝试加入网络时,在这种情况下,信任中心会向设备发送一个未加密的单个密钥(默认链接密钥),攻击者可以通过嗅探导致 ZigBee 网络受损的网络通信来获取。重用链接键
ZigBee 标准允许重新使用链接密钥重新加入网络;在这种情况下,攻击者可以克隆合法设备并伪装成之前连接的设备并希望重新加入网络来欺骗信任中心的网络层。因此,信任中心然后发送使用先前使用的链接密钥加密的密钥。
未经身份验证的 ACK 帧漏洞
确认帧是 IEEE 802.15.4/ZigBee 标准中网络层的一部分,但仅限于网络层帧传输的确认,不为确认包提供帧完整性和机密性保护。以下是 ZigBee 网络中一些常见的 ACK 攻击。两者都需要链路层干扰。
ACK欺骗
在此类攻击中,攻击者对网络进行干扰,使合法设备收不到帧,然后攻击者向发送方发送带有正确序列号的ACK帧,从而导致网络中的数据丢失。确认丢弃
在此类攻击中,攻击者对网络进行干扰,使得只有从接收方到发送方的 ACK 帧被阻塞,迫使发送方重新传输数据,直到达到最大重传次数,从而耗尽网络带宽和设备电池电量。重放保护漏洞
IEEE 802.15.4 具有重放保护机制。它提到如果帧序列号等于或小于从同一源节点接收到的前一帧的序列号,则节点可以丢弃接收到的帧。在此类攻击中,攻击者可以向目标节点发送序列号较大的帧,迫使目标节点丢弃序列号较小的帧。
结论
我们希望这篇博客能让您简要了解 ZigBee 协议的安全架构。本博客中涵盖的漏洞要么是由于缺乏安全的设计和实现,要么是由于 ZigBee 协议的固有漏洞。
继续下一部分 -物联网安全 - 第 7 部分(逆向工程物联网固件)