Datagram Transport Layer Security
Datagram Transport Layer Security is a communications protocol providing security to datagram-based applications by allowing them to communicate in a way designed to prevent eavesdropping, tampering, or message forgery. The DTLS protocol is based on the stream-oriented Transport Layer Security protocol and is intended to provide similar security guarantees. The DTLS protocol datagram preserves the semantics of the underlying transport—the application does not suffer from the delays associated with stream protocols, but because it uses User Datagram Protocol or Stream Control Transmission Protocol, the application has to deal with packet reordering, loss of datagram and data larger than the size of a datagram network packet. Because DTLS uses UDP or SCTP rather than TCP it avoids the TCP meltdown problem when being used to create a VPN tunnel.
Definition
The following documents define DTLS:- from May 2008 for use with Datagram Congestion Control Protocol
- from March 2009 for use with Control And Provisioning of Wireless Access Points
- from May 2010 for use with Secure Real-time Transport Protocol subsequently called DTLS-SRTP in a draft with Secure Real-Time Transport Control Protocol
- from January 2011 for use with Stream Control Transmission Protocol encapsulation
- from January 2012 defining DTLS 1.2
- from April 2022 defining DTLS 1.3
Implementations
Libraries
| Implementation | DTLS 1.0 | DTLS 1.2 | DTLS 1.3 |
| Botan | |||
| cryptlib | |||
| GnuTLS | |||
| Java Secure Socket Extension | |||
| LibreSSL | |||
| libsystools | |||
| MatrixSSL | |||
| mbed TLS | |||
| Network Security Services | |||
| OpenSSL | |||
| PyDTLS | |||
| Python3-dtls | |||
| RSA BSAFE | |||
| s2n | |||
| Schannel XP/2003, Vista/2008 | |||
| Schannel 7/2008R2, 8/2012, 8.1/2012R2, 10 | |||
| Schannel 10 (1607), 2016 | |||
| Secure Transport OS X 10.2–10.7 / iOS 1–4 | |||
| Secure Transport OS X 10.8–10.10 / iOS 5–8 | |||
| SharkSSL | |||
| tinydtls | |||
| Waher.Security.DTLS | |||
| wolfSSL | |||
| @nodertc/dtls | |||
| java-dtls | |||
| pion/dtls | |||
| californium/scandium | |||
| SNF4J | |||
| Implementation | DTLS 1.0 | DTLS 1.2 | DTLS 1.3 |
Applications
- Cisco AnyConnect VPN Client uses TLS and invented DTLS-based VPN.
- OpenConnect is an open source AnyConnect-compatible client and ocserv server that supports TLS.
- Cisco InterCloud Fabric uses DTLS to form a tunnel between private and public/provider compute environments.
- Cato Networks utilizes DTLS v1.2 for the underlay tunnel used by both the Cato Socket and Cato ZTNA client when forming tunnels to the Cato POPs and when forming off-cloud tunnels between Cato sockets.
- ZScaler tunnel 2.0 for ZScaler Internet Access uses DTLS for tunneling. ZScaler Private Access does not support DTLS
- F5 Networks Edge VPN Client uses TLS and DTLS.
- Fortinet's SSL VPN and Array Networks SSL VPN also use DTLS for VPN tunneling.
- Citrix Systems NetScaler uses DTLS to secure UDP.
- Web browsers: Google Chrome, Opera and Firefox support DTLS-SRTP for WebRTC. Firefox 86 and onward does not support DTLS 1.0.
- Remote Desktop Protocol 8.0 and onwards.