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

Paul Jackson
Technology editor

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

Что такое TLS Handshake?
TLS Handshake — это процесс согласования защищенного соединения между клиентом (например, браузером) и сервером.
Он происходит до передачи каких-либо данных сайта и позволяет обеим сторонам договориться о параметрах безопасной связи.
Во время Handshake создаются криптографические ключи и определяется, каким образом будет защищен последующий обмен информацией.
TLS Handshake используется не только в HTTPS, но и во многих других протоколах и приложениях, которым требуется зашифрованное соединение.
Без успешного завершения этого этапа установить безопасную HTTPS-сессию невозможно.
Зачем нужен TLS Handshake?
Прежде чем начать обмен зашифрованными данными, браузер и сервер должны согласовать несколько важных параметров.
Во время TLS Handshake они:
- подтверждают подлинность сервера;
- согласовывают версию TLS;
- выбирают используемые криптографические алгоритмы;
- вычисляют общий секрет, из которого будут получены ключи шифрования;
- создают защищенный канал связи.
Только после этого браузер может безопасно отправлять HTTP-запросы и получать ответы от сервера.
TLS Handshake шаг за шагом
Хотя криптография, лежащая в основе TLS, достаточно сложна, общая последовательность действий довольно проста.

Шаг 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-канала.

Для пользователя весь этот процесс обычно занимает доли секунды и остается полностью незаметным.
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-запросы и ответы.

Иными словами, TLS создает безопасное соединение, а HTTPS использует его для передачи веб-трафика.
TLS Handshake и TLS Fingerprinting
Интересно, что сам процесс TLS Handshake может раскрывать информацию о клиенте.
Параметры, передаваемые в сообщении ClientHello, часто используются для построения TLS Fingerprint.
К ним относятся:
- версия TLS;
- поддерживаемые Cipher Suites;
- TLS-расширения;
- порядок этих расширений;
- поддерживаемые эллиптические кривые;
- форматы EC Point;
- ALPN.
При этом SNI обычно не считается частью TLS Fingerprint, поскольку содержит имя запрашиваемого сайта, а не особенности реализации клиента.

Современные антифрод-системы нередко анализируют TLS Fingerprint вместе с Browser Fingerprint, репутацией IP-адреса, поведением пользователя и другими сетевыми сигналами, чтобы оценить, насколько согласованно выглядит вся среда.
Почему TLS Handshake остается таким важным?
Любое современное HTTPS-соединение начинается именно с TLS Handshake.
Хотя пользователь обычно этого не замечает, именно этот процесс:
- подтверждает подлинность сервера;
- создает ключи шифрования;
- защищает передаваемые данные;
- делает возможной безопасную работу HTTPS.
Без TLS Handshake современный интернет выглядел бы совсем иначе и был бы значительно менее защищенным.
Частые вопросы
TLS Handshake выполняется при каждом открытии сайта?
Не обязательно. При повторном использовании существующего соединения новый Handshake не требуется, а TLS Session Resumption позволяет ускорить установку последующих соединений.
TLS Handshake и HTTPS — это одно и то же?
Нет. TLS Handshake — это процесс установления защищенного соединения, а HTTPS — протокол HTTP, использующий TLS для шифрования передаваемых данных.
Можно ли использовать TLS Handshake для построения цифрового отпечатка?
Да. Параметры TLS Handshake могут использоваться для формирования TLS Fingerprint, который антифрод-системы анализируют вместе с Browser Fingerprint и другими сигналами.
Какие данные передаются во время TLS Handshake?
Браузер и сервер обмениваются параметрами соединения, включая поддерживаемые версии TLS, криптографические алгоритмы и данные для согласования ключей шифрования.
Чем TLS 1.3 отличается от TLS 1.2?
TLS 1.3 использует более современные криптографические механизмы и обычно требует меньше сетевых обменов для установления защищенного соединения.
Может ли TLS Handshake раскрыть информацию о браузере?
Да. Набор поддерживаемых алгоритмов, расширений TLS и порядок их передачи могут косвенно указывать на используемый браузер или TLS-библиотеку.
Что происходит, если TLS Handshake завершается ошибкой?
Защищенное соединение не устанавливается. Причиной могут быть несовместимые версии TLS, проблемы с сертификатом, сетевые ограничения или ошибки конфигурации сервера.
Сравнение сервисов
VPN и антидетект-браузеры на одной странице: редакционные оценки, функции и плюсы с минусами рядом.
Сравнить


