Защита канала, а не самих данных на сервере
TLS, Transport Layer Security, это протокол, который создаёт защищённый канал поверх обычного соединения. Он решает три задачи: скрывает содержимое от посторонних (конфиденциальность), выявляет изменение данных по пути (целостность) и подтверждает, что вы говорите именно с нужным сервером (аутентификация).
Когда-то это называлось SSL, и в разговоре термин сохранился, но сами протоколы SSL давно устарели и не применяются. Сегодня используются версии TLS 1.2 и TLS 1.3. Важная оговорка: TLS защищает передачу. Что сервер делает с данными после получения, зависит уже от самого сервиса.
Полезно представлять TLS как слой между приложением и сетью. Браузеру безразлично, как именно данные шифруются: он передаёт текст запроса библиотеке TLS, а та упаковывает его в защищённые записи и отправляет по обычному TCP-соединению или другому транспорту.
Рукопожатие по шагам
Сначала клиент отправляет приветствие: поддерживаемые версии, наборы алгоритмов и случайное число. Сервер выбирает параметры и присылает свой сертификат, который подтверждает его личность. Клиент проверяет сертификат по списку доверенных удостоверяющих центров, то есть убеждается, что тот выдан надёжным заверителем, не просрочен и относится к нужному имени.
Затем стороны с помощью обмена ключами вычисляют общий секрет, который никогда не передаётся по сети напрямую. Из него получают ключи для симметричного шифрования, и весь дальнейший обмен идёт уже под ними. В TLS 1.3 рукопожатие короче: обычно нужен один круг задержки.
Что видит наблюдатель
Подслушивающий на пути к сайту не увидит содержимого страниц, введённых паролей и данных форм. Но часть сведений остаётся открытой: IP-адрес сервера, объём и время передач, а в первом сообщении рукопожатия часто и имя сервера (расширение SNI). Существуют механизмы, скрывающие и его, но распространены они пока не повсеместно.
Отсюда важный вывод: TLS защищает содержание, но не факт посещения. Поэтому обещание «зашифровано» не означает «никто не знает, что вы заходили на этот сайт».
Практическое следствие для пользователей общественных сетей: даже если сеть небезопасна, содержимое соединений с нормально настроенными сайтами остаётся закрытым, а вот сведения о том, к каким серверам вы обращаетесь, доступны владельцу сети.
Версии и что за ними стоит
TLS 1.0 и 1.1 признаны устаревшими и отключаются в современных браузерах. TLS 1.2 остаётся широко используемым и безопасным при правильной настройке. TLS 1.3 убрал старые небезопасные алгоритмы, сократил рукопожатие и обеспечил прямую секретность: даже если ключ сервера когда-нибудь утечёт, записанный ранее трафик расшифровать не получится.
Программа с давно неподдерживаемыми библиотеками может не суметь соединиться с современным сервером: он просто не предложит устаревших вариантов. Часто ошибки «не удалось установить защищённое соединение» на старых устройствах объясняются именно этим.
Типичные ошибки и как их читать
Ошибка сертификата обычно означает одно из трёх: срок действия истёк, имя не совпадает с адресом сайта или удостоверяющий центр не признан. Частая скрытая причина неверная дата и время на устройстве: при неправильных часах сертификаты «просрочены» или «ещё не действуют».
Если ошибки появляются на многих сайтах сразу, проблема в устройстве или сети: устаревшая система, антивирус, подменяющий сертификаты для проверки трафика, или провайдерская ловушка в общественном Wi-Fi. Если на одном сайте, проблема у него. Разберитесь, что показывает браузер при нажатии на индикатор рядом с адресом.
Где проверить у себя
В браузере нажмите на значок замка рядом с адресом и откройте сведения о соединении: там указаны версия TLS, алгоритм шифрования и данные сертификата. Для проверки серверов есть консольные утилиты, например openssl с командой s_client, которая выводит цепочку сертификатов и параметры рукопожатия.
Не путайте TLS с VPN: первый защищает соединение с конкретным сервисом, второй пропускает через защищённый туннель весь трафик устройства. Они дополняют, а не заменяют друг друга.