Как устроено TLS-рукопожатие? | OTUS
🔥 Успейте получить скидку!
Только до 27.01 можно приобрести курсы со скидкой 25%. Торопитесь!
Выбрать курс

Курсы

Программирование
Разработчик программных роботов (RPA) на базе UiPath и PIX
-25%
Разработчик C#
-25%
Алгоритмы и структуры данных
-25%
Backend-разработчик на PHP
-25%
JavaScript Developer. Professional
-25%
Team Lead
-25%
Golang Developer. Professional
-25%
Agile Project Manager
-25%
Flutter Mobile Developer
-25%
Android Developer. Professional
-11%
MS SQL Server Developer
-8%
C++ Developer. Professional Framework Laravel Cloud Solution Architecture Highload Architect Reverse-Engineering. Professional Kotlin Backend Developer React.js Developer VOIP инженер Нереляционные базы данных Scala-разработчик Супер-практикум по использованию и настройке GIT IoT-разработчик JavaScript Developer. Basic Advanced Fullstack JavaScript developer Unity Game Developer. Professional Супер-интенсив Azure
Инфраструктура
Супер-интенсив "Версионирование и командная работа с помощью Git"
-30%
Administrator Linux. Professional
-25%
Супер-интенсив «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Разработчик программных роботов (RPA) на базе UiPath и PIX
-25%
Administrator Linux. Advanced
-25%
Infrastructure as a code in Ansible
-25%
Network engineer
-25%
MS SQL Server Developer
-8%
Cloud Solution Architecture Highload Architect Разработчик голосовых ассистентов и чат-ботов Мониторинг и логирование: Zabbix, Prometheus, ELK Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Архитектор сетей Супер-интенсив «IaC Ansible»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Как устроено 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 (нулевое время возобновления приёма-передачи), а это существенно повысило скорость для посетителя, который повторно возвращается на сайт.

Источник — «Taking a Closer Look at the SSL/TLS Handshake».

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Только до 27 января!
🔥 СКИДКА 25% на курсы OTUS!