В чем разница между SSL, TLS и HTTPS?

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

Комментарии к вопросу (2)
Решение

TLS - это новое название протокола SSL. А именно, протокол SSL дошел до версии 3.0; TLS 1.0 - это "SSL 3.1". В настоящее время определены следующие версии TLS: TLS 1.1 и 1.2. Каждая новая версия добавляет несколько функций и изменяет некоторые внутренние детали. Иногда мы говорим "SSL/TLS".

HTTPS - это HTTP-within-SSL/TLS. SSL (TLS) устанавливает защищенный двунаправленный туннель для произвольных двоичных данных между двумя хостами. HTTP - это протокол для отправки запросов и получения ответов, каждый запрос и ответ состоят из подробных заголовков и (возможно) некоторого содержимого. HTTP предназначен для работы через двунаправленный туннель для произвольных двоичных данных; когда этот туннель представляет собой соединение SSL/TLS, то все это называется "HTTPS".

Чтобы объяснить аббревиатуры:

  • "SSL" означает "Secure Sockets Layer". Это слово было придумано изобретателями первых версий протокола, компанией Netscape (позже компания была куплена AOL).
  • "TLS" означает "Transport Layer Security". Название было изменено во избежание юридических проблем с Netscape, чтобы протокол мог быть "открытым и свободным" (и опубликован как RFC). Это также намекает на то, что протокол работает с любым двунаправленным потоком байтов, а не только с сокетами в Интернете.
  • "HTTPS" предположительно означает "HyperText Transfer Protocol Secure", что грамматически неверно. Никто, кроме смертельно скучающих педантов, никогда не использует этот перевод; "HTTPS" лучше воспринимать как "HTTP с буквой S, которая означает SSL". Другие аббревиатуры протоколов были построены таким же образом, например, SMTPS, IMAPS, FTPS... все они были голым протоколом, который "защитили", запустив его в рамках SSL/TLS.
Комментарии (8)

SSL и TLS - это протоколы, направленные на обеспечение конфиденциальности и целостности данных между двумя сторонами (см. RFC 2246), разработанные для работы поверх надежного протокола связи (обычно TCP). Хотя спецификация TLS не говорит о сокетах, дизайн SSL/TLS был разработан таким образом, чтобы приложения могли использовать их почти как традиционные TCP-сокеты, например, SSLSocket в Java расширяет Socket (есть небольшие различия в плане удобства использования). HTTPS - это HTTP через SSL/TLS, где сначала устанавливается SSL/TLS соединение, а затем происходит обмен обычными HTTP данными через это SSL/TLS соединение. Используете ли вы для этого SSL или TLS, зависит от конфигурации вашего браузера и сервера (обычно есть возможность разрешить SSLv2, SSLv3 или TLS 1.x). Подробности о том, как HTTP и SSL/TLS образуют HTTPS, приведены в RFC 2818. Что касается разницы между SSL и TLS, вас могут заинтересовать эти два ответа, которые я написал на похожие вопросы на StackOverflow и ServerFault:

  • Разница между SSL и TLS [Stackoverflow]
  • Каковы точные различия на уровне протокола между SSL и TLS? [Serverfault]

    Вы можете рассматривать 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.
    • Обмен ключами клиента отличается.
    • Различается MAC/HMAC (TLS использует HMAC, в то время как SSL использует более раннюю версию HMAC).
    • Отличается деривация ключа.
    • Клиент может отправлять данные приложения сразу после отправки сообщения SSL/TLS Finished в SSLv3. В TLSv1 он должен ждать для получения сообщения Finished от сервера.
    • Список наборов шифров отличается (и некоторые из них были переименованы из SSL* в TLS*, сохранив тот же идентификационный номер).
    • Также есть различия относительно нового расширения повторного согласования. В целом, чем выше версия SSL/TLS, тем она безопаснее, при условии, что вы правильно выбираете наборы шифров (более высокие версии TLS также предлагают использование наборов шифров, которые считаются более совершенными). (SSLv2 считается небезопасным.) Кроме того, SSL не входит в сферу действия IETF. Например, исправление TLS renegotiation fix пришлось модернизировать для SSLv3 (хотя стеки SSL/TLS все равно пришлось обновить). Возможно, вас также заинтересует этот ответ:
  • [Что происходит на проводе, когда устанавливается соединение TLS / LDAP или TLS / HTTP? Stackoverflow]]8. Обратите внимание, что некоторые люди противопоставляют SSL и TLS как разницу между "SSL/TLS при подключении" и "обновлением до TLS" (после некоторого разговора с использованием прикладного протокола). Несмотря на то, что некоторые из этих ответов относительно высоко проголосовали, это неверно. Эта ошибка распространяется из-за того, что некоторые приложения, например Microsoft Outlook, предлагают два варианта конфигурации под названием "SSL" и "TLS" для настройки SMTP/IMAP, когда на самом деле они означают "SSL/TLS при подключении" и "обновление до TLS". (То же самое относится и к библиотеке JavaMail, я думаю). RFC, в которых говорится о STARTTLS, были написаны, когда TLS уже был официальным RFC, поэтому в них говорится только об обновлении соединения до TLS. На практике, если вы измените конфигурацию вашего почтового клиента, чтобы заставить его использовать SSLv3 вместо TLS (что я обычно не рекомендую), он все равно сможет перейти на SSL/TLS, используя STARTTLS с соединением SSLv3, просто потому, что это больше относится к режиму работы, чем к версии SSL/TLS и/или наборам шифров. Существует также вариант HTTP, в котором переход на SSL/TLS осуществляется внутри протокола HTTP (аналогично STARTTLS в LDAP/SMTP). Это описано в RFC 2817. Насколько я знаю, это почти никогда не используется (и это не то, что используется https:// в браузерах). Основная часть RFC - это раздел о CONNECT для HTTP прокси-серверов (он используется HTTP прокси-серверами для ретрансляции HTTPS-соединений).
Комментарии (4)

SSL VS TLS

Термины SSL и TLS часто используются как взаимозаменяемые или в сочетании друг с другом (TLS/SSL), но на самом деле один из них является предшественником другого - SSL 3.0 послужил основой для TLS 1.0, который в результате иногда называют SSL 3.1.

Что более безопасно - SSL или TLS

С точки зрения безопасности они оба считаются одинаково защищенными

Основное различие заключается в том, что если SSL-соединения начинаются с обеспечения безопасности и переходят непосредственно к защищенному обмену данными, то TLS-соединения начинаются с небезопасного "приветствия" серверу и переходят к защищенному обмену данными только после успешного рукопожатия между клиентом и сервером. Если по какой-либо причине рукопожатие TLS не удается, соединение никогда не создается.

(SSL и TLS против HTTP)

Протокол HTTP используется для запроса и получения данных, а https, в котором 's' - это не что иное, как безопасный SSL, который делает запрос и получение данных по протоколу http зашифрованными, так что ни один злоумышленник не сможет легко получить данные.

Если ни SSL, ни TLS не используются в протоколе HTTP

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

Поэтому следует использовать SSL или TLS

Ну, оба варианта одинаковы, но TLS более расширяем и надеется получить больше поддержки в будущем. и TLS имеет обратную совместимость.

Комментарии (3)