TI中文支持网
TI专业的中文技术问题搜集分享网站

为什么defaultKey设置不一样的节点还是可以加入网络?

使用ti的协议栈Z-Stack Home 1.2.0,两个节点,一个协调器,另一个是终端,SECURE=1,zgPreConfigKeys = TRUE,把defaultKey改成不一样。但是发现终端还是可以加入协调器形成的网络,这是通过抓包软件显示发现确实是加入了网络,如图,

但是终端向协调器发送数据,协调器接收不到,猜测是defaultKey不同,数据解析不出来。我感到迷惑的地方是defaultKey不同,节点也可以加入网络,按照《Zigbee Wireless Networking》上说法是不可以加入网络的,如图,

zigbee网络会在Authentication Procedure一步上把defaultKey不同的节点抛弃。

我的理解和实践不一致,深感疑惑,请高人解答。

VV:

你好,

能不能把你的抓包文件用附件上传下,截图的话我这边不好解析。

节点入网成功的标志,不是父设备发Association Response给他子设备吗,而是节点发Device Announce 出来,有看到节点发Device Announce吗?

谢谢!

shuming ye:

回复 VV:

非常感谢你的提醒,附件是抓包图,据我分析,应该已经入网,因为子节点通过父节点广播了自己的信息,这是ti最新的协议栈了,就是Z-Stack Home 1.2.0。

但是我我使用旧一点的协议栈ZStack-CC2530-2.3.0-1.4.0,同样的设置居然产生的结果不一样,旧的协议栈测试结果和我的理解一致:节点想通过父节点广播信息,但是父节点的广播并没有发出。

真的纠结了!

VV:

回复 shuming ye:

你好,

整个过程应该是没有问题的,节点也确实入网成功了。

但是有一点需要你确认下,你的NWK Key应该不是用的PreConfig Key, 也就是zgPreConfigKeys = FALSE。

因为从抓包过程来看,节点在获得父设备分配的短地址以后,父设备把NWK KEY发送给了子设备,01:03:05……..

所以即便你在节点处的DEFALUT KEY设置不一样也没关系,因为子设备只会用父设备传过来的KEY。

另外如果zgPreConfigKeys = TRUE,那么节点在入网过程中,父设备也会传输Transport Key给子设备,但是这个消息的Key都是00:00:00.。。

原因是双方的Key都是Preconfig的,不需要再重新传输了。

shuming ye:

回复 VV:

我又确认了一下,确实是设置了zgPreConfigKeys = TRUE,打断查看zgPreConfigKeys的值确实生效,是0x01。但是父设备怎么会传key过来呢?纠结啊!我尝试过使用ha1.2原封不动的代码,仅仅作了最简单的可上电组网的改动,还有把zgPreConfigKeys = TRUE,结果还是一样啊。

guozi zhou52:

回复 shuming ye:

我这边目前的理解,nwkKey的分配方式两种:

1.入网时由TC分配

2.设备上电前进行预配置(这种安全性高一些)

二者选其一;

如果选用第二种 zgPreConfigKey = TRUE时,需要禁掉TC_LINKKEY_JOIN

shuming ye:

回复 guozi zhou52:

禁掉TC_LINKKEY_JOIN确实是可以的,就不知道ti的工程师是不是这样设置的,只是忘记了在文档上说明一下,如果不是,那会不会影响了某些功能,这些都不知道啊,暂时也只能这样了,这问题纠缠太久了

100 100:

回复 shuming ye:

Hi Ye,你好,看了你们的帖子受益匪浅。我也正在学习zstack的安全设置,

不过我下载了你的psd以后用sniffer看到那个传递key的帧

。。其他情况都对 就是帧内的内容 我这里看到 的似乎是加密过的 ,不是VV说的明文密钥,你那里是这样显示的么?

(我自己做过实验 ,如果协调器没有perconfigkey =ture 那么帧里面会是明文密钥)

我的sniffer显示文件用的格式是CC2530 no File Format.

————————

另外 我在Zstack的资料(不是Zstack home 还没去看过那个)Application-Level Tuning of Z-Stack.pdf  和 Smart Energy Sample Application User's Guide.pdf 以及 Z-Stack Smart Energy Developer's Guide.pdf 里面有提及 TCLink Key的事情,不知道是不是你需要的

应该就是通过链接密钥 通过交换 生产网络密钥,源码里面似乎安全模式4和5以后会使用TCLink

user4024521:

回复 VV:

 VV你好!我有个问题,希望能得到你的帮助,谢谢!我想通过加密,实现只有相同秘钥的能入网,我的设置方法:SECURE=1,zgPreConfigKeys = TRUE,没有加TC_LINKKEY_JOIN。我的测试方法是,Coordinator设置了加密,而设备分两种情况:1、设置了加密,但是秘钥不同,结果不能入网。2、没有设置加密,结果还是能入网,但是接收不到任何数据。
那么这种情况我应该如何设置,实现的效果就是,只有秘钥相同的才能入网,而没有设置加密功能的或者秘钥不同的,都不能入网。 

yongjie fu1:

回复 VV:

Hi VV:

我使用Untitled打开这个抓包文件也看不见父设备发送的NWK KEY(第15行),是加密的,

前面的小锁头有一个斜杠,应该是没解密。并且Packet Information 列是Command不是你的Transport Key.

你是怎么设置的能将这行解密呢?

VV:

回复 user4024521:

@Mark Zhang

其实你的第2种情况也没有入网成功,你可以通过抓包看下具体的过程,就比较清楚了。

一般入网以入网的设备发送Device Announce为准。

赞(0)
未经允许不得转载:TI中文支持网 » 为什么defaultKey设置不一样的节点还是可以加入网络?
分享到: 更多 (0)