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

2
2971
views

Перевод статьи Андреа Занина, студента и программиста-самоучки.

HTTPS на примере почтовых голубей

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

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

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

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

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

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

Первоначальное простое общение

 

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

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

Так работает HTTP. Довольно пугающе, а? Я бы не посылал свои банковские реквизиты по HTTP и вам не советую.

Протокол http

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

Но что если Элис и Боб довольно изобретательны? Они договариваются, что будут писать свои сообщения с использованием секретного кода. Они будут сдвигать каждую букву алфавита на три позиции. Например, «А» превратится в «Г», «Б» – в «Д», «В» – в «Е». Простое текстовое сообщение «Секретное сообщение» будет выглядеть как «Фзнузхрсз фссдьзрлз» (с онлайн-калькулятором шифра Цезаря можно поиграть здесь).

Шифр Цезаря

Теперь если Мэлори и перехватит голубя, она все равно не сможет ни изменить сообщение так, чтобы оно имело смысл, ни даже понять, что там написано, поскольку она не знает код. Но Боб с легкостью применит этот код в обратном направлении и расшифрует сообщение. «Г» превратится в «А», «Д» – в «Б», «Е» – в «В», а «Фзнузхрсз фссдьзрлз» – в «Секретное сообщение».

Ура!

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

Код, который я описал выше, широко известен как «Шифр Цезаря». В настоящей жизни мы используем более изобретательные и сложные коды, но основная идея та же.

Как мы определяем ключ?

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

Почтовый голубь

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

Это типичный пример Атаки посредника (Man in the Middle Attack), и единственный способ избежать ее – полностью изменить систему шифрования.

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

И вот Элис и Боб придумывают систему получше. Когда Боб хочет отправить Элис сообщение, они будут действовать таким образом:

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

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

Если Элис захочет написать Бобу, они будут поступать так же.

Коробочка

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

Можно ли доверять коробочке?

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

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

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

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

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

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

Таким образом, когда вы впервые устанавливаете соединение с сайтом, вы доверяете его «коробочке», потому что доверяете Теду, а Тед говорит вам, что коробочка настоящая.

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

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

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

Таким образом и волки будут сыты, и овцы целы. Надежность асимметричного шифрования и эффективность симметричного.

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

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



2 КОММЕНТАРИИ

  1. Довольно интересно, хотя и раньше слышал про все это, центр сертификации и тд. После статьи складывается более полное представление о процессе

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here