1 概述
1.1 设备入网概念
在一个zigbee协调器设备建立网络后,未加入网络的路由设备或终端设备,可以加入协调器建立的网络。设备入网有两种入网方式:
关联入网:由新设备发起入网请求,网络内设备回应请求;
直接入网:由网络中原有设备决定,子设备具体加入到某父设备下。在父设备中写入子设备MAC地址,子设备作为该父设备的子节点加入网络;
主要区别:1、是否指定父节点;2、关联入网前两设备相互没有联系,直接入网前父设备已知子设备MAC地址;
1.2 相关概念
- 信道(Channel):网络数据通信使用的通道;
- 信任中心:一般由协调器担任;所有新设备入网都需要经过信任中心进行身份验证;负责身份验证、分配网络地址及网络密钥;
- 父设备:入网设备的上级,作为中继的路由器,在子设备与信任中心间,负责中继身份验证消息;可以没有父设备,子设备直接关联信任中心;
- 子设备:当前入网的新设备在入网阶段称为子设备;
- 安全密钥:设备入网时出于安全考虑需要用到安全密钥,安全密钥有两种类型:链接密钥、网络密钥;除此之外还有一种密钥叫主密钥,用于派生其他密钥;。 - 网络密钥:用于NWK层加密;经信任中心授权加入网络的设备都具有网络密钥,并使用该密钥加密和解析所有网络层消息;- 链接密钥:用于APS层加密;节点在加入网络时,需要向信任中心请求链接密钥,信任中心会给它分配与信任中心通信的链接密钥,这叫做全局密钥;当节点与节点应用通信时,信任中心会生成一个链接密钥并通过网络密钥加密发送至节点,也被叫做唯一密钥;
2 设备入网流程
2.1 子设备关联入网
2.1.1 关联入网流程图
子设备:扫描信道尝试入网,对选择的信道内的PAN逐个尝试加入(通过向信道内的网络发送beacon request,所有在该信道的设备都会收到);加入PAN后请求关联,如果成功会收到网络地址和网络密钥(用于NWK层加密);路由宣告加入网络;回复信任中心的读信息请求;子设备已经加入网络后需要向信任中心请求更新链接密钥;
信任中心与父设备:开放信道检测,允许新设备入网;对信道内的每个beacon request都回复beacon;收到Association request时对子设备进行身份验证,验证通过发送网络地址和网络密钥;路由宣告子设备加入;读取子设备描述、属性等;当子设备请求更新链接密钥时,生成链接密钥给子设备;
图2.1 设备入网流程图
2.1.2 关联入网详细说明
通过关键数据包详细描述了关联入网中数据交互的过程;入网时由子设备发起请求,协调器处理请求;
1)允许设备入网——网关/路由设备
ZigBee网络中只有协调器或路由器才能尝试允许设备加入网络;
该过程由协调器向网络内的所有设备广播打开信道检测的指令;接收到指令的路由器打开信道检测,等待子设备发起入网请求;
2)子设备发出beacon request
子设备会在选好的几个信道里面按照指定的顺序逐信道发出这个包,看到Destination PAN ID、Destination Address都是0xFFFF,说明这是个广播包,在该信道里面的网络都会收到beacon request;
3)路由节点发出beacon回复
能收到beacon request的设备都会发出beacon回复;beacon中包含:入网许可状态、路由节点类型、链路质量、PANID;
4) 子设备发送Association request
子设备请求关联请求包中包含:地址、设备类型等信息;
5) 协调器发送Association respond
给子设备分配网络地址;
6) 协调器发送transport key(发送网络密钥)
协调器允许子设备入网需要给子设备发送网络密钥;网络密钥用于NWK层加密;
7)广播device announce
由子设备进行广播,宣布设备加入;此时NWK层数据已用更新后的网络密钥进行加密;0xfffd只对打开了接收的设备进行广播,0xfffc广播到协调器和路由器,0xfffeAPS不指定目标;
8)网关向子设备读取节点描述、设备描述、设备属性、状态等信息,设备回复
由下面的一帧数据可以看出,读取一个逻辑设备时,要指定endpoint地址,标记传输的端点数据 包含在某个配置文件和簇中;
9) 子设备向网关请求更新链接密钥;
通过以上流程子设备已成功入网。
2.2 子设备直接入网
预先指派一个潜在父设备,将子设备的IEEE地址写入潜在父设备的目的地址中,父设备判断子设备是否已入网;未入网就等待子设备加入,子设备请求加入时父设备比对IEEE地址,如果与预先写入的相符,就将分配的网络地址发给子设备。
3 入网设备的标准安全性
关联成功父设备会向信任中心发送更新设备的消息,指示新节点希望加入网络,如果信任中心不允许该设备入网则向父设备发送删除设备的消息,如果允许入网则根据入网设备是否具有预配置的连接密钥进行下一步操作;
所有设备都要有链接密钥才能入网;应用程序在加入时未指定其他链接密钥,则默认值为5A 69 67 42 65 65 41 6C 6C 69 61 6E 63 65 30 39;
3.1 网络密钥
入网分配网络密钥:为使设备真正入网,信任中心需传输使用设备的预配置链接密钥加密的网络密钥给子设备;网络密钥在子设备已加入PAN时分配;
图3.1 使用默认链接密钥进行链接
更新网络密钥:网络层所有消息都需要使用网络密钥进行加密,因此,每次消息传递,本地设备需要不断增加其本地网络关键帧计数器;在计数器的值全部达到F之前需要更新密钥;一般使用定期广播更新密钥的方法;
3.2 链接密钥
链接密钥用于保护两设备单播数据的机密性和完整性;分为Trust Center Link Keys(信任中心密钥)和Application Link Keys(应用程序密钥);
Trust Center Link Keys****(信任中心密钥):
设备与信任中心通信的链接密钥;设备入网时必须要有设备预配置的链接密钥,密钥有两种选择:Trust Center Link Keys和Installation Code Keys;
默认密钥不够安全,Zigbee通信数据都是加密的,抓包数据能被解析出来就是因为有默认密钥,抓包软件从信任中心发给子设备的密钥包中解密出网络密钥,这个网络密钥就可以解析之后该网关下的所有数据;
安装代码密钥操作复杂,需要提前将密钥通过代码写入子设备和信任中心,或写入子设备,由子设备通过外部机制将密钥传输到信任中心。
协议要求子设备在入网后,向信任中心请求更新链接密钥,替换原有密钥;更新密钥流程如图3.2。
图3.2更新链接密钥
Application Link Keys****(应用程序密钥):
用于两设备间单播通信,该密钥只有两设备知道;因此一个设备为了与多个设备单播通信,就需要多个链接密钥。可通过以下两种方式配置:
- 设备预先配置应用程序密钥,通过程序写入;
- 两设备需要建立连接的时候向信任中心申请;向信任中心申请有两种模式:
(1)、标准方法,由单设备发起申请,指定通信设备,信任中心立即响应,给两设备发送链接密钥(设备休眠/离线可能收不到);申请流程如图3.3;
图3.3 标准获取应用程序密钥
(2)、两设备都向信任中心发起请求,先由第一台设备发起申请,指定通信设备,信任中心在一定时间内保留请求信息,在这段时间内第二个设备需发送请求的信任中心,信任中心收到请求后生成链接密钥发给两设备;申请流程如图3.4。
图3.4 两设备申请流程图
版权归原作者 开-悟 所有, 如有侵权,请联系我们删除。