Каковы точные различия уровня протокола между 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 не взаимодействовали.
Я думаю, если вы действительно хотите узнать точные различия в протоколах, вы должны прочитать стандарты и сравнить себя.
Протокол шифрования SSL теперь называется TLS, что приводит к двум именам для одного и того же протокола. Текущее программное обеспечение будет согласовывать TLS версии 1 или SSL версии 3 автоматически. Людям, с другой стороны, приходится выбирать между использованием более узнаваемого термина SSL и официального обозначения TLS.
SSL является предшественником TLS.
TLS и SSL шифруют сегменты сетевых подключений на прикладном уровне, чтобы обеспечить безопасный сквозной транзит на транспортном уровне.
Отличия:
- TLS работает поверх стандартного протокола. Соединение TLS начинается как незашифрованный сеанс стандартной службы, но в какой-то момент они начинают согласовывать шифрование. Это требует расширения стандартного протокола для этого согласования.
- Стандартные протоколы работают поверх SSL. Соединение SSL сначала согласовывает шифрование, а затем запускает базовый протокол поверх него.