微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 关于 TCLK 的使用疑问

关于 TCLK 的使用疑问

时间:10-02 整理:3721RD 点击:

疑问包括2 个:

1.  ZigBee联盟规定了 默认TCLK 为:5A 69 67 42 65 65 41 6C 6C 69 61 6E 63 65 30 39

10.6 Joining a Network with TCLK
For devices that want to join a network that is using Trust Center Link Key, it is required that all devices have a preconfigured Trust Center Link Key (TCLK) and that the network key is delivered to joining devices secured with that
link key. There are basically 2 joining scenarios for a joining device:

在开发文档中 描述 通过TCLK 来加密 分发 network key。

既然ZigBee 联盟 都规定了默认 TCLK,那就表明这是众多周知的, 用一个大家都知道的KEY 来加密 重要的network key 。 

那么这个加密的操作有何意义?

2.  关于 TCLK 类别的问题, 它分为ZG_GLOBAL_LINK_KEY 和 ZG_UNIQUE_LINK_KEY ,开发文档中这样描述

If zgApsLinkKeyType is set to ZG_UNIQUE_LINK_KEY, unique pre-configured trust center link keys are used
between the Trust Center and each individual device joining the network. If zgApsLinkKeyType is set to
ZG_GLOBAL_LINK_KEY, all devices are using the same pre-configured trust center link key to join the network.
The Global Link Key Type provides a simplified alternative procedure to set up the network.

如果使用ZG_GLOBAL_LINK_KEY  ,大家都使用相同的默认TCLK,  但是描述中 说ZG_UNIQUE_LINK_KEY   是unique , each 

是不是意味着,如果是ubiqua, 那么 协调器上面 会为 每个设备 都存一个TCLK ?

这样的话  ZigBee 联盟 规定的默认TCLK 又有何意义?  

使用什么type 是 由Trust Center 决定 还是用入网设备决定呢? 比如 ZC 是用 global  但是入网的ZED 带 了一个 奇怪的unique ,那是不是 它就不能入网了?

1, 对的你的理解是正确的,Zigbee 联盟当初设计这个也是为了产品之间互联互通,另外使用TCLK传输Network Key只有在设备入网的时候发生,后面不会再使用。

2,对的。如果ZC的Global和ZED的Unique刚好一样的话,也恰巧能入网的。

现在zigbee 3.0里面,使用Install Code的方式来产生TCLK,这个方式很安全很多,简单来说每个设备都会有一个唯一的TCLK。

具体你可以了解下。

谢谢 VV。

ZigBee 3.0 还未仔细了解。 

但你说,每个设备都有唯一一个TCLK,这样会导致以下问题吧:

1. ZC 对于这么多不同的TCLK 如何进行甄别? 还是来者不拒,照单全收(不对TCLK 做处理,在规定时间内一概允许入网)?

2. 既然每个设备都有唯一的TCLK,那么如何 互联互通?

3. 这些TCLK需要 ZC 端存储吗?   那不是需要耗费很大的 资源来存储 这些不同的TCLK?

在ZigBee 规范中貌似没有提及到这样的机制,还是我没有看清楚~~~

问题先提出来,但我想我还是先了解了解TI 3.0的机制先。

TO VV

"简单来说每个设备都会有一个唯一的TCLK"——《BDB》很多地方都能验证这一点,

但是《Z-Stack 3.0 Developer's Guide》有个地方,却让我困惑:

章节10.3.2 Key Updates :

API provides this functionality via ZDSecMgrUpdateNwkKey() and ZDSecMgrSwitchNwkKey().ZDSecMgrUpdateNwkKey() allows the

Trust Center to send a new Network key to the dstAddr on the network.     At this point the new Network key is

stored as an alternate key in the destination device or devices if dstAddr was not a unicast address. Once the Trust

Center calls ZDSecMgrSwitchNwkKey(), with the dstAddr of the device or devices, all destination devices
will use their alternate key

如果每个设备都有唯一的link key(TCLK),TC那更新network key时,应该是TC逐个设备单播通知的,为什么会有上文的“ not a unicast address”;

另外在demo中搜索了这两个函数,发现只有MT有调用这两个函数,请问update network key是协议栈底层完成了,还是用户自己完成?

既可以使用单播也可以使用广播,

单播的时候会加上APS层的加密,也就是使用新的TCLK进行加密。

广播的时候不会使用APS层加密,只会使用NWK层的加密,NWK层的密钥整个网络里面的设备都是一样的。

这个函数可以用户自己调用,直接调用ZDSecMgrUpdateNwkKey就可以了,看用户的需求。协议栈只是实现了功能而已。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top