HTTPS и TLS

Замочек рядом с адресом сайта — это работа протокола TLS, который объединяет всё, что мы изучили.

Что означает замочек

Когда адрес начинается с https:// и рядом виден замок, это значит, что соединение между твоим браузером и сайтом зашифровано. Никто между вами — ни провайдер, ни владелец Wi-Fi в кафе — не прочитает, что ты отправляешь. За это отвечает протокол TLS (раньше его называли SSL).

Хитрость: асимметрия + симметрия вместе

Мы помним два факта: асимметричное шифрование удобно для обмена ключами, но медленное; симметричное — быстрое, но требует общего ключа. TLS гениально объединяет оба:

  1. Браузер и сайт используют асимметрию, чтобы безопасно договориться об общем секретном ключе (решая проблему обмена ключами).
  2. Дальше весь трафик шифруется быстрым симметричным шифром (AES) на этом общем ключе.

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

Сертификаты: откуда браузер знает, что сайт настоящий

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

Имитация рукопожатия

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

import secrets

# 1. Симметричный ключ сессии (в реальности согласуется асимметрией)
session_key = secrets.randbelow(256)
print("Согласован ключ сессии:", session_key)

# 2. Дальше общаемся быстрым симметричным шифром
def sym(data, key):
    return bytes(b ^ key for b in data)

request = "GET /secret-page".encode()
enc = sym(request, session_key)
print("Зашифрованный запрос (байты):", list(enc)[:6], "...")
print("Сервер расшифровал:", sym(enc, session_key).decode())

Вывод:

Согласован ключ сессии: 137
Зашифрованный запрос (байты): [206, 174, 163, 245, ...] ...
Сервер расшифровал: GET /secret-page

Что важно запомнить

  • HTTPS защищает данные в пути, но не на самих серверах сайта.
  • Замочек значит «соединение шифровано», но не гарантирует, что сайт честный (фишинговый сайт тоже может иметь HTTPS).
  • Никогда не вводи пароли на страницах без https://.
Проверьте себя
1. Почему TLS использует и асимметричное, и симметричное шифрование?
AАсимметрия безопасно согласует общий ключ, а быстрая симметрия шифрует основной трафик
BТак положено по закону
CЧтобы сайт загружался медленнее
DСимметрия нужна только для замочка
2. Что гарантирует замочек HTTPS в браузере?
AЧто сайт точно честный и не мошеннический
BЧто соединение с сайтом зашифровано
CЧто данные хранятся в безопасности на сервере
DЧто сайт работает быстро
Поддержать проект