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

Почему плохо иметь слабый пароль пользователя mysql в доверенной сети?

Linux

Зачем менять порт ssh по умолчанию?

Linux

Цикл по содержимому файла в Bash

Linux

Linux API для отображения запущенных процессов