TLS 1.3: что изменилось в шифровании и почему это заметно
HTTPS-соединение, которым открыт почти любой современный сайт, работает на протоколе TLS. Его третья major-версия, TLS 1.3, была опубликована в 2018 году и до сих пор остаётся актуальной версией. Разберёмся, что в ней изменилось и какие угрозы она закрывает.
Рукопожатие стало короче
В TLS 1.2 для установления соединения требовалось минимум два полных круга обмена между клиентом и сервером. В TLS 1.3 это количество сокращено до одного. Меньше кругов — значит меньше времени до первого байта данных, а на мобильных сетях с высокой задержкой разница заметна: страница начинает грузиться раньше.
Побочный эффект — упрощение. В новой версии убрали набор шифров и режимы, которые исторически считались слабыми или были нужны только ради совместимости со старым ПО. Меньше опций — меньше места для ошибки в реализации.
Что убрали из списка шифров
TLS 1.3 запрещает алгоритмы, основанные на обмене «RSA-ключом» для установления секрета, и блок-шифры с режимом CBC. Их место заняли AEAD-шифры: AES-256-GCM, AES-128-GCM и ChaCha20-Poly1305. Такие шифры защищают данные и одновременно гарантируют, что сообщение не было изменено по пути.
ChaCha20-Poly1305 особенно полезен на устройствах без аппаратного ускорения AES: там он часто быстрее и не даёт «утечек» по времени выполнения.
Защита от повторов и понижения версии
В TLS 1.3 введено обязательное проведение (transcript hash): стороны подписывают весь переговорный процесс, и атакующий не может подменить часть сообщений, подставив слабый алгоритм. Попытка «договориться» о TLS 1.0 через downgrade не проходит — соединение просто не устанавливается.
Раньше такая атака была реальна: клиент, умеющий и новое, и старое, можно было убедить в работе со старым протоколом, а тот уже взломать.
0-RTT и его нюанс
Благодаря короткому рукопожатию TLS 1.3 поддерживает режим 0-RTT: клиент, который уже общался с сервером, может отправить данные почти сразу, не дожидаясь ответа. Это ускоряет повторные посещения.
Но у 0-RTT есть известное ограничение: отправленные таким образом запросы формально уязвимы к повтору — перехваченное сообщение можно отправить второй раз. Поэтому в 0-RTT обычно передают только безопасные запросы, а не операции с деньгами или изменением данных.
Что это даёт обычному пользователю
Шифрование TLS не прячет от провайдера сам факт подключения и адрес сайта — их видно и без HTTPS. Но оно полностью скрывает содержимое: текст страницы, данные форм, заголовки, cookies. Без корректно работающего TLS любая контролирующая сторона на маршруте получала бы содержимое соединения в открытом виде.
Проверить версию протокола просто: в любом браузере есть значок блокировки в адресной строке, а в отчёте безопасности соединения указана версия — например, TLS 1.3.
Резюме
TLS 1.3 — это быстрее за счёт одного круга рукопожатия, строже за счёт отказа от слабых шифров и устойчивее к downgrade-атакам. Для сайта это вопрос базовой гигиены: современные браузеры уже считают старые версии протокола небезопасными и предупреждают пользователя.