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

И SSL, и TLS – это протоколы передачи данных, которые шифруют данные между серверами, приложениями, пользователями и системами. Они аутентифицируют обе стороны, соединенные по сети, чтобы те могли безопасно обмениваться данными.
Тахер Эльгамал руководил разработкой SSL и опубликовал SSL 2.0 в 1995 году. Целью SSL было обеспечение безопасной передачи данных во всемирной паутине. После нескольких усовершенствований SSL Тим Диркс и Кристофер Аллен создали TLS 1.0 в 1999 году как преемника SSL 3.0.
Терминология
TLS – прямой преемник SSL, и все версии SSL теперь устарели. Однако в отрасли обычно используется термин SSL, описывающий соединение TLS. В большинстве случаев термины SSL и SSL/TLS относятся к протоколу и сертификатам TLS.
Цель
TLS – это безопасный протокол связи, обеспечивающий шифрование и аутентификацию, и это относилось к SSL до того, как он устарел. Как TLS, так и SSL используют цифровые сертификаты, которые облегчают подтверждение подключения (рукопожатия) и обеспечивают зашифрованную связь между браузером и веб-сервером.
Использование в HTTPS
HTTP – это протокол или набор правил взаимодействия между клиентом и сервером в любой сети. HTTPS – это практика установления защищенного протокола SSL/TLS на незащищенном HTTP-соединении.
Перед подключением к веб-сайту ваш браузер использует протокол TLS для проверки сертификата TLS или SSL веб-сайта. Они показывают, что сервер соответствует действующим стандартам безопасности. Сведения о сертификате указаны в адресной строке браузера. В подлинном зашифрованном соединении вместо http:// отображается https://. Дополнительная буква s означает безопасность.
Ключевые отличия: SSL и TLS
Хотя цели SSL и TLS во многом схожи, эти протоколы передачи данных работают по-разному. Эти изменения развивались со временем по мере того, как появлялись разные версии SSL, прежде чем на смену ему пришел TLS.
Рукопожатия SSL/TLS
Рукопожатие – это процесс аутентификации браузером сертификата SSL или TLS сервера. В ходе этого процесса происходит аутентификация обеих сторон, а затем обмен криптографическими ключами.
Рукопожатие SSL было явным соединением, в то время как рукопожатие TLS – неявным. Процесс рукопожатия SSL состоял из большего количества шагов, чем процесс TLS. TLS ускорил этот процесс, устранив дополнительные шаги и сократив общее количество наборов шифров.
Оповещения
Оповещения – это способ передачи сообщений об ошибках и предупреждений касаемо протоколов SSL и TLS. В SSL существует только два типа оповещений: предупреждающие и неустранимые. Предупреждающее оповещение указывает на то, что произошла ошибка, но соединение можно поддерживать, а неустранимое – что соединение следует немедленно прервать. Кроме того, оповещения SSL не шифруются.
В TLS есть дополнительный тип оповещения под названием оповещение закрытия. Оно сигнализирует об окончании сеанса. Оповещения TLS также шифруются для дополнительной безопасности.
Аутентификация сообщений
Как SSL, так и TLS используют коды аутентификации сообщений (MAC) – криптографический метод проверки подлинности и целостности сообщений. Используя секретный ключ, протокол записи генерирует MAC в виде кода фиксированной длины и прикрепляет его к исходному сообщению.
Протокол SSL использует устаревший алгоритм MD5 для генерирования MAC, а TLS – код аутентификации сообщений на основе хэша (HMAC) для более сложного шифрования и обеспечения защиты.
Наборы шифров
Набор шифров – это набор алгоритмов, создающих ключи для шифрования информации между браузером и сервером. Обычно набор шифров включает алгоритм обмена ключами, алгоритм проверки, алгоритм массового шифрования и алгоритм MAC. Несколько алгоритмов в протоколе TLS были модернизированы из SSL по соображениям безопасности.
В чем разница между сертификатами SSL и TLS?
В настоящее время все SSL-сертификаты больше не используются. Отраслевым стандартом являются сертификаты TLS. Однако в отрасли по-прежнему используется термин SSL для обозначения сертификатов TLS.
Сертификаты TLS стали результатом итераций сертификатов SSL и со временем их усовершенствовали. Конечная функция сертификатов SSL и TLS не изменилась.
Стоит ли заменять сертификаты SSL сертификатами TLS?
Из-за медленного развития культуры большинство сертификатов TLS неправильно называются сертификатами SSL. Даже если ваш сертификат будет называться сертификатом SSL, он уже будет поддерживать протоколы SSL и TLS.
Однако важно отметить, что TLS 1.0 и TLS 1.1 также были официально объявлены устаревшими в 2021 году. К июню 2023 года все клиенты Amazon Web Services должны поддерживать протокол TLS 1.2 или более поздней версии. Помните, что сертификаты – это не то же, что протокол. Убедитесь, что конфигурация вашего сервера поддерживает протоколы TLS.
Как устроено TLS-рукопожатие?
Протокол TLS активно работает со множеством процессов сетевого взаимодействия, начиная с передачи файлов и VPN-подключения, заканчивая IP-телефонией и службами обмена мгновенными сообщениями. Ключевой аспект протокола TLS — «рукопожатие». О нём и поговорим.
Как происходит TLS-рукопожатие?
«Рукопожатием SSL/TLS» называют процесс, а точнее, этап установки HTTPS-соединения. И основная часть работы, связанная с SSL/TLS-протоколом, производится как раз на этом этапе.
В HTTPS-соединении участвуют 2 стороны: клиент (это инициатор соединения, как правило, web-браузер) и, разумеется, сервер. Цель SSL/TLS-рукопожатия заключается в выполнении всей криптографической работы для установки безопасного соединения, включая проверку подлинности задействованного SSL-сертификата и генерацию ключа шифрования.
Согласование шифронабора
Как известно, любое ПО уникально и имеет разную функциональность. Именно поэтому первый шаг TLS-рукопожатия заключается в обмене информацией о своих возможностях между сервером и клиентом для последующего выбора поддерживаемых криптографических функций. В тот самый момент, когда клиент и сервер согласуют применяемый шифронабор, сервер отправит клиенту свой SSL-сертификат.
Аутентификация
Когда клиент получает сертификат, он проверяет его на подлинность. Дабы обеспечить безопасность соединения, надо не только зашифровать информацию, но и убедиться, что она отправляется на правильный web-сайт. Эту аутентификацию обеспечивают сертификаты SSL/TLS, а то, каким образом они это делают, уже зависит от применяемого шифронабора.

Все доверенные SSL-сертификаты выпускает центр сертификации (ЦС). ЦС — это что-то типа нотариуса, и его подпись означает, что данные в сертификате реальны.
При реализации аутентификационной части TLS-рукопожатия осуществляется выполнение клиентом нескольких криптографически безопасных проверок. Главная цель — удостовериться, что сертификат, который выдан сервером, является подлинным. Это обеспечивается путём проверки цифровой подписи и того факта, выдан ли сертификат доверенным центром сертификации. На данном этапе клиент выполняет косвенную проверку того, принадлежит ли серверу закрытый ключ, который связан с сертификатом.
В наиболее распространённой криптографической системе с открытым ключом — RSA, клиент посредством открытого ключа шифрует случайные данные, и эти данные потом используются для генерации сеансового ключа. При этом сервер может расшифровать и начать применять эти данные только в том случае, если имеет закрытый ключ, наличие которого и обеспечивает подлинность стороны.
Когда применяется иная криптосистема, алгоритм может поменяться, однако проверка другой стороны на подлинность останется в любом случае.
Обмен ключами
Это финишная часть TLS-рукопожатия. Она предполагает создание «сеансового ключа», который станет использоваться для защищённой связи. Такие ключи являются «симметричными», когда один и тот же ключ применяется и для шифрования, и для дешифрования.
Говоря о симметричном шифровании, можно сказать, что оно производительнее, если сравнивать с асимметричным. А значит, оно лучше подходит для отправки данных по HTTPS. Что касается точного метода генерации ключа, то он зависит от выбранного шифронабора. Наиболее распространённые — RSA и Диффи-Хеллман.

Для завершения рукопожатия каждая сторона сообщает другой стороне, что она выполнила нужную работу, после чего происходит проверка контрольных сумм, дабы удостовериться, что рукопожатие проходит без какого-нибудь вмешательства либо повреждения.
Вообще, само SSL-рукопожатие происходит всего за несколько сотен миллисекунд. И это первое, что произойдёт при HTTPS-соединении, а произойдёт оно ещё даже до загрузки web-страницы. Далее, после рукопожатия начинается аутентифицированное и зашифрованное HTTPS-соединение, соответственно, все данные, которые отправляются и получаются клиентом и сервером, являются защищёнными.
Напоследок, отметим, что до выхода TLS 1.3 рукопожатие происходило заново каждый раз при посещении сайта. Но уже TLS 1.3 начал поддерживать 0-RTT (нулевое время возобновления приёма-передачи), а это существенно повысило скорость для посетителя, который повторно возвращается на сайт.
Принцип работы handshake (рукопожатие) SSL/TLS


Handshake (рукопожатие) SSL/TLS состоит из того, что сервер и клиент идентифицируют друг друга и начинают общение через шифрованный SSL/TLS-туннель (который является безопасным).
Данный процесс и называется handshak-ом или рукопожатием из-за того, что они (сервер и клиент) видятся первый раз. Такой процесс, начинается с идентификации и заканчивается генерированием секретного ключа.
Что такое SSL/TLS-рукопожатие?
SSL handshake – это общение сервера и клиента между собой, где каждый хочет достичь одной и той же цели – безопасно общаться с помощью симметричного шифрования. При таком шифровании у двух сторон один ключ для шифрования и дешифрования сообщений. Такой ключ называется общим секретным – у всех пользователей, которые обмениваются данными, один и тот же ключ.

Принцип работы handshake (рукопожатие) SSL/TLS
Расмотрим диалог сервера и клиента:
Клиент: «Здравствуйте сервер! Я бы хотел установить безопасное соединение между нами. От себя, я отсылаю свои шифры и совместимую SSL/TLS версию».
Сервер: «Здравствуйте, клиент! Я проверил шифр который получил от тебя и SSL/TLS версию, которую ты используешь. Нет повода отсоединятся, так что — продолжаем…. От себя, я хотел бы отправить свой сертификат-файл и публичный ключ. Клиент, проверь их пожалуйста».
Клиент: » Такс, твой сертификат в порядке. Но мне необходимо, чекнуть твой закрытый ключ. Для этого, я сейчас сгенерирую и зашифрую общий секретный ключ с помощью твоего открытого ключа. Выполни расшифровку с помощью своего приватного ключика. Если все пройдет гладко, — ты в свою очередь, создашь главный секрет, который мы в дальнейшем, будем использовать для шифрования и расшифрования информации».
Сервер: «Понял! Все сделано».
С этого момента, когда сервер и клиент доверяют друг другу, то инфу которую они будут передавать между собой, будет зашифрована с помощью главного секрета (После проверок, информация будет зашифрована только через главный секретный ключ).
Клиент: «И так, для тестирования — я отправлю тестовое сообщение, дабы удостоверится, что созданный главный секрет корректно работает. Сервер, ты в свою очередь, когда получишь это тестовое сообщение — отправь мне расшифрованную версию этого сообщения. Если все получится, наши данные — в безопасности».
Сервер: «Да, все прочто отлично. Работает!».
Вот такое вот SSL/TLS-рукопожатие. С этого момента, когда сервер и клиент будут передавать файлы, они будут зашифрованы.
Решение некоторых проблем с handshake (рукопожатием) SSL/TLS
Ошибка «SSL_do_handshake errors с nginx или haproxy»
Если вы загружаете https трафик с haproxy в tcp-режиме, и вы выполняете это с помощью nginx, и вы получаете 502 ошибки, сопровождаемые этими ошибками SSL в журнале ошибок nginx:
SSL_do_handshake() failed (SSL: error:1408C095:SSL routines:SSL3_GET_FINISHED:digest check failed)
То вам нужно отключить опцию proxy_ssl_session_reuse:
proxy_ssl_session_reuse off;
По умолчанию nginx пытается повторно использовать сеансы ssl для https upstream; но когда HAProxy циклично обрабатывает tcp-соединения между разными бэкендами, сеанс ssl не будет действителен с одного подключения tcp к другому.
Вот и все, статья «Принцип работы handshake (рукопожатие) SSL/TLS» завершена.
Что такое рукопожатие SSL/TLS? Объясним за 3 минуты
Рукопожатие SSL/TLS состоит из последовательных шагов, где клиент и сервер идентифицируют друг друга и начинают общаться через безопасный SSL/TLS-туннель.
Процесс называется рукопожатием или handshake, потому что клиент и сервер встречают друг друга впервые. Рукопожатие начинается с идентификации и заканчивается генерированием секретного ключа.

SSL/TLS-рукопожатие — что это?
Рукопожатие SSL – это разговор между клиентом и сервером, где каждый хочет достичь одной и той же цели – безопасно общаться с помощью симметричного шифрования. При таком шифровании у двух сторон один ключ для шифрования и дешифрования сообщений. Такой ключ называется общим секретным – у всех пользователей, которые обмениваются данными, один и тот же ключ.
Давайте представим выполнение TLS-рукопожатия как диалог клиента и сервера.
Клиент: «Привет! Я хочу установить безопасное общение между нами. Вот мой набор шифров и совместимая версия SSL/TLS».
Сервер: «Привет, клиент. Я проверил твой шифр и версию SSL/TLS. Думаю, мы можем продолжить общение. Вот мой файл сертификата и открытый ключ. Проверь их».
Клиент: «Сертификат в порядке. Но мне нужно проверить твой закрытый ключ. Я сейчас сгенерирую и зашифрую общий секретный ключ с помощью твоего открытого ключа. Расшифруй его с помощью своего закрытого ключа. Если все получится, ты создашь главный секрет, который мы будем использовать для шифрования и расшифрования информации».
Сервер: «Готово».
Теперь, когда клиент и сервер уверены друг в друге, информация, передаваемая между ними, будет шифроваться с помощью главного секрета. Как только проверка закончится, информация начнет шифроваться только через главный секретный ключ.
Клиент: «Я отправлю тебе тестовое сообщение, чтобы проверить, что наш главный секрет работает. Отправь мне расшифрованную версию этого сообщения. Если он работает, наши данные в безопасности».
Сервер: «Да, все работает».
Теперь, каждый файл, который будет передаваться от клиента к серверу и обратно, будет зашифрован. Это и есть SSL/TLS-рукопожатие.

Читайте также:
- SSL-сертификат – что это такое
- Как установить SSL-сертификат
- Как работает SSL-сертификат