Защищенный протокол передачи гипертекста (HTTPS) является расширением протокола передачи гипертекста (HTTP). HTTPS передает зашифрованные данные с использованием протокола защиты транспортного уровня (TLS). Если данные перехвачены в сети, злоумышленник получает только двоичный код.
Как шифруются и расшифровываются данные?
Шаг 1. Клиент (браузер) и сервер устанавливают TCP-соединение.
Шаг 2. Клиент отправляет серверу запрос-приветствие. Сообщение содержит набор необходимых алгоритмов шифрования и последнюю поддерживаемую версию TLS. Сервер отвечает сообщением, из которого клиент узнает может ли сервер поддерживать алгоритмы и предложенную версию TLS.
Затем сервер отправляет SSL-сертификат клиенту. Сертификат содержит открытый ключ, имя хоста, срок действия и т. д. Клиент проверяет сертификат.
Шаг 3. После проверки SSL-сертификата клиент генерирует сеансовый ключ и шифрует его с помощью открытого ключа. Сервер получает зашифрованный сеансовый ключ и расшифровывает его с помощью закрытого ключа.
Шаг 4. Теперь, когда и клиент, и сервер имеют один и тот же сеансовый ключ (симметричное шифрование), зашифрованные данные передаются по безопасному двунаправленному каналу.
Почему HTTPS переключается на симметричное шифрование при передаче данных? Есть две основные причины:
1. Безопасность. Асимметричное шифрование работает только в одном направлении. Это означает что, если сервер попытается отправить зашифрованные данные обратно клиенту, любой может расшифровать данные с помощью открытого ключа.
2. Ресурсы сервера. Асимметричное шифрование несет с собой много дополнительных математических вычислений. Оно не подходит для передачи данных в длительных сессиях.
Вопрос: Как влияет на производительность подключение HTTPS по сравнению с HTTP?