Введение
Протокол связи Datagram Transport Layer Security (DTLS) — это протокол связи, обеспечивающий безопасность приложений, работающих с датограммами, позволяя им обмениваться данными таким образом, чтобы предотвратить перехват, изменение или подделку сообщений. Протокол DTLS основан на протоколе Transport Layer Security (TLS), ориентированном на потоки данных, и призван предоставлять сопоставимые гарантии безопасности. DTLS сохраняет семантику базового транспортного протокола, что позволяет приложению избежать задержек, характерных для потоковых протоколов. Однако, поскольку DTLS использует UDP или SCTP, приложение должно обрабатывать переупорядочивание пакетов, потерю датограмм и данные, превышающие размер сетевого пакета датограмм. Использование UDP или SCTP вместо TCP позволяет DTLS избежать "проблемы снижения производительности TCP", возникающей при создании VPN-туннеля.
Datagram Transport Layer Security (DTLS) 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 (TLS) 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 UDP or SCTP, 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.
Библиотеки
+ Библиотечная поддержка DTLS Реализация DTLS 1.0 libsystools ✔ MatrixSSL mbed TLS (ранее PolarSSL) OpenSSL PyDTLS ✔ ✔ Python3 dtls ✔ ✔ RSA BSAFE s2n Schannel XP/2003, Vista/2008 Schannel 7/2008R2, 8/2012, 8.1/2012R2, 10 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 (ранее CyaSSL) @nodertc/dtls java dtls pion/dtls (Go) ✔ californium/scandium (Java) ✔ SNF4J (Java) ✔ ✔ Реализация DTLS 1.0 DTLS 1.2 DTLS 1.3
Приложения
Клиент Cisco AnyConnect VPN использует TLS и разработал VPN на основе DTLS. OpenConnect – это клиент с открытым исходным кодом, совместимый с AnyConnect, и сервер ocserv, поддерживающий (D)TLS. Cisco InterCloud Fabric использует DTLS для создания туннеля между частной и общедоступной/поставленной вычислительной средой. ZScaler tunnel 2.0 использует DTLS для туннелирования. Клиент VPN F5 Networks Edge использует TLS и DTLS. Citrix Systems NetScaler использует DTLS для защиты UDP. Веб-браузеры: Google Chrome, Opera и Firefox поддерживают DTLS SRTP для WebRTC. Начиная с Firefox 86, поддержка DTLS 1.0 отсутствует. Протокол удаленного рабочего стола версии 8.0 и выше.
Уязвимости
В феврале 2013 года два исследователя из Royal Holloway, University of London обнаружили атаку по времени, которая позволила им восстановить (части) открытого текста из DTLS-соединения, используя реализацию DTLS в OpenSSL или GnuTLS при шифровании в режиме Cipher Block Chaining.