【发布时间】:2014-06-06 06:29:54
【问题描述】:
有什么方法可以保护 COAP 通过 UDP 数据包发送的消息?我可以实施的任何开源项目。此消息交换与服务器进行,客户端将是嵌入式设备。所以密码算法也必须能够在它上面运行。我也遇到了cyassl。但问题是它使用 TCP 协议而不是 UDP ?有什么想法吗?
谢谢
【问题讨论】:
标签: security cryptography embedded coap
有什么方法可以保护 COAP 通过 UDP 数据包发送的消息?我可以实施的任何开源项目。此消息交换与服务器进行,客户端将是嵌入式设备。所以密码算法也必须能够在它上面运行。我也遇到了cyassl。但问题是它使用 TCP 协议而不是 UDP ?有什么想法吗?
谢谢
【问题讨论】:
标签: security cryptography embedded coap
DTLS 可用于保护 CoAP 单播消息,但是,CoAP 多播消息不受现有 DTLS 协议的保护。因为高效的密钥分配问题还没有解决。这意味着多播消息的标头可能会暴露给嗅探器工具,包括 URI 路径。
如今,有一种称为 OSCoAP 的协议可能会对此有所帮助。它仍在实施中。
这是 OSCoAP 最新的 IDTF 文件草案:https://datatracker.ietf.org/doc/html/draft-ietf-core-object-security-02
但是,有人对此表示怀疑。它提到 OSCoAP 将在第 4 节中加密 URI 路径。然后密钥分发仍然可能是多播中的问题。但它没有提到那里有任何困难。但是对 CoAP 消息的安全性感兴趣的人可以看看 OSCoAP。
【讨论】:
保护 CoAP 的方法是 DTLS(数据报的 TLS)
RFC 对这个主题非常清楚: https://datatracker.ietf.org/doc/rfc7252/?include_text=1
详见第 9 节。
DTLS 就是众所周知的 TLS/SSL,但适用于在 UDP 传输上运行。
tinydtls (http://trinydtls.sf.net) 是一个不错且简单的嵌入式设备实现
对于服务器端,您可以使用 Californium 和 Scandium (http://eclipse.org/californium)
【讨论】:
发送前的数据加密让您不必担心传输协议(即是 UDP、TCP 等)。当然,您需要解密服务器上的数据。
如果您想要传输层安全性,您应该寻找 DTLS 实现。 DTLS 是 SSL/TLS 的一种,旨在通过 UDP 和类似的传输方式运行。不过,我不确定是否存在针对受限设备的 DTLS 实现。
【讨论】: