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

40

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

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

goodguys_activate
источник
3
Я подозреваю, что если вы хотите действительно глубокое понимание, вам придется начать читать спецификации. Проверьте страницу вики . Он содержит ссылки на RFC и спецификации.
Зоредаче
7
@Zoredache, пожалуйста, не используйте "вики" как сокращение от "Википедия".
Spiff

Ответы:

36

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).
  • Ключ деривации отличается.
  • Данные клиентского приложения могут быть отправлены сразу после отправки Finishedсообщения SSL / TLS в SSLv3. В TLSv1 он должен ждать Finishedсообщения сервера .
  • Список наборов шифров отличается (и некоторые из них были переименованы SSL_*в TLS_*, сохранив тот же номер идентификатора).
  • Существуют также различия в отношении нового расширения для повторных переговоров .

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

Bruno
источник
Похоже, что расширения TLS применяются только к TLS, а не к SSL, верно? Так, например, клиенты TLS могут отправлять расширенную « ClientHelloзапись», в то время как клиенты только с SSL3 отправляют только оригинал ClientHello.
culix
@culix, вообще говоря, это действительно правильно (в основном потому, что расширения TLS определены в рамках IETF). SSLv3 также мог иметь дополнительные данные в своей записи ClientHello (так же, как TLS 1.0 и 1.1). (Ищите draft302.txtи « В интересах прямой совместимости ... » сравните с разделами 7.4.1.2 в спецификациях TLS). Чтобы справиться со стеками, не поддерживающими это, в расширении повторного согласования также есть обходные пути, такие как псевдо-набор шифров SCSV.
Бруно
@Bruno, Забронировать ссылку вниз .....
Pacerier
4

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

Был протокол защищенных сокетов, который «принадлежал» 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

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

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

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

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

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

Свен
источник
@SvenW Я бы сравнил себя, но это большая проблема, я не уверен, что хочу предпринять. Этот стандарт существует уже 10 лет. Конечно, кто-то уже сделал сравнение с красивой графикой, чтобы парни вроде меня могли это понять.
goodguys_activate
@ MakerOfThings7 К сожалению, этот вопрос не сводится к круговой диаграмме. Единственные вещи, которые можно поместить в диаграмму, - это битовые скорости шифрования или (и я здесь растягиваюсь) уровень безопасности (где SSLv3 - "-", а TLS - "=" ...). Единственное понимание получить его можно, прочитав спецификации или хотя бы страницу Википедии (которую я вам предоставил в предыдущем вопросе)
gWaldo
@SvenW Вы сами прочитали и поняли обе спецификации?
goodguys_activate
Нет. Почему я должен? Я не разработчик, пишущий программное обеспечение против этой спецификации, и это единственная причина, по которой я могу придумать. Если мне нужно использовать SSL / TLS, я читаю документацию по OpenSSL и т. Д., Что достаточно для пользователей и администраторов.
Свен
@SvenW Не обижайся, но я буду держать это открытым, пока не получу ответ от кого-то, кто прочитал и понял спецификации ... что разумно, учитывая мой вопрос.
goodguys_activate
0

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

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

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

aleroot
источник
Так это смена имени? Это оно?
goodguys_activate
да TLS является более новой версией, TLS может преобразовать себя в SSL3 при необходимости.
aleroot
3
Нет, это не совсем смена имени. TLSv1 совместим с SSLv3 (и будет иметь запасной вариант), но это не обязательно так с другой стороны. TLSv1 похож на SSLv4. Примечание: есть также несколько версий TLS.
Филипп Рейнольдс
-2

Отличия:

  • TLS работает поверх стандартного протокола. Соединение TLS начинается как незашифрованный сеанс стандартной службы, но в какой-то момент они начинают согласовывать шифрование. Это требует расширения стандартного протокола для этого согласования.
  • Стандартные протоколы работают поверх SSL. Соединение SSL сначала согласовывает шифрование, а затем запускает базовый протокол поверх него.
LatinSuD
источник
Это не правильно, вы говорите о разнице между началом с SSL / TLS и переключением на TLS в протоколе с помощью таких команд, как STARTTLS: stackoverflow.com/questions/3660798/…
Bruno