Linux

Каковы точные различия на уровне протокола между SSL и TLS?

В чем разница в протоколах между SSL и TLS?

Действительно ли разница достаточно велика, чтобы оправдать изменение названия? (по сравнению с названием «SSLv4» или «SSLv5» для более новых версий TLS).

Ответ 1

SSLv2 и SSLv3 совершенно разные (и оба в настоящее время считаются небезопасными). SSLv3 и TLSv1.0 очень похожи, но имеют несколько различий.

Вы можете рассматривать TLSv1.0 как SSLv3.1 (на самом деле именно это и происходит в рамках обмена записями). Просто проще сравнивать TLSv1.0 с TLSv1.1 и TLSv1.2, потому что все они были отредактированы в IETF и имеют более или менее одинаковую структуру. SSLv3 редактировался другой организацией (Netscape), поэтому заметить различия немного сложнее.

Вот несколько отличий, но я сомневаюсь, что смогу перечислить их все:

  1. В сообщении ClientHello (первое сообщение, отправляемое клиентом, чтобы инициировать соединение) версия {3,0} для SSLv3, {3,1} для TLSv1.0 и {3,2} для TLSv1.1.

  2. ClientKeyExchange отличается.

  3. MAC/HMAC различаются (TLS использует HMAC, а SSL использует более раннюю версию HMAC).

  4. Различается деривация ключа.

  5. Данные клиентского приложения могут быть отправлены сразу после отправки сообщения SSL/TLS Finished в SSLv3. В TLSv1 оно должно дождаться сообщения Finished от сервера.

  6. Список наборов шифров отличается (и некоторые из них были переименованы из SSL_* в TLS_*, сохранив тот же идентификационный номер).

  7. Также есть различия относительно нового расширения re-negotiation.

Я бы настоятельно рекомендовал книгу Эрика Рескорла SSL and TLS: Designing and Building Secure Systems, Addison-Wesley, 2001 ISBN 0-201-61598-3, если вы действительно хотите узнать больше подробностей. Из этой книги я узнал о некоторых моментах, упомянутых выше. Автор иногда говорит о различиях между SSLv3 и TLS (v1.0 только на момент написания книги), когда объясняет некоторые сообщения SSL/TLS, но для понимания этих сообщений вам потребуются справочные данные.

Ответ 2

Я просто повторю другие ответы, но, возможно, с несколько иным акцентом.

 Существовал протокол защищенных сокетов, который «принадлежал» Netscape и назывался SSL версии 2. Была выпущена новая версия с другой структурой записи и улучшениями в безопасности, также «принадлежащая» Netscape, которая называлась SSL версии 3. Внутри протокола в нескольких местах есть поле двоичного номера версии. Для SSL версии 3 это поле имеет значение 0x03 0x00, то есть версия 3.0. Затем IETF решила создать свой собственный стандарт. Возможно, из-за того, что в отношении SSL существовали некоторые неопределенности, связанные с интеллектуальной собственностью, включая вопрос о том, является ли «SSL» торговой маркой Netscape, когда IETF выпустила следующую версию этого протокола, они дали ему собственное имя: протокол безопасности транспортного уровня, или TLS версии 1.0. Формат записи и общая структура идентичны и соответствуют SSL v3. Бинарный номер версии был изменен на 0x03 0x01, и, как отмечалось в предыдущем ответе, были внесены незначительные криптографические изменения. С тех пор появились версии TLS 1.1 и 1.2, для которых номера внутренних протоколов равны 0x03 0x02 и 0x03 0x03.

Не обращая внимания на SSLv2, это было, по сути, просто изменение названия наряду с обычной тонкой настройкой протокола, которая происходит по мере того, как люди становятся умнее в вопросах безопасности и производительности.

Ответ 3

Различия:

  1. TLS работает поверх стандартного протокола. Соединение TLS начинается как незашифрованный сеанс стандартной службы, но в какой-то момент они начинают договариваться о шифровании. Для этих переговоров требуется расширение стандартного протокола.

  2. Стандартные протоколы работают поверх SSL. Соединение SSL сначала согласовывает шифрование, а затем поверх него запускается основной протокол.

Ответ 4

По сути, это не что иное, как смена названия для новой версии протокола. Я полагаю, что основной причиной этого было желание отличить его от более старого, неофициального стандарта, в основном разработанного Netscape, после того как он стал официальным протоколом IETF, отслеживающим стандарты.

Это не означает, что SSLv3 и TLSv1.0 совместимы. Цитируя RFC 2246:

различия между этим протоколом и SSL 3.0 не принципиальны, но они достаточно существенны, чтобы TLS 1.0 и SSL 3.0 не взаимодействовали друг с другом.

Думаю, если вы действительно хотите знать точные различия в протоколах, вы должны прочитать стандарты и сравнить сами.

Проект протокола SSLv3 от Netscape TLSv1.0 RFC 2246.

Схожие статьи

Linux

Как избежать сетевых конфликтов с внутренними сетями VPN?

Linux

Какой самый простой способ отправить зашифрованное письмо?

Linux

Решения для удаленного резервного копирования только для записи для предотвращения удаления резервной копии хакерами

Linux

Существующие решения, позволяющие использовать контроль версий для файлов конфигурации сервера