Как работает TLS handshake?

Категория: Безопасность

Просмотров: 5

Ответ:

Что такое TLS Handshake?

TLS Handshake — это процесс установки защищённого соединения между клиентом (например, вашим браузером) и сервером (например, сайтом).
Цель — согласовать алгоритмы, проверить подлинность сервера (и, опционально, клиента) и обменяться ключами для симметричного шифрования.


Основные шаги современного (упрощённого) TLS 1.2/1.3 Handshake

1) Client Hello

  • Клиент отправляет:

    • список поддерживаемых версий TLS,

    • набор поддерживаемых шифров,

    • случайное число (client random),

    • (опционально) список поддерживаемых расширений (например, SNI для указания имени хоста).

2) Server Hello

  • Сервер выбирает:

    • версию TLS и шифр из предложенных клиентом,

    • отправляет своё случайное число (server random),

    • свой сертификат с публичным ключом (подписанный доверенным центром),

    • (опционально) подтверждает выбранные расширения.

3) Проверка сертификата

  • Клиент проверяет сертификат сервера через цепочку доверия (CA → сервер).

4) Установка общего секрета

  • В TLS 1.2: клиент генерирует pre-master secret и шифрует его публичным ключом сервера → сервер расшифровывает приватным ключом → на основе client random + server random + pre-master secret обе стороны вычисляют мастер-ключ для симметричного шифрования.

  • В TLS 1.3: используют алгоритмы Диффи-Хеллмана для согласования общего секрета (без передачи pre-master секретов напрямую).

5) Finished

  • Каждая сторона отправляет сообщение "Finished", подписанное ключом из установленного общего секрета → подтверждает, что handshake не был подменён.

  • С этого момента всё общение шифруется сессионным симметричным ключом.


Итого

  • Цель handshake — безопасно договориться о симметричном ключе для шифрования сессии.

  • В процессе происходит аутентификация сервера (и опционально клиента), защита от подмены и согласование криптографических параметров.