Как работает SSL/TLS Handshake

watch 18s
views 2

16:56, 02.12.2022

Содержание статьи
arrow

  • Шифрование данных
  • Как происходит SSL/TLS-рукопожатие
  • Алгоритм Диффи-Хеллмана в TLS Handshake 1.2
  • Шифронаборы TLS 1.3
  • Вывод

SSL/TLS Handshake – «рукопожатие» между сервером и клиентом. Проще говоря – идентификация друг друга. Происходит во время HTTPS-соединения внутри зашифрованного туннеля SSL/TLS, который гарантирует безопасность как серверу, так и клиенту. После успешной идентификации генерируется секретный сеансовый ключ, который обеспечивает защищенную связь – он служит одновременно как для шифрования, так и для дешифрования передаваемых данных.

Шифрование данных

Процесс рукопожатия обязательно сопровождается обменом сведениями о поддерживаемых криптографических технологиях – это необходимо для того, чтобы сервер и клиент согласовали оптимальный для обеих сторон шифронабор. После согласования сервер передает клиенту свой SSL-сертификат.

Симметричное шифрование предотвращает возможность прочтения данных сторонними лицами. Кроме того, даже в случае перехвата пакетов их не получится изменить, так как каждое сообщение содержит код MAC, с помощью которых проверяется целостность данных.

Как происходит SSL/TLS-рукопожатие

Если представить SSL-рукопожатие как диалог между сервером и клиентом, то процесс будет выглядеть следующим образом:

  1. Клиент обращается к серверу с просьбой установить безопасное соединение и предлагает набор шифров, которые «понимает», а также совместимую версию SSL/TLS.
  2. Сервер проверяет присланный шифронабор, сравнивает со своим, и отсылает ответ клиенту с файлом сертификата и открытым ключом.
  3. Клиент проверяет сертификат и, если всё в порядке, предлагает проверить закрытый ключ. Для этого он его генерирует и шифрует общий секретный ключ с помощью присланного ранее открытого ключа сервера.
  4. Сервер принимает ключ, проверяет его своим закрытым ключом. Далее он создает главный секрет, который и будет использоваться для шифрования обмениваемой информации.

После этого клиент отправляет серверу тестовое сообщение, зашифрованное по продуманному ранее методу, а тот его расшифровывает и анализирует. На этом SSL/TLS Handshake завершается, и клиент с сервером могут спокойно обмениваться информацией дальше.

Если сеанс будет завершен, и через какое-то время клиент снова обратится к серверу, проходить заново процедуру «рукопожатия» не потребуется – все сгенерированные ранее данные и главный секрет сохранят свою актуальность. Весь этот процесс занимает считанные секунды и проходит абсолютно незаметно для пользователя.

Как работает ssl/tls handshake

Алгоритм Диффи-Хеллмана в TLS Handshake 1.2

Версия протокола TLS 1.2 появилась в 2008 году как крупное обновление протокола 1.1 с улучшенным механизмом согласования сторонами списков поддерживаемых методов шифрования. Выглядит следующим образом:

TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256


Здесь:

  • TLS — протокол передачи данных;
  • ECDHE — временный (эфемерный) ключ;
  • ECDSA — алгоритм аутентификации;
  • AES 128 GCM — алгоритм симметричного шифрования;
  • SHA256 — алгоритм хэширования данных.

Это и есть алгоритм Диффи-Хеллмана, но на сегодняшний день он уже считается устаревшим и редко где используется.

Шифронаборы TLS 1.3

Эта версия протокола увидела свет в 2018 году и претерпела ряд существенных улучшений:

  • разделены процессы согласования ключей, аутентификаций и наборы шифрования;
  • добавлено правило, утверждающее обязательность наличия цифровой подписи;
  • внедрена функция получения ключа HKDF;
  • ускорены процессы соединения;
  • запрещено сжатие данных, шифры без аутентификации сообщений и пересогласование, которые обеспечивали определенную уязвимость предыдущей версии протокола;
  • добавили поточный шифр ChaCha20 с MAC кодом Poly1305, эффективные алгоритмы цифровой подписи Ed25519 и Ed448, а также соответствующие им протоколы обмена ключами Curve25519 и Curve448.

Выглядит шифронабор рукопожатия TLS 1.3 так:

TLS_AES_256_GCM_SHA384


Соответственно, здесь:

  • TLS — протокол;
  • AES-256 в режиме GCM — алгоритм шифрования и аутентификации с дополнительными данными (AEAD);
  • SHA384 — алгоритм функции формирования хешированного ключа (HKFD).

Протокол TLS 1.3 претерпел огромное количество изменений и улучшений, что положительно сказалось на безопасности и производительности процессов Handshake, а сама аутентификация стала занимать значительно меньше времени. Скорость рукопожатия увеличилась почти в 2 раза, при этом протокол лишился нескольких уязвимостей, которые ранее доставляли немало проблем системным администраторам.

Вывод

Наиболее безопасный вариант – криптографический протокол TLS 1.3, но он обладает специфической обратной совместимостью. При установке соединения клиент и сервер обмениваются версиями протокола и выбирается тот, с которым могут работать обе стороны. Однако на практике оказалось, что некоторое количество серверов на старом протоколе TLS 1.2 мгновенно обрывали соединение в случае, если процесс «рукопожатия» должен был состояться через протокол TLS 1.3. Этот феномен был назван оссификацией, и из-за него в первые годы возникали проблемы с внедрением нового протокола. На сегодняшний день эта проблема не встречается практически нигде, а сами серверы в большинстве своем перешли на TLS 1.3, так что мы рекомендуем использовать именно его.

Поделиться

Была ли эта статья полезной для вас?

4 пользователи считают эту статью полезной

Популярные предложения VPS

-8.1%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
wKVM-SSD 8192 Windows

$ 37.16

$

При оплате за год

-9.7%

CPU
CPU
10 Xeon Cores
RAM
RAM
64 GB
Space
Space
300 GB SSD
Bandwidth
Bandwidth
Unlimited
wKVM-SSD 65536 Windows

$ 218.4

$

При оплате за год

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 4096 Linux

$ 18.58

$

При оплате за год

-22.2%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
300 GB
KVM-SSD 4096 HK Linux

$ 38.44

$

При оплате за год

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 8192 Linux

$ 30.11

$

При оплате за год

-10%

CPU
CPU
3 Epyc Cores
RAM
RAM
2 GB
Space
Space
20 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 2048 Linux

$ 17.36

$

При оплате за год

-9.9%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
40 GB HDD
Bandwidth
Bandwidth
300 Gb
KVM-HDD HK 1024 Linux

$ 5.78

$

При оплате за год

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-KVM-SSD 8192 Linux

$ 134.53

$

При оплате за год

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 16384 Linux

$ 60.57

$

При оплате за год

-13%

CPU
CPU
2 Xeon Cores
RAM
RAM
512 MB
Space
Space
10 GB SSD
Bandwidth
Bandwidth
300 GB
KVM-SSD 512 HK Linux

$ 8.15

$

При оплате за год

Другие статьи на эту тему

cookie

Принять файлы cookie и политику конфиденциальности?

Мы используем файлы cookie, чтобы обеспечить вам наилучший опыт работы на нашем сайте. Если вы продолжите работу без изменения настроек, мы будем считать, что вы согласны получать все файлы cookie на сайте HostZealot.