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

TLS

TLS (сокр. от англ. Transport Layer Security — безопасность транспортного уровня) — это криптографический протокол, обеспечивающий защищённую передачу данных между узлами в компьютерной сети. TLS работает на транспортном уровне модели OSI (между транспортным и прикладным уровнями) и предназначен для обеспечения конфиденциальности, целостности и аутентификации передаваемой информации. Является преемником протокола SSL (Secure Sockets Layer), который был разработан компанией Netscape Communications в середине 1990-х годов. TLS используется в подавляющем большинстве современных интернет-сервисов, включая веб-браузинг (HTTPS), электронную почту (SMTPS, IMAPS), передачу файлов (FTPS) и голосовую связь (VoIP).

История развития

Предшественник — SSL

Первая версия протокола SSL (SSL 1.0) была разработана компанией Netscape в 1994 году, но никогда не публиковалась из-за серьёзных уязвимостей. В 1995 году вышла версия SSL 2.0, которая содержала множество недостатков, включая слабые алгоритмы шифрования и отсутствие защиты от атак типа «человек посередине» (man-in-the-middle). В 1996 году был выпущен SSL 3.0, который значительно улучшил безопасность и стал основой для последующей стандартизации.

Появление TLS

В 1999 году Internet Engineering Task Force (IETF) опубликовала спецификацию TLS 1.0 (RFC 2246), основанную на SSL 3.0, но с рядом изменений и улучшений. Протокол был переименован, чтобы подчеркнуть его независимость от Netscape. Версии TLS 1.1 (RFC 4346, 2006 год) и TLS 1.2 (RFC 5246, 2008 год) последовательно добавляли новые криптографические алгоритмы и устраняли уязвимости. TLS 1.2 стал наиболее широко используемой версией на протяжении многих лет.

Современные версии

TLS 1.3 (RFC 8446) был опубликован в августе 2018 года. Эта версия значительно сократила количество этапов рукопожатия (handshake), повысила скорость установления соединения и удалила устаревшие и небезопасные криптографические алгоритмы, такие как RC4, 3DES и статические ключи Диффи — Хеллмана. По состоянию на 2025 год TLS 1.3 является рекомендованной версией для всех новых систем, а TLS 1.0 и TLS 1.1 официально признаны устаревшими и отключены в большинстве современных браузеров и серверов.

Архитектура и принцип работы

Место в стеке протоколов

TLS располагается между транспортным протоколом (обычно TCP) и прикладным протоколом (например, HTTP, FTP, SMTP). Это означает, что TLS получает данные от прикладного уровня, шифрует их и передаёт транспортному уровню для отправки. На стороне получателя TLS расшифровывает данные и передаёт их прикладному протоколу.

Основные компоненты

Протокол TLS состоит из двух основных подслоёв:

  1. Протокол записи (Record Protocol): отвечает за фрагментацию, сжатие (опционально), шифрование и аутентификацию данных. Он использует симметричное шифрование для обеспечения конфиденциальности и коды аутентичности сообщений (MAC) для обеспечения целостности.
  2. Протокол рукопожатия (Handshake Protocol): отвечает за установление защищённого соединения. В ходе рукопожатия стороны согласовывают версию протокола, алгоритмы шифрования, обмениваются ключами и аутентифицируют друг друга (обычно сервер аутентифицируется с помощью цифрового сертификата, а клиент — опционально).

Процесс рукопожатия (TLS 1.2)

Классическое рукопожатие TLS 1.2 включает следующие этапы:

  1. ClientHello: клиент отправляет серверу список поддерживаемых версий TLS, наборов шифров (cipher suites) и методов сжатия, а также случайное число.
  2. ServerHello: сервер выбирает из предложенных клиентом вариантов версию протокола, набор шифров и метод сжатия, отправляет своё случайное число и свой цифровой сертификат (содержащий открытый ключ).
  3. ServerKeyExchange (опционально): сервер отправляет дополнительные данные для обмена ключами (например, параметры Диффи — Хеллмана).
  4. CertificateRequest (опционально): если сервер требует аутентификации клиента, он запрашивает сертификат клиента.
  5. ServerHelloDone: сервер сообщает, что завершил начальный этап.
  6. ClientKeyExchange: клиент генерирует предварительный главный секрет (pre-master secret), шифрует его открытым ключом сервера (из сертификата) и отправляет серверу.
  7. ChangeCipherSpec: клиент сообщает, что переходит на согласованные параметры шифрования.
  8. Finished: клиент отправляет зашифрованное сообщение, подтверждающее успешное завершение рукопожатия.
  9. ChangeCipherSpec и Finished со стороны сервера: сервер аналогичным образом подтверждает переход на новое шифрование.

После этого начинается защищённая передача данных прикладного уровня.

Рукопожатие TLS 1.3

TLS 1.3 сократил количество этапов рукопожатия до одного круга (1-RTT, one round-trip time) в большинстве случаев. Клиент сразу отправляет свои предположения о ключах (в сообщении ClientHello), а сервер может сразу ответить зашифрованными данными. Это значительно ускоряет установление соединения, особенно на медленных каналах связи.

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

Наборы шифров (Cipher Suites)

Набор шифров — это комбинация алгоритмов, используемых для разных целей. Он включает:

Сертификаты и инфраструктура открытых ключей (PKI)

Для аутентификации сервера (и опционально клиента) используются цифровые сертификаты X.509. Сертификат содержит открытый ключ владельца, информацию о нём (например, доменное имя) и подпись удостоверяющего центра (CA). Цепочка доверия (chain of trust) позволяет клиенту проверить подлинность сертификата, начиная с корневого сертификата CA, встроенного в операционную систему или браузер.

Применение

HTTPS

Наиболее массовое применение TLS — протокол HTTPS (HTTP over TLS). Он обеспечивает защиту веб-трафика, шифруя данные между браузером пользователя и веб-сервером. HTTPS используется для защиты онлайн-банкинга, интернет-магазинов, социальных сетей, почтовых сервисов и любых других сайтов, где требуется конфиденциальность данных. По состоянию на 2025 год доля HTTPS-трафика в мировом веб-трафике превышает 95%.

Электронная почта

TLS используется для защиты передачи электронной почты между почтовыми серверами (SMTP over TLS, порт 587) и между клиентом и сервером (IMAP over TLS, порт 993; POP3 over TLS, порт 995). Протокол STARTTLS позволяет установить защищённое соединение поверх обычного незащищённого порта.

Другие протоколы

Уязвимости и атаки

Известные атаки на старые версии

Современные угрозы

Хотя TLS 1.3 считается устойчивым к большинству известных атак, безопасность соединения зависит от правильной настройки сервера и клиента. Основные угрозы включают:

Стандартизация и реализация

Организации

Основным разработчиком и хранителем спецификаций TLS является IETF (Internet Engineering Task Force). Рабочая группа TLS (TLS Working Group) публикует RFC (Request for Comments), которые являются стандартами протокола.

Популярные реализации

Интересные факты

Источники

  1. RFC 8446 — The Transport Layer Security (TLS) Protocol Version 1.3.
  2. RFC 5246 — The Transport Layer Security (TLS) Protocol Version 1.2.
  3. RFC 2246 — The TLS Protocol Version 1.0.
  4. «SSL and TLS: Designing and Building Secure Systems» by Eric Rescorla.
  5. «Bulletproof SSL and TLS» by Ivan Ristić.
  6. Документация OpenSSL (openssl.org).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →