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. Python学习笔记 之 函数

    函数 函数式编程最重要的是增强代码的重用性和可读性  定义和使用 def 函数名(参数): ... 函数体 ... 返回值 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日 ...

  2. Activity的四种launchMode

    来源:http://blog.csdn.net/liuhe688/article/details/6754323/ 我们今天要讲的是Activity的四种launchMode. launchMode在 ...

  3. The first day!!!

    我的小院子开通啦,开始记录自己的学习历程,加油!!!

  4. WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册

    本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDb ...

  5. Myeclipse 自定义代码自动格式化(ctrl+alt+F)

    打开如图界面:preference->java->code style->formatter下的edit... 如设设置java代码多长换行:

  6. syntaxhighlighter语法高亮

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  7. SQL2008-中不想插入从复记录

    If not exists (SELECT ID FROM StuffAgitationYield where EMAgitation_ID=1 and YieldDateTime'2012-06-1 ...

  8. android之frame动画详解

    上一篇我们说了android中的tween动画,这一篇我们说说frame动画,frame动画主要是实现了一种类似于gif动画的效果,就是多张图按预先设定好的时间依次连续显示. 新建一个android项 ...

  9. BestCoder Round #50 (div.1) 1001 Distribution money (HDU OJ 5364)

    题目:Click here 题意:bestcoder上面有中文题目 #include <iostream> #include <cstdio> #include <cst ...

  10. javaScript绑定事件委托 demo

    事件绑定通常发生在 onload 或 DOMContentReady , 事件绑定占用 处理时间 占用内存, 而且不是每个事件都会被 点击执行. 由此 事件委托 可以优化事件绑定行为.. 事件逐层冒泡 ...