TCP 프로토콜 위에서 구현된 보안 소켓에 대한 내용은 TLS 문서 참고하십시오.
1. 개요
Datagram Transport Layer Security, DTLSUDP에서 SSL 기술이 구현된 암호화 프로토콜이다.
2. 배경
TCP는 종단간 흐름 제어 및 무결성 보장을 특징으로 하는 전송 계층의 프로토콜이다. 그러나 시간이 지날수록 전 세계의 인터넷 속도와 트래픽은 높아지는 데에 반해서 서버와 클라이언트 간의 오버헤드 문제가 더욱 심각해졌다. 이는 TCP에서 쓰인 알고리즘이 컴퓨팅 파워의 발전을 반영하지 못해 비효율적이기 때문이다. 그래서 TCP에서 구현된 웹 프로토콜인 HTTP도 연결 수립 과정에서 상당한 지연 시간을 발생시킨다.한편, 2010년대에 들어 보다 빠른 웹 프로토콜을 구현하기 위하여 UDP를 기반으로 하는 QUIC와 HTTP/3가 등장하였다. UDP 기반의 웹 프로토콜은 연결성 보장과 관련하여 트렌드에 맞게 구현함으로써 효율적인 성능과 무결성 보장을 가능케 한다. 그러나 이들 프로토콜도 암호화 프로토콜로써 TLS를 디폴트로 채택하였다. 웹 데이터 전송은 UDP로 하지만 암호화 관련 통신은 여전히 TCP를 이용하는 셈이다. QUIC 조차도 암호화는 TCP 기반의 TLS를 사용해야 했고 TLS 핸드쉐이크로 인한 병목 현상이 문제가 되었다. QUIC를 기반으로 하는 HTTP/3가 표준화가 이루어지는 현재 시점에서 이 문제를 해결해야 할 필요성이 생겼다.
DTLS는 TLS의 기능을 UDP 계층 위에 그대로 구현한 암호화 프로토콜로 UDP의 장점인 성능상의 이점을 암호화 핸드쉐이크 과정에서도 극대화할 수 있다. DTLS는 암호화 알고리즘과 헤더 구조 등은 TLS와 동일하며 TCP 대신에 UDP를 사용함으로써 더욱 빠른 암호화 과정을 보장한다.
3. 표준
DTLS는 TLS 1.1이 등장한 시기부터 표준화가 시작되었다. DTLS 소켓을 이용하는 HTTPS 프로토콜은 UDP 443 포트를 사용한다.3.1. DTLS 1.0
DTLS 1.0은 TLS 1.1의 기술이 UDP 소켓에서 구현되는 표준이다. RFC 43473.2. DTLS 1.2
DTLS 1.2는 TLS 1.2의 기술이 UDP 소켓에서 구현되는 표준이다. RFC 63473.3. DTLS 1.3
DTLS 1.3은 TLS 1.3의 기술이 UDP 소켓에서 구현되는 표준이다. RFC 91473.4. DNS over DTLS
DNS over DTLS (DNSoD)는 DTLS 소켓을 이용하여 DNS 프로토콜을 구현하는 표준이다. UDP 853 포트를 사용한다. RFC 80943.5. QUIC over DTLS
구글 자체 프로토콜이였던 QUIC가 HTTP/3로 표준화됨에 따라서 IETF 측에서는 구글이 독자적으로 개발했던 QUIC 프로토콜의 파편화된 구현 알고리즘을 기존의 다른 프로토콜과 상호운용이 용이하도록 대폭 수정하는 과정을 진행중이다. QUIC 내에서 IETF 표준 대비 가장 큰 파편화를 보인 부분이 보안 소켓이다. IETF는 구글이 자체적으로 개발한 보안 소켓을 IETF 표준 프로토콜인 DTLS로 대체하는 QUIC over DTLS 표준을 만들고 있다. #4. 호환성
아직까지 DTLS 프로토콜을 지원하는 유틸리티나 프로그램은 많지 않다.- Chrome: DTLS 1.0을 지원했으나 TLS 1.1과 함께 deprecated 되었다.
- OpenSSL: 1.0.2버전부터 DTLS1.2를 지원한다.
- NGINX: 시범적으로 DTLS 1.2를 지원하고 있다.