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.

[参考译文] CC2652P:CC2652P (Sonoff Zigbee 3.0 Dongle Plus) 发送 NWK 密钥、但忽略 APS 请求密钥 (TCLK) 和安全重新加入请求

Guru**** 2845830 points

Other Parts Discussed in Thread: CC2652P, Z-STACK

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1634057/cc2652p-cc2652p-sonoff-zigbee-3-0-dongle-plus-sends-nwk-key-but-ignores-aps-request-key-tclk-and-secure-rejoin-request

器件型号: CC2652P
主题中讨论的其他器件: Z-stack

您好:

我正在使用 Sonoff Zigbee 3.0 USB Dongle Plus (CC2652P 协调器、通过 ZNP 运行 Z-Stack 3.x)。 我正在开发自定义 Zigbee 节点实现(并非基于 TI Z-Stack)、并研究了信任中心的接纳行为。

我的器件成功执行以下序列:

  1. MAC 关联请求→已收到关联响应
  2. 从协调器收到的 AP 传输密钥(网络密钥)
  3. ZDO 设备通知由协调器广播

因此、设备在 NWK 级别明确加入网络、并成功接收网络密钥。

不过:

  • APS 请求密钥(密钥类型= 0x04,信任中心链路密钥)仅通过 MAC 确认、从不应答
  • 安全 NWK 重新加入请求仅得到 MAC 确认、从未应答
  • 未观察到 APS_UPDATE_DEVICE 命令
  • 加入设备不会显示在协调器端的键表中

协调器安全配置(来自 ZNP/zigpy 网络信息):

AP_USE_INSECURE_JOIN = 1
USE_DEFAULT_TCLK = 1
SECURE_LIQUE_JOIN = 1
APS_LINK_KEY_TABLE 为空
TCLK_table 为空

关联期间的器件功能标志:

ALTERNATE_PAN_COMPAN协调 器= 0
DEVICE_TYPE = 0(终端器件)
Receiver_on_when_idle = 1
SECURITY_CAPABILITY = 1
ALLOCAT_ADDRESS = 1

ZigBee 修订版= 22

观察到的行为总结:

  • 已成功传送 NWK 传输密钥
  • 器件通知由协调器重新广播
  • APS 请求密钥 (0x04) 已忽略
  • 已忽略安全重新加入请求
  • 仅收到 MAC ACK 响应
  • 在任何阶段都未观察到 APS_UPDATE_DEVICE

问题:

  1. 在 NWK 传输密钥交付和器件通知后、Z-Stack 3.x(CC2652P 协调器)在什么条件下将器件插入 ADDRMGR/安全表?
  2. 在接受 APS 请求密钥 (0x04) 之前是否需要 APS_UPDATE_DEVICE?
  3. USE_DEFAULT_TCLK = 1 是否完全抑制 Zigbee 3.0 模式下的信任中心链接密钥传输?
  4. 成功接收 NWK 密钥的设备是否仍可被视为在 APS 级别未经身份验证?
  5. 在回答安全 NWK 重新加入请求之前是否需要其他条件?

在此方案中、任何关于信任中心准入政策的说明都将受到极大的欢迎。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Elisavet、

    我没有关于 zigpy ZNP 构建或使用的经验。  您是否考虑过向他们的 GitHub 请求 支持?  您是否有 ZNP 消息的打印日志以及无线通信的监听器日志?  您可以尝试加载并使用 SimpleLink F2 SDK 中的默认 ZNP 示例。  您还可以参考 监控和测试 API 指南 以及 Z-Tool 调试说明。  您尝试加入哪种设备、并尝试加入任何其他设备(甚至是加载了 Zed/ZR 应用程序代码的另一个 CC2652P 加密狗)?

    如果您有 ZNP 工程、可以尝试调试 ZDSecMgrRequestKeyInd -> ZDSecMgrTclkReq 以进一步确定密钥传输失败的原因。

    1. 如果需要 TCLK 更新程序、那么这必须在安全性和地址表完全填充之前发生
    2. 我对 APS_UPDATE_DEVICE 知之甚少、因为它不是 Z-Stack 项、也许这来自 zigpy
    3. zglobals.c 中提供了更多信息、我也建议您通读 Z-Stack 用户指南
      // With changes introduced in R20 of the ZigBee specification,
      // boolean value of zgUseDefaultTCLK is set depending on zgApsLinkKeyType value.
      //
      // For zgApsLinkKeyType = ZG_GLOBAL_LINK_KEY, zgUseDefaultTCLK = TRUE
      // For zgApsLinkKeyType = ZG_UNIQUE_LINK_KEY, different devices have
      // different value:
      //      ZC should have             zgUseDefaultTCLK = FALSE
      //      Other devices should have  zgUseDefaultTCLK = TRUE
      // This is initialized in zgInitItems()
      // If ZG_UNIQUE_LINK_KEY, individual trust center link key between each device
      // and the trust center should be manually configured via MT_SYS_OSAL_NV_WRITE
    4. 仅当 bdbTrustCenterRequireKeyExchange from bdbAttributes_t 为 false 时
    5. 如果需要 TCLK 更新、那么这也可能是确保重新加入请求安全的一个限制

    此致、
    Ryan