В чем разница в протоколах между SSL и TLS?
Действительно ли разница достаточно велика, чтобы оправдать изменение названия? (по сравнению с названием «SSLv4» или «SSLv5» для более новых версий TLS).
Ответ 1
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 от сервера.
Список наборов шифров отличается (и некоторые из них были переименованы из SSL_* в TLS_*, сохранив тот же идентификационный номер).
Также есть различия относительно нового расширения 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
Различия:
TLS работает поверх стандартного протокола. Соединение TLS начинается как незашифрованный сеанс стандартной службы, но в какой-то момент они начинают договариваться о шифровании. Для этих переговоров требуется расширение стандартного протокола.
Стандартные протоколы работают поверх 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