Что такое TLS Handshake?
Онлайн-конфиденциальность

TLS Handshake: как устанавливается защищенное HTTPS-соединение

Разбираем, что такое TLS Handshake, как браузер и сервер устанавливают защищенное HTTPS-соединение и какие этапы проходят до начала шифрованной передачи данных

5 мин чтения
Paul Jackson

Paul Jackson

Technology editor

TLS handshake

Каждый раз, когда вы открываете сайт, начинающийся с https://, браузер выполняет несколько действий еще до того, как на экране появится содержимое страницы.

Одно из самых важных — установка защищенного соединения с сервером.

Этот процесс называется TLS Handshake.

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

Установка HTTPS-соединения между браузером и сайтом через TLS Handshake

Что такое TLS Handshake?

TLS Handshake — это процесс согласования защищенного соединения между клиентом (например, браузером) и сервером.

Он происходит до передачи каких-либо данных сайта и позволяет обеим сторонам договориться о параметрах безопасной связи.

Во время Handshake создаются криптографические ключи и определяется, каким образом будет защищен последующий обмен информацией.

TLS Handshake используется не только в HTTPS, но и во многих других протоколах и приложениях, которым требуется зашифрованное соединение.

Без успешного завершения этого этапа установить безопасную HTTPS-сессию невозможно.

Зачем нужен TLS Handshake?

Прежде чем начать обмен зашифрованными данными, браузер и сервер должны согласовать несколько важных параметров.

Во время TLS Handshake они:

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

Только после этого браузер может безопасно отправлять HTTP-запросы и получать ответы от сервера.

TLS Handshake шаг за шагом

Хотя криптография, лежащая в основе TLS, достаточно сложна, общая последовательность действий довольно проста.

Этапы TLS Handshake — от ClientHello до защищённого HTTPS-соединения.

Шаг 1. ClientHello

Все начинается с сообщения ClientHello, которое браузер отправляет серверу.

В нем содержится информация о возможностях клиента:

  • поддерживаемые версии TLS;
  • доступные наборы шифров (Cipher Suites);
  • случайное значение Client Random;
  • SNI (Server Name Indication);
  • ALPN;
  • различные TLS-расширения.

Фактически браузер сообщает серверу, какие параметры безопасного соединения он поддерживает.

Шаг 2. ServerHello

В ответ сервер отправляет сообщение ServerHello.

На этом этапе он выбирает:

  • версию TLS;
  • используемый набор шифров;
  • собственное случайное значение (Server Random);
  • дополнительные параметры соединения.

После обмена этими сообщениями обе стороны понимают, по каким правилам будет работать защищенное соединение.

Шаг 3. Передача сертификата

Следующим шагом сервер отправляет свой TLS-сертификат.

Этот сертификат подтверждает право использовать запрашиваемый домен и содержит открытую криптографическую информацию о сервере.

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

Шаг 4. Проверка сертификата

Получив сертификат, браузер выполняет его проверку.

Он анализирует:

  • соответствует ли сертификат открытому домену;
  • не истек ли срок его действия;
  • корректна ли цепочка сертификатов;
  • выдан ли сертификат доверенным центром сертификации (CA).

Только после успешной проверки процесс продолжается дальше.

Шаг 5. Обмен ключами

Современные версии TLS обычно используют механизм ECDHE для согласования ключей.

Не вдаваясь в математические детали, браузер и сервер независимо вычисляют один и тот же общий секрет (Shared Secret).

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

При этом сами ключи никогда не передаются по сети в открытом виде.

Шаг 6. Сообщения Finished

После успешного создания ключей обе стороны обмениваются сообщениями Finished.

Они подтверждают, что TLS Handshake завершен корректно и можно переходить к защищенному обмену данными.

Шаг 7. Передача HTTPS-трафика

Только после завершения TLS Handshake браузер начинает отправлять обычные HTTP-запросы.

Разница заключается в том, что теперь они передаются внутри уже созданного зашифрованного TLS-канала.

Последовательность соединения TCP, TLS Handshake и отправки HTTP-запроса

Для пользователя весь этот процесс обычно занимает доли секунды и остается полностью незаметным.

TLS 1.2 и TLS 1.3: в чем разница?

За последние годы протокол TLS значительно изменился.

Сегодня TLS 1.3 считается рекомендуемым стандартом.

По сравнению с TLS 1.2 новая версия предлагает несколько важных преимуществ:

  • меньше сетевых обменов при установке соединения;
  • более быстрое создание защищенной сессии;
  • отказ от устаревших алгоритмов шифрования;
  • шифрование большей части процесса Handshake;
  • улучшенную безопасность и производительность.

В результате уменьшается задержка и повышается общая защищенность соединения.

Как связаны TLS и HTTPS?

TLS и HTTPS тесно связаны между собой, но это не одно и то же.

HTTPS — это обычный протокол HTTP, работающий поверх защищенного TLS-соединения.

Связь между ними можно представить следующим образом:

  • браузер устанавливает TCP-соединение;
  • поверх него выполняется TLS Handshake;
  • после успешного завершения Handshake создается зашифрованный канал;
  • уже через этот канал передаются HTTPS-запросы и ответы.
HTTPS использует защищённое TLS-соединение для передачи данных

Иными словами, TLS создает безопасное соединение, а HTTPS использует его для передачи веб-трафика.

TLS Handshake и TLS Fingerprinting

Интересно, что сам процесс TLS Handshake может раскрывать информацию о клиенте.

Параметры, передаваемые в сообщении ClientHello, часто используются для построения TLS Fingerprint.

К ним относятся:

  • версия TLS;
  • поддерживаемые Cipher Suites;
  • TLS-расширения;
  • порядок этих расширений;
  • поддерживаемые эллиптические кривые;
  • форматы EC Point;
  • ALPN.

При этом SNI обычно не считается частью TLS Fingerprint, поскольку содержит имя запрашиваемого сайта, а не особенности реализации клиента.

Параметры ClientHello, которые могут использоваться для TLS Fingerprinting

Современные антифрод-системы нередко анализируют TLS Fingerprint вместе с Browser Fingerprint, репутацией IP-адреса, поведением пользователя и другими сетевыми сигналами, чтобы оценить, насколько согласованно выглядит вся среда.

Почему TLS Handshake остается таким важным?

Любое современное HTTPS-соединение начинается именно с TLS Handshake.

Хотя пользователь обычно этого не замечает, именно этот процесс:

  • подтверждает подлинность сервера;
  • создает ключи шифрования;
  • защищает передаваемые данные;
  • делает возможной безопасную работу HTTPS.

Без TLS Handshake современный интернет выглядел бы совсем иначе и был бы значительно менее защищенным.

Частые вопросы

TLS Handshake выполняется при каждом открытии сайта?
TLS Handshake и HTTPS — это одно и то же?
Можно ли использовать TLS Handshake для построения цифрового отпечатка?
Какие данные передаются во время TLS Handshake?
Чем TLS 1.3 отличается от TLS 1.2?
Может ли TLS Handshake раскрыть информацию о браузере?
Что происходит, если TLS Handshake завершается ошибкой?

Готовы повысить приватность?

Включите WhoVPN, чтобы шифровать трафик и скрывать IP в один клик.

Попробовать за 1$

Последние статьи

Все
Онлайн-конфиденциальностьЧитать обязательно

Почему CAPTCHA появляется на каждом сайте и как это исправить

Причины постоянного появления CAPTCHA: репутация IP-адреса, VPN, Browser Fingerprint, Cookies и JavaScript. Проверяем подключение и способы устранения повторных проверок.

6 мин чтения