Ответ
HTTPS (HTTP over TLS) использует комбинацию из трех криптографических примитивов для обеспечения конфиденциальности, целостности и аутентификации данных.
-
Асимметричное шифрование (Public-Key Cryptography)
- Назначение: Установление безопасного канала и обмен секретным ключом на этапе рукопожатия (TLS Handshake). Клиент использует публичный ключ сервера для шифрования сеансового ключа, который может расшифровать только сервер своим приватным ключом.
- Почему используется: Позволяет двум сторонам, не имеющим общего секрета, безопасно его создать.
- Алгоритмы:
RSA,ECC(Elliptic Curve Cryptography).
-
Симметричное шифрование (Shared-Key Cryptography)
- Назначение: Шифрование основного потока данных (HTTP-запросов и ответов) после установки соединения. Обе стороны используют один и тот же сеансовый ключ.
- Почему используется: Оно значительно быстрее асимметричного, что критически важно для передачи больших объемов данных.
- Алгоритмы:
AES(Advanced Encryption Standard),ChaCha20.
-
Функции хеширования и коды аутентификации сообщений (HMAC)
- Назначение: Проверка целостности данных — гарантия того, что сообщение не было изменено в пути.
- Почему используется: Для каждого сообщения вычисляется MAC (Message Authentication Code) с использованием сеансового ключа. Если хеши на стороне отправителя и получателя не совпадают, данные считаются поврежденными или подделанными.
- Алгоритмы:
SHA-256,SHA-384.
Упрощенный процесс TLS Handshake:
- Client Hello: Клиент отправляет серверу поддерживаемые версии TLS и шифры.
- Server Hello: Сервер выбирает шифр, отправляет свой SSL-сертификат (содержащий публичный ключ).
- Аутентификация и обмен ключом: Клиент проверяет сертификат, генерирует сеансовый ключ, шифрует его публичным ключом сервера и отправляет обратно.
- Завершение: Сервер расшифровывает сеансовый ключ своим приватным ключом. Теперь обе стороны имеют общий секрет и переключаются на быстрое симметричное шифрование для обмена данными.