🤝
blog.cat.ssl

Процесс SSL handshake: внутренняя механика TLS-рукопожатия по этапам

22.05.2036
← Все статьи

Когда пользователь вводит HTTPS-адрес в браузере, первая коммуникация с сервером происходит за несколько миллисекунд. Эта коммуникация называется SSL или TLS-рукопожатием, и в ходе нее стороны узнают друг друга, устанавливают доверие и создают ключ для последующего зашифрованного обмена. Кажущийся простым процесс на самом деле объединяет несколько механизмов безопасности и составляет основу конфиденциальности в Интернете.

Этап client hello

Рукопожатие начинается со стороны браузера пользователя. Браузер отправляет серверу сообщение "client hello", в котором сообщает свои возможности: какие версии TLS поддерживает, какие наборы шифров может использовать, какие методы компрессии знает. Также клиент отправляет случайное число (client random), которое позже используется для генерации ключа. В поле SNI указывается, к какому домену идет обращение — это важно, когда на одном IP-адресе работает несколько сайтов.

Server hello и сертификат

Сервер отвечает и сообщает свой выбор: какая версия TLS и набор шифров будут использованы. Сервер также отправляет свое случайное число (server random) и предоставляет сертификат. Через сертификат сервер доказывает свою подлинность — он подписан Certificate Authority и связан с корневыми сертификатами, которым браузер уже доверяет. Браузер проверяет сертификат: срок действия, соответствие домена, надежность подписавшего и отсутствие отзыва.

Обмен ключами

На следующем этапе стороны должны создать общий секретный ключ для симметричного шифрования. В современных версиях TLS это делается через алгоритм Диффи-Хеллмана. Клиент и сервер обмениваются открытыми ключевыми данными, и каждый из них независимо вычисляет один и тот же секретный ключ. Замечательная особенность этого подхода в том, что даже если кто-то прослушивает соединение, он не сможет восстановить этот ключ. Это свойство называется forward secrecy и особенно важно потому, что даже при будущей компрометации серверного ключа старые записи останутся нерасшифрованными.

Сообщение finished и переход к симметричной связи

После создания ключа стороны отправляют друг другу сообщение "finished", содержащее хеш всех сообщений рукопожатия. Этот шаг подтверждает, что процесс не был искажен и не было постороннего вмешательства. После этого все последующие данные передаются с симметричным шифрованием — AES или ChaCha20. В TLS 1.3 процесс оптимизирован и завершается за один проход (1-RTT), тогда как в старом TLS 1.2 требовалось два прохода.

Sayt.uz практика

Инфраструктура Sayt.uz весной 2036 года ввела TLS 1.3 как обязательное требование. По статистике, после обновления среднее время рукопожатия сократилось с 187 миллисекунд до 94 — то есть почти на 50 процентов. Это повысило скорость загрузки сайтов на 12 процентов и напрямую повлияло на пользовательский опыт. Для клиентов Sayt.uz TLS 1.3 и forward secrecy включены по умолчанию на всех тарифах. Wildcard SSL стоит 645 000 сум, DV-сертификат — 312 000 сум, EV-сертификат начинается от 1 870 000 сум. Техническая поддержка решает проблемы handshake в среднем за 38 минут.

Похожие статьи

📱 SSL pinning: самая надежная защита мобильных приложений от MITM-атак 🔓 Пропал зеленый замок HTTPS: причины и пошаговое исправление Мониторинг срока действия SSL: системы оповещений и автоматические проверки 💰 Сравнение цен SSL — Let's Encrypt, Sectigo, DigiCert и GlobalSign
🌐 Язык
🇺🇿 O'zbek 🇺🇿 Ўзбек 🇷🇺 Русский 🇬🇧 English