DTLS和TLS之间的区别

Pra*_*nav 32 ssl dtls

  1. TLS和DTLS之间的功能区别是什么?
  2. 使用TLS与DTLS时应用程序流/协商有何不同?

Yu *_*Hao 30

基本上DTLS是通过数据报构建TLS(UDP,DCCP等)

DTLS有意类似于TLS,但DTLS必须解决两个问题:数据包丢失和重新排序.DTLS实现

  1. 分组重传
  2. 在握手中分配序列号
  3. 重放检测.

有关详细信息,请参阅RFC 6347.

  • 错误的,随后发现的安全缺陷表明这个答案在安全方面是严重错误的;看我的新答案。 (3认同)

Mat*_*vey 25

这个想法是 DTLS 对 TLS 就像 UDP 对 TCP 一样,尽可能多。

有关规范的详细信息及其讨论的链接,请参阅https://datatracker.ietf.org/doc/draft-ietf-tls-dtls13/,它可能会废弃RFC 6347

DTLS 和传输层安全 (TLS) 协议之间存在主要差异,应用程序程序员需要注意其他未命中/暗示的答案不存在!

DTLS 协议为数据报协议提供通信隐私。与撰写本文(存档)时现存的最受好评的答案相反,DTLS不是基于 UDP(或一般数据报协议)的 TLS 的实现(或“构造”),并且重放检测是 TLS 的必需功能,但在 DTLS 中是可选的。DTLS 包括一个非常类似于 TLS 的握手的实现,经过修改以在数据报协议上工作。该实现确实处理了数据包重新排序和丢失的问题,但适用于用于 DTLS 握手(和密码选择)的数据包。换句话说,这些数据包传递的“航班”可靠地交付。然而,包含有效载荷(应用程序数据)的 DTLS 数据包可能不会比封装它们的 DTLS 数据包(通常是 UDP)更可靠地传递它们的有效载荷。

此外,虽然 DTLS 协议 (v1.2) 源自 TLS 协议 (v1.2) 并声称“提供等效的安全保证”,但它没有2 早在 2013 年,研究人员就发现了 DTLS 实现和 DTLS 协议本身的主要安全缺陷,这些缺陷已经得到纠正,至少在 GnuTLS 和 OpenSSL 实现中是这样。2此外,DTLS 不保证不可重播性。

最后,OP 询问在使用 TLS 与 DTLS 时应用程序流有何不同。TLS 旨在以经过身份验证的端到端加密方式可靠地传输数据流。DTLS 旨在交付经过身份验证和端到端加密的应用程序数据,但其延迟比保证所有应用程序数据交付时所能达到的延迟更低。这就是为什么使用 DTLS 来保护流传输应用程序的安全,在这些应用程序中,损失不如延迟重要,例如 VoIP、实时视频馈送和 MMO 游戏。

PS:在您阅读本文时,DTLS 1.3 已完成/可能已作为 RFC 发布。3

PPS:哦,如果这值得一读,请不要错过RFC 7457,“总结传输层安全性 (TLS) 和数据报 TLS (DTLS) 上的已知攻击”。 我很惊讶 DTLS 1.3(无论如何都是最终草案)没有提到它(例如从它的安全注意事项部分)(建议),TLS 1.3 规范也没有!

  • 这是正确的答案,仅保证 TLS 协议本身的排序,而不是有效负载的排序。您不想为客户端选择可靠的协议实现,它可能是许多不同的算法,并且可能是特定于应用程序的。例如,安全视频连接可以使用自定义丢帧算法。 (2认同)

Fra*_*mas 9

DTLS是TLS over UDP(数据报协议)的实现.每个维基百科,TLS使用TCP,DTLS使用UDP,因此所有经典差异都适用.UDP通信作为分组流存在,没有排序,传递可靠性或流量控制.使用数据报协议的应用程序需要确保它们可以在内部处理这些问题.

https://en.wikipedia.org/wiki/Transport_Layer_Security#Applications_and_adoption

http://www.diffen.com/difference/TCP_vs_UDP

  • 实际上DTLS实现应该解决UDP问题,而不是应用程序. (3认同)