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

Это техническое глубокое погружение после того, как был задан этот обзорный вопрос.

Каковы различия протокола между SSL и TLS?
Достаточно ли разницы, чтобы гарантировать изменение имени? (вместо того, чтобы называть его "SSLv4" или SSLv5 для более новых версий TLS)

5 ответов

Решение

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

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

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

  • в ClientHello сообщение (первое сообщение, отправленное клиентом, чтобы инициировать рукопожатие), версия {3,0} для SSLv3, {3,1} для TLSv1.0 и {3,2} для TLSv1.1.
  • ClientKeyExchange отличается.
  • MAC/HMAC отличается (TLS использует HMAC, тогда как SSL использует более раннюю версию HMAC).
  • Ключ деривации отличается.
  • Данные клиентского приложения могут быть отправлены сразу после отправки SSL/TLS Finished сообщение в SSLv3. В TLSv1 он должен ждать сервера Finished сообщение.
  • The list of cipher suites differ (and some of them have been renamed from SSL_* в TLS_*, keeping the same id number).
  • There are also differences regarding the new re-negotiation extension.

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

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

Был протокол защищенных сокетов, который "принадлежал" 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, в основном это было просто изменение имени наряду с обычной настройкой протокола, которая происходит, когда люди становятся более умными в отношении безопасности и производительности.

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

Как было сказано в ответах на ваш предыдущий вопрос, это не означает, что SSLv3 и TLSv1.0 совместимы. Ссылаясь на RFC 2246:

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

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

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

Протокол шифрования SSL теперь называется TLS, что приводит к двум именам для одного и того же протокола. Текущее программное обеспечение будет согласовывать TLS версии 1 или SSL версии 3 автоматически. Людям, с другой стороны, приходится выбирать между использованием более узнаваемого термина SSL и официального обозначения TLS.

SSL является предшественником TLS.

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

Отличия:

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