如果数据包丢失,DTLS 是否仍能正常工作并保持安全?

one*_*mer 3 networking openssl cryptography udp dtls

我正在寻找一个使用 DTLS 的应用程序,例如语音聊天。
当原始声音数据包丢失时,DTLS 可以工作吗?
某些数据包丢失后 DTLS 会话是否仍能正常运行,而无需重新发送丢失的数据包,这违背了使用 UDP(拥塞的 TCP 延迟)的目的。
即使部分声音数据丢失,仍然可以听到声音。
通信对于重放攻击是否仍然安全?

Jac*_*oyd 5

是的,即使应用程序数据包丢失或被网络重新排序,DTLS 仍能继续发挥作用。在这种情况下,这些数据包中的明文数据也将丢失/重新排序,与您在明文 UDP 中看到的行为完全匹配。

DTLS 在握手阶段确实执行重传,因为加密计算不需要丢失数据包。但这只会影响交换的前几个数据包。

DTLS 提供重放保护(在https://www.rfc-editor.org/rfc/rfc6347的第 3.3 节中描述),以便导致重复数据包到达的攻击者(或路由错误)仅导致单个明文数据包 - 重复项被丢弃。根据该规范,重放保护是可选的,但我知道的所有实现都提供了它。