Що таке Datagram Transport Layer Security (DTLS)
Що таке Datagram Transport Layer Security (DTLS)?
Протокол DTLS (Datagram Transport Layer Security) (RFC 6347) заснований на потоковому протоколі Transport Layer Security (TLS) і забезпечує безпечну взаємодію для клієнт-серверних програм, запобігаючи фальсифікації, підслуховування та підробку повідомлень.
Чому DTLS це не той же TLS, що працює з датаграмами.
Відповідь дуже проста, тому що при використанні такого транспорту, як UDP, пакети можуть загубитися або переплутатися, в той час як TCP забезпечує обов'язкову доставку пакетів від джерела до одержувача. Взявши за основу протокол TCP і трохи модернізувавши його, вийшов протокол DTLS.
Проблеми, що виникають при використанні TLS поверх UDP:
- У протоколі TLS існує перевірка цілісності пакетів, що залежить від порядкового номера пакета. Наприклад, якщо губиться пакет N, перевірка на цілісність запис N + 1 провалиться, т.к. порядок пакетів буде порушено. Також пакети можуть переплутатися. Наприклад, першим прийде пакет N+1, а вже за ним прийде пакет N, перевірка на цілісність знову завершиться невдачею
- Пакет може кілька разів дійти до отримувача
- Перед тим, як розпочати обмін даними через TLS, джерело та одержувач повинні узгодити параметри з'єднання, а саме: версія протоколу, спосіб шифрування даних, а також перевірити сертифікати, якщо це необхідно. Така схема називається TLS Handshake. Виникають проблеми, якщо ця схема порушується, тобто. деякі з пакетів загубляться
- Розмір повідомлення TLS Handshake може займати багато місця в пакеті. При цьому максимальний розмір UDP обмежений 1500 байт.
ПротоколDTLS вирішує вищезгадані проблеми.
- Додано явні порядкові номери у записі
- Використання таймера повторної передачі для виключення втрати пакетів
- Для вирішення проблеми обмеження довжини пакетів UDP активно використовується фрагментація даних. Кожне повідомлення DTLS Handshake має містити зміщення фрагмента та довжину фрагмента
- Збереження інформації про отримані раніше пакети, так що якщо пакет був раніше отриманий, він буде відкинутий
Клієнти автоматично генерують свої підписані сертифікати для кожного нового підключення. Це означає, що немає перевірки ланцюжка сертифікатів. Самі сертифікати неможливо знайти використані для аутентифікації партнера, т.к. вони є самопідписаними. Таким чином, DTLS забезпечує шифрування та цілісність доставки пакетів, але саму аутентифікацію необхідно робити у додатку.
DTLS, також як SRTP, - це один із безпечних протоколів, що використовуються для технології WebRTC.
Бібліотеки, що підтримують протокол DTLS 1.2:Botan, GnuTLS, MatrixSSL, OpenSSL, wolfSSL