TLS 1.3 — это новейшая версия протокола HTTPS, принятая IETF в 2018 году и с тех пор совершившая революцию в области интернет-безопасности и скорости. В этой новой версии удалены старые и опасные криптографические алгоритмы, процесс handshake ускорен в 2 раза и добавлена революционная технология под названием 0-RTT. В этой статье мы рассмотрим все основные особенности TLS 1.3, отличия от TLS 1.2 и какую пользу это даёт владельцу сайта.
Основные отличия TLS 1.3
Самое крупное изменение — полное удаление старых и опасных алгоритмов. RC4, 3DES, MD5, SHA-1, RSA key exchange — все эти старые алгоритмы отсутствуют в TLS 1.3. Оставлены только современные и безопасные алгоритмы: AES-GCM, ChaCha20-Poly1305, ECDHE, EdDSA. Это сильно сократило список cipher suite — в TLS 1.2 были сотни комбинаций, в TLS 1.3 всего 5. Это упростило настройку и снизило вероятность ошибок.
Скорость handshake — 1-RTT
В TLS 1.2 для установления нового соединения требовалось 2 полных round-trip (двойной обмен сообщениями между клиентом и сервером). В TLS 1.3 это сокращено до 1 round-trip. Это значит — если пинг между вами и сервером 100 мс, в TLS 1.2 handshake был бы 200 мс, в TLS 1.3 — 100 мс. Это даёт заметное ускорение, особенно в мобильных сетях и для международных посетителей.
Технология 0-RTT
0-RTT (Zero Round Trip Time) — самая инновационная особенность TLS 1.3. Если вы ранее уже подключались к этому серверу, при повторном соединении можете сразу отправлять данные вместе с первым пакетом, не дожидаясь никакого handshake. Это позволяет отправлять HTTP запрос одновременно с TLS handshake и экономит ещё 100-300 мс. Но у 0-RTT есть определённые ограничения по безопасности — из-за риска replay атаки рекомендуется использовать только в идемпотентных запросах (GET).
Обязательность Perfect Forward Secrecy
В TLS 1.3 Perfect Forward Secrecy (PFS) сделан обязательным. Это значит — для каждого соединения создаётся новый временный ключ и уничтожается после завершения соединения. Даже если злоумышленник получит приватный ключ сервера, расшифровать предыдущие соединения будет невозможно. В TLS 1.2 PFS был необязательным и многие серверы его не включали, в TLS 1.3 же другого варианта нет.
Поддержка браузеров и серверов
В настоящее время все современные браузеры (Chrome 70+, Firefox 63+, Safari 12.1+, Edge 79+) полностью поддерживают TLS 1.3. На стороне сервера нужны Nginx 1.13+, Apache 2.4.37+, OpenSSL 1.1.1+. В Nginx достаточно добавить строку ssl_protocols TLSv1.2 TLSv1.3, в Apache SSLProtocol -all +TLSv1.2 +TLSv1.3. Существующий сертификат не меняется — один и тот же сертификат работает в TLS 1.2 и TLS 1.3.
Практика Sayt.uz
88% клиентов Sayt.uz пользуются сайтами с включённым TLS 1.3. Наши серверы по умолчанию поддерживают TLS 1.3 и 0-RTT. На независимых VPS услуга настройки TLS 1.3 35 000 сум. На сайтах наших клиентов среднее время SSL handshake 95 мс, среднее по индустрии 240 мс. Переход на TLS 1.3 увеличивает конверсию в среднем на 4,7% (за счёт скорости сайта).