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.

关于z-stack的安全加密

Other Parts Discussed in Thread: Z-STACK, CC2530

现建立一个简单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不同的网络?

  • 有谁能help me。

    怎样加密我的网络,使别人的设备无法连进来。

  •  这个过程是正常的,整个入网过程中,beacon requets/beacon/associate request /associate response 都是基于MAC的数据帧,所以没有加密的,在这个时候,如果使能加密的话,就会有认证这个过程,如果认证没有通过的话,节点不会发出来device Announce,所以入网没有成功。

    所以说评判入网有没有成功是看最后的有没有发device Announce出来的。

    所以说未加密和key不同的终端,虽然可以分配到短地址,但是认证不会通过的,最后还是会退网。

    同样经过加密的终端也不会加入到密码不对的网络里面去。

  • 根据测试,与你所讲的基本一致。似乎zstack只能在网络层进行加密(SECURE=1时,抓包发现网络层sec字段为1),而MAC层是不能加密的(SECURE=1时,抓包发现MAC层sec字段为0)。而入网过程都是在MAC层进行的,所以即使SECURE=1,这个过程仍然能通过。

    若终端和协调器KEY不同,终端若一段时间未通过认证,会自动退出网络。(这样就能使我的终端不会连到别人的网络)

    不过有一点好像不对:

    若终端未加密、协调器加密,我发现终端不会自动退出网络,且协调器也不会强制令终端退出,不过我的协调器在给这个终端分配了地址之后不会对它进行device Announce,且它们之后也不会进行通信(因为我的协调器已加密)。

    谢谢VV的解答,问题已解决

  • 请问如何实现zigbee的双重加密??

  • 在 Z-Stack Mesh 1.0.0 也出现了这种情况,虽然协调器和终端设备的网络密钥不同,但是终端设备还是成功的“加入”到了协调器的网络当中。从抓包上来看,终端设备在连接成功了协调器后广播了“device announce”,当然协调器是应用层是收不到的因为网络密钥不同。但是终端设备还是可以正常的发送“data request”命令给协调器,而协调器也会正常返回“ACK”命令给终端设备,并且终端设备也能发送消息给协调器,即使协调器应用层收不到,但是这样子应该会造成网络堵塞的吧?这个终端设备会占有协调器“AccosList”列表的一个位置吗?

    最新的协议栈Z-Stack3.0.2如果两个设备的网络密钥不同,终端设备是加入不了网络的,连“Device Announce”都不会发出来,请问Z-Stack3.0.2是设置了什么才能有这样的效果的呢?

  • 我記得Z-Stack Mesh 1.0.0預設沒有使能Security 、所以沒有key交換過程

  • 是的,没有key exchang过程,但是也不能任由不同密钥的设备入网协调器自己却不知道吧?
  • 设备入网协调器會收到device announcement

  • 现在的Z-Stack Mesh 1.0.0 版本,nwk key不同也能连接成功,但是子设备广播的 announce 因为 nwk key 不同,所以协调器无法解析,可是子设备还是可以正常的发送“data request”给协调器。
  • 你為什麼不使能security?

  • 协议栈:Z-Stack Mesh 1.0.0
    协调器:CC2530
    终端:CC2530
    协调器配置:
    SECURE = 1;
    zgPreConfigKeys = TRUE;
    -DDEFAULT_KEY="{0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0D}";
    TC_LINKKEY_JOIN;
    终端配置:
    SECURE = 1;
    zgPreConfigKeys = TRUE;
    -DDEFAULT_KEY="{0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E}";
    终端能正常加入协调器的网络,但是终端用的nwk key与协调器不同,无法通信。所以终端广播的“device announce”协调器无法收到,但是终端能正常的发送“data request”给协调器,协调器也会正常的返回“ACK”;终端能正常的发送数据给协调器,虽然协调器应用层收不到,但是网络层以下是收到了的。
    这不就会影响整个网络的吞吐量了么?
    但是Z-Stack 3.0.2协议栈这样配置的话终端就无法加入协调器,终端在收到协调器的“accos response”成功后,又重新发送“beacon request”了,不会像Z-Stack Mesh 1.0.0协议栈的终端还会广播“device announce”,然后发送“data request”。
    所以我想问Z-Stack 3.0.2是增加了什么代码才能达到这样的效果?
  • 用不同的defaultKey應該是不能加入才對;Z-Stack 3.0.2是用TC LINK KEY並不是用PreConfigKey
  • “若终端未加密、协调器加密,我发现终端不会自动退出网络,且协调器也不会强制令终端退出,不过我的协调器在给这个终端分配了地址之后不会对它进行device Announce,且它们之后也不会进行通信(因为我的协调器已加密)。”---这一点很好解释,目前我们知道的是新入网节点在入网后15s没有收到二级密钥会自动离网,但是协调器给节点发的秘钥节点没有能力解析却不会导致节点离网
  • 对,这是 Z-Stack Mesh 1.0.0 的加密功能有这个缺陷,但是 Z-Stack 3.0.2 却不会,怎么完善呢?