Как HTTPS защищает трафик

HTTPS превращает открытый канал HTTP в защищённый: данные шифруются, а сайт подтверждает свою подлинность.

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

Что не так с обычным HTTP

По HTTP данные идут открытым текстом. Любой на пути — оператор Wi-Fi в кафе, провайдер, узел в сети — может их прочитать и даже изменить. Пароль, отправленный по HTTP, виден всем посредникам. Поэтому современный веб перешёл на HTTPS почти повсеместно.

Три гарантии TLS

  • Конфиденциальность. Трафик зашифрован — посредник видит лишь нечитаемый поток.
  • Целостность. Если данные подменят в пути, это будет обнаружено.
  • Аутентичность. Сертификат подтверждает, что вы говорите именно с нужным сайтом, а не с подставным.

Узнаёте? Это конфиденциальность, целостность и (через подпись) подтверждение источника — те самые свойства из раздела про криптографию, собранные в одном протоколе.

Как происходит TLS-рукопожатие

Перед обменом данными браузер и сервер выполняют handshake. Упрощённо:

  1. Браузер подключается и запрашивает защищённое соединение.
  2. Сервер присылает свой сертификат с открытым ключом.
  3. Браузер проверяет сертификат по цепочке доверия до корневого CA и что он выдан для этого домена.
  4. С помощью асимметрии стороны безопасно договариваются об общем сеансовом симметричном ключе.
  5. Дальше весь трафик шифруется быстрым симметричным ключом.

Это ровно та гибридная схема из урока про шифрование: асимметрией договорились о ключе, симметрией шифруем данные.

Браузер  --- запрос защищённого соединения -->  Сервер
Браузер  <-- сертификат + открытый ключ -------  Сервер
[браузер проверяет сертификат по цепочке CA]
Браузер  --- согласование сеансового ключа -->  Сервер
[дальше — симметрично зашифрованный обмен данными]

Что означает замок в адресной строке

Замок говорит лишь о том, что соединение зашифровано и сертификат валиден для этого домена. Он не гарантирует, что сайт честный: фишинговый сайт тоже может иметь валидный HTTPS. Поэтому замок — про защиту канала, а не про добропорядочность владельца. Всегда проверяйте сам домен в адресной строке.

Практические следствия

  • Никогда не передавайте пароли и токены по HTTP — только по HTTPS.
  • Ставьте флаг Secure на cookie, чтобы они не уходили по открытому каналу.
  • Заголовок HSTS заставляет браузер всегда использовать HTTPS для сайта.
  • Следите за сроком сертификата — просроченный отпугнёт пользователей предупреждением.

Итог

  • HTTP открыт; HTTPS добавляет шифрование, целостность и подтверждение подлинности сайта через TLS.
  • Рукопожатие проверяет сертификат и согласует сеансовый ключ по гибридной схеме.
  • Замок означает защищённый канал, но не честность владельца сайта.
  • Секреты передавайте только по HTTPS, используйте Secure-cookie и HSTS.
Проверьте себя
1. Что добавляет HTTPS по сравнению с HTTP?
AТолько скорость
BШифрование трафика, проверку целостности и подтверждение подлинности сайта
CВозможность работать без интернета
DСжатие изображений
2. Что подтверждает замок в адресной строке?
AЧто владелец сайта честный
BЧто соединение зашифровано и сертификат валиден для этого домена
CЧто сайт не содержит вирусов
DЧто данные нигде не хранятся
3. Какую схему шифрования использует TLS-рукопожатие?
AТолько симметричную
BГибридную: асимметрией согласуют ключ, затем шифруют данные симметрично
CТолько асимметричную для всех данных
DНикакую, данные идут открыто
Поддержать проект