TLS (Transport Layer Security) — криптографический протокол, который шифрует и аутентифицирует данные, передаваемые между приложениями по сети, прежде всего между браузерами и сайтами по HTTPS.
Как работает TLS
TLS пришёл на смену протоколу SSL компании Netscape: TLS 1.0 вышел в 1999 году, TLS 1.2 — в 2008 году (RFC 5246), TLS 1.3 — в 2018 году (RFC 8446). Все версии SSL и TLS 1.0/1.1 признаны устаревшими (RFC 8996). Соединение начинается с рукопожатия:
- клиент и сервер согласуют версию протокола и набор шифров;
- сервер подтверждает свою подлинность цифровым сертификатом, который проверяет клиент;
- стороны вырабатывают сеансовые ключи — в TLS 1.3 всегда через эфемерный протокол Диффи — Хеллмана, обеспечивающий прямую секретность;
- затем данные приложения шифруются и защищаются от подмены аутентифицированными шифрами, например AES-GCM или ChaCha20-Poly1305.
TLS 1.3 избавился от устаревших алгоритмов и сократил рукопожатие до одного круга обмена.
Почему TLS важен
TLS защищает HTTPS, передачу почты (SMTP, IMAP), VPN, API и бесчисленные приложения от прослушивания и подмены данных. Его история показывает основные риски:
- Ошибки реализации — Heartbleed (CVE-2014-0160) в OpenSSL в 2014 году приводил к утечке памяти сервера, включая закрытые ключи.
- Слабости протокола — BEAST (2011) и POODLE (2014) атаковали старые версии; FREAK и Logjam (2015) были атаками понижения версии до слабой «экспортной» криптографии.
- Использование злоумышленниками — большинство вредоносов и фишинговых сайтов тоже используют TLS, поэтому защитники полагаются на инспекцию TLS и отпечатки вроде JA3/JA4 для выявления вредоносных соединений.
Рекомендации
- Разрешать только TLS 1.2 и 1.3 и отключить устаревшие наборы шифров.
- Автоматизировать продление сертификатов и защищать закрытые ключи.
- Правильно проверять сертификаты в приложениях и никогда не отключать проверку в коде.
- Регулярно тестировать конфигурацию инструментами вроде SSL Labs или testssl.sh.