【问题标题】:Difference between DTLS and TLSDTLS 和 TLS 之间的区别
【发布时间】:2013-03-11 04:38:02
【问题描述】:
  1. TLS 和 DTLS 之间的功能区别是什么?
  2. 使用 TLS 与 DTLS 时应用程序流/协商有何不同?

【问题讨论】:

    标签: ssl dtls


    【解决方案1】:

    基本上DTLS就是在数据报(UDP、DCCP等)上构建TLS

    DTLS 有意与 TLS 相似,只是 DTLS 必须解决两个问题:数据包丢失和重新排序。 DTLS 实现

    1. 数据包重传
    2. 在握手中分配序列号
    3. 重放检测。

    详情请见RFC 6347

    【讨论】:

    • 小笨蛋,来自您提到的 RFC:“当 DTLS 协议用于保护通信时,此类应用程序的行为不会改变,因为 DTLS 协议不会补偿丢失或重新排序的数据流量。”
    • 错误,随后发现的安全漏洞表明这个答案是安全严重错误的;看看我的新答案。
    【解决方案2】:

    想法是,DTLS 之于 TLS 就如同 UDP 之于 TCP,尽可能地。

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

    DTLS 和传输层安全 (TLS) 协议之间存在关键区别,应用程序员需要注意其他答案遗漏/暗示不存在!

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

    此外,虽然 DTLS 协议 (v1.2) 源自 TLS 协议 (v1.2) 并且声称“提供等效的安全保证”,但 它没有 em>.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(无论如何是最终草案)没有引用它(例如从其安全考虑部分)(Suggested),TLS 1.3 规范也没有!

    【讨论】:

    • 这是正确的答案,只保证 TLS 协议本身的排序,而不是有效负载。您不想为客户端选择可靠的协议实现,它可能是许多不同的算法,并且可能是特定于应用程序的。例如,安全视频连接可以使用自定义丢帧算法。
    • 确实 - 同一流中的不同 UDP 数据包甚至可能对或多或少重要的内容具有不同的优先级标志设置 - 尽管可能缺乏/需要研究网络和骨干是否/如何实际支付注意这些标志 - en.wikipedia.org/wiki/Type_of_service - 最后我知道他们大多没有。由于实际丢包的是网络,而不是应用程序,因此这很关键。
    【解决方案3】:

    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 问题,而不是应用程序。
    【解决方案4】:

    一个区别是,由于是通过 UDP,流密码是不允许的:

    4.1.2.2。空或标准流密码

    DTLS NULL 密码的执行与 TLS 1.2 NULL 完全相同 密码。

    TLS 1.2 中描述的唯一流密码是 RC4,它不能 随机访问。 RC4 不得与 DTLS 一起使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2020-05-10
      相关资源
      最近更新 更多