Tls рукопожатие что это
Перейти к содержимому

Tls рукопожатие что это

  • автор:

В чем разница между 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, а то, каким образом они это делают, уже зависит от применяемого шифронабора.

image16_1-20219-3a5343.png

Все доверенные SSL-сертификаты выпускает центр сертификации (ЦС). ЦС — это что-то типа нотариуса, и его подпись означает, что данные в сертификате реальны.

При реализации аутентификационной части TLS-рукопожатия осуществляется выполнение клиентом нескольких криптографически безопасных проверок. Главная цель — удостовериться, что сертификат, который выдан сервером, является подлинным. Это обеспечивается путём проверки цифровой подписи и того факта, выдан ли сертификат доверенным центром сертификации. На данном этапе клиент выполняет косвенную проверку того, принадлежит ли серверу закрытый ключ, который связан с сертификатом.

В наиболее распространённой криптографической системе с открытым ключом — RSA, клиент посредством открытого ключа шифрует случайные данные, и эти данные потом используются для генерации сеансового ключа. При этом сервер может расшифровать и начать применять эти данные только в том случае, если имеет закрытый ключ, наличие которого и обеспечивает подлинность стороны.

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

Обмен ключами

Это финишная часть TLS-рукопожатия. Она предполагает создание «сеансового ключа», который станет использоваться для защищённой связи. Такие ключи являются «симметричными», когда один и тот же ключ применяется и для шифрования, и для дешифрования.

Говоря о симметричном шифровании, можно сказать, что оно производительнее, если сравнивать с асимметричным. А значит, оно лучше подходит для отправки данных по HTTPS. Что касается точного метода генерации ключа, то он зависит от выбранного шифронабора. Наиболее распространённые — RSA и Диффи-Хеллман.

image23_280x280_1-20219-02a78d.jpg

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

Вообще, само 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

Принцип работы 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/TLS-рукопожатие.

протокол рукопожатия

Читайте также:

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *