HTTPS: внутреннее устройство и почтовые голуби

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

Давайте же узнаем, что такое HTTPS и криптография.

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

Если вы ожидаете в этой статье увидеть какое-либо новшество или описание свежей версии HTTPS, дальше можете не читать. В ином случае статья будет вам полезна.

Любая активность, которую вы совершаете (переписка, покупки на Али или лайки в любимой социальной сети), основана на передаче и получении сообщений сервером.

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

Вместо того, чтобы рассказывать о хакерах и клиент-серверной архитектуре, поговорим об Элис, Бобе и Мэллори – частых персонажах технической литературы.

Первая коммуникация

Представим, что Элис хочет отправить сообщение Бобу. Она привязывает к лапе голубя конверт и отправляет его к Бобу. Боб получает письмо, читает, и все счастливы.

Но что, если Мэллори перехватит голубя Элис, изменит ее сообщение в конверте и отправит голубя дальше к Бобу? Боб никак не узнает, что сообщение, которое отправила Элис, было изменено.

Вот так небезопасно выглядит работа протокола HTTP. Я думаю, вы не согласитесь отправлять свои банковские реквизиты по такому каналу.

Секретный ключ

Теперь, после последнего случая с Мэллори, Элис и Боб решают вести переписку со специальным ключом. Они будут смещать каждую букву на три позиции в алфавите. Например: Г → A, Д → Б, Е → В. Итоговое сообщение, прошедшее тайный ключ, имеет вид: “млкалэййемляэкев”.

Теперь, если Мэллори перехватит голубя и попытается что-то изменить или понять смысл, у нее ничего не выйдет, т. к. она не знает тайного ключа. Но это сможет сделать Боб при помощи перестановки символов в правильной последовательности, и зашифрованное сообщение “млкалэййемляэкев” превращается в “программирование”.

Такое шифрование называется симметричным потому, что если вы знаете, как зашифровать сообщение, вы также знаете, как его расшифровать. Пример шифрования, которым пользовались Элис и Боб, носит название “Шифр Цезаря”. В реальной жизни используются гораздо более сложные алгоритмы, но смысл остается тем же.

Как быть с ключом?

Симметричное шифрование – очень полезный и безопасный инструмент, если никто, кроме получателя и отправителя, не знает ключа. В шифровании Цезаря Элис использовала смещение на 3 позиции, но могла и на 9 передвинуть. Как Боб узнает, на какое количество символов Элис сдвинула оригинал? Если отправлять ключ с тем же голубем, то Мэллори при перехвате получит шифр и ключ. Действия Мэллори называются атакой “Человек посередине”.

Дубликат ключа

Элис и Боб придумали другой способ, уберечься от Мэллори:

  • Боб отправляет голубя без сообщения;
  • Элис отправляет в ответ голубя с ящичком и замком;
  • Боб кладет письмо в ящик, и закрывает его на ключ;
  • Элис получает ящик и открывает его своим ключом.

В этот раз Мэллори не сможет подменить сообщение, т. к. у нее нет ключа от ящичка.

Элис и Боб используют то, что называется асимметричной криптографией. С технической точки зрения, закрытый ящик – это public key, а ключ от ящика – это private key.

Как довериться коробке?

Как вы уже заметили, мы все еще имеем проблему. Когда Боб получает голубя, как он может быть уверен, что он пришел от Элис, а Мэллори не перехватила его?

Элис придумала еще одну схему: ставить на ящик подпись. Когда Боб получит ящик, он увидит эту подпись, и будет уверен, что именно Элис его послала.

Но тут возникает еще одна проблема – как Боб идентифицирует подпись Элис, если он не видел ее подпись до этого? Для решения задачи Элис подключила Тэда. Тэд – это уважаемый человек, которому все доверяют. Он пообещал подписывать своей подписью ящики только проверенных людей.

Тэд будет подписывать ящик для Элис, если она придет лично. Теперь Мэллори не сможет перехватить ящик и подписать его у Тэда, т. к. он будет знать, что это не Элис пришла.

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

Медленный голубь – плохой голубь

Теперь у ребят есть надежная система для общения, но голубь с ящиком гораздо медленнее, чем голубь с сообщением. Поэтому, они решили использовать ящик (асимметричная криптография) только для определения ключа шифрования при помощи симметричной криптографии (помните метод Цезаря?). Таким образом, они получают надежность асимметричной и эффективность симметричной криптографии, а это и есть основа HTTPS.

Заключение

Теперь вы узнали, как работает HTTPS. Перевод на русский осуществлен Библиотекой Программиста.

Оригинал статьи

Другие материалы по теме:

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

suvorovsda
13 февраля 2022

🌐 Почему данные в интернете не идут по самому короткому пути или как на самом деле работает CDN?

Из этой статьи узнаете, как выглядит интернет изнутри, какие существуют топ...
Библиотека программиста
21 января 2018

Компьютерные сети от А до Я: классификация, стандарты и уровни

Компьютерные сети непросты в изучении, ведь технологий и протоколов много, ...