Суть 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 или на любое другое число.

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

Это типичный пример атаки «человек посередине», и единственный способ избежать такой ситуации – в корне изменить систему шифрования.

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

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

  1. Боб посылает голубя Алисе без всякого сообщения.
  2. Алиса посылает голубя обратно с коробкой с открытым замком, но держа ключ.
  3. Боб помещает письмо в коробку, закрывает замок и отправляет коробку Алисе.
  4. Алиса получает коробку, открывает ее ключом и читает сообщение.

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

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

В технической терминологии сам ящик известен как «открытый», или «публичный», ключ (public key), а ключ для его открытия известен как «закрытый», или «частный», ключ (private key).

Как я могу доверять коробке?

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

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

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

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

Тед в технической терминологии обычно упоминается как Центр сертификации (Certification Authority), и браузер, с помощью которого вы читаете эту статью, поставляется в комплекте с подписями различных органов сертификации. Поэтому, когда вы впервые подключаетесь к веб-сайту, вы доверяете этой «коробке», потому что вы доверяете Теду, а Тед утверждает, что с «коробкой» все в порядке.

Ящики тяжелые

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

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

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

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

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

Категория: 
Безопасность
10
Ваша оценка: Нет Средняя: 10 (2 оценок)
715 / 2
Аватар пользователя admin
Публикацию добавил: admin
Дата публикации: пт, 01/19/2018 - 10:28

Что еще почитать:

Добавить комментарий