Назад к вопросам
Junior
82
questionbank

Как работает протокол HTTPS?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

HTTPS — это расширение протокола HTTP с поддержкой шифрования данных и аутентификации сервера с использованием протоколов SSL/TLS.

Основные шаги установки безопасного соединения:

  1. Клиентское приветствие (ClientHello): Клиент (браузер) отправляет на сервер сообщение, содержащее:

    • Список поддерживаемых версий SSL/TLS.
    • Список поддерживаемых наборов шифров (cipher suites), включающих алгоритмы шифрования, хеширования и обмена ключами.
    • Случайное число (client random).
  2. Серверное приветствие (ServerHello): Сервер отвечает клиенту, выбирая из предложенных:

    • Версию SSL/TLS.
    • Набор шифров.
    • Случайное число (server random).
    • Сертификат сервера.
  3. Обмен сертификатами: Сервер отправляет клиенту свой цифровой сертификат, выданный удостоверяющим центром (Certificate Authority, CA). Сертификат содержит:

    • Публичный ключ сервера.
    • Доменное имя сервера.
    • Срок действия сертификата.
    • Цифровую подпись CA.
  4. Проверка сертификата: Клиент проверяет сертификат сервера:

    • Срок действия.
    • Соответствие доменному имени сайта.
    • Доверие CA (корневые сертификаты CA хранятся в браузере/ОС клиента).
    • Цифровую подпись CA с помощью публичного ключа CA.
  5. Генерация Pre-Master Secret: Клиент генерирует случайное число (Pre-Master Secret) и шифрует его публичным ключом сервера, полученным из сертификата.

  6. Обмен зашифрованным Pre-Master Secret: Клиент отправляет зашифрованное Pre-Master Secret на сервер.

  7. Дешифрование Pre-Master Secret: Сервер дешифрует полученное Pre-Master Secret с помощью своего приватного ключа.

  8. Генерация Master Secret: И клиент, и сервер, используя Pre-Master Secret и свои случайные числа (client random и server random), генерируют идентичный Master Secret.

  9. Генерация сеансовых ключей: На основе Master Secret генерируются симметричные сеансовые ключи, которые будут использоваться для шифрования и дешифрования данных во время сеанса (обычно по одному ключу для отправки и одному для приема у каждой стороны).

  10. Смена шифра (Change Cipher Spec): Клиент и сервер уведомляют друг друга о переходе на использование сгенерированных сеансовых ключей для дальнейшей коммуникации.

  11. Завершение рукопожатия (Finished): Клиент и сервер отправляют сообщения, зашифрованные с помощью новых сеансовых ключей и содержащие хеш предыдущих сообщений рукопожатия. Это позволяет убедиться, что рукопожатие прошло корректно и стороны владеют одинаковыми сеансовыми ключами.

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

Сравнение HTTP и HTTPS:

Параметр HTTP HTTPS
Безопасность Данные передаются в открытом виде Данные шифруются
Порт по умолчанию 80 443
Сертификат Не требуется Требуется SSL/TLS сертификат
Стоимость Бесплатно Требуется покупка или получение бесплатного сертификата
Производительность Немного быстрее (нет шифрования) Немного медленнее (требует шифрования)

Использование HTTPS обеспечивает конфиденциальность, целостность данных и аутентификацию сервера, защищая от атак типа "человек посередине" (Man-in-the-Middle, MITM).