gpt4 book ai didi

algorithm - 保护无线协议(protocol)的最佳实践

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:03:44 25 4
gpt4 key购买 nike

我正在开发两个微 Controller 之间的无线通信协议(protocol),使用 433Mhz 调制解调器,它可以发送原始格式的串行数据(如果需要,可以是纯文本)。我知道这听起来更像是一道电子题,但我的问题出在编码部分,让我自己解释一下。

假设单元一向单元 2 发送此命令 “0x001/0x010/LIGHT1/ON”(这是纯文本),第一个是单元 1 名称,第二个是单元 2 名称,第三个执行器和最后一个 Action 。一切正常,工作正常,但我想给系统一点安全级别,因为如果有人使用“中间人”之类的技术收听该频率,他可以随时轻松复制命令并重新发送想要。

我正在考虑加密通过空中传输的消息,但话又说回来,这不会保护系统免受相同类型的攻击,假设我使用 MD5 之类的东西加密消息,我将传输类似 的东西“767b79ebb8061054d3ad1eaef428b469”,攻击者只需复制该字符串并重新发送即可获得相同的结果。

那我该如何解决呢?考虑到我不控制核 react 堆,所以我不需要非常高的安全级别。

最佳答案

我假设,每个节点“知道”它应该从哪些节点接收命令——在这种情况下,让接收节点为每个它将接收命令的节点存储一个(简单的) key ,然后将三个字段添加到协议(protocol):

  • 一个盐(由发送者创建的随机数)
  • 序列号
  • 认证字段

发送方和接收方都为 tx->rx 关系存储最后使用的序列号,发送方在每个命令中增加它。

发送方和接收方都创建了一个连接SequenceNumber+Command+SequenceNumber+salt+nodekey的散列(SHA1?)

编辑 nodekey发送节点的 key

发送方将其作为身份验证字段发送,接收方将其与身份验证字段进行比较,如果序列号高于 LRU 序列号并且身份验证字段检查为 OK,则仅接受命令。

这对于重放攻击是安全的,因为它会涉及序列号重用。

编辑:

关于序列号同步丢失的评论中存在担忧,但提议的解决方案对此有弹性:只有发送者会增加 SN,接收者将接受所有 SN高于上次使用。消息丢失会使 SN 跳跃,但仍会被接受为高于 LRU。

关于algorithm - 保护无线协议(protocol)的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10566805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com