Ответ
HTTPS (HyperText Transfer Protocol Secure) обеспечивает шифрование данных с помощью протокола TLS (Transport Layer Security), который использует гибридную систему шифрования.
Это означает комбинацию двух подходов для достижения безопасности и производительности:
-
Асимметричное шифрование (например, RSA):
- Используется на начальном этапе для безопасного обмена ключами (TLS Handshake).
- Сервер предоставляет свой публичный ключ в составе SSL-сертификата. Клиент генерирует секретный сессионный ключ, шифрует его публичным ключом сервера и отправляет обратно.
- Только сервер может расшифровать это сообщение своим приватным ключом.
- Этот метод надёжен, но вычислительно затратен, поэтому не используется для передачи всех данных.
-
Симметричное шифрование (например, AES):
- После того как обе стороны получили общий сессионный ключ, весь последующий трафик шифруется с его помощью.
- Этот метод значительно быстрее асимметричного и идеально подходит для шифрования больших объемов данных (тела запросов и ответов).
Процесс TLS Handshake (упрощенно):
- ClientHello: Клиент отправляет серверу список поддерживаемых шифров.
- ServerHello: Сервер выбирает шифр, отправляет свой SSL-сертификат с публичным ключом.
- Key Exchange: Клиент проверяет сертификат, генерирует сессионный ключ, шифрует его публичным ключом сервера и отправляет.
- Finished: Сервер расшифровывает сессионный ключ своим приватным ключом. С этого момента обе стороны используют симметричное шифрование для обмена данными.
Таким образом, HTTPS гарантирует конфиденциальность (данные нельзя прочитать), целостность (данные нельзя изменить незаметно) и аутентификацию (уверенность, что вы общаетесь с правильным сервером).