TLS 1.2
TLS 1.2 (Transport Layer Security 1.2) — это криптографический протокол, обеспечивающий защищённую передачу данных в компьютерных сетях, главным образом в сети Интернет. Он относится к семейству протоколов TLS, разработанному Инженерным советом Интернета (IETF) для замены устаревшего протокола SSL (Secure Sockets Layer). TLS 1.2 обеспечивает конфиденциальность, целостность и аутентификацию данных за счёт комбинации симметричного и асимметричного шифрования, а также механизмов проверки подлинности сторон. Вплоть до середины 2010-х годов TLS 1.2 был наиболее широко используемой версией протокола, пока не началось массовое внедрение TLS 1.3.
История и предпосылки
Протокол TLS берёт начало от протокола SSL 3.0, разработанного компанией Netscape Communications в 1996 году. После уязвимостей, обнаруженных в SSL (например, атака POODLE в 2014 году), IETF выпустил первую версию TLS (1.0) в 1999 году как RFC 2246. Однако и TLS 1.0, и последующая версия 1.1 (RFC 4346, 2006 год) содержали ряд архитектурных недостатков, включая слабую поддержку современных криптоалгоритмов и уязвимости к атакам типа BEAST и Lucky Thirteen.
Спецификация TLS 1.2 была опубликована в августе 2008 года как RFC 5246. Ключевыми улучшениями по сравнению с предыдущими версиями стали:
- Отказ от устаревших алгоритмов: TLS 1.2 полностью исключил поддержку алгоритмов хеширования SHA-1 и MD5, а также слабых блочных шифров (DES, RC4) в качестве обязательных. Рекомендованным режимом работы стал HMAC-SHA256.
- Поддержка современных криптоалгоритмов: Протокол явно предусматривал использование алгоритмов AES (Advanced Encryption Standard) в режимах CBC и GCM, а также аутентифицированного шифрования с помощью AEAD (Authenticated Encryption with Associated Data).
- Расширенное согласование параметров: Введён механизм расширения (Extensions) для установления более гибких параметров соединения, что позволило впоследствии внедрить такие функции, как SNI (Server Name Indication) и ALPN (Application-Layer Protocol Negotiation).
- Защита от атак на основе сжатия и тайминга: Были добавлены рекомендации по безопасному сжатию и предотвращению утечки информации по сторонним каналам.
Ранее российским криптографическим стандартом ГОСТ Р 34.10-2001 не был включён в базовую спецификацию TLS 1.2, однако в России получил развитие отечественный стандарт защиты данных на основе протокола TLS с использованием ГОСТ-алгоритмов (протоколы «КриптоПро TLS» и другие).
Архитектура протокола
TLS 1.2 работает на сеансовом уровне сетевой модели OSI, располагаясь между транспортным уровнем (TCP) и прикладным уровнем (HTTP, FTP, SMTP и др.). Протокол состоит из двух подсистем:
- Протокол записей (Record Protocol): отвечает за фрагментацию, сжатие (опционально), шифрование и аутентификацию передаваемых данных. Для каждой записи вычисляется код аутентификации сообщения (MAC), что обеспечивает целостность и подлинность.
- Протокол квитирования (Handshake Protocol): управляет начальным установлением соединения, включая аутентификацию сторон, согласование криптоалгоритмов, обмен ключами и генерацию общего сеансового ключа. Этот этап может включать до 10 раундов обмена сообщениями.
Процедура установления соединения (Handshake)
- ClientHello: клиент отправляет список поддерживаемых версий TLS, наборов шифров (Cipher Suites), методов сжатия и случайное число (random nonce).
- ServerHello: сервер выбирает версию, набор шифров и метод сжатия из предложенных клиентом, отправляет свой random nonce и, опционально, свой сертификат X.509.
- Сертификат и обмен ключами: сервер отправляет свой сертификат открытого ключа (обычно с подписью удостоверяющего центра). Для асимметричного шифрования или обмена ключами по протоколу Диффи — Хеллмана (DH) могут быть отправлены дополнительные параметры.
- ClientKeyExchange: клиент генерирует предварительный ключ (Premaster Secret) и отправляет его серверу, зашифровав открытым ключом сервера (если используется RSA) или передаёт параметры DH. Из Premaster Secret и двух random nonces вычисляется мастер-ключ (Master Secret).
- ChangeCipherSpec: клиент и сервер сигнализируют, что последующие данные будут зашифрованы с использованием согласованных параметров.
- Finished: обе стороны отправляют зашифрованное хеш-значение (HMAC) всех предыдущих сообщений, что подтверждает, что соединение было успешно установлено без вмешательства третьих лиц.
После завершения квитирования все последующие данные передаются в зашифрованном виде с помощью симметричного алгоритма (например, AES-128-GCM) и ключа, полученного из мастер-ключа.
Наборы шифров (Cipher Suites)
TLS 1.2 определяет до нескольких десятков стандартных наборов шифров, каждый из которых включает компоненты:
- Асимметричное шифрование / обмен ключами: RSA, DH, ECDH (Elliptic Curve Diffie — Hellman).
- Аутентификация: RSA, DSA, ECDSA.
- Симметричное шифрование: AES, 3DES, Camellia, ChaCha20.
- Режим шифрования: CBC, GCM, CCM, Poly1305 (для ChaCha20).
- Функция хеширования: SHA-256, SHA-384, SHA-512 (SHA-1 также допускался, но его использование было рекомендовано прекратить).
Наиболее надёжными и рекомендуемыми сочетаниями считаются наборы, использующие ECDHE (Ephemeral ECDH) для обеспечения совершенной прямой секретности (PFS) и AES-GCM для аутентифицированного шифрования.
Применение и распространение
TLS 1.2 получил широкое распространение в середине 2010-х годов, став стандартом де-факто для защиты веб-соединений, почтовых серверов (SMTP, IMAP, POP3), мессенджеров (XMPP) и других сетевых протоколов. После того как в 2018 году IETF предупредил о серьёзных уязвимостях в TLS 1.0 и 1.1 (атаки типа BEAST, POODLE, Lucky Thirteen), большинство браузеров и серверов прекратили их поддержку. К началу 2020-х годов более 95% HTTPS-соединений в мире использовали TLS 1.2 или 1.3.
В России TLS 1.2 применяется наряду с более новыми версиями. С 2020 года регуляторы в сфере информационной безопасности рекомендовали переход на TLS 1.2 минимум, а для государственных информационных систем — на отечественные криптоалгоритмы с эмуляцией TLS 1.2 (ГОСТ Р 34.12-2015, ГОСТ Р 34.11-2012). С 2024 года в России началось внедрение TLS 1.3, однако TLS 1.2 остаётся важным как переходный стандарт.
Критика и ограничения
Несмотря на свою зрелость, TLS 1.2 имеет несколько недостатков:
- Сложность конфигурации: из-за большого количества устаревших и слабых наборов шифров (например, с использованием RC4, CBC-mode с уязвимостью к padding oracle attacks) администраторам необходимо вручную отключать небезопасные варианты.
- Уязвимость к атакам на основе времени (Timing attacks): некоторые реализации алгоритмов, особенно ECC, могли быть подвержены атакам, раскрывающим биты секретного ключа (см. атака Lucky 13).
- Отсутствие поддержки PFS по умолчанию: если сервер настроен на RSA, то при компрометации приватного ключа все прошлые сессии могут быть расшифрованы. В TLS 1.2 поддержка ECDHE стала стандартом, но не являлась обязательной.
В 2018 году IETF выпустил стандарт TLS 1.3 (RFC 8446), который значительно упростил набор шифров, уменьшил количество раундов квитирования до одного (1-RTT) и сделал обязательной поддержку EDH-эфимерических ключей, что решило большинство проблем TLS 1.2.
Источники
- RFC 5246 — The Transport Layer Security (TLS) Protocol Version 1.2 (IETF, 2008).
- RFC 8446 — The Transport Layer Security (TLS) Protocol Version 1.3 (IETF, 2018).
- RFC 7525 — Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) (IETF, 2015).
- А. В. Чернов, В. Б. Беспалов — Криптографические протоколы: стандарты и применения (Москва, 2018).
- Материалы Министерства цифрового развития, связи и массовых коммуникаций РФ по переходу на ГОСТовые криптоалгоритмы (2021–2024).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →