Разница между DTLS и TLS -- ssl поле с участием dtls пол Связанный проблема

Difference between DTLS and TLS


41
vote

проблема

русский
  1. Что такое функциональная разница между TLS и DTLS?
  2. Как поток / переговоры приложения отличаются при использовании TLS против DTLS?
Английский оригинал
  1. What is the functional difference between TLS and DTLS?
  2. How does application flow/negotiation differ while using TLS vs DTLS?
</div
     

Список ответов

35
 
vote

в основном DTLS - построить TLS над дейтаграммой (UDP, DCCP и т. д.)

DTLS аналогичен TLS намеренно, за исключением того, что DTLS должен решить две проблемы: утерян и переупорядочение пакета. DTLS реализует

  1. пакетная повторная передача
  2. Назначение порядкового номера в рукопожатии
  3. Обнаружение воспроизведения.

Смотрите RFC 6347 для деталей.

 

Basically DTLS is to construct TLS over datagram (UDP, DCCP, etc.)

DTLS is similar to TLS intentionally except that DTLS has to solve two problems: packet lost and reordering. DTLS implements

  1. packet retransmission
  2. assigning sequence number within the handshake
  3. replay detection.

See RFC 6347 for details.

</div
 
 
   
   
17
 
vote

Идея заключается в том, что DTLS - это TLS, поскольку UDP - TCP, как можно больше.

см. см. https://datatracker.ietf.org/doc/draft -ietf-TLS-DTLS13 / который, вероятно, устарел RFC 6347 для получения подробной информации о Спецификация, а также ссылки на его обсуждения.

Существуют ключевые различия между DTLS и протоколом безопасности транспортных слоев (TLS), которые программист прикладного программиста должен знать, что другие ответы пропущены / подразумевают не существуют!

Протокол DTLS обеспечивает конфиденциальность связи для протоколов дейтаграмм. Вопреки в исходных ответах на топ-номинал на ссылке (Архив) , dtls не реализация (или «конструкция») TLS через UDP (или протоколы дейтаграмма в целом), и , обнаружение воспроизведения представляет собой обязательную функцию TLS, но необязательно в Dtls. DTLS включает в себя реализацию очень TLS, подобных TLS рукопожатие , модифицированное для работы над дейтаграммой протоколов. Реализация выполняет решение проблем переупорядочения и потери пакета, но только для пакетов, используемых для рукопожатия DTLS (и выделение шифров). Другими словами, «рейсы», которые эти пакеты доставляют , являются надежно доставлены. Тем не менее, пакеты DTLS, содержащие полезную нагрузку (данные приложения), не могут доставлять свою полезную нагрузку не более надежно, чем пакеты DTLS (обычно UDP), которые они инкапсулируют их.

Кроме того, в то время как протокол DTLS (V1.2) получен из протокола TLS (V1.2), так и претензий для «обеспечения эквивалентных гарантий безопасности», это не ... 2 обратно в 2013 году, исследователи определили основные недостатки безопасности В реализациях DTLS, так и в сам протокол DTLS, которые были исправлены, по меньшей мере, в реализациях Gnutls и OpenSSL. 2 Кроме того, DTLS не гарантирует не воспроизводимости.

Наконец, OP спрашивает, как потоки приложений отличаются при использовании TLS VS DTLS. TLS предназначен для надежного доставки потока данных и с аутентифицированным шифрованием, с концами к концу. DTLS предназначен для доставки данных приложения, которые аутентифицированы и зашифрованы с конца до конца, но с более низкой задержкой, чем могут быть достигнуты, когда все данные данных приложения гарантированы. Вот почему DTLS используется для обеспечения потоковых приложений, где убытки менее важны, чем задержка, например, VoIP, Live Video Feeds и MMO Gaming.

PS: DTLS 1.3 сделано /, вероятно, будет опубликовано как RFC к тому времени, когда вы прочитали это. 3

pps: О, и если это стоило читать, не пропустите RFC 7457 , "Суммируя известные атаки на безопасность транспортных слоев (TLS) и Datagram TLS (DTLS)». Я удивлен DTLS 1.3 (в любом случае окончательный проект) не относится к нему (например, из раздела соображений безопасности), и ни один из TLS 1.3 SPECT!

 

The idea is that DTLS is to TLS as UDP is to TCP, as much as possible.

See https://datatracker.ietf.org/doc/draft-ietf-tls-dtls13/ which will likely obsolete RFC 6347 for details on the specification, as well as links to discussions thereof.

There are key differences between DTLS and the Transport Layer Security (TLS) protocol that the application programmer needs to be aware of that other answers miss/imply do not exist!

The DTLS protocol provides communications privacy for datagram protocols. Contrary to the extant top-rated answers as of this writing(archive), DTLS is not an implementation (or "construct") of TLS over UDP (or datagram protocols in general), and, replay detection is a required feature of TLS, but optional in DTLS. DTLS includes an implementation of a very TLS-like handshake, modified to work over datagram protocols. The implementation does handle the problems of packet reordering and loss, but only for the packets used for the DTLS handshake (and cipher selection). In other words, the "flights" that these packets deliver are delivered reliably. However, the DTLS packets containing payload (application data) may deliver their payload no more reliably than the DTLS packets (typically UDP) that encapsulate them.

Furthermore, while the DTLS protocol (v1.2) is derived from the TLS protocol (v1.2) and claims to "provide equivalent security guarantees", it does not.2 Back in 2013, researchers identified major security shortcomings in both DTLS implementations and in the DTLS protocol itself, that have since been rectified, at least in GnuTLS and OpenSSL implementations.2 In addition, DTLS does not guarantee non-replayability.

Finally, the OP asks how application flows differ while using TLS vs DTLS. TLS is intended to deliver a stream of data reliably and with authenticated encryption, end-to-end. DTLS is intended for the delivery of application data that is authenticated and encrypted end-to-end, but with lower latency than can be achieved when all application data delivery is guaranteed. This is why DTLS is used to secure streaming applications where losses are less important than latency, e.g. VoIP, live video feeds and MMO gaming.

PS: DTLS 1.3 is done/will probably have been published as an RFC by the time you read this.3

PPS: Oh, and if this was worth reading, don't miss RFC 7457, "Summarizing Known Attacks on Transport Layer Security (TLS) and Datagram TLS (DTLS)". I'm surprised DTLS 1.3 (the final draft anyway) doesn't refer to it (such as from its Security Considerations section) and neither does the TLS 1.3 spec!

</div
 
 
   
   
9
 
vote

dtls - это реализация TLS по поводу UDP (протокол дейтаграмма). Для Wikipedia TLS использует TCP, а DTLS использует UDP UDP, поэтому все классические различия применяются. Коммуникации UDP существуют как потоки пакетов без упорядочения, надежности доставки или контроля потока. Приложения, использующие протоколы Datagram, должны убедиться, что они могут справиться с этими проблемами внутри.

https://en.wikipedia.org/wiki/transport_layer_security#applations_and_adoption

http://www.diffen.com/difference/tcp_vs_udp

 

DTLS is an implementation of TLS over UDP (a datagram protocol). per wikipedia, TLS uses TCP, and DTLS uses UDP, so all the classic differences apply. UDP communications exist as streams of packets with no ordering, delivery reliability, or flow control. applications that use datagram protocols need to make sure they can handle these concerns internally.

https://en.wikipedia.org/wiki/Transport_Layer_Security#Applications_and_adoption

http://www.diffen.com/difference/TCP_vs_UDP

</div
 
 
 
 
2
 
vote

Одно отличие состоит в том, что из-за превышения UDP потоковых шифров не допускается:

4.1.2.2. Null или стандартный потоковый шифр

NULL CHIPH DTLS выполняется точно так, как TLS 1.2 NULL шифр.

единственный поток шифра, описанный в TLS 1.2, является RC4, который не может быть случайно доступен. RC4 не должен использоваться с DTLS.

 

One difference is that, due to being over UDP, stream ciphers are not allowed:

4.1.2.2. Null or Standard Stream Cipher

The DTLS NULL cipher is performed exactly as the TLS 1.2 NULL cipher.

The only stream cipher described in TLS 1.2 is RC4, which cannot be randomly accessed. RC4 MUST NOT be used with DTLS.

</div
 
 

Связанный проблема

12  JDK / JRE Исходный код с сопоставлением исходного кода JSSE (SSL) и соответствующим Runnable JDK / JRE?  ( Jdk jre source code with matching jsse ssl source code and matching runnable j ) 
Я видел Где найти исходный код Java 6 JSSE / JCE ? . и спросил вопрос самому Как получить JRE / JDK с сопоставлением источника? но я не Т любо же из них бы...

3  Можно ли генерировать сертификат SSL в браузере?  ( Is it possible to generate a ssl certificate in the browser ) 
Для интерфейса администрирования мы хотим реализовать аутентификацию клиента с SSL. Идея состоит в том, что во время процесса регистрации каждый пользователь ...

1  libssh2 канал ssl bio использование  ( Libssh2 channel ssl bio usage ) 
Я пишу небольшой проект FTP для моего собственного развлечения, который должен иметь возможность делать 4 вещи: подключиться прямо к FTP Подключиться пря...

0  Google App Двигатель пользовательских домена SSL с модулями  ( Google app engine custom domain ssl with modules ) 
У меня есть несколько модулей для моего приложения приложения Google App. В разделе «Настройки приложений» из консоли разработчиков я добавил пользовательские...

1  Как удалить сайт в IIS, когда у него есть сертификат SSL подстановки?  ( How do i delete a site in iis when it has a wildcard ssl certificate ) 
Мы работаем над решением SaaS и хотели бы автоматизировать создание и удаление системных экземпляров. Один шаг в этом процессе - удалить сайт IIS, но оно оказ...

2  Google API с использованием VEPTECT, SSL ERROR  ( Google api using signet ssl error ) 
Я делаю RUBY на приложении Rails, и я пытаюсь использовать Google Plus API для пользователя для пользователя. Для этого я использую Signet Библиотека вспомо...

4  Обнаружив, который SSL / TLS версии и шифры были согласованы с помощью браузера  ( Discovering which ssl tls version and ciphers have been negotiated by a browser ) 
<Р> Есть ли способ, чтобы обнаружить внутри браузера (любой браузер с плагином, если требуется), какую версию SSL / TLS был использован для SSL сессии, и какие...

0  Google Cloud SQL с использованием неправильного SSL CERT для установления соединения сокета из Kubernetes  ( Google cloud sql using wrong ssl cert to to establish socket connection from kub ) 
У нас есть 2 кластера на ГК, кластере постановки и производства. Мы устанавливаем наш производственный кластер для использования Cloud-SQL-прокси в качестве P...

3  SSL рукопожатие + WCF + ведение журнала  ( Ssl handshake wcf logging ) 
У меня есть служба WCF, использующая протокол HTTPS. Я использую сертификаты для аутентификации клиента, а также для безопасности на уровне транспорта. Я хо...

6  Unalize.net DPM не удается с SSL SHA-256 SSL  ( Authorize net dpm fails with an sha 256 ssl cert ) 
Я использую использование authorize.net dpm (метод прямой пост) Интеграция на одном конкретном система электронной коммерции, которую мне удается. Мы обно...

0  Создание файла JKS из кодированной строки Base64  ( Create jks file from base64 encoded string ) 
У меня есть кодированная строка Base64, которая мне нужно преобразовать в файл JKS. Строка - это просто закодированное содержимое файла JKS, которым мне нужно...

1  Нераспознанное SSL-сообщение, открытое текстовое соединение? на Дженкинс  ( Unrecognized ssl message plaintext connection on jenkins ) 
Мы строили проект Maven, используя Hithub Hithub Hitherleaf Demosite, Это было здание нормально, и мы столкнулись с проблемами только на развертывании его на ...

6  Почему SSLSocketFactory не хватает SetEnabledCiPHERSTESS?  ( Why does sslsocketfactory lack setenabledciphersuites ) 
<Код> SSLSocketFactory предоставляет <код> getDefaultCipherSuites (шифры, которые включены по умолчанию на розетках) и <код> getSupportedCipherSuites (шифр...

18  Создание сертификатов на стороне клиента в браузере и подписи на сервере  ( Generating client side certificates in browser and signing on server ) 
Можно ли запросить генерацию клиентской клавиатуры в браузере и отправить открытый ключ к серверу CA, который должен быть подписан прозрачно? Затем установка ...

18  Есть ли в любом случае, чтобы указать базовые Zonsraints для SEPenSSL CERT через командную строку  ( Is there anyway to specify basicconstraints for openssl cert via command line ) 
Я хотел бы включить ограничение <код> basicConstraints=CA:TRUE,pathlen:0 в моем самих подписанном скрипте создания CA, и он будет очень долго упростить мою п...

Связанный проблема

12  JDK / JRE Исходный код с сопоставлением исходного кода JSSE (SSL) и соответствующим Runnable JDK / JRE? 
3  Можно ли генерировать сертификат SSL в браузере? 
1  libssh2 канал ssl bio использование 
0  Google App Двигатель пользовательских домена SSL с модулями 
1  Как удалить сайт в IIS, когда у него есть сертификат SSL подстановки? 
2  Google API с использованием VEPTECT, SSL ERROR 
4  Обнаружив, который SSL / TLS версии и шифры были согласованы с помощью браузера 
0  Google Cloud SQL с использованием неправильного SSL CERT для установления соединения сокета из Kubernetes 
3  SSL рукопожатие + WCF + ведение журнала 
6  Unalize.net DPM не удается с SSL SHA-256 SSL 
0  Создание файла JKS из кодированной строки Base64 
1  Нераспознанное SSL-сообщение, открытое текстовое соединение? на Дженкинс 
6  Почему SSLSocketFactory не хватает SetEnabledCiPHERSTESS? 
18  Создание сертификатов на стороне клиента в браузере и подписи на сервере 
18  Есть ли в любом случае, чтобы указать базовые Zonsraints для SEPenSSL CERT через командную строку