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

image

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

Этот пост — перевод статьи.

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

Алиса, Боб и… голуби?


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

Представим это вместо электронных сигналов, данные переносят почтовые голуби. И они точно знаю куда им надо лететь. Разница только в скорости передачи.
Представим что есть Алиса, Боб и они решили на початится.

Первое сообщение


Если Алиса решила написать сообщение Бобу, то она прикрепляет сообщение к ножке почтового голубя и отправляет Бобу. Боб получает сообщение, читает его. Как бы всё круто. Так работает HTTP. Написали сообщение, отправили, адресат получил.

Но представим ситуацию, Света перехватывает голубя Алисы, меняет сообщение и отправляет его Бобу. У Боба нет механизма узнать, было ли сообщение перехвачено и изменено.
Это явный минус HTTP. Его можно перехватить и изменить в процессе передачи.

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


Но что если Алиса и Боб узнали про перехваты и решили защититься с помощью секретного кода. Они условились, что будут сдвигать каждую букву из сообщения на три позиции. К примеру А → Г, В → E. Тогда сообщение “Я тебя люблю” превратится в “В хздв обдоб”.

Теперь даже если сообщение будет перехвачено Светой, то она не поймёт что в нём написано и не знает смещения, чтобы расшифровать. В тоже же время Боб знает и сможет расшифровать его.

Круто!

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

Как передать ключ?


Симметричное шифрование — крутая и защищённая штука, если ключ шифрования знаю только отправитель или получатель. В нашем случае Алиса и Боб.

В шифре, которой выбрали Алиса и Боб, ключ это смещение букв. Ключ может быть равен и трём и десяти и двадцати.

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

Вот такой метод перехвата, дешифровки, чтения, изменения, и отправки вновь зашифрованного сообщения называется Man in the Middle Attack или атака “Человек посередине”.

Голуби и шкатулки


Боб и Алиса придумали новую и более лучшую систему.

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

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

Но проблема осталась. Света может просто раздолбать шкатулку, посмотреть сообщение и отправить новое сообщение в новой шкатулке.

Как обезопасить шкатулку?


Для защиты от подделок шкатулок, Боб и Алиса договорились их подписывать и ставить на них печать. Проблема только в том, что Алиса и Боб никогда не виделись и не знаю печатей и подписей друг друга. Тогда они обратились в Ивану.

Иван — это очень уважаемый авторитетный, честный мужик. Он получает деньги за установку свой печати и подписи на шкатулки. Он только лично, при адресате ставит печать, лично убеждаясь, что Боб этот Боб, а Алиса это Алиса. Он бережет свой авторитет и на уговоры Светы поставить печать, что шкатулка как бы от Алисы, откажется. В реальной жизни Иван называется Certification Authority или Центр сертификации.
Теперь Алиса и Боб переписываются таким образом:

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

Даже если Света перехватила первую шкатулку, она не может её открыть. Если она её сломает, то не сможет её подписать. Если не узнает код, не сможет расшифровать сообщение.
Таким образом работает HTTPS. Принцип тот же, сложнее алгоритмы шифрования и данные передаются быстрее.
Поделиться публикацией
Ой, у вас баннер убежал!

Ну. И что?
Реклама
Комментарии 54
  • +1
    Очень просто и понятно, спасибо!
    • +17
      При чем тут HTTPS? Пост можно было назвать «Объяснение асимметричного шифрования на почтовых голубях»
      • 0

        "ассиметричное шифрование" — это два слова, 24 буквы и слишком заумно звучит. а про https сейчас даже в телевизоре говорят!

        • 0
          IMHO до асимметричного шифрования тут не дошло. Дошло только до trusted certificates.
        • +10
          Боб в ответ отправляет ключ и подписанную шкатулку Иваном

          Светлана же сможет сделать дубликат ключа, о чем вы сделали оговорку:

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


          Гораздо проще объяснить на примере замков, которые может закрыть любой а открыть только владелец ключа. Причем эти замки многие видели, раньше даже в двери ставили (печально было, если вышел и забыл ключ дома).

          Боб отправлят только шкатулку, которую любой может захлопнуть, но сможет открыть только Боб тем ключом, который оставляет у себя и никому не передает.
          • 0
            Ну тут вроде как перевод, так что к автору претензий нет)
            • +2
              Как раз к автору должны быть претензии. В оригинале Боб отправляет секретный ключ симметричного шифрования в закртытой замком Алисы шкатулке.
              • 0

                алиса, боб + света и иван


                непохоже на перевод


                или это современный тренд нехороших русскими делать (света)


                тогда иван непонятно почему


                в общем думаю что это не перевод :)

          • +2

            Довольно наглядно, но русский язык подтянуть не помешало бы :)


            Можно сколько угодно закидывать меня тапками, но читать "Боб и Алиса придумали новую и более ЛУЧШУЮ систему." без слёз сложно.

          • 0
            Прелесть криптографии в том что «шкатулку» вообще нельзя открыть за разумное время, ну если очень, очень, очень, очень сильно не повезет. Да и не такая там уж и сложная математика, что бы прибегать к таким аналогиям
            • +1
              Интересно получилось Алиса, Боб, Света и вдруг, Иван.
              • 0
                Да уж, хотя бы Боба на Бориса заменили бы.
                • 0
                  А Алису — на Аню?
                  • 0
                    В школьных задачах обычно бывали Петя и Вася, если нужно — Тима.
                    • 0
                      С Алисой и Бобом прелесь в том, что они начинаются с A и B. Петя и Вася не так хороши для этого. Ну и интрига — интереснее учиться на примере тайн Алисы и Боба. А Петя и Вася — что они интересного могут скрывать?
                      • 0
                        Да, почти как в том анекдоте:
                        Преподаватель:
                        — Возьмем коэффициент «K»… Нет, «K» — мало, возьмем «N».
                        • 0
                          Если они собираются шифровать «Я тебя люблю» (как в тексте), то они скрывают чуть больше, чем Алиса и Боб :)
                          • 0
                            Первый и второй
                          • 0
                            Это тогда, теперь в тренде Вова и Лёша (если нужно — Дима).
                      • 0
                        Т.е. появление Светы вас не смутило? )
                    • 0
                      Криптография для детей. Полезно.
                    • 0
                      Что-то с этими шкатулками не так.

                      Что же мешает любопытной шпионке Свете, будучи посередине, перехватить шкатулку Бобика, отослать Але свою шкатулку со своим ключом, получить от Али обратное сообщение в своей шкатулке, которую открыть ей как два байта переслать, прочесть, изменить, если нужно, положить уже в шкатулку Боба и отослать наивному Бобу его собственную шкатулку с прочтённым/изменённым письмом Али.
                      А?
                      • +1
                        Мешает то, что шкатулка Боба подписана Иваном именно, как шкатулка Боба. Поэтому Алиса в состоянии обнаружить подмену.
                        • +1
                          Тогда Свете надо встать ещё и между Бобом и Иваном, да?
                          • +1
                            Потому что в реальности сам Иван не подписывает сообщения от Алисы и Боба. Иван подписывает «подписывалку» Алисы и «подписывалку» Боба. А саму подпись Ивана Алиса с Бобом получили заранее.

                            Алиса подписывает свои сообщения своей «подписывалкой», которую до того подписал Иван.
                            А Боб, имея образец подписи Ивана, может проверить сначала «подписывалку» Алисы, а потом и саму подпись Алисы.
                            • 0
                              Чёрт, этой Свете тогда придётся встать между всеми возможными участниками конфликта писанины? И мы даже знаем такую Свету. Например, ею легко может оказаться Микрософт :o) И что тогда?
                              • 0
                                Свете придется или стать Иваном, или убедить Ивана что она Алиса, или подменить публичный ключ Ивана на машинах Алисы и Боба.
                        • +1
                          Тут много что не так. В оригинале там, где мы еще не используем CA
                          Alice sends the pigeon back carrying a box with an open lock, but keeping the key.

                          То есть Алиса отправляет шкатулку с открытым замком, оставив ключ себе. Таким образом любой, кто получит шкатулку, сможет отправить секретное сообщение Алисе.
                        • +1
                          На втором шаге можно обойтись и без Ивана — когда сертификат самоподписаный. Только ему наверно приходится говорить «Верь мне, я Боб, все будет хорошо». Тут уже Алиса может и не поверить, сказав что без контроля Ивана ничего не получится
                          • +2
                            Ещё баянистых видео

                            Обмен ключами по протоколу Диффи-Хеллмана


                            Как работает RSA

                            • +3
                              представим ситуацию, Света перехватывает голубя Алисы,

                              Стойте-стойте! Этим же всегда Ева занималась! :)
                              У нее появилась конкурентка? )

                              • +1
                                Может Света у неё стажируется. Интернет всё растёт, вот Ева и расширяет штат сотрудников :)
                              • +4
                                Так работает HTTP. Написали сообщение, отправили, адресат получил.

                                В вашей реализации это больше UDP напоминает :) Ведь адресат не подтвердил получение :)
                                А вдруг голубя сожрал хищный птиц? :)
                                • 0
                                  а разве http требует именно tcp под собой? можно же и поверх udp слать http запросы/ответы
                                  • +1
                                    можно конечно, реализаций «http over XXX» много.
                                    Просто, по стандарту, протокол хттп всё равно работает по принципу «запрос+ответ», и в ответ на полученную информацию получатель все равно должен отправить код подтверждения-выполнения (ну, или ошибки).
                                • 0
                                  Спасибо за перевод статьи!
                                  Пытался разобраться с принципом работы сертификатов, но не понимаю один из этапов в разделе Обезопасить шкатулку (в оригинальном тексте не нашёл его).
                                  Вот этот:
                                  Боб проверяет печать и подпись Боба

                                  Разве на этом этапе Боб проверяет свой сертификат? Или от Certification Authority?
                                  • +1
                                    В ответ Алиса пишет на листочке бумаги ключ для шифрования сообщений, закрывает его ключом и отправляет Бобу.
                                    Боб проверяет печать и подпись Боба


                                    это ошибка в тексте. Видимо имеется ввиду, что Алиса отправляет в сообщении свой клиентский сертификат Бобу и Боб проверяет его.
                                    • 0
                                      Спасибо, а Боб в состоянии проверить его, потому что её сертификат подписан CA?
                                      • +1
                                        Боб запрашивает клиентский сертификат Алисы (опциональный шаг). В запросе на клиентский сертификат Боб указывает список CA, которыми может быть подписан клиентский сертификат Алисы. Корневые сертификаты CA уже есть в хранилище у Боба, поэтому когда Алиса присылает свой клиентский сертификат, Боб проверяет с помощью имеющихся CA, что он действительно ими подписан.

                                        Если на практике то с помощью утилиты openssl подлинность серверного сертификата (server.crt) можно проверить с помощью CA (cacert.pem) так:

                                        $ openssl verify -verbose -CAfile cacert.pem server.crt
                                        server.crt: OK

                                        • 0
                                          Благодарю за подробный ответ!
                                  • +2
                                    Переведенная статья хорошая и понятная но в ней много неточностей и моментов вводящих в заблуждение читателей.

                                    Но представим ситуацию, Света перехватывает голубя Алисы, меняет сообщение и отправляет его Бобу. У Боба нет механизма узнать, было ли сообщение перехвачено и изменено.
                                    Это явный минус HTTP. Его можно перехватить и изменить в процессе передачи.


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

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

                                    Вот такой метод перехвата, дешифровки, чтения, изменения, и отправки вновь зашифрованного сообщения называется Man in the Middle Attack или атака “Человек посередине”.


                                    Вот такой описанный метод перехвата не называется атакой Man in the Middle. Ключ передается в зашифрованном виде поэтому Света не может его прочитать. Света вступает в диалог с А и Б, представляясь от их лица, это дает ай возможность в расшифровке ключей

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

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

                                    Для защиты от подделок шкатулок, Боб и Алиса договорились их подписывать и ставить на них печать


                                    Шкатулка и так уже защищена замком. Печать (сертификат) нужен для того, чтобы подтвердить подлинность отправителя или получателя сообщений, а не защитить шкатулку.
                                    Грубо говоря Иван выдает цифровые паспорта всем кто хочет общаться друг с другом, предварительно проверяя, что они те за кого себя выдают. В любой момент Алиса и Боб могут обратиться с полученным от отправителя паспортом к Ивану и проверить, что это действительный документ.

                                    • +1

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

                                      • 0

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

                                        • 0

                                          Если вы соберетесь "обед философов" использовать в качестве базы для аналогии, это внезапно станет важным. Если, конечно, цель — найти общий язык с собеседником, а не выпендриться.

                                          • 0

                                            Станет важным, как в реальности обедали философы? Вроде того, что Кант не пил пива?
                                            Не могу с этим согласиться!

                                      • +3
                                        Очень доходчиво написано на ярких примерах, после чего создаётся впечатление, что ты что-то понял.
                                        Но как большинство подобных рассказов-аналогий совершенно не имеет ничего общего ни с ассиметричным шифрованием, ни тем более с HTTPS. Тут даже ассиметричности никакой нет.
                                        • 0
                                          Еще одно наглядное видео по теме.

                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                          Самое читаемое