Почему в HTTPS используется и асимметричное, и симметричное шифрование

«Почему в HTTPS используется и асимметричное, и симметричное шифрование» — вопрос из категории Безопасность, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTPS (TLS/SSL) использует гибридную криптосистему, комбинируя сильные стороны обоих типов шифрования для достижения безопасности и производительности.

Роли в процессе TLS handshake:

  1. Асимметричное шифрование (например, RSA, ECDSA):

    • Цель: Безопасный обмен ключами и аутентификация.
    • Применение: Клиент проверяет подлинность сервера по его цифровому сертификату (содержащему публичный ключ). Затем генерируется pre-master secret, который шифруется публичным ключом сервера и отправляется. Расшифровать его может только сервер, обладающий приватным ключом.
    • Недостаток: Вычислительно сложно, непригодно для шифрования всего трафика.
  2. Симметричное шифрование (например, AES-256-GCM, ChaCha20-Poly1305):

    • Цель: Шифрование основного потока данных.
    • Применение: Из pre-master secret обе стороны независимо вычисляют идентичные сессионные ключи. Все дальнейшее общение (HTTP-запросы/ответы) шифруется и расшифровывается с помощью этих быстрых симметричных ключей.
    • Преимущество: Высокая скорость шифрования/расшифровки.

Упрощенная схема handshake:

1. ClientHello -> ServerHello (согласование параметров)
2. Сервер отправляет Certificate (публичный ключ).
3. Клиент проверяет сертификат, генерирует pre-master secret, шифрует его публичным ключом сервера (асимметричное шифрование).
4. Обе стороны вычисляют session keys из pre-master secret.
5. Далее весь трафик шифруется session keys (симметричное шифрование).

Практическое значение для DevOps: При настройке веб-серверов (Nginx, Apache) или Ingress-контроллеров важно использовать современные шифры, отключать устаревшие протоколы (SSLv3, TLS 1.0) и правильно управлять жизненным циклом сертификатов (например, с помощью cert-manager и Let's Encrypt).