Перейти к содержимому
Skip to content
← Все статьи

TLS 1.3: что изменилось и почему это важно

TLS 1.3 — последняя версия протокола Transport Layer Security, утверждённая в RFC 8446 в августе 2018 года. Это самое значительное обновление протокола TLS с момента его создания: удалены устаревшие криптографические алгоритмы, упрощено рукопожатие и значительно улучшены безопасность и производительность. Для всех, кто управляет веб-сервисами, понимание TLS 1.3 необходимо для поддержания безопасной и быстрой инфраструктуры.

Рукопожатие TLS: сравнение 1.2 и 1.3

Самое заметное улучшение TLS 1.3 — сокращённая задержка рукопожатия. TLS 1.2 требует два круговых обхода (2-RTT) для установления защищённого соединения. TLS 1.3 сокращает это до одного (1-RTT) и поддерживает нулевой (0-RTT) для повторных соединений.

Рукопожатие TLS 1.2 (2-RTT)

Клиент → Сервер: ClientHello (поддерживаемые шифры, random)
Сервер → Клиент: ServerHello, Certificate, ServerKeyExchange, ServerHelloDone
Клиент → Сервер: ClientKeyExchange, ChangeCipherSpec, Finished
Сервер → Клиент: ChangeCipherSpec, Finished
[Начало передачи данных приложения]

Рукопожатие TLS 1.3 (1-RTT)

Клиент → Сервер: ClientHello + KeyShare (предполагаемые параметры обмена ключами)
Сервер → Клиент: ServerHello + KeyShare, EncryptedExtensions, Certificate, CertificateVerify, Finished
Клиент → Сервер: Finished
[Данные приложения — на один RTT быстрее]

Ключевое различие: в TLS 1.3 клиент отправляет параметры обмена ключами уже в первом сообщении, предполагая выбор сервера. Если предположение верно (что обычно так), рукопожатие завершается за один круговой обход.

Возобновление 0-RTT

При повторном подключении к серверу TLS 1.3 поддерживает 0-RTT (ранние данные). Клиент отправляет зашифрованные данные уже в первом сообщении, до завершения рукопожатия:

Клиент → Сервер: ClientHello + KeyShare + EarlyData (зашифровано PSK)
Сервер → Клиент: ServerHello + KeyShare + Finished
[Сервер обрабатывает ранние данные немедленно]

Это полностью устраняет задержку рукопожатия для повторных посетителей. Однако данные 0-RTT уязвимы к атакам воспроизведения, поэтому их следует использовать только для идемпотентных запросов (GET) и никогда для изменяющих состояние операций.

Удалённые алгоритмы и возможности

TLS 1.3 агрессивно удаляет криптографические примитивы, признанные слабыми или ненужными:

Удалённая функцияПричина
RSA key exchangeНет прямой секретности — компрометация ключа раскрывает весь прошлый трафик
Шифры CBCУязвимы к атакам padding oracle (POODLE, Lucky13)
RC4Известные смещения и уязвимости
SHA-1 для подписейУстойчивость к коллизиям нарушена
Статический DH / ECDHНет прямой секретности
Пользовательские DHE-группыРиск слабых параметров (атака Logjam)
Экспортные шифрыНамеренно ослабленные (атака FREAK)
СжатиеВектор атаки CRIME
RenegotiationСложность и поверхность атаки

Поддерживаемые наборы шифров

TLS 1.3 поддерживает только пять наборов шифров, все с аутентифицированным шифрованием (AEAD):

TLS_AES_128_GCM_SHA256        (обязательный)
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_CCM_SHA256
TLS_AES_128_CCM_8_SHA256

Все наборы шифров TLS 1.3 обеспечивают прямую секретность по умолчанию. Алгоритм обмена ключами (ECDHE или DHE) согласуется отдельно от набора шифров.

Прямая секретность по умолчанию

В TLS 1.2 прямая секретность была опциональной — зависела от выбора ECDHE или DHE. Многие серверы использовали RSA, что означало: компрометация ключа сервера в будущем раскрывала весь ранее записанный трафик.

TLS 1.3 делает прямую секретность обязательной. Каждое соединение использует эфемерный обмен ключами, поэтому каждая сессия имеет уникальный ключ.

Зашифрованное рукопожатие

В TLS 1.2 сертификат сервера передаётся в открытом виде. Это позволяет пассивным наблюдателям определить, к какому сайту подключается клиент. TLS 1.3 шифрует сертификат сервера и большинство сообщений рукопожатия после ServerHello, значительно улучшая конфиденциальность.

Влияние на производительность

МетрикаTLS 1.2TLS 1.3Улучшение
Полное рукопожатие2 RTT1 RTTНа 50% меньше круговых обходов
Возобновление1 RTT0 RTTНулевая задержка для повторных визитов
Накладные расходы шифрованияПеременные (CBC/GCM)Только AEADБолее эффективное шифрование
Сообщения рукопожатия6-82-3Проще, меньше пакетов

При RTT 50 мс TLS 1.3 экономит 50 мс на каждом новом соединении и 100 мс на каждом возобновлении по сравнению с TLS 1.2.

Настройка сервера

Включение TLS 1.3 на современных веб-серверах несложно:

# Nginx
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;

# Apache
SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLCipherSuite TLSv1.3 TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256

Проверка поддержки TLS 1.3

# Тест с OpenSSL
openssl s_client -connect example.com:443 -tls1_3

# Тест с curl
curl -v --tlsv1.3 https://example.com 2>&1 | grep "SSL connection"

# Проверка поддерживаемых протоколов
nmap --script ssl-enum-ciphers -p 443 example.com

Итоги

TLS 1.3 — значительное улучшение TLS 1.2 по всем параметрам: быстрее (1-RTT рукопожатие, 0-RTT возобновление), безопаснее (обязательная прямая секретность, удалены устаревшие алгоритмы) и проще (меньше наборов шифров, зашифрованное рукопожатие). Если ваши серверы до сих пор поддерживают только TLS 1.2, обновление до TLS 1.3 — одно из самых эффективных улучшений производительности и безопасности с минимальными усилиями по настройке.

Проверьте ваш сайт прямо сейчас

Проверить →
Другие статьи: SSL/TLS
SSL/TLS
Как проверить SSL-сертификат сайта: пошаговое руководство
12.03.2026 · 14 просм.
SSL/TLS
TLS-рукопожатие: пошаговое руководство по установке защищенного соединения
16.03.2026 · 11 просм.
SSL/TLS
SSL/TLS сертификаты: как работает HTTPS
10.03.2025 · 25 просм.
SSL/TLS
Wildcard SSL-сертификаты: когда и как использовать
16.03.2026 · 15 просм.