Чем HTTPS отличается от обычного HTTP

HTTP передаёт данные открытым текстом: страница, форма с логином, введённый пароль путешествуют по сети в виде, который может прочитать любой узел на пути пакета — провайдер, владелец открытой точки Wi-Fi, любое устройство между отправителем и получателем. HTTPS добавляет к тому же самому протоколу шифрующий слой TLS, который упаковывает содержимое запроса в форму, читаемую только двумя участниками разговора — браузером и сервером. Буква S в названии протокола означает Secure, а замочек в адресной строке браузера сигнализирует, что этот слой сейчас включён.

Из чего складывается защита — шифрование канала

В основе HTTPS лежит комбинация двух видов шифрования. Асимметричное шифрование использует пару ключей, открытый и закрытый: закрытый ключ сервера никогда не покидает сервер, и им сервер подписывает служебные данные рукопожатия, а браузер этой подписью проверяет подлинность сайта. Общий секрет сессии обе стороны независимо вычисляют по одинаковой формуле — этим занимается отдельный алгоритм согласования ключа, и именно он даёт каждой сессии одноразовый ключ, утечка которого в будущем не откроет уже прошедшие разговоры. Асимметричные операции довольно медленные, поэтому их применяют только в начале разговора, для подписи и проверки подлинности сторон. Дальше в дело вступает симметричное шифрование общим секретом — оно намного быстрее, и им шифруется уже весь основной поток данных сессии.

Сертификат и удостоверяющий центр

Открытый ключ сервера сам по себе ничего не доказывает — теоретически любой способен сгенерировать пару ключей и назваться нужным сайтом. Здесь в дело вступает сертификат: файл, который связывает открытый ключ с конкретным доменным именем и подписан удостоверяющим центром, организацией, которой браузеры заранее доверяют. Удостоверяющий центр перед выдачей сертификата проверяет, что заявитель действительно управляет доменом, и подписывает результат своим закрытым ключом. Браузер хранит список доверенных удостоверяющих центров и на лету проверяет, что цепочка подписей у сертификата сайта ведёт к одному из них.

Как проходит рукопожатие

Перед началом обмена данными браузер и сервер выполняют так называемое TLS-рукопожатие — короткий обмен служебными сообщениями, который занимает доли секунды. Браузер посылает серверу список поддерживаемых им алгоритмов шифрования и случайное число, сервер отвечает своим сертификатом, выбранным алгоритмом и своим случайным числом. Браузер проверяет сертификат по цепочке доверенных удостоверяющих центров, затем стороны на основе обменянных данных вычисляют общий сеансовый ключ, ни разу не передав его в открытом виде по сети. С этого момента весь дальнейший обмен идёт через симметричное шифрование этим ключом, и рукопожатие для текущей сессии больше не повторяется.

Что HTTPS действительно защищает

  • Конфиденциальность передаваемых данных — посторонний узел на пути пакета видит только зашифрованный набор байт
  • Целостность данных — если кто-то попробует подменить пакет на лету, получатель обнаружит это по несовпадению контрольной проверки
  • Подлинность сервера — сертификат подтверждает, что браузер действительно разговаривает с владельцем указанного домена, а не с подставным узлом посередине

Чего HTTPS не защищает

Замочек в адресной строке говорит только о том, что канал связи зашифрован и сертификат действителен для этого домена. Он ничего не говорит о репутации самого сайта: мошеннический ресурс с доменом, похожим на настоящий, способен получить точно такой же настоящий сертификат за несколько минут. HTTPS не защищает от вредоносной программы на самом устройстве, от слабого или украденного пароля, от социальной инженерии, когда человека убеждают самостоятельно ввести данные на поддельной странице. Протокол шифрует только канал передачи, а не содержимое сайта и не поведение человека, который его посещает.

Как проверить сертификат сайта самому

Клик по значку замочка в адресной строке браузера открывает подробности соединения: кому выдан сертификат, каким удостоверяющим центром, до какого срока он действителен. Для банков, почтовых сервисов и интернет-магазинов стоит сверять, что доменное имя в адресной строке в точности совпадает с ожидаемым, без лишних символов и подмен похожими буквами. Сертификат с истёкшим сроком действия браузер обычно показывает отдельным предупреждением на весь экран, и в таком случае разумнее закрыть страницу, а не нажимать «продолжить всё равно».

Частые вопросы

Обязательно ли сейчас использовать HTTPS для любого сайта

Формальной обязанности для всех сайтов не существует, но подавляющее большинство современных браузеров помечает страницы без HTTPS как «незащищённые» прямо в адресной строке, а поисковые системы учитывают наличие шифрования при ранжировании. Сайты с формами ввода данных без HTTPS сегодня уже редкое исключение.

Можно ли перехватить данные, если сайт работает по HTTPS

Сам зашифрованный поток данных перехватить технически можно, но без закрытого ключа сервера расшифровать его за разумное время нереально при современных алгоритмах шифрования. Уязвимым местом обычно оказываются конечные точки — заражённое устройство пользователя или скомпрометированный сервер, а сам протокол при этом остаётся математически стойким.

Что означает предупреждение браузера о недействительном сертификате

Чаще всего это означает, что срок действия сертификата истёк, сертификат выдан для другого доменного имени или цепочка доверия до известного удостоверяющего центра не выстраивается. В любом из этих случаев браузер не может подтвердить, что перед пользователем действительно нужный сайт.

Отличается ли HTTPS в браузере от шифрования в мессенджере

Принцип похож, оба используют криптографию для защиты канала передачи, но решают разные задачи. HTTPS защищает соединение с сайтом, а сквозное шифрование мессенджера дополнительно скрывает содержимое сообщения даже от собственного сервера компании, через который оно проходит.