0Pricing
Cryptology Academy · Урок

Рукопожатие TLS 1.3 шаг за шагом

Разберите ClientHello, ServerHello, получение ключей и сообщение Finished

«Рукопожатие TLS 1.3 шаг за шагом» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Зачем нужен TLS

TLS (безопасность транспортного уровня) защищает данные при передаче через интернет. Каждое HTTPS-соединение использует TLS. TLS 1.3, стандартизированный в RFC 8446 (2018), исключил устаревшие алгоритмы и сократил число циклов обмена при рукопожатии с 2 до 1.

ClientHello

Клиент отправляет: версию TLS (1.3), случайное одноразовое число размером 32 байта, список поддерживаемых наборов шифров (например, TLS_AES_256_GCM_SHA384) и расширения обмена ключами, содержащие открытые ключи ECDH для поддерживаемых групп (X25519, P-256).

ServerHello

Сервер выбирает набор шифров и группу обмена ключами, создаёт собственную эфемерную пару ключей ECDH и отвечает своим открытым ключом. На этом этапе обе стороны могут вычислить общий секрет с помощью ECDH.

Получение ключей с помощью HKDF

TLS 1.3 использует HKDF (функцию получения ключей на основе HMAC) в следующей последовательности: ранний секрет → секрет рукопожатия → главный секрет. На каждом этапе создаются отдельные ключи для трафика рукопожатия клиента и сервера, а также для данных приложения.

Server Finished

Сервер отправляет свой Certificate, CertificateVerify (подпись расшифровки рукопожатия с использованием закрытого ключа) и Finished (HMAC расшифровки рукопожатия). Всё шифруется ключом трафика рукопожатия.

Client Finished

Клиент проверяет цепочку сертификатов, проверяет подпись CertificateVerify и MAC Finished, а затем отправляет собственное сообщение Finished. Рукопожатие завершается за один цикл обмена (1-RTT).

Возобновление 0-RTT

TLS 1.3 поддерживает возобновление 0-RTT (нулевой цикл обмена) с использованием предварительно общего ключа (PSK) из предыдущего сеанса. Клиент может немедленно отправить данные приложения, но данные 0-RTT не защищены от повторного воспроизведения и должны быть идемпотентными.

Наборы шифров TLS 1.3

TLS 1.3 допускает только шифры AEAD: AES-128-GCM-SHA256, AES-256-GCM-SHA384, ChaCha20-Poly1305-SHA256. Все они используют ECDHE или DHE для обмена ключами. Слабые наборы шифров (RC4, 3DES, CBC) исключены.

Слой записей

После рукопожатия все данные упаковываются в записи TLS: заголовок размером 5 байт (тип содержимого, версия, длина) + зашифрованная с помощью AEAD полезная нагрузка. Порядковый номер не передаётся явно и используется как часть одноразового числа AEAD для предотвращения повторного воспроизведения.

Прямая секретность

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

Просмотр в Wireshark

В Wireshark ClientHello показывает random + key_share, а ServerHello — выбранную группу; последующие записи отображаются как "данные приложения" (в зашифрованном виде). Экспортируйте SSLKEYLOGFILE, чтобы расшифровать данные с помощью ключей сеанса.

Быстрая проверка

Сколько циклов обмена требуется для полного рукопожатия TLS 1.3?

Итоги

TLS 1.3 объединяет ECDHE, HKDF, шифры AEAD и аутентификацию на основе сертификатов в рукопожатии за один цикл обмена с обязательной прямой секретностью. Далее: слой записей TLS и наборы шифров подробно.

Часто задаваемые вопросы

Урок «Рукопожатие TLS 1.3 шаг за шагом» бесплатный?

Да — полный текст урока «Рукопожатие TLS 1.3 шаг за шагом» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «Рукопожатие TLS 1.3 шаг за шагом»?

Разберите ClientHello, ServerHello, получение ключей и сообщение Finished Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Рукопожатие TLS 1.3 шаг за шагом»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Рукопожатие TLS 1.3 шаг за шагом
  2. Уровень записей TLS и наборы шифров
  3. Проверка сертификатов в TLS
  4. Атаки на TLS: BEAST, POODLE и понижение версии
← Назад к Cryptology Academy