ZigBee协议有如下特性:

  • 支持多种网络拓扑,比如点对点,点对多点,自组网;
  • 低工作占空比能力,提供长电池供电的可能;
  • 低延迟;
  • 采用DSSS扩频技术;
  • 每个网络最高可支持65,000节点
  • 128-bit AES 加密
  • 碰撞避免,重试和应答确认

ZigBee 3.0软件栈集成了一个“基础设备”,它为配置节点加入到网络提供一致的行为。它提供了一套通用的配置方法,包括Touchlink,一种通过邻近节点的配置入网的方法。

ZigBee 3.0增强了网络的安全特性,有两种安全的方法来生成网络: 集中式安全入网:这种方法采用协调器/信任中心来生成网络,管理网络资源和连接密钥。 分布式安全入网:这种方法没有协调器/信任中心,它通过路由节点为其它节点提供入网密钥。 Zigbee 3.0支持越来越多和越大的网络, ZigBee网络有强大的自愈能力能应对各种场景的变化。ZigBee具有向前兼容能力, ZLL 1.0和ZHA 1.2已经支持ZigBee 3.0。ZigBee smart energy在功能上兼容zigBee 3.0,但它有额外的安全要求仅在这个profile中处理。

ZigBee 3.0中的密钥和安全性

ZigBee的安全规范中,分别使用Network Key和Link Key在网络层和APS层加密数据。APS层安全允许信任中心(Trust Center)来安全传输Network Key给加入节点或拒绝节点加入,并且它允许应用来增加可选的安全加密消息。网络层安全用来保证所有的ZigBee网络中发送消息的安全性。ZigBee定义了这些不同类型的密钥,所有的Keys都是用128位对称密钥(AES-128)来解密和加密数据包。
Network Key
Network Key用来保证网络层的安全传输。所有ZigBee网络中的设备都会对Network Key进行备份。Trust Center可以周期性的更新Network Key。
Trust Center Link Key 
Trust Center Link Key用于两个节点(其中有一个节点是Trust center)之间的端到端的安全通信。在以下情况下使用Trust Center Link Key: 
• 当节点初次加入网络时,需加密传输Network Key到加入节点。 
• 当Network Key更新时,有些节点因未接收到新的Network Key,因此需要Rejoin。此时,Trust Center使用Trust Center Link Key加密 Network Key发送给该重新入网节点。 
• 路由器向发送给Trust Center,或从Trust Center接收APS安全消息时,需要使用Trust Center Link Key。比如路由器发送节点加入或Rejoin的更新给Trust Center时,或由Trust Center发送到路由器以执行一些安全功能的命令时, 需要使用Trust Center Link Key。 
• 启用APS加密的应用程序单播消息,其中发送或接收设备是Trust Center。 
由Trust Center决定如何管理Trust Center Link Key的选项。它可以为每个设备选择唯一的密钥 (从设备的IEEE地址导出的密钥),或者对于所有的设备采用相同的全局密钥。

Installation Code Keys
ZigBee 3.0支持Installation Code Key,在之前只用于Smart Energy Network(智能能源网络),Smart Energy Network必须使用install code。现在所有ZigBee 3.0认证设备都需要支持install code,但是由Trust center决定是否在网络中使用。 
Install code用来预配置Trust Center Link Key,其用于加入ZigBee网络时对Network Key的传输进行加密。在进入网络时,加入设备和Trust Center都必须知道这个唯一的密钥,所以install code用于在两端导出密钥。Install code可以是6,8,12或16字节的任意值,再末尾加上这些字节的16位CRC(最低有效字节优先)。Install code用作Matyas-Meyer-Oseas(MMO)Hash散列函数的输入,其散列长度等于128位。该AES-MMO哈希函数的128位(16字节)结果就是用作该设备的预配置Trust Center Link Key的值,并且Trust Center可以安装密钥表条目(该密钥和加入设备的EUI64),其然后允许在加入网络期间成功地进行认证,加入设备可以成功地接收和解密Network Key。作为此过程的一部分,Install code和加入设备的EUI64必须在带外传送(目标ZigBee之外网络,因为新节点尚未加入)到网络的Trust Center,以允许创建正确的Link key表条目。
Application Link Keys 
属于可选的一种安全机制。Application Link Key用于网络中两个都不是Trust Center的设备之间的APS级加密。

ZigBee的入网机制

在入网过程中,有一个相关的预配置连接密钥:Trust Center可以选择该密钥是Default global Link Key(ZigBeeAlliance09)还是installation code。如果新设备没有这个密钥,它将无法加入网络。为了允许设备加入到网络,Trust Center发送Network Key(使用Preconfigured Link Key加密)给父节点。ZigBee 3.0和所有ZigBee应用程序配置文件需要Preconfigured Link Key才能加入。 ZigBee 3.0设备成功加入网络后,设备需要请求更新的Trust Center Link Key以替换它们现有的Preconfigured Link Key或Install code。

  • 子节点入网过程

设备加入ZigBee Standard Security网络时,首先向父节点发送MAC关联请求。 如果关联成功,则设备处于已加入但未认证状态,此时它不具有Network Key。父节点给设备发送MAC关联成功的响应之后,再向Trust Center发送更新设备消息,指示新节点希望加入ZigBee网络。 然后由Trust Center决定是否允许设备加入。 如果不允许设备加入,则向父节点发送移除设备(Remove device)请求。 如果允许该设备加入,Trust Center则向父节点发送Network Key,Trust Center的行为取决于设备是否具有预配置的Trust Center Link Key。

ZCL

ZCL的帧格式:一个普通的ZCL帧由ZCL Header和ZCL payroad组成。 在Digi的API中,ZCL header和ZCL payroad都是放在RF payload字段,以方便用户设计各种zigbee设备,而和ZigBee网络相关的cluster,endpoint,profile等都有专门字段,无需用户去熟悉网络层的相关事务。用XCTU或是利用Digi提供的XBee API很容易实现组帧和解帧的识读。

在这其中,ZCL Header的第一字节是帧控制域字段,它的信息包括帧命令类型和其它控制标志位. 其中帧控制域字段的第三位定义了这个ZCL是否是厂家的自定义特别扩展,默认为0也就是ZCL帧对所有厂家设备都有效,如果定义为1,ZCL Header会多出两个厂家代码字节在控制域字段之后,表示这个ZCL帧是特定厂家使用的扩展。

zigbee3.0的协议特性的更多相关文章

  1. 微软SMB 3.0文件共享协议新特性介绍

    SMB(*nix平台和Win NT4.0又称CIFS)协议是Windows平台标准文件共享协议.Linux平台通过samba来支持.SMB最新版本v3.0,在v2.0基础上针对WAN和分布式有改进.详 ...

  2. HTTP/2协议–特性扫盲篇

    HTTP/2协议–特性扫盲篇 随着web技术的飞速发展,1999年制定的HTTP 1.1已经无法满足大家对性能的要求,Google推出协议SPDY,旨在解决HTTP 1.1中广为人知的性能问题.SPD ...

  3. MySQL8.0.16新特性:The Communication Protocol In Group Replication

    MGR优雅升级到MySQL8.0.16 传统的升级手段之一,5.7 MGR集群与8.0 MGR集群进行数据传输,程序切换新集群后测试是否正常. 如果不正常,要么将新集群的新增数据同步回旧集群,要么就舍 ...

  4. Netty 4.0 新的特性及需要注意的地方

    Netty 4.0 新的特性及需要注意的地方 这篇文章和你一起过下Netty的主发行版本的一些显著的改变和新特性,让你在把你的应用程序转换到新版本的时候有个概念. 项目结构改变 Netty的包名从or ...

  5. C# 3.0新语言特性和改进(一)

    引言 关于C#3.0的特性,园子里已经有了一大把,可能大家都很熟悉了,虽然本人开发中使用过,但自己还是需要记录一下,总结一下.同时也是后面写Linq知识的基础.希望有兴趣的朋友,可以看看. C# 3. ...

  6. php5.3到php7.0.x新特性介绍

    <?php /*php5.3*/ echo '<hr>'; const MYTT = 'aaa'; #print_r(get_defined_constants()); /* 5.4 ...

  7. paip.php 5.0 5.3 5.4 5.5 -6.0的新特性总结与比较

    paip.php 5.0 5.3 5.4  5.5 -6.0的新特性总结与比较 PHP5的新特性 2 · 对象的参照过渡是默认的(default) 3 · 引入访问属性的限制 3 · 引入访问方法的限 ...

  8. C# 6.0 的新特性

    1. 自动的属性初始化器Auto Property initialzier 之前的方式: public class AutoPropertyBeforeCsharp6 { private string ...

  9. NodeJS 框架 Express 从 3.0升级至4.0的新特性

    NodeJS 框架 Express 从 3.0升级至4.0的新特性 [原文地址:√https://scotch.io/bar-talk/expressjs-4-0-new-features-and-u ...

随机推荐

  1. Ubuntu 16.04 安装 JDK 1.8

    系统环境 Ubuntu 16.04; JDK 1.8 配置安装 1.首先从oracle下载jdk 1.8,我下载的版本是jdk-8u131-linux-x64.tar.gz,运行tar zvxf jd ...

  2. [UE4]Circular Throbber,圆形的、环形的动态图标

    一.就是圆形的,转动的很多小圆点. 二.Circular Throbber.Appearance.Number Of Pieces:可以通知显示的小圆点个数. 三.Circular Throbber. ...

  3. tips:Jquery的attr和prop的区别

    Jquery的attr和prop的区别 描述:想做一个复选框checkbox全选的功能,当勾选全选后,将子项的复选框状态设置成一致的, 但遇到了一个问题,就是attr函数并不能改变子项的checkbo ...

  4. k8s学习笔记之四:资源清单定义入门

    第一章.k8s中的资源 1.什么叫资源? k8s中所有的内容都抽象为资源, 资源实例化之后,叫做对象 2.在k8s中有哪些资源? 工作负载型资源(workload): Pod ReplicaSet D ...

  5. suricata 配置文件threshold

    threshold threshold(阈值)关键字可用于控制规则的警报频率,它有3种模式: threshold: type <threshold|limit|both>, track & ...

  6. 游戏搭服自动化脚本shell

    #!/bin/bash #;g=6006c= 178pop_s10 rm-bp1gy2r82o607w4v8.mysql.rds.aliyuncs.com # basedir=/data/jzadmi ...

  7. leetcode301

    class Solution { public List<String> removeInvalidParentheses(String s) { List<String> a ...

  8. board_led.h/board_led.c

    /******************************************************************************* Filename: board_led ...

  9. Microsoft DQS sqlException 0x80131904 - SetDataQualitySessionPhaseTwo

    遇到这个问题的原因可以从报错信息看出来,大概率是.net framework的问题 可以尝试如下解决途径 1. regenerate .net Assemble for DQS 2. 如果步骤一无法解 ...

  10. 数据库中多对多关系的处理 User---Role

    --一个用户可以担任多个角色,如user1既是调度员又是分拣员--一个角色可以被多个用户担任,如user1是调度员,user2也是调度员--用户和角色之间的对应关系为多对多,所以会产生中间表 t_us ...