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.

[参考译文] CC1352P7:Wi-SUN 安全性

Guru**** 1807890 points
Other Parts Discussed in Thread: WI-SUN, UNIFLASH
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1418451/cc1352p7-wi-sun-security

器件型号:CC1352P7
主题中讨论的其他器件:Wi-SUNUNIFLASH

工具与软件:

您好!

我当时正在查看 Wi-SUN 规范、想问一些有关安全性的问题。

我已经阅读了《堆栈用户指南》、特别是 加入过程、但我仍有一些问题:

1.据我所知,在加入网络的过程中,节点能够检测所有可用的网络。 该节点是否可以列出所有选项以便用户可以查看?

2.网络名称是连接到网络的节点的唯一必要配置、或者是否有任何其他必要的配置(凭据、密码等)

3.联接过程文档未指定在何处使用网络名称和任何其他可能的配置,请您澄清一下吗?

4.我可以从 SPINEL 接口了解到,使用 revoikeDevice 命令从网络中删除不需要的设备,正确吗? 是否仅当设备已加入网络时才可以使用它?是否可以使用它来避免它的连接?

5.是否有类似于 revoikeDevice 命令的任何内容、但我可以配置允许的设备列表、而不是列出不需要的节点?

提前感谢您。

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

    Eduardo、您好!

    Wi-SUN 规范不是公开的、因此我无法在公共论坛上提供此信息。

    1.此功能未在我们的堆栈中实现。

    2.网络名称用于生成共存的 Wi-SUN 网络、必须在堆栈启动前进行设置。 在这种情况下、路由器节点将只加入由网络名称指定的网络。  

    3.我会检查我能提供多少更多的信息。

    4.设备加入网络后、revoikeDevice 命令只能从使用边界路由器实施的身份验证服务器中使用。  

    5.有一个基于路由器节点的 MAC 地址的允许和拒绝列表的实现。 请阅读这部分最新的 Wi-SUN 用户指南: https://dev.ti.com/tirex/explore/node?node=A__ADg-OA1lkmNpV7sMfCNnZA__com.ti.SIMPLELINK_CC13XX_CC26XX_SDK__BSEc4rl__LATEST 在路由器节点应用中、您需要搜索:"CoAP_PANID_LIST"


    我建议您使用不同的网络名称选项和允许/拒绝列表功能来实施应用程序。

    此致、
    等等

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

    尊敬的 Theo:

    2.因此可以有两个或更多同名网络、正确吗? 它们之间的唯一区别是 PAN ID? 此外、该节点会根据信号质量自动选择要加入的网络?

    3.好的。 我需要一个安全的网络、因此了解加入过程的弱点所在以及如何改进它们非常重要。 我可以直接给您发送一条消息来讨论此主题、您认为如何?

    5.我不知道我是否正确理解这个功能。 当我设置 PAN ID 列表并将其保存到边界路由器时、此列表定义了允许哪些节点从此边界路由器加入网络、或者边界路由器会告诉节点允许该节点连接哪个 PAN ID? 如果第二种情况是正确的、那么我不会限制允许哪些设备加入网络、而只是控制哪些设备连接到哪个边界路由器、对吗?

    此致、
    Eduardo。

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

    Eduardo、您好!

    2.如果您有多个使用相同网络名称的边界路由器位于房间的两个相对站点、并且有多个路由器节点试图连接到使用此名称的网络、则他们将根据路由成本选择要加入的网络。 如果要确保路由器节点的子集加入特定的边界路由器、则必须使用不同的网络名称或 PAN ID 允许/拒绝列表功能。

    3. Wi-SUN 是一种经过认证的安全网络。 该协议由 Wi-SUN 联盟及其成员开发。 您可以在他们的网站上找到经过认证的产品: https://wi-sun.org/certified-products-list/ 

    在用户指南中、我们将加入过程可视化: https://dev.ti.com/tirex/explore/content/simplelink_cc13xx_cc26xx_sdk_7_41_00_17/docs/ti_wisunfan/html/wisun-stack/join_process.html 、并提供有关正确使用密钥和证书的详细信息: https://dev.ti.com/tirex/explore/content/simplelink_cc13xx_cc26xx_sdk_7_41_00_17/docs/ti_wisunfan/html/wisun-stack/networklayer.html# 

    请让我们从这里开始。 您还有哪些问题?

    5.通过实施允许列表/拒绝列表功能,您可以在边界路由器上存储节点的 MAC 地址列表,并为每个节点存储允许和拒绝列表,其中包含允许或拒绝加入的网络 PAN ID。 当 DE 节点加入网络时、它将从边界路由器请求允许/拒绝列表、然后检查是否允许它加入此网络。 如果不允许加入网络、则通知边界路由器 需要重新发现并从中寻找另一个网络来加入。 您可以使用 pyspinel (https://dev.ti.com/tirex/explore/content/simplelink_cc13xx_cc26xx_sdk_7_41_00_17/docs/ti_wisunfan/html/wisun-guide/network-management.html#pan-id-allow-deny-list)尝试使用用户指南中的说明来执行此功能。  

    在 CoAP 节点项目的"application.c"文件中查看"coAP_PANID_LIST_ALLOW_URI"时、您会看到、如果定义了"CoAP_PANID_LIST"、则存在一个"允许"列表和一个"拒绝"列表。 在文件中下次使用时、您会找到相应的应用程序代码。

    最好能详细解释一下您希望实现的目标、以便能帮助您选择最适合的功能。

    此致、
    等等

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

    尊敬的 Theo:

    感谢您的详细说明。

    如果您能详细解释我想要实现的目标、以便我可以帮助您选择最合适的功能、那将是非常好的选择。

    我需要能够控制允许哪些节点加入网络、以尝试阻止来自未知设备的进入(可能是不受欢迎的用户尝试加入网络或类似情况)。

    2.如果我使用2个具有相同网络名称和 PAN ID 的边界路由器、该怎么办?

    3.这些密钥和证书是如何处理的? 我的意思是、谁必须"创建"这些密钥并在必要时更新这些密钥? 我阅读了 EAPOL 层文档、并且了解可以启用此功能来修改代码中的某些行、但不明白谁负责创建密钥、谁在允许设备加入网络时给出"最终结论"。

    5.如果一个节点试图加入网络,而其 MAC 不在 JSON 列表中,会发生什么情况? 它将加入网络、还是边界路由器拒绝连接? 根据有关允许/拒绝列表的说明、节点似乎需要负责控制它是否将加入网络、而不是边界路由器。 当有人试图侵入网络时、它会忽略此列表并强制进行自己的连接。

    您认为我可以如何满足我的要求?

    此致、
    Eduardo。

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

    Eduardo、您好!

    2.一般情况下、您不应该这样做、因为它没有遵循每个边界路由器具有唯一网络名称的预期设置。 在这种情况下、所有寻找网络名称的节点都将决定边界路由器只能通过路由成本来加入。

    3.根证书随设备一起部署、并可由 Wi-SUN 联盟的所有成员生成。 请查看: https://wi-sun.org/cyber-security-certificates/ 我们的软件包含此类测试证书。 这些都在加入网络时进行检查、以确保器件是经过认证的 Wi-SUN 器件。 在交换加密密钥之后。

    5.它将加入网络,不再发生任何事情。 如果您按照允许/拒绝列表的实现进行操作、则 CoAP 节点将从边界路由器请求列表、如果节点 MAC 地址存在 CoAP、则边界路由器将通过 CoAP 发送列表、然后节点将检查是否允许加入此边界路由器。 如果不是、它将指示边界路由器触发重新发现、并且不会再次尝试加入此边界路由器。

    通常、只能在应用层从这种意义上管理网络访问、因为所有其他内容都不符合 Wi-SUN 规范。 可以在边界路由器上实施允许设备的 MAC 地址列表、节点加入网络后、您可以检查其 MAC 地址。 如果它不在允许的 Mac 地址列表中、您可以使用撤销访问选项将它们从网络中删除。 但您不能阻止加入。

    如果有更好的选择、我会跟研发团队跟进。

    此致、
    等等

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

    尊敬的 Theo:

    2.我已经知道如果我把边界路由器的 PAN ID 写为0xFFFF、那么它会以0x0000到0xFFFE 之间的随机值开始。 假设我的网络已经正常运行。 如果我使用同样默认为0xFFFF 的第二个边界路由器、它是否会检测到是否已经有同名网络并避免使用相同的 PAN ID、或者它是否可能随机选择相同的 PAN ID? 我很好奇这是否可能会导致现有网络中产生任何干扰、因为我已经在另一个6LoWPAN 网络中面临类似情况。

    如果与使用撤销选项相比有更好的选择、您可以向研发团队跟进、我将不胜感激。 最好的情况是、我可以避免连接不需要的设备、而不是让其连接然后再将其移除、假设我不能保证它在此连接期间不会造成任何损坏->被撤销。

    尽管如此、目前我认为评估 revoikeDevice 功能是最好的选择。 此功能是否也可使用 wfantund 提供或仅受 pyspinel 支持?
    我有第二个 MCU (ESP32)作为主机、它使用 Wi-SUN 芯片向网络发送数据。 是否可以在此功能中使用 ESP32地址而不是 CC 的 MAC 地址? 此外、当在 CLI 中使用 hwaddress 命令查看设备的 MAC 地址时、它会显示一个包含8组(每组2个十六进制数字)的地址。 MAC 地址不应该只有6个组? 我在这个主题中有一点困惑。

    感谢您提供的所有支持、Theo!

    此致、
    Eduardo。

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

    Eduardo、您好!

    边界路由器不会检查任何现有网络、因此这在理论上是可行的。 按照规范、最好的方法是使用不同的网络名称、否则您最终会遇到前面所述的情况、即路由器节点仅根据路由成本决定边界路由器加入。 因此不会造成干扰、但您无法预测网络架构。

    在进行研发之后、我得到了以下确认:不存在阻止路由器节点加入网络的选项、因为这不符合 Wi-SUN 规范。 而必须在应用层实现所有进一步的身份验证。 建议使用边界路由器上的 MAC 地址白名单或使用 PAN ID 允许/拒绝列表功能。  

    此致、
    等等

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

    尊敬的 Theo:

    感谢您的推荐。

    RevokeDevice 功能是否也可使用 wfantund 或仅受 pyspinel 支持?
    我有第二个 MCU (ESP32)作为主机、它使用 Wi-SUN 芯片向网络发送数据。 是否可以在此功能中使用 ESP32地址而不是 CC 的 MAC 地址? 此外、当在 CLI 中使用 hwaddress 命令查看设备的 MAC 地址时、它会显示一个包含8组(每组2个十六进制数字)的地址。 MAC 地址不应该只有6个组? 我在这个主题中有一点困惑。

    此致、
    Eduardo。

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

    Eduardo、您好!

    该命令是为 pyspinel 实现的、但您也可以将其添加到 wfantund 中。 您还可以更改应用程序、以便发送主机的 MAC 地址、而不是路由器节点 MAC 地址、但需要从应用层请求发送此信息。

    我会就 Mac 地址给您回过来。

    此致、
    等等

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

    Eduardo、您好!

    硬件地址是一个 2字节格式的 IEEE 802.15.4扩展地址。

    您可以使用 pyspinel hwaddress 命令或使用 UniFlash -> SELECT DEVICE -> Setting & Utilities -> Primary IEEE Address 来查看它

    此致、
    等等

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

    Eduardo、您好!

    我需要更正并补充先前的答案。

    只有当这些器件共享相同的根证书时、才能连接到 Wi-SUN 网络。
    这意味着、保护 Wi-SUN 网络的最简单方法是生成您自己的根证书、而不是与任何人共享。
    在这种情况下、只有您的设备可以加入网络。  

    如果需要、仍然可以使用 MAC 滤波来强制实现网络拓扑。

    此致;
    等等