- TLS和DTLS之间的功能区别是什么?
- 在使用TLS与DTLS时,应用程序流/协商如何不同?
DTLS的基本概念是在数据报(UDP、DCCP等)上构建TLS。
DTLS与TLS非常相似,但有两个问题需要解决:数据包丢失和乱序。DTLS实现了以下功能:
详见RFC 6347。
思想是将DTLS视为UDP与TCP的TLS,尽可能地保持一致。
有关规范的详细信息,请参见https:/ /datatracker.ietf.org/doc/draft-ietf-tls-dtls13/,该规范很可能会取代RFC 6347 ,并链接到相关讨论。
DTLS与应用程序员需要了解的传输层安全(TLS)协议之间存在关键差异,而其他答案则遗漏或暗示不存在这种差异!
DTLS协议为数据报协议提供通信隐私。与此写作时最受欢迎的答案相反(存档),DTLS不是TLS在UDP(或数据报协议)上的实现或“构造”,而且回放检测是TLS的必需特性,但在DTLS中是可选的。DTLS包括一个类似TLS的握手实现,经过修改以适应数据报协议。该实现确实处理了数据包重排序和丢失的问题,但仅针对用于DTLS握手(和密码选择)的数据包。换句话说,这些数据包传送的“流程”是可靠的。然而,包含有效负载(应用程序数据)的DTLS数据包可能与封装它们的DTLS数据包(通常是UDP)一样不可靠。
此外,虽然DTLS协议(v1.2)源于TLS协议(v1.2),并声称“提供相同的安全保障”,但实际上并非如此。2 早在2013年,研究人员就发现了DTLS实现和协议本身存在重大安全缺陷,至少在GnuTLS和OpenSSL实现中已经得到修复。2 此外,DTLS不能保证不可重放性。最后,OP问道在使用TLS与DTLS时应用程序流程有何不同。 TLS旨在可靠地传递数据流并进行端到端身份验证加密。 DTLS旨在传递认证和加密的应用程序数据,并具有比保证所有应用程序数据传输更低的延迟。这就是为什么DTLS用于安全流应用程序,其中丢失比延迟更不重要,例如VoIP,实时视频和MMO游戏。
PS:DTLS 1.3已完成/可能已经由RFC发布,当您阅读此文时。3
附言:如果这篇文章值得一读,请不要错过RFC 7457,“总结已知的传输层安全协议(TLS)和数据报文TLS(DTLS)攻击”。我对DTLS 1.3(至少是最终草案)没有提及它感到惊讶(例如从其安全考虑部分引用它),(建议如此),而TLS 1.3规范也没有提到!
DTLS是UDP上TLS的一种实现(数据报协议)。根据维基百科,TLS使用TCP,而DTLS使用UDP,因此所有经典的差异都适用。UDP通信存在于无序的数据包流中,没有排序、传递可靠性或流量控制。使用数据报协议的应用程序需要确保它们可以在内部处理这些问题。
https://en.wikipedia.org/wiki/Transport_Layer_Security#Applications_and_adoption
一个区别是,由于消息传输使用了UDP协议,所以流密码不允许使用:
4.1.2.2. 空或标准流密码
DTLS空密码的执行方式与TLS 1.2空密码完全相同。
TLS 1.2中唯一描述的流密码是RC4,但它无法随机访问,因此不能与DTLS一起使用。