TLS и HTTPS: шифрование в транзите

Урок про то, как TLS делает соединение конфиденциальным, целостным и аутентичным.

TLS — протокол, который шифрует данные в транзите, проверяет подлинность сервера и гарантирует, что данные не изменены по пути; HTTPS — это HTTP поверх TLS.

Зачем нужен TLS

Мы уже видели: открытый трафик читается на пути. TLS закрывает сразу три свойства: конфиденциальность (шифрование), целостность (проверка, что данные не подменены) и аутентичность (вы говорите именно с тем сервером, а не с MITM). Это базовая защита данных в современной сети.

Что происходит при рукопожатии

  1. Клиент и сервер согласуют версию протокола и шифры.
  2. Сервер предъявляет сертификат, подписанный доверенным центром (CA).
  3. Стороны вырабатывают общий сеансовый ключ (с forward secrecy).
  4. Дальше весь трафик шифруется этим ключом.
Клиент --hello--> Сервер
Клиент <--сертификат + параметры-- Сервер
   проверка сертификата (CA, имя, срок)
Клиент <==выработка ключа==> Сервер
   далее: шифрованный канал

Роль сертификата

Сертификат связывает доменное имя с публичным ключом и подписан центром сертификации. Браузер проверяет цепочку доверия, имя домена и срок действия. Если проверка не прошла — соединение небезопасно, и это предупреждение нельзя игнорировать: возможно, это MITM.

Как работает под капотом

Forward secrecy достигается эфемерным обменом ключами (ECDHE): сеансовый ключ выводится из временных значений и не хранится. Поэтому даже если приватный ключ сервера позже утечёт, ранее записанный трафик расшифровать нельзя. Аутентичность обеспечивает подпись: только владелец приватного ключа сертификата может корректно завершить рукопожатие.

От чего TLS защищает и не защищает

  • Защищает: чтение и подмену данных в пути, выдачу чужого сервера за ваш.
  • Не скрывает: сам факт соединения и доменное имя (метаданные).
  • Не спасает: скомпрометированный сервер или клиент — там данные уже расшифрованы.

Частые ошибки

  • Кликать «всё равно перейти» на ошибке сертификата.
  • Смешанный контент: страница по HTTPS, но ресурсы по HTTP.
  • Устаревшие протоколы (SSLv3, TLS 1.0) и слабые шифры — отключайте.
  • Шифровать только форму логина, остальное оставляя по HTTP.

Итоги

  • TLS даёт конфиденциальность, целостность и аутентичность в транзите.
  • Сертификат и проверка цепочки доверия защищают от MITM.
  • Forward secrecy спасает прошлый трафик даже при утечке ключа.
Проверьте себя
1. Какие три свойства обеспечивает TLS?
AСкорость, сжатие, кэширование
BКонфиденциальность, целостность, аутентичность
CАнонимность, скорость, доступность
DТолько шифрование
2. Почему нельзя игнорировать ошибку сертификата в браузере?
AЭто замедлит загрузку
BЭто может быть признаком MITM или подмены сервера
CСертификаты не важны
DБраузер просто перестраховывается всегда
3. Что даёт forward secrecy (эфемерный обмен ключами)?
AУскоряет рукопожатие
BПозволяет расшифровать прошлый трафик даже после утечки ключа сервера
CНе позволяет расшифровать прошлый трафик даже при утечке ключа сервера
DОтключает шифрование