This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
使用ti的协议栈Z-Stack Home 1.2.0,两个节点,一个协调器,另一个是终端,SECURE=1,zgPreConfigKeys = TRUE,把defaultKey改成不一样。但是发现终端还是可以加入协调器形成的网络,这是通过抓包软件显示发现确实是加入了网络,如图,
但是终端向协调器发送数据,协调器接收不到,猜测是defaultKey不同,数据解析不出来。我感到迷惑的地方是defaultKey不同,节点也可以加入网络,按照《Zigbee Wireless Networking》上说法是不可以加入网络的,如图,
zigbee网络会在Authentication Procedure一步上把defaultKey不同的节点抛弃。
我的理解和实践不一致,深感疑惑,请高人解答。
非常感谢你的提醒,附件是抓包图,据我分析,应该已经入网,因为子节点通过父节点广播了自己的信息,这是ti最新的协议栈了,就是Z-Stack Home 1.2.0。
但是我我使用旧一点的协议栈ZStack-CC2530-2.3.0-1.4.0,同样的设置居然产生的结果不一样,旧的协议栈测试结果和我的理解一致:节点想通过父节点广播信息,但是父节点的广播并没有发出。
真的纠结了!
你好,
整个过程应该是没有问题的,节点也确实入网成功了。
但是有一点需要你确认下,你的NWK Key应该不是用的PreConfig Key, 也就是zgPreConfigKeys = FALSE。
因为从抓包过程来看,节点在获得父设备分配的短地址以后,父设备把NWK KEY发送给了子设备,01:03:05........
所以即便你在节点处的DEFALUT KEY设置不一样也没关系,因为子设备只会用父设备传过来的KEY。
另外如果zgPreConfigKeys = TRUE,那么节点在入网过程中,父设备也会传输Transport Key给子设备,但是这个消息的Key都是00:00:00.。。
原因是双方的Key都是Preconfig的,不需要再重新传输了。
我又确认了一下,确实是设置了zgPreConfigKeys = TRUE,打断查看zgPreConfigKeys的值确实生效,是0x01。但是父设备怎么会传key过来呢?纠结啊!我尝试过使用ha1.2原封不动的代码,仅仅作了最简单的可上电组网的改动,还有把zgPreConfigKeys = TRUE,结果还是一样啊。
我这边目前的理解,nwkKey的分配方式两种:
1.入网时由TC分配
2.设备上电前进行预配置(这种安全性高一些)
二者选其一;
如果选用第二种 zgPreConfigKey = TRUE时,需要禁掉TC_LINKKEY_JOIN
禁掉TC_LINKKEY_JOIN确实是可以的,就不知道ti的工程师是不是这样设置的,只是忘记了在文档上说明一下,如果不是,那会不会影响了某些功能,这些都不知道啊,暂时也只能这样了,这问题纠缠太久了
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
Hi VV:
我使用Untitled打开这个抓包文件也看不见父设备发送的NWK KEY(第15行),是加密的,
前面的小锁头有一个斜杠,应该是没解密。并且Packet Information 列是Command不是你的Transport Key.
你是怎么设置的能将这行解密呢?
VV 说:@Yongjie,
在Ubiqua里面有一个Tools->Option->security 可以添加Trust Center Link Key的地方,你把你的Key添加上去就可以了
OK,搞定了,谢谢VV
@VV
我的终端设备和协调器 都设置 SECURE=1, TC_LINKKEY_JOIN ,和zgPreConfigKeys = FALSE;
做了以下测试:
协调器一直通电, 终端设备通电3分钟,然后断电1分钟左右, 然后继续上电3分钟 的重复动作。
经过一段时间之后,
1. 发现部分终端设备 发给 协调器的消息, 从抓包上 看到 协调器 MAC又回 ACK, 但是没有传到 应用层。 但这些设备都 不显示掉线。
2. 另外发现部分设备 一直无法入网, 发了rejoin request 给协调器, 协调器 继而 发了leave 指令 给终端设备。
关于 情况1 , 是否是协调器的 NWK key 改变了, 而终端设备仍然保持着原有 NWK key ,导致信息无法解析到应用层?
请问:
1. 入网之后 协议器 收到消息之后, MAC 需要用 相关 的KEY 进行对比之后 才反馈ACK 吗?
2. 信息传到到 应用层 之前 需要 哪些KEY 进行解析?
3. 解析的KEY 运行过程中 协调器 端 会不会改变?