Какие типы шифрования и алгоритмы лежат в основе протокола HTTPS?

Ответ

HTTPS (HTTP over TLS) использует комбинацию из трех криптографических примитивов для обеспечения конфиденциальности, целостности и аутентификации данных.

  1. Асимметричное шифрование (Public-Key Cryptography)

    • Назначение: Установление безопасного канала и обмен секретным ключом на этапе рукопожатия (TLS Handshake). Клиент использует публичный ключ сервера для шифрования сеансового ключа, который может расшифровать только сервер своим приватным ключом.
    • Почему используется: Позволяет двум сторонам, не имеющим общего секрета, безопасно его создать.
    • Алгоритмы: RSA, ECC (Elliptic Curve Cryptography).
  2. Симметричное шифрование (Shared-Key Cryptography)

    • Назначение: Шифрование основного потока данных (HTTP-запросов и ответов) после установки соединения. Обе стороны используют один и тот же сеансовый ключ.
    • Почему используется: Оно значительно быстрее асимметричного, что критически важно для передачи больших объемов данных.
    • Алгоритмы: AES (Advanced Encryption Standard), ChaCha20.
  3. Функции хеширования и коды аутентификации сообщений (HMAC)

    • Назначение: Проверка целостности данных — гарантия того, что сообщение не было изменено в пути.
    • Почему используется: Для каждого сообщения вычисляется MAC (Message Authentication Code) с использованием сеансового ключа. Если хеши на стороне отправителя и получателя не совпадают, данные считаются поврежденными или подделанными.
    • Алгоритмы: SHA-256, SHA-384.

Упрощенный процесс TLS Handshake:

  1. Client Hello: Клиент отправляет серверу поддерживаемые версии TLS и шифры.
  2. Server Hello: Сервер выбирает шифр, отправляет свой SSL-сертификат (содержащий публичный ключ).
  3. Аутентификация и обмен ключом: Клиент проверяет сертификат, генерирует сеансовый ключ, шифрует его публичным ключом сервера и отправляет обратно.
  4. Завершение: Сервер расшифровывает сеансовый ключ своим приватным ключом. Теперь обе стороны имеют общий секрет и переключаются на быстрое симметричное шифрование для обмена данными.