HTTPS (Hypertext Transfer Protocol Secure) — это расширение HTTP, использующее Transport Layer Security (TLS) для шифрования связи между клиентом и сервером. Любые перехваченные данные будут нечитаемыми и защищены от подмены и прослушивания.
Как происходит шифрование и дешифрование данных?
Процесс начинается с установления клиентом (например, вашим браузером) TCP-соединения с сервером.
Затем следует «клиентское приветствие» (client hello), где браузер отправляет сообщение, содержащее поддерживаемые наборы шифров (cipher suites) и самую высокую поддерживаемую версию TLS. Наборы шифров — это наборы алгоритмов, которые обычно включают: метод обмена ключами для совместного использования ключей между устройствами, алгоритм блочного шифрования для шифрования данных и алгоритм кода аутентификации сообщений для проверки целостности данных.
Сервер отвечает «серверным приветствием» (server hello), подтверждая выбранный набор шифров и версию TLS, которые они оба понимают. Затем сервер отправляет клиенту TLS-сертификат, содержащий его доменное имя, подпись центра сертификации и открытый ключ сервера. Клиент проверяет этот сертификат, чтобы убедиться в его достоверности и принадлежности серверу.
После проверки TLS-сертификата клиент создаёт сеансовый ключ, который будет использоваться для шифрования основного обмена данными. Основной обмен данными относится к передаче фактических данных приложения между клиентом и сервером после установления защищённого TLS-соединения. Для безопасной отправки этого сеансового ключа на сервер он шифруется с помощью открытого ключа сервера. Сервер, используя свой закрытый ключ, является единственным, кто может расшифровать этот зашифрованный сеансовый ключ.
Теперь, когда обе стороны имеют секретный сеансовый ключ, они переходят к симметричному шифрованию. Это как будто они договорились о частном языке, который понимают только они. Это делает передачу данных очень безопасной. Симметричное шифрование намного быстрее для больших объёмов данных.
Автор: @synacyb
dev.to
How does HTTPS work?
Create attached notes ...
