原文地址: https://www.4hou.com/wireless/14211.html

导语:ZigBee是一种开源无线技术,用于低功耗嵌入式设备(无线电系统)。本文探讨了ZigBee协议的可用网络拓扑,堆栈布局以及ZigBee网络的核心逻辑设备。了解ZigBee协议的一般组件对于执行ZigBee安全分析和测试的重要性。

介绍

ZigBee是一种开源无线技术,用于低功耗嵌入式设备(无线电系统),用以促进机器与机器之间高效且有效的通信(通常相距10-100米),同时保持一个较低的成本。ZigBee建立在IEEE 802.15.4标准之上,并得到ZigBee联盟(一个旨在标准化ZigBee协议的公司联盟)的支持。ZigBee联盟有三种网络规范:ZigBee Pro,ZigBee RF4CE和ZigBee IP。ZigBee联盟还发布了ZigBee Home Automation,ZigBee Smart Energy等应用程序配置文件,允许不同的设备类进行相互操作。

本文探讨了ZigBee协议的可用网络拓扑,堆栈布局以及ZigBee网络的核心逻辑设备。了解ZigBee协议的一般组件对于执行ZigBee安全分析和测试的重要性。

协议栈概述

ZigBee协议栈由四层组成:

  • 物理层
  • 媒体访问控制(MAC)层
  • 网络层(NWK)
  • 应用层(APL)

如下面的图1所示。每个层通过服务访问点提供一组暴露给上层的服务。物理层和MAC层由IEEE 802.15.4标准管理,网络和应用层由ZigBee标准管理。

应用层(APL)

它由ZigBee设备对象(ZDO),应用程序支持子层(APS)和应用程序框架组成。

  • ZigBee设备对象(ZDO)是一个应用程序,它使用网络和应用程序支持层原语来实现ZigBee终端设备,ZigBee路由器和ZigBee协调器。它提供了应用程序对象,设备配置文件和APS之间的接口。ZDO负责初始化APS,NWK和安全服务提供商。它组装了来自末端应用程序的配置信息,来确定和实现设备和服务发现,安全管理(密钥加载,密钥建立,密钥传输和身份验证),网络管理(网络发现,离开/加入网络,重置网络连接和创建),绑定,节点和组管理。ZigBee设备对象(ZDO)管理设备的安全策略和安全配置。

  • APS提供NWK和APL之间的接口。它为建立和维护安全关系提供服务。通过APS数据实体(APSDE:在应用实体之间提供数据传输服务)和APS管理实体(APMSE:提供安全服务,设备绑定和组管理)提供服务。APS层基于链接密钥或网络密钥的帧安全性。APS层负责安全的传输向外传出的帧和安全的接收传入的帧以及安全的建立和管理加密密钥所需的处理步骤。上层通过向APS层发布原语来控制加密密钥的管理。

  • 应用程序框架是托管应用程序对象的环境(最多可以定义254个)。这些通常是制造商定义的应用对象。它定义了应用程序配置文件(消息协议,消息格式和处理操作,使开发人员能够使用驻留在不同设备上的应用程序实体创建可互操作的分布式应用程序)和集群。

网络层(NWK)

网络层确保了IEEE 802.15.4-2003 MAC子层的正确操作,并为应用层提供合适的服务接口。它通过数据实体与应用层连接(NLDE:生成网络级PDU,提供拓扑专用的路由和安全性)和管理实体(NLME:配置新设备,启动网络,执行加入网络,重新加入网络和离开网络的功能,提供寻址功能,邻居发现,路由发现,接收控制和路由)。NWK层负责安全的传输传出帧和安全的接收传入帧所需的处理步骤。NWK层的帧保护机制使用高级加密标准(AES)和CCM *(具有CBC-MAC操作模式的增强计数器)进行身份验证和机密性。

MAC层

MAC层的职责包括通过CSMA-CA机制控制对无线电信道的访问,发送信标帧,同步以及提供可靠的传输机制。有四种类型的MAC帧:数据帧,信标帧,确认帧和MAC命令帧。该层的安全性基于使用CCM *增强的IEEE 802.15.4标准,仅提供加密和完整性功能。CCM是具有CBC-MAC模式操作加密方案的增强计数器。上层将MAC层默认密钥设置为活动网络密钥的MAC层,将MAC层链路密钥设置为来自上层的任何链路密钥。

物理层

它工作在两个独立的频率范围:868/915 MHz和2.4 GHz。物理层负责数据包生成,数据包接收,数据透明度和电源管理。

ZigBee功能描述符

ZigBee设备对象定义了三种类型的逻辑设备,每种设备都具有如下图所示的特定角色:

  • ZigBee协调器:是负责建立,执行和管理整个ZigBee网络的设备。它负责配置网络的安全级别和配置信任中心的地址(该地址的默认值是ZigBee协调器自己的地址,否则,ZigBee协调器可以指定备用的信任中心)。ZigBee协调器还维护当前关联设备的列表,并促进对孤立扫描和重新加入处理的支持,能够使先前关联的设备能够重新加入网络。每个网络只有一个协调器,因此它永远不会被置于休眠状态(网络中可能没有协调器)。协调器还可以根据需要当做路由器使用。

  • 注意:ZigBee信任中心是在ZigBee网络中的其他信任的设备上运行的应用程序,用于分发网络和端到端应用程序配置管理的密钥。信任中心可以是协调器设备或由Zigbee网络协调员指定为信任中心的设备。

  • 网络的所有成员都只识别一个信任中心,每个安全网络中只有一个信任中心。它配置为在标准或高安全性模式下运行,可用于通过直接发送链接密钥(即密钥托管功能)或发送主密钥来帮助建立端到端应用程序密钥。这些密钥是随机生成的。

  • 标准模式:专为住宅应用而设计。在此模式下,信任中心维护网络中所有设备的列表,主密钥,链接密钥和网络密钥; 但是,它维护着一个标准的网络密钥并控制着网络准入的策略。在此模式下,每个安全的加入网络的设备都应具有全局链接密钥或唯一链接密钥,具体取决于所使用的应用程序。有必要要求信任中心事先知道链路密钥的值和类型(全局或唯一),这有便于将设备安全的加入网络。

  • 全局链接密钥的优点是,信任中心所需的内存不会随着网络中的设备数量而增长。

  • 唯一链接密钥具有对于网络上的每个设备均唯一的优点,并且可以从网络上的其他设备保护应用程序通信。

  • 两种类型的密钥都可以在网络上使用,但设备在使用设备密钥对时只能使用一种类型

  • 高安全性模式:专为高安全性商业应用而设计。在此模式下,信任中心维护一个设备列表,主密钥,链接密钥和网络密钥,用于控制和实施网络密钥更新和网络准入的策略。它还要求使用SKKE和实体身份验证来实现密钥建立。

  • ZigBee路由器:这是一个中间节点设备,负责在终端设备之间或终端设备与协调器之间路由数据包。如果网络上启用了安全性,则路由器需要信任中心的许可才能加入网络,并且还可以作为终端设备使用。在某些情况下,路由器可以允许其他路由器和终端设备加入网络,并会维护当前关联设备的列表,并促进对孤立扫描和重新加入处理的支持,使先前关联的设备能够重新加入网络。由于路由器链接了网络的多个部分,因此它们无法进入休眠状态。

  • ZigBee终端设备:通常是一个监控和收集环境数据的传感器节点设备。与路由器或协调器不同,终端设备是低功率或电池操作的。因此,如果路由器或协调器没有作为终端设备使用,则当没有要监视的活动时,它们可以被短暂的置于休眠状态以节省电量。如果路由器或协调器没有作为终端设备使用,则终端设备既不能路由流量,也不允许其他节点加入网络。

网络拓扑

ZigBee支持三种类型的个人局域网(PAN)拓扑结构,拓扑结构的选择必须考虑哪些节点是线路供电或电池供电、预期电池寿命、所需网络流量、延迟要求、解决方案成本等。Zigbee拓扑包括:

  • 星形拓扑:在此拓扑中(下图3),没有路由器,协调器负责在网络中路由数据包,启动和维护网络上的设备。终端设备只能通过协调器进行通信。

缺点:单点故障。协调器失败可以导致整个网络关闭。星形中心可能会成为网络带宽的瓶颈。

  • 树状拓扑:在此拓扑中(下图4),协调器充当负责建立网络和选择某些关键网络参数的根节点。路由器可以是协调器或其他路由器的子节点,并且负责使用分层路由策略通过网络移动数据并控制消息。终端设备可以是协调器或路由器的子设备,并且可以仅通过路由器或协调器与另一终端设备通信。树状拓扑网络可以根据IEEE 802.15.4标准采用面向信标的通信。

缺点:如果父节点关闭,则子节点将无法访问。

  • 网格拓扑:也称为自我修复拓扑(下图5),支持完整的点对点通信。它有一个协调器、多个用于扩展网络的路由器和可选的终端设备。协调器负责建立网络并选择某些关键网络参数。在此拓扑中,路由器可以作为终端设备使用,但不能发出信标。由于它是自我修复的,所以协调器的故障不会导致单点故障,并且最不容易发生链路故障。

缺点:复杂且难以设置,尤其是节点上的开销。

注意:ZigBee标准不支持像802.15.4标准那样的集群树拓扑。

结论

多年来,ZigBee协议的普及实现了跨越式发展。与此同时,对支持ZigBee的设备的安全攻击也在逐步增加。它在个人家庭和医院护理、商业建筑自动化等方面的应用,非常需要评估ZigBee协议的安全性,其中对起搏器等关键设备的攻击可能会危及生命。本文概述了ZigBee协议及其网络组件,这些知识是理解ZigBee安全性和渗透测试的先决条件。有关网络设置和其他相关功能的更多信息,请参阅Zigbee规范文档。下一篇文章,ZigBee 安全:基础篇(第2部分)探讨了ZigBee标准提供的安全功能。

参考

[1] ZigBee规范文件053474r20。由ZigBee联盟提供。

[2]图2:https://mmbnetworks.atlassian.net/wiki/spaces/SKB/pages/39518242/Zigbee+Network+Concepts

[3]图3:http://vlssit.iitkgp.ernet.in/ant/ant/10/theory/

[4]图4:http://www.informit.com/articles/article.aspx?p=1409785&seqNum = 4

[5]图5:https://www.certsi.es/en/blog/security-zigbee-communications

本文翻译自:https://research.kudelskisecurity.com/2017/11/01/zigbee-security-basics-part-1

Zigbee安全基础篇Part.1的更多相关文章

  1. Zigbee安全基础篇Part.3

    原文地址: https://www.4hou.com/wireless/14294.html 导语:在之前的文章中提供了ZigBee协议及其安全功能的简要概述.在本文中,我们将探讨可在ZigBee网络 ...

  2. Zigbee安全基础篇Part.2

    原文地址: https://www.4hou.com/wireless/14252.html 导语:本文将会探讨ZigBee标准提供的安全模型,用于安全通信的各种密钥.ZigBee建议的密钥管理方法以 ...

  3. C#多线程之基础篇3

    在上一篇C#多线程之基础篇2中,我们主要讲述了确定线程的状态.线程优先级.前台线程和后台线程以及向线程传递参数的知识,在这一篇中我们将讲述如何使用C#的lock关键字锁定线程.使用Monitor锁定线 ...

  4. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

  5. 2000条你应知的WPF小姿势 基础篇<15-21>

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师,对C#和WPF有着极深的热情.最为出色的是他维护了两个博客:2,000Things You Should Know ...

  6. ABP框架实践基础篇之开发UI层

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 说明 其实最开始写的,就是这个ABP框架实践基础篇.在写这篇博客之前,又回头复习了一下ABP框架的理论,如果你还没学习,请查看AB ...

  7. C#多线程之基础篇2

    在上一篇C#多线程之基础篇1中,我们主要讲述了如何创建线程.中止线程.线程等待以及终止线程的相关知识,在本篇中我们继续讲述有关线程的一些知识. 五.确定线程的状态 在这一节中,我们将讲述如何查看一个线 ...

  8. C#多线程之基础篇1

    在多线程这一系列文章中,我们将讲述C#语言中多线程的相关知识,在多线程(基础篇)中我们将学习以下知识点: 创建线程 中止线程 线程等待 终止线程 确定线程的状态 线程优先级 前台线程和后台线程 向线程 ...

  9. iOS系列 基础篇 03 探究应用生命周期

    iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...

随机推荐

  1. Hbase系统架构简述

    由于最近要开始深入的学习一下hbase,所以,先大概了解了hbase的基本架构,在此简单的记录一下. Hbase的逻辑视图 Hbase的物理存储 HRegion Table中所有行都按照row key ...

  2. day04-decorator

    # Author: 刘佳赐-Isabelle # Email: jiaci.liu@gmail.com ''' 练习题: 1.整理装饰器的形成过程,背诵装饰器的固定格式 2.编写装饰器,在每次执行被装 ...

  3. PTA基础编程题目集7-4 BCD解密

    BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位.所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12.但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了 ...

  4. Lingo解决最优化问题

    目录 Lingo解决优化问题 前言 一.优化模型介绍 二.运输问题 2.1 问题描述 2.2 问题分析 2.2 优化模型构建 2.3 模型求解 2.4 求解结果 三.待更新 Lingo解决优化问题 @ ...

  5. Java设计模式(20)——行为模式之命令模式(Command)

    一.概述 概念 类似C中的callback! UML简图 角色 客户端:创建具体命令,指定接收者 命令接口:声明命令的接口 具体命令:定义接收者和行为之间的弱耦合(execute执行方法) 请求者(I ...

  6. ARP级ping命令:arping

    一.工作原理 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议,是网络链路层的协议,在局域网中使用.主机发送信息时将包 ...

  7. Android APP架构设计——MVP的使用示例

    0. 前言 为了更好地进行移动端架构设计,我们最常用的就是MVC.MVP和MVVM,作为三个最耳熟能详的三大架构,应用可谓非常广泛.对于这三种架构设计以及优缺点已经在Android APP架构设计-- ...

  8. 3680: 吊打XXX

    3680: 吊打XXX 链接 思路: 模拟退火. 代码: 跑的特别慢... #include<cstdio> #include<algorithm> #include<c ...

  9. Linux命令非常全

    最近都在和Linux打交道,感觉还不错.这也是很多人喜欢linux的原因,比较短小但却功能强大.我将我了解到的命令列举一下,仅供大家参考: 系统信息 arch 显示机器的处理器架构(1) uname ...

  10. ruby 基础教程1-8-1

    1.":class, instance_of?, :is_a?"都是Object类的方法,每个对象都可以调用 2.":class"方法用户获取对象归属类的名称 ...