Перейти к основному содержимому

HTTPS и его отличие от HTTP

HTTPS – это защищённая версия протокола HTTP, которая шифрует передаваемые данные между клиентом и сервером. HTTPS не является отдельным протоколом. Это обычный HTTP, который работает через шифрованный протокол TLS. В отличие от HTTP с TCP-портом 80, для HTTPS по умолчанию используется TCP-порт 443.

Протокол TLS​

Протокол TLS (Transport Layer Security) — криптографический протокол, который обеспечивает защищённый обмен данными между сервером и клиентом. TLS расположен на уровень ниже протокола HTTP в модели OSI. Это означает, что в процессе выполнения запроса сперва происходят все “вещи”, связанные с TLS-соединением и уже потом, все что связано с HTTP-соединением. TLS пришёл на смену устаревшему протоколу SSL.

Зачем нужно шифрование​

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

Принцип работы TLS​

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

Классы шифрования в TLS​

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

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

В протоколе TLS симметричное шифрование используется для шифрования непосредственно сообщений, а асимметричное шифрование — во время рукопожатия, то есть в начале сессии для обмена ключами и аутентификации.

Хеширование в TLS​

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

Когда использовать HTTPS​

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

Когда использовать HTTP​

Если нет требований по защите данных и проверки их целостности, то лучше использовать обычный HTTP, так как он работает проще и быстрее.

📎 Материалы по теме​

  1. В чем разница протоколов HTTP и HTTPS — обзорная статья от Selectel
  2. Как HTTPS обеспечивает безопасность соединения — статья на Хабре про принцип работы HTTPS
  3. Протокол TLS: что это, зачем нужен и как работает — обзорная статья по TLS от Skillbox
  4. Что такое TLS — подробнее о TLS | Хабр
  5. Введение в протоколы HTTP и HTTPS — глава из руководства от Microsoft
  6. Полное руководство по переходу с HTTP на HTTPS — про использование HTTPS на практике
  7. Введение в криптографию и шифрование, часть первая — теория криптографии от Яндекса