【发布时间】:2013-03-11 04:38:02
【问题描述】:
- TLS 和 DTLS 之间的功能区别是什么?
- 使用 TLS 与 DTLS 时应用程序流/协商有何不同?
【问题讨论】:
【问题讨论】:
基本上DTLS就是在数据报(UDP、DCCP等)上构建TLS
DTLS 有意与 TLS 相似,只是 DTLS 必须解决两个问题:数据包丢失和重新排序。 DTLS 实现
详情请见RFC 6347。
【讨论】:
想法是,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 规范也没有!
【讨论】:
DTLS 是 TLS over UDP(一种数据报协议)的实现。根据维基百科,TLS 使用 TCP,而 DTLS 使用 UDP,因此所有经典差异均适用。 UDP 通信以数据包流的形式存在,没有排序、传递可靠性或流控制。使用数据报协议的应用程序需要确保它们可以在内部处理这些问题。
https://en.wikipedia.org/wiki/Transport_Layer_Security#Applications_and_adoption
【讨论】:
一个区别是,由于是通过 UDP,流密码是不允许的:
4.1.2.2。空或标准流密码
DTLS NULL 密码的执行与 TLS 1.2 NULL 完全相同 密码。
TLS 1.2 中描述的唯一流密码是 RC4,它不能 随机访问。 RC4 不得与 DTLS 一起使用。
【讨论】: