2

我正在寻找使用 DTLS 的应用程序,例如语音聊天。
DTLS 可以在原始声音数据包丢失时工作吗?
某些数据包是否会丢失并且 DTLS 会话仍然可以正常运行,而无需重新发送丢失的数据包,这会破坏使用 UDP 的点(TCP 延迟与拥塞)。
即使部分声音数据丢失,声音仍然可以听到。
并且通信仍然可以安全地抵御重放攻击吗?

4

1 回答 1

4

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

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

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

于 2017-06-23T14:43:41.387 回答