现建立一个简单zigbee网络,有两种设备:协调器、终端。现需对网络进行加密,使我的终端不会连到别人的网络,且别人的终端不会连到我的协调器。
实际调试过程中发现一些问题,如下:(zgPreConfigKeys = TRUE,)
(加密:SECURE=1 ,ZG_SECURE_DYNAMIC=1; 不加密:SECURE=0 ,ZG_SECURE_DYNAMIC=0)
1、若对协调器和终端都进行加密,且DEFAULT_KEY相同,则能成功组网,数据通信亦没有问题(抓包发现,数据都已被加密)。
2、若对协调器和终端都进行加密,但DEFAULT_KEY不同,则终端仍能加入网络,但大约8秒钟之后,终端会退出网络(调试发现,终端实际是进行了一次复位)。
3、若对协调器加密、对终端不加密,则终端仍能加入网络,但相互间发送的数据,对方都不会接收(或者接手之后直接丢弃)。
要怎样做才能使未加密、或者KEY不同的终端无法加入网络?
要怎样做才能是我经过加密的终端不会加入到那些未加密、或者KEY不同的网络?
AndyChen:
有谁能help me。
怎样加密我的网络,使别人的设备无法连进来。
AndyChen:
回复 VV:
根据测试,与你所讲的基本一致。似乎zstack只能在网络层进行加密(SECURE=1时,抓包发现网络层sec字段为1),而MAC层是不能加密的(SECURE=1时,抓包发现MAC层sec字段为0)。而入网过程都是在MAC层进行的,所以即使SECURE=1,这个过程仍然能通过。
若终端和协调器KEY不同,终端若一段时间未通过认证,会自动退出网络。(这样就能使我的终端不会连到别人的网络)
不过有一点好像不对:
若终端未加密、协调器加密,我发现终端不会自动退出网络,且协调器也不会强制令终端退出,不过我的协调器在给这个终端分配了地址之后不会对它进行device Announce,且它们之后也不会进行通信(因为我的协调器已加密)。
谢谢VV的解答,问题已解决
bingyi cai:
回复 VV:
请问如何实现zigbee的双重加密??
Jesse Huang:
回复 VV:
在 Z-Stack Mesh 1.0.0 也出现了这种情况,虽然协调器和终端设备的网络密钥不同,但是终端设备还是成功的“加入”到了协调器的网络当中。从抓包上来看,终端设备在连接成功了协调器后广播了“device announce”,当然协调器是应用层是收不到的因为网络密钥不同。但是终端设备还是可以正常的发送“data request”命令给协调器,而协调器也会正常返回“ACK”命令给终端设备,并且终端设备也能发送消息给协调器,即使协调器应用层收不到,但是这样子应该会造成网络堵塞的吧?这个终端设备会占有协调器“AccosList”列表的一个位置吗?
最新的协议栈Z-Stack3.0.2如果两个设备的网络密钥不同,终端设备是加入不了网络的,连“Device Announce”都不会发出来,请问Z-Stack3.0.2是设置了什么才能有这样的效果的呢?
YiKai Chen:
回复 Jesse Huang:
我記得Z-Stack Mesh 1.0.0預設沒有使能Security 、所以沒有key交換過程
Jesse Huang:
回复 YiKai Chen:
是的,没有key exchang过程,但是也不能任由不同密钥的设备入网协调器自己却不知道吧?
YiKai Chen:
回复 Jesse Huang:
设备入网协调器會收到device announcement
Jesse Huang:
回复 YiKai Chen:
现在的Z-Stack Mesh 1.0.0 版本,nwk key不同也能连接成功,但是子设备广播的 announce 因为 nwk key 不同,所以协调器无法解析,可是子设备还是可以正常的发送“data request”给协调器。
YiKai Chen:
回复 Jesse Huang:
你為什麼不使能security?