Открыть сервисСервис

TLS — протокол защиты трафика

TLS (Transport Layer Security, транспортный протокол безопасности) — криптографический протокол, обеспечивающий конфиденциальность, целостность и аутентификацию данных при передаче по компьютерным сетям. Является преемником протокола SSL (Secure Sockets Layer) и применяется в подавляющем большинстве современных интернет-соединений: веб-браузеры, электронная почта, мессенджеры, API и другие сервисы используют TLS для защиты передаваемой информации.

История

Протокол SSL был разработан компанией Netscape в середине 1990-х годов для обеспечения безопасного соединения между браузером и веб-сервером. Версия SSL 3.0, выпущенная в 1996 году, стала основой для дальнейшего развития. В 1999 году организация IETF стандартизировала обновлённую версию протокола под названием TLS 1.0 (RFC 2246), формально разорвав связь с брендом Netscape.

Далее протокол развивался следующим образом:

  • TLS 1.1 (2006, RFC 4346) — улучшена обработка режима CBC, добавлена явная индикация IV.
  • TLS 1.2 (2008, RFC 5246) — поддержка более гибких наборов шифров, алгоритм HMAC-SHA256, улучшен механизм выбора наборов шифров (cipher suites).
  • TLS 1.3 (2018, RFC 8446) — существенная переработка: сокращено число раундов рукопожатия с двух до одного, удалены устаревшие и небезопасные алгоритмы (RC4, 3DES, CBC-режимы, обмен Диффи — Хеллмана на эллиптических кривых с короткими ключами), обязательной стала поддержка forward secrecy.

Принцип работы

TLS работает поверх транспортного протокола TCP (режим «по умолчанию») и, начиная с TLS 1.3, может работать поверх UDP через протокол DTLS (Datagram TLS). Протокол состоит из двух основных этапов: рукопожатия (handshake) и передачи зашифрованных данных.

Рукопожатие

Во время рукопожатия клиент и сервер согласовывают параметры защищённого соединения:

  1. Клиент отправляет приветствие (ClientHello) с поддерживаемыми версиями протокола, наборами шифров и случайным числом.
  2. Сервер отвечает (ServerHello), выбирая версию и набор шифров, и отправляет свой сертификат.
  3. Клиент проверяет сертификат по цепочке доверия (от корневого удостоверяющего центра), после чего стороны выполняют обмен ключами — в TLS 1.2 и ранее через сертификат сервера, в TLS 1.3 — с помощью обмена Диффи — Хеллмана (в том числе по эллиптическим кривым X25519 и P-256).
  4. Устанавливается симметричный сеансовый ключ, которым шифруется весь дальнейший трафик.

В TLS 1.3 рукопожатие сокращено до одного раунда (0-RTT при повторном подключении), что ускоряет установление соединения и снижает задержку.

Шифрование

После рукопожатия данные передаются с использованием симметричного шифрования (обычно AES в режимах GCM или ChaCha20-Poly1305). Каждый фрагмент данных получает MAC (код аутентификации сообщения) или встраивает аутентификацию в AEAD-режим, что гарантирует целостность и защиту от подмены.

Сертификаты и доверие

Подлинность сервера подтверждается цифровым сертификатом X.509, выданным удостоверяющим центром (CA). Браузеры и операционные системы содержат встроенный список доверенных корневых CA. Для проверки сертификата используется цепочка промежуточных сертификатов, ведущая к корневому. Проект Let's Encrypt, запущенный в 2015 году, обеспечивает бесплатную автоматизированную выдачу сертификатов, что существенно увеличило долю сайтов с TLS-защитой.

Применение

TLS применяется в различных протоколах прикладного уровня:

  • HTTPS — защищённая версия HTTP, использует TLS для шифрования веб-трафика.
  • SMTPS, IMAPS, POP3S — защищённая электронная почта.
  • FTPS — защищённый файловый трансфер.
  • LDAPS — защищённый доступ к каталогам LDAP.
  • DoT (DNS over TLS) и DoH (DNS over HTTPS) — защита DNS-запросов.
  • DTLS — для протоколов поверх UDP: VoIP, видеоконференции, игры.

Криптографические алгоритмы

TLS поддерживает наборы шифров (cipher suites), определяющих комбинацию алгоритмов для обмена ключами, подписи, шифрования и хеширования. В TLS 1.3 список сокращён до шифров с обязательной поддержкой forward secrecy: AES-128-GCM, AES-256-GCM, ChaCha20-Poly1305. Алгоритмы RSA для обмена ключами и небезопасные хеш-функции SHA-1 исключены.

Известные уязвимости

За время существования протокола были обнаружены и устранены ряд уязвимостей: BEAST (2011), POODLE (2014, затрагивал SSL 3.0), Heartbleed (2014, уязвимость в реализации OpenSSL, позволявшая утечку памяти сервера), Logjam (2015, атака на обмен Диффи — Хеллмана), ROBOT (2017, атака на RSA-шифрование). Уязвимость Heartbleed привела к массовой ротации ключей и сертификатов по всему миру.

Статистика и распространение

По данным Google Transparency Report, доля трафика HTTPS в Chrome на протяжении 2010-х годов выросла с единиц процентов до более чем 95% к 2020-м годам. Браузеры отмечают сайты без TLS как «небезопасные», что стимулировало переход на защищённые соединения.

Источники

  • RFC 8446 — The Transport Layer Security (TLS) Protocol Version 1.3
  • RFC 5246 — The Transport Layer Security (TLS) Protocol Version 1.2
  • NIST Special Publication 800-52 Rev. 2 — Guidelines for the Selection, Configuration, and Use of Transport Layer Security (TLS) Implementations
  • Google Transparency Report — HTTPS encryption on the web
  • Брейк, Э. «Криптография: протоколы, стандарты и практика» (Cryptography in Open Source)
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru