如何创建安全的UART通信协议?

电器工程 微控制器 C 嵌入式 UART
2022-02-06 14:38:08

我想知道如何创建一个安全的 UART/USB 通信协议。我需要它用于微控制器和 PC 之间的通信。我有大约 10 个命令,并认为我会为每个命令使用 10 个单独的确认命令。

交换应该是这样的:

  • PC 通过 UART 发送唤醒命令
  • µC 识别出 PC 已连接并将他的命令发送到 PC,例如。0x01
  • PC 做它被要求做的事情(一些硬件~0x01的东西)并在它完成时做出响应(我否定这个数字以在两个数字之间创建一个更大的“距离”)
  • µC 知道它已发送0x01并期待~0x01来自 PC。如果~0x01返回的不是其他的东西,µC 将知道出现了问题并发送新的请求或错误消息

µC 发送的情况,0x01PC 理解0x02并发送~0x02回,但~0x01由于一些噪音而导致 µC 读取会非常糟糕。

在传输方面有多安全,或者我怎样才能使它更安全?

2个回答

我认为您应该定义更长的命令,包括可能的校验和或 CRC,并等待 ACK / NACK 或错误条件。

您可以从 TFTP(RFC 1350)等简单协议中获取示例

为了安全通信,您应该考虑到您的通信线路的所有可能线程。因此,您需要定义系统是否可以从外部访问(第三方系统,例如无线)

一般来说,您必须考虑以下线程:

  • 重复
  • 委托
  • 重测序
  • 操纵
  • 延迟
  • 插入
  • 腐败

针对线程的标准措施是:

  • 排序或时间戳
  • 时间监督
  • 唯一的源代码和目标代码
  • 回复
  • 识别程序
  • 某种校验和,哈希码...
  • 密码技术,其中一些你已经用你的简单协议实现了。