Главная » Статьи » Объяснение шифрования сообщений HTTPS на примере почтовых голубей

Объяснение шифрования сообщений HTTPS на примере почтовых голубей

Объяснение шифрования сообщений HTTPS на примере почтовых голубей

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

Элис, Боб и… голуби?

Все действия в интернете (чтение этой статьи, покупка на Amazon, загрузка изображений с котиками) можно разделить на отправку и получение сообщений на и с сервера.

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

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

Первый примитивный диалог

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

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

Так работает HTTP. Страшно, да? Я бы не отправлял данные о банковских картах по HTTP, и вам не советую.

Секретный код

А что если Элис и Боб очень хитрые. Они решили, что будут общаться с помощью секретного кода. Они будут сдвигать каждую букву на 3 позиции в алфавите. Например, D → A, E → B, F → C. Текст «secret message» превратится в «pbzobq jbppxdb».

Теперь если Мэллори перехватит голубя, она не сможет изменить сообщение на что-то осмысленное, а также не сможет понять смысл сообщения, так как она не знает код. Боб же может применить обратный код и расшифровать сообщение, где A → D, B → E, C → F. Зашифрованный текст «pbzobq jbppxdb» расшифровывается в «secret message».

Отлично!

Этот способ называется шифрованием симметричным ключом – если вы знаете, как зашифровать сообщение, то вы можете его расшифровать.

Описанный выше код известен, как шифр Цезаря. В реальности используются более сложные коды, но идея остается той же.

Как придумать ключ?

Шифрование симметричным ключом безопасно, если никто кроме отправителя и получателя не знают ключ. В шифре Цезаря ключом является сдвиг каждой буквы. В нашем примере был сдвиг на 3 буквы, но можно было применить 4 или 12.

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

Это типичный пример атаки через посредника. Единственный выход – поменять всю систему шифрования.

Голуби, переносящие коробки

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

Боб присылает Элис голубя без сообщения

Элис отправляет голубя обратно, но уже с коробкой, в которой лежит открытый замок, оставляя ключ себе

Боб кладет сообщение в коробку, закрывает замок и отправляет обратно Элис

Элис получает коробку, открывает замок ключом и читает сообщение

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

Элис и Боб использовали шифрование ассиметричным ключом. Его называют ассиметричным потому, что даже если вы зашифруете сообщение (закроете замок), вы не сможете его расшифровать (открыть закрытый коробок). С технической точки зрения коробок – это публичный ключ, а ключ для открытия коробка – приватный ключ.

Насколько можно доверять коробке?

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

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

Некоторые из вас могут подумать: «как Бобу в первую очередь определить подпись Элис?». Хороший вопрос. У Элис и Боба та же проблема, поэтому они решают, что подпись поставит Тед.

Кто такой Тед? Тед очень известный, доверенный парень. Тед дает свою подпись всем, и все верят, что он подписывает коробки только от законопослушных людей.

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

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

Поэтому когда вы первый раз заходите на сайт, вы доверяете его коробкам, ведь вы доверяете Теду, а Тед говорит, что коробка надежна.

Коробки тяжелые

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

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

Так они возьмут все лучшее от двух методик. Надежность ассиметричной криптографии и эффективность симметричной криптографии.

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

Теперь вы знаете, как работает HTTPS, а ваш кофе уже должен быть готов. Можете выпить его, заслужили.

Автор: Andrea Zanin

Источник: https://medium.freecodecamp.org/

Редакция: Команда webformyself.