TLS и HTTPS: шифрование в транзите
Урок про то, как TLS делает соединение конфиденциальным, целостным и аутентичным.
TLS — протокол, который шифрует данные в транзите, проверяет подлинность сервера и гарантирует, что данные не изменены по пути; HTTPS — это HTTP поверх TLS.
Зачем нужен TLS
Мы уже видели: открытый трафик читается на пути. TLS закрывает сразу три свойства: конфиденциальность (шифрование), целостность (проверка, что данные не подменены) и аутентичность (вы говорите именно с тем сервером, а не с MITM). Это базовая защита данных в современной сети.
Что происходит при рукопожатии
- Клиент и сервер согласуют версию протокола и шифры.
- Сервер предъявляет сертификат, подписанный доверенным центром (CA).
- Стороны вырабатывают общий сеансовый ключ (с forward secrecy).
- Дальше весь трафик шифруется этим ключом.
Клиент --hello--> Сервер Клиент <--сертификат + параметры-- Сервер проверка сертификата (CA, имя, срок) Клиент <==выработка ключа==> Сервер далее: шифрованный канал
Роль сертификата
Сертификат связывает доменное имя с публичным ключом и подписан центром сертификации. Браузер проверяет цепочку доверия, имя домена и срок действия. Если проверка не прошла — соединение небезопасно, и это предупреждение нельзя игнорировать: возможно, это MITM.
Как работает под капотом
Forward secrecy достигается эфемерным обменом ключами (ECDHE): сеансовый ключ выводится из временных значений и не хранится. Поэтому даже если приватный ключ сервера позже утечёт, ранее записанный трафик расшифровать нельзя. Аутентичность обеспечивает подпись: только владелец приватного ключа сертификата может корректно завершить рукопожатие.
От чего TLS защищает и не защищает
- Защищает: чтение и подмену данных в пути, выдачу чужого сервера за ваш.
- Не скрывает: сам факт соединения и доменное имя (метаданные).
- Не спасает: скомпрометированный сервер или клиент — там данные уже расшифрованы.
Частые ошибки
- Кликать «всё равно перейти» на ошибке сертификата.
- Смешанный контент: страница по HTTPS, но ресурсы по HTTP.
- Устаревшие протоколы (SSLv3, TLS 1.0) и слабые шифры — отключайте.
- Шифровать только форму логина, остальное оставляя по HTTP.
Итоги
- TLS даёт конфиденциальность, целостность и аутентичность в транзите.
- Сертификат и проверка цепочки доверия защищают от MITM.
- Forward secrecy спасает прошлый трафик даже при утечке ключа.