答案 0 :(得分:27)
基本上DTLS是通过数据报(UDP,DCCP等)构建TLS
DTLS与TLS类似,只是DTLS必须解决两个问题:数据包丢失和重新排序。 DTLS实现
有关详细信息,请参阅RFC 6347。
答案 1 :(得分:8)
DTLS是UDP上的TLS(数据报协议)的实现。每个维基百科,TLS使用TCP,DTLS使用UDP,因此所有经典差异都适用。 UDP通信作为分组流存在,没有排序,传递可靠性或流量控制。使用数据报协议的应用程序需要确保它们可以在内部处理这些问题。
https://en.wikipedia.org/wiki/Transport_Layer_Security#Applications_and_adoption
答案 2 :(得分:1)
一个区别是,由于通过UDP,因此不允许流密码:
4.1.2.2。空或标准流密码
DTLS NULL密码的执行与TLS 1.2 NULL完全相同 密码。
TLS 1.2中描述的唯一流密码是RC4,不能 随机访问。 RC4不得与DTLS一起使用。
答案 3 :(得分:1)
DTLS与传输层安全性(TLS)协议之间存在关键区别,应用程序程序员需要意识到其他答案未命中/暗示不存在!
DTLS协议为数据报协议提供通信隐私。与本文撰写之时的最高评分答案相反(archive),DTLS 不是不是基于UDP(或通常为数据报协议)的TLS实现。它包括一个非常类似于TLS的握手的实现,已对其进行了修改以适用于数据报协议。该实现确实处理了数据包重新排序和丢失的问题,但对于用于DTLS握手(和密码选择)的数据包,仅 。换句话说,这些这些数据包传递 的“航班”是可靠传递的。但是,包含有效负载(应用程序数据)的DTLS数据包传递其有效负载的方式没有封装它们的DTLS数据包(通常为UDP)可靠。
此外,虽然DTLS协议(v1.2)是从TLS协议(v1.2)和 claims 派生出来的,以“提供等效的安全保证”,但它却没有。2。早在2013年,研究人员就发现了DTLS实现和DTLS协议本身的主要安全缺陷,至少在GnuTLS和OpenSSL实现中,这些缺陷已得到纠正。2
最后,OP询问使用TLS和DTLS时应用程序流如何不同。 TLS旨在通过端到端的经过身份验证的加密可靠地传递数据流。 DTLS用于端对端经过身份验证和加密的应用程序数据的传递,但是其延迟比保证所有应用程序数据传递的延迟低。这就是为什么DTLS用于保护流传输应用程序的安全性的原因,流传输应用程序的损失不如延迟重要, VoIP,实时视频源和MMO游戏。
PS:DTLS 1.3正在开发中。3