有几种廉价的无线电模块(例如 nRF24L01)只能传输 32 字节数据包。对于包含使用任何现代协议和 IV 计算的 HMAC 来说,这太小了。现在,我了解到可以在一个数据包中发送身份验证数据,在后续数据包中发送数据本身,但是在某些无线电模块中,可以在正确的数据包之间接收来自其他节点的数据包,因此看起来每个数据包都需要某种身份验证。
是否存在用于此类通信的协议或库?
我尝试将 wireguard VPN 的 MTU 减小到 32,并且成功了,但我不确定它是 32 字节数据还是每个整个数据包 32 字节。
如果这样可行,那可能完全没问题。MTU 是指数据包中发送的字节数。只要有办法以正确的顺序重新组装数据包并检测丢失的数据包,那么 MTU 是多少就无关紧要了(在某些限制内;显然单字节 MTU 会成为问题)。在您附加的 HMAC 示例中,它不必适合单个数据包。我已通过蓝牙以 20 字节块的形式发送了任意长度的安全消息。
如果您想要方便一些,Wireguard 解决方案可能就足够了,或者考虑使用nerfnet之类的东西,它会为您提供标准 TCP,您可以在其上执行 TLS。TCP 之类的协议的全部目的是通过不可靠的传输提供可靠的通信,给人一种“流”的错觉,而实际上它只是“不大于 MTU 的字节块”。