
TLS (Transport Layer Security) — криптографический протокол, обеспечивающий защищённое соединение между клиентом и сервером и защиту от атак типа Man-in-the-Middle.
Протокол появился в 1999 году как замена устаревшему SSL от Netscape. При этом термин “SSL” по инерции всё ещё используется в обиходе.
Основные задачи протокола:
- Конфиденциальность — данные шифруются и доступны только отправителю и получателю
- Целостность — любое изменение данных при передаче будет обнаружено
- Аутентификация — сервер подтверждает свою подлинность через цифровой сертификат
TLS Handshake
Если вкратце, процедура установки защищённого соединения TLS выглядит следующим образом:
- Клиент отправляет список поддерживаемых алгоритмов шифрования
- Сервер выбирает алгоритм шифрования и отправляет свой сертификат
- Клиент проверяет сертификат через цепочку доверия CA (Certificate Authority)
- Стороны генерируют уникальные ключи для этой сессии
- Весь последующий трафик шифруется этими ключами
Проблема SNI и Encrypted Client Hello
У TLS есть интересная проблема с приватностью. Когда мы подключаемся к HTTPS-сайту, имя домена передаётся незашифрованным через механизм SNI (Server Name Indication). Это значит, что наш провайдер видит, на какие именно сайты мы заходим, даже если весь трафик зашифрован.
Решение — Encrypted Client Hello (ECH), новое расширение TLS, которое шифрует и имя сервера. Поддержка уже добавлена в Firefox и Cloudflare, но массовое внедрение только начинается.
Heartbleed: крупнейшая уязвимость в истории TLS
В 2014 году обнаружили уязвимость в OpenSSL под названием Heartbleed. Баг позволял читать до 64 КБ оперативной памяти сервера при каждом запросе — туда могли попасть пароли, ключи шифрования, личные данные.
Уязвимость затронула 17% всех HTTPS-сайтов в интернете, включая Google, Facebook и Yahoo. Самое страшное — баг существовал в коде 2 года до обнаружения. После этого случая началась массовая ревизия криптографического кода и появились инициативы по финансированию разработки OpenSSL.
Другие интересные моменты
TLS Fingerprinting — по особенностям handshake можно определить нашу ОС и браузер, даже если мы используем VPN. Каждый браузер отправляет характерный набор алгоритмов и расширений.
Государственный MITM — в 2019 году Казахстан заставлял граждан устанавливать государственный root-сертификат для перехвата HTTPS-трафика. Браузеры быстро заблокировали эти сертификаты.
Квантовая угроза — квантовые компьютеры смогут взломать современные алгоритмы шифрования. TLS 1.3 уже готовится к постквантовым алгоритмам, которые NIST стандартизирует прямо сейчас.
Этот пост также доступен в Telegram

