Что такое TLS и зачем он нужен
TLS 1.3 (Transport Layer Security) — это протокол, который шифрует данные при их передаче по сети между двумя сторонами, обычно между клиентским приложением и сервером. Когда вы видите замок в адресной строке браузера или работаете в защищённом приложении, под капотом почти всегда работает TLS. Его задача — сделать так, чтобы никто между вами и сервером (провайдер, оператор Wi-Fi, владелец промежуточного оборудования) не смог ни прочитать, ни незаметно подменить передаваемые данные.
TLS решает три задачи одновременно: конфиденциальность (трафик зашифрован), целостность (изменение данных в пути обнаруживается) и аутентификация (вы убеждаетесь, что соединяетесь именно с тем сервером, а не с подставным). Аутентификация строится на сертификатах и инфраструктуре открытых ключей.
Что улучшил TLS 1.3 по сравнению с TLS 1.2
TLS 1.2 вышел в 2008 году и за полтора десятилетия накопил исторический багаж: множество необязательных опций, устаревшие алгоритмы и компромиссы ради совместимости. TLS 1.3 (RFC 8446, 2018) — это переосмысление протокола с упором на безопасность по умолчанию и скорость.
Меньше круговых обменов (round trips)
Установка защищённого соединения требует «рукопожатия» (handshake) — обмена сообщениями, в ходе которого стороны согласуют ключи. В TLS 1.2 это занимало два круговых обмена (2-RTT). TLS 1.3 укладывается в один (1-RTT), а при повторном подключении к уже знакомому серверу — в ноль (0-RTT). На практике это заметно ускоряет открытие соединений, особенно при больших задержках сети.
Удалены слабые и устаревшие алгоритмы
- Убран обмен ключами на основе RSA и статический Диффи-Хеллман — остались только эфемерные варианты (ECDHE), обеспечивающие forward secrecy.
- Удалены потоковый шифр RC4, режимы CBC с известными уязвимостями, хеши MD5 и SHA-1 в подписях.
- Поддерживаются только проверенные AEAD-шифры (например, AES-GCM и ChaCha20-Poly1305), которые шифруют и проверяют целостность за один шаг.
- Убрана опасная возможность «отката» к старым алгоритмам, которой пользовались некоторые атаки.
Forward secrecy стала обязательной
Если в TLS 1.2 forward secrecy была опцией, то в TLS 1.3 она встроена в основу: для каждой сессии создаётся отдельный временный ключ.
Что такое forward secrecy и почему это критично
Представьте, что злоумышленник годами записывает зашифрованный трафик в надежде, что когда-нибудь получит ключ сервера. Без forward secrecy одного долговременного ключа хватило бы, чтобы расшифровать весь накопленный архив задним числом.
Forward secrecy ломает эту схему: каждая сессия защищена собственным эфемерным ключом, который не выводится из долговременного ключа сервера и удаляется после завершения. Утечка ключа сервера в будущем не раскрывает прошлый трафик. Это особенно важно для организаций, чьи данные сохраняют ценность годами.
TLS (транспорт) и E2E (сквозное) — разные уровни
Частая путаница: «у нас TLS, значит переписка полностью защищена». Это не так — это два разных уровня защиты.
- TLS защищает данные в пути. Канал между клиентом и сервером зашифрован, но на самом сервере данные расшифровываются, чтобы их обработать или сохранить. Администратор сервера в принципе имеет к ним доступ.
- E2E защищает данные от отправителя до получателя. Сообщение шифруется на устройстве отправителя и расшифровывается только на устройстве получателя. Сервер пересылает зашифрованный «пакет» и не видит открытого текста.
Эти уровни не конкурируют, а дополняют друг друга. TLS защищает сам канал и метаданные транспорта, проверяет подлинность сервера и предотвращает подмену соединения. E2E дополнительно гарантирует, что даже скомпрометированный или любопытный сервер не прочитает содержимое. Надёжная система использует оба слоя.
Как это решено в HAMA
В HAMA весь транспорт идёт только по TLS 1.3 — более старые версии не используются. Это значит, что соединение между десктоп-клиентом и сервером защищено современным шифрованием, обязательной forward secrecy и быстрым рукопожатием.
Но HAMA не ограничивается транспортом. Поверх TLS содержимое переписки защищено сквозным шифрованием по протоколу Signal (X3DH + Double Ratchet), а для групп используется AES-256-GCM. То есть даже сервер не имеет доступа к открытому тексту сообщений. Локальная база на устройстве шифруется через SQLCipher, а ключи хранятся в защищённом хранилище операционной системы.
Дополнительно сам сервер размещается на защищённой площадке в Узбекистане или on-premise в инфраструктуре организации, а HAMA готовится к соответствию O'z DSt ISO/IEC 27001:2023 и требованиям PP-167 для критической информационной инфраструктуры. TLS 1.3 здесь — фундамент транспортного уровня, а не вся защита целиком.