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:
DTLS 1.0 is based on TLS 1.1, DTLS 1.2 is based on TLS 1.2, and DTLS 1.3 is based on TLS 1.3. There is no DTLS 1.1 because this version-number was skipped in order to harmonize version numbers with TLS. Like previous DTLS versions, DTLS 1.3 is intended to provide "equivalent security guarantees with the exception of order protection/non-replayability".

Implementations

Libraries

ImplementationDTLS 1.0DTLS 1.2DTLS 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
ImplementationDTLS 1.0DTLS 1.2DTLS 1.3

Applications

Vulnerabilities

In February 2013 two researchers from Royal Holloway, University of London discovered a timing attack which allowed them to recover plaintext from a DTLS connection using the OpenSSL or GnuTLS implementation of DTLS when Cipher Block Chaining mode encryption was used.