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.