
Криптография — сложная штука для понимания. Она состоит математических теорем, доказательств, что повышает порог входа. Но даже если вы используете её в своём проекте, не обязательно вникать в эти алгоритмы, главное понимать принципы работы.
Этот пост — перевод статьи.
Если вы открыли эту статью с целью создать следующий HTTPS протокол, вы зашли не туда. Этой статьи будет не достаточно. В ней описаны принципы работы HTTPS на пальцах или по аналогии с почтовыми голубями.
Алиса, Боб и… голуби?
Любая активность в интернете (чтение статей, online покупки или загрузка фото котиков) происходит с помощью отправки и получения данных с сервера.
Представим это вместо электронных сигналов, данные переносят почтовые голуби. И они точно знаю куда им надо лететь. Разница только в скорости передачи.
Представим что есть Алиса, Боб и они решили на початится.
Первое сообщение
Если Алиса решила написать сообщение Бобу, то она прикрепляет сообщение к ножке почтового голубя и отправляет Бобу. Боб получает сообщение, читает его. Как бы всё круто. Так работает HTTP. Написали сообщение, отправили, адресат получил.
Но представим ситуацию, Света перехватывает голубя Алисы, меняет сообщение и отправляет его Бобу. У Боба нет механизма узнать, было ли сообщение перехвачено и изменено.
Это явный минус HTTP. Его можно перехватить и изменить в процессе передачи.
Секретный код
Но что если Алиса и Боб узнали про перехваты и решили защититься с помощью секретного кода. Они условились, что будут сдвигать каждую букву из сообщения на три позиции. К примеру А > Г, В > E. Тогда сообщение “Я тебя люблю” превратится в “В хздв обдоб”.
Теперь даже если сообщение будет перехвачено Светой, то она не поймёт что в нём написано и не знает смещения, чтобы расшифровать. В тоже же время Боб знает и сможет расшифровать его.
Круто!
Вот такой метод шифрования называется симметричным, потому что сообщение можно зашифровать и расшифровать. А метод шифрования сдвигом еще называют Шифром Цезаря.
В реальной жизни, принцип шифрования тот же, только более сложный алгоритмы.
Как передать ключ?
Симметричное шифрование — крутая и защищённая штука, если ключ шифрования знаю только отправитель или получатель. В нашем случае Алиса и Боб.
В шифре, которой выбрали Алиса и Боб, ключ это смещение букв. Ключ может быть равен и трём и десяти и двадцати.
Проблема в том, что Алиса и Боб должны договорится о ключе при личной встрече. А если её не было, посылать ключ с голубем не безопасно. Света может поймать этого голубя, узнать ключ и в последующей переписке расшифровывать, менять сообщение, заново шифровать его и отправлять Бобу.
Вот такой метод перехвата, дешифровки, чтения, изменения, и отправки вновь зашифрованного сообщения называется Man in the Middle Attack или атака “Человек посередине”.
Голуби и шкатулки
Боб и Алиса придумали новую и более лучшую систему.
- Когда Алиса хочет отправить сообщение, она отправляет пустого голубя без сообщения. Чтобы Боб узнал о начале переписки.
- Боб отправляет в ответ настоящий ключ и шкатулку
- Алиса пишет сообщение, кладёт в шкатулку, закрывает ключом и отправляет только шкатулку
- Боб открывает шкатулку своим дубликатом ключа.
При условии, что ключ от шкатулки подделать сложно и мастер Светы будет делать дубликат недели, а переписка частая и каждый раз новые ключи, то перехват сообщений становится бессмысленным.
Но проблема осталась. Света может просто раздолбать шкатулку, посмотреть сообщение и отправить новое сообщение в новой шкатулке.
Как обезопасить шкатулку?
Для защиты от подделок шкатулок, Боб и Алиса договорились их подписывать и ставить на них печать. Проблема только в том, что Алиса и Боб никогда не виделись и не знаю печатей и подписей друг друга. Тогда они обратились в Ивану.
Иван — это очень уважаемый авторитетный, честный мужик. Он получает деньги за установку свой печати и подписи на шкатулки. Он только лично, при адресате ставит печать, лично убеждаясь, что Боб этот Боб, а Алиса это Алиса. Он бережет свой авторитет и на уговоры Светы поставить печать, что шкатулка как бы от Алисы, откажется. В реальной жизни Иван называется Certification Authority или Центр сертификации.
Теперь Алиса и Боб переписываются таким образом:
- Алиса отправляет пустого голубя
- Боб в ответ отправляет ключ и подписанную шкатулку Иваном
- В ответ Алиса пишет на листочке бумаги ключ для шифрования сообщений, закрывает его ключом и отправляет Бобу.
- Боб проверяет печать и подпись Боба
- Дальше они отправляют сообщения без шкатулок, просто шифруя сообщения
- Время от времени меняю ключи, с помощью шкатулок
Даже если Света перехватила первую шкатулку, она не может её открыть. Если она её сломает, то не сможет её подписать. Если не узнает код, не сможет расшифровать сообщение.
Таким образом работает HTTPS. Принцип тот же, сложнее алгоритмы шифрования и данные передаются быстрее.
Комментарии (53)
korj000
16.01.2018 14:54+1При чем тут HTTPS? Пост можно было назвать «Объяснение асимметричного шифрования на почтовых голубях»
justmara
17.01.2018 09:56"ассиметричное шифрование" — это два слова, 24 буквы и слишком заумно звучит. а про https сейчас даже в телевизоре говорят!
saboteur_kiev
18.01.2018 14:00IMHO до асимметричного шифрования тут не дошло. Дошло только до trusted certificates.
dkukushkin
16.01.2018 15:07Боб в ответ отправляет ключ и подписанную шкатулку Иваном
Светлана же сможет сделать дубликат ключа, о чем вы сделали оговорку:
При условии, что ключ от шкатулки подделать сложно и мастер Светы будет делать дубликат недели, а переписка частая и каждый раз новые ключи, то перехват сообщений становится бессмысленным.
Гораздо проще объяснить на примере замков, которые может закрыть любой а открыть только владелец ключа. Причем эти замки многие видели, раньше даже в двери ставили (печально было, если вышел и забыл ключ дома).
Боб отправлят только шкатулку, которую любой может захлопнуть, но сможет открыть только Боб тем ключом, который оставляет у себя и никому не передает.Ryder95
16.01.2018 21:59Ну тут вроде как перевод, так что к автору претензий нет)
martin_wanderer
17.01.2018 11:30Как раз к автору должны быть претензии. В оригинале Боб отправляет секретный ключ симметричного шифрования в закртытой замком Алисы шкатулке.
linuxover
17.01.2018 13:57алиса, боб + света и иван
непохоже на перевод
или это современный тренд нехороших русскими делать (света)
тогда иван непонятно почему
в общем думаю что это не перевод :)
Arty_K
16.01.2018 15:20Довольно наглядно, но русский язык подтянуть не помешало бы :)
Можно сколько угодно закидывать меня тапками, но читать "Боб и Алиса придумали новую и более ЛУЧШУЮ систему." без слёз сложно.
atomAltera
16.01.2018 16:09Прелесть криптографии в том что «шкатулку» вообще нельзя открыть за разумное время, ну если очень, очень, очень, очень сильно не повезет. Да и не такая там уж и сложная математика, что бы прибегать к таким аналогиям
Juma
16.01.2018 16:34Интересно получилось Алиса, Боб, Света и вдруг, Иван.
hdfan2
16.01.2018 18:07Да уж, хотя бы Боба на Бориса заменили бы.
tyomitch
16.01.2018 20:13А Алису — на Аню?
StjarnornasFred
16.01.2018 22:56В школьных задачах обычно бывали Петя и Вася, если нужно — Тима.
alix_ginger
17.01.2018 13:53С Алисой и Бобом прелесь в том, что они начинаются с A и B. Петя и Вася не так хороши для этого. Ну и интрига — интереснее учиться на примере тайн Алисы и Боба. А Петя и Вася — что они интересного могут скрывать?
buggykey
17.01.2018 15:34Да, почти как в том анекдоте:
Преподаватель:
— Возьмем коэффициент «K»… Нет, «K» — мало, возьмем «N».
trawl
17.01.2018 19:04Если они собираются шифровать «Я тебя люблю» (как в тексте), то они скрывают чуть больше, чем Алиса и Боб :)
Temych
19.01.2018 21:32Т.е. появление Светы вас не смутило? )
Juma
19.01.2018 21:50Немного смутило, но предположил что автор заменил Кэрол, Карлос или Чарли (Carol, Carlos or Charlie) Светой.
System12
16.01.2018 16:44Криптография для детей. Полезно.
tyomitch
16.01.2018 17:21В детской книжке, изданной в СССР в 1988 г., такое объяснение асимметричного шифрования «на шкатулках с ключиками» уже было. Только голубей там не было.
(Скан нужной страницы я найти не смог; может быть, сообщество поможет?)odissey_nemo
16.01.2018 17:38Что-то с этими шкатулками не так.
Что же мешает любопытной шпионке Свете, будучи посередине, перехватить шкатулку Бобика, отослать Але свою шкатулку со своим ключом, получить от Али обратное сообщение в своей шкатулке, которую открыть ей как два байта переслать, прочесть, изменить, если нужно, положить уже в шкатулку Боба и отослать наивному Бобу его собственную шкатулку с прочтённым/изменённым письмом Али.
А?Serge78rus
16.01.2018 17:53+1Мешает то, что шкатулка Боба подписана Иваном именно, как шкатулка Боба. Поэтому Алиса в состоянии обнаружить подмену.
odissey_nemo
16.01.2018 18:30+1Тогда Свете надо встать ещё и между Бобом и Иваном, да?
lorc
16.01.2018 21:11Потому что в реальности сам Иван не подписывает сообщения от Алисы и Боба. Иван подписывает «подписывалку» Алисы и «подписывалку» Боба. А саму подпись Ивана Алиса с Бобом получили заранее.
Алиса подписывает свои сообщения своей «подписывалкой», которую до того подписал Иван.
А Боб, имея образец подписи Ивана, может проверить сначала «подписывалку» Алисы, а потом и саму подпись Алисы.odissey_nemo
17.01.2018 10:09Чёрт, этой Свете тогда придётся встать между всеми возможными участниками
конфликтаписанины? И мы даже знаем такую Свету. Например, ею легко может оказаться Микрософт :o) И что тогда?lorc
17.01.2018 15:24Свете придется или стать Иваном, или убедить Ивана что она Алиса, или подменить публичный ключ Ивана на машинах Алисы и Боба.
martin_wanderer
17.01.2018 11:27Тут много что не так. В оригинале там, где мы еще не используем CA
Alice sends the pigeon back carrying a box with an open lock, but keeping the key.
То есть Алиса отправляет шкатулку с открытым замком, оставив ключ себе. Таким образом любой, кто получит шкатулку, сможет отправить секретное сообщение Алисе.
MetaDone
16.01.2018 18:01+1На втором шаге можно обойтись и без Ивана — когда сертификат самоподписаный. Только ему наверно приходится говорить «Верь мне, я Боб, все будет хорошо». Тут уже Алиса может и не поверить, сказав что без контроля Ивана ничего не получится
darjke
Очень просто и понятно, спасибо!