Итак.
Вот задача, с которой всё началось.
Мы должны обменяться сообщениями у всех на глазах (например, в эфире или в Интернете) так, чтобы ты меня понял, а кроме тебя никто меня не понял.
Если мы заранее договорились о ключе, то проблемы поначалу не будет. Однако всегда пользоваться одним и тем же ключом опасно. И потому теперь стоит задача похитрее: как передать друг другу новый ключ у всех на глазах, чтобы никто ничего не узнал, кроме тебя.
Эту задачу никто не мог решить тысячелетиями. Во время войны британцы читали немецкие шифровки, потому что как-то узнали ключ к шифру. (Считается, что раскрыли с помощью протокомпьютера, но скорее всего просто нашпионили, как и подобает пиратам.) Если бы немцы умели делать то, что сейчас расскажу, то Вторая мировая война могла бы пойти по-другому. (Хотя кончилась бы так же; шансов на победу против Британии+США+России у Гитлера не было.)
Представьте себе: тысячу лет никто никому не приходило в голову, как это сделать. А в XX веке, в 60-е годы, математики придумали! Я считаю, это одно из главных достижений человечества в XX веке, наряду с атомной бомбой и полетом в космос.
Если бы этого не было, то не было бы и Интернета, потому что в Сети все происходит у всех на глазах, и без шифров тут можно было бы говорить только о погоде. Ничего серьезного сделать было бы невозможно. А значит, не вкладывались бы большие деньги. А значит, всё это не развивалось бы так быстро и бодро.
Так что решение задачи о шифровании было одним из ключевых пунктов, наряду с созданием персонального компьютера и программного обеспечения к нему.
Решение задачи, как и все гениальное, просто.
Помните задачу про волка, козу и капусту? Как их перевести на другой берег, если в лодке только есть место лишь для чего-то одного? при этом волк съест козу, а коза - капусту, если оставить их без присмотра.
Решение знают все!
Сначала везем козу, потом везем капусту, потом забираем козу назад (чтобы она не съела капусту), потом везем волка, потом наконец везем козу. Семь раз придется переплыть реку, зато никто не пострадает.
Так вот, решение Проблемы шифра очень похоже на решение этой задачки!
Опишу его на таком примере.
Вот я высылаю тебе письмо в ящичке, который закрыт на ключ. Ключ - это шифр.
Ключа у тебя нет, открыть мое письмо ты не можешь.
Тогда ты закрываешь ящичек на второй ключ, который остается у тебя, и высылаешь его обратно мне. Твой ключ остается у тебя, и открыть ящик теперь я не могу. Собственно, мы оба теперь не могли бы его открыть.
Получив назад свой ящичек, закрытый на два ключа, я отпираю свой ключ и снова высылаю его тебе. Ящик теперь закрыт твоим ключом, и отпереть его никто не может кроме тебя.
Получив мое послание второй раз, ты отпираешь замок и читаешь мое послание.
Профит!
Произошло нечто таинственное и не укладывающееся в голове. Мой ключ остался у меня, он тебе по-прежнему неизвестен. Твой ключ по-прежнему неизвестен мне. Все происходило у всех на глазах. Но никто кроме нас с тобой не знает, что же там было, в том ящичке.
А был там временный шифр, которым мы будем пользоваться во время текущего сеанса связи. А в следующий раз снова сыграем в волка, козу и капусту. И так каждый раз у нас будет новый ключ - так что содержимое нашей переписки так и останется неизвестным компетентным органам.
Примерно так и работает современный интернет.
Понравилось? Или я зря занялся не своим делом (популяризацией)?
UpDated:
Если понравилось, читайте продолжение
Сеанс чёрной магии с полным разоблачением
а также (внимание, много цифр!)
Шифрование методом квантовой телепортации:)
vl09
May 1 2018, 17:38:05 UTC 1 year ago
palaman
May 1 2018, 17:42:31 UTC 1 year ago
mindfactor
May 1 2018, 18:12:15 UTC 1 year ago
Это даже у китая, с его бездной ресурсов, получается не очень.
vl09
May 3 2018, 13:23:10 UTC 1 year ago
vl09
May 3 2018, 13:24:43 UTC 1 year ago
mindfactor
May 1 2018, 18:09:28 UTC 1 year ago
Но я не уверен, что оно верное.
Что же до телеграмма, то есть пара нюансов.
Дело в том, что безопасность и удобство работы всегда друг другу противостоят. Пока математики их не подружили, увы.
Поэтому вся эта красота с безопасной передачей разбивается о реальность - людям удобны общие чаты и хранение истории на сервере, чтобы история перекидывалась на разные устройства.
Но ! Это не безопасно - т.к. все хранится на том самом сервере незашифровано (точнее, зашифровано, но ключи в явном виде есть у компании-разработчика).
А шифрованные чаты точка-точка, они, конечно, безопасные. Да только вот ни хрена не удобные.
Так что весь этот пафос Дурова о том, что у него нет ключей и быть не может - это было обычное враньё. Просили-то у него общие ключи, которые у него есть.
palaman
May 1 2018, 18:29:33 UTC 1 year ago
Мне кажется, я о другом. Замок может открываться тем же ключом, каким его закрыли - или могут быть два ключа, из которых один отменяет действие другого. Второй вариант и называется асимметричным шифрованием.
Но то, что рассказываю здесь я - эта идея прекрасно работает и для симметричного шифрования, хотя тут тоже можно применить асимметричное, если хочется. Но не обязательно.
Так что я про другое. Не про открытый и закрытый ключ!
mindfactor
May 1 2018, 18:52:30 UTC 1 year ago
В таком разе, подобный фокус, помнится, я читал в детстве у Гарднера или у Перельмана.
Раз его до сих пор не поставили на широкую ногу - видать, всё не так просто.
etwa
May 1 2018, 18:36:45 UTC 1 year ago
на самом деле дело так: я делаю парю ключей: свой (храню дома) и общий (каждый может его себе скопировать, вешаю его тасскать на базаре на дерево). вы берете общий ключ и закрываете им свое сообщение. сообщение можно открыть только моим (частным) ключом, обратно открыть его общим нельзя. так работает схема public/private key.
использует ли телеграм такую схему?
palaman
May 1 2018, 18:38:14 UTC 1 year ago
Асимметричное шифрование - это красивая идея, но я сейчас говорю о более простой и фундаментальной вещи, вполне применимой и к обычному симметричному шифрованию.
etwa
May 1 2018, 18:50:41 UTC 1 year ago
palaman
May 1 2018, 18:53:30 UTC 1 year ago
Вы послали первым, я зашифровал ещё больше и послал Вам? Так?
etwa
May 1 2018, 18:58:34 UTC 1 year ago
при ассиметричном шифровании обе стороны имеют свой алгоритм, частный. он не обменивается никогда.
т.е. ответ на ваш вопрос. я послал вам текст первым. он уже нечитабелен, я посылаю вам 3 буквы "абв" - шифрую как "вба". вы получаете мой "вба", но не знаете, как я шифровал, и передаете мне мой "вба" как "123". но я не знаю ваш код и обратно переставить свои буквы не смогу.
palaman
May 1 2018, 19:04:26 UTC 1 year ago
Например, Вы хотите передать мне число А. Вы передаете мне А*В (В - Ваш ключ!). Я передаю Вам обратно А*В*С (С - мой ключ!), Вы делите это на В и получаете А*С, пересылаете мне. Я делю это на С и получаю А. Что и требовалось.
Конечно, умножение - слишком простая операция. Надо похитрее - что угодно, лишь бы результат последовательного применения двух таких операций не зависел от их порядка. Как в умножении А*В*С=А*С*В.
Таким свойством обладает, например, возведение в степень.
etwa
May 1 2018, 19:06:10 UTC 1 year ago
palaman
May 1 2018, 19:08:04 UTC 1 year ago
А(В)С = (АС)В
Тихон Строгов
May 3 2018, 10:20:54 UTC 1 year ago
palaman
May 3 2018, 10:26:55 UTC 1 year ago
https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D0%BB%D0%B0%D1%8F_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%A4%D0%B5%D1%80%D0%BC%D0%B0
mindfactor
May 1 2018, 18:39:31 UTC 1 year ago Edited: May 1 2018, 18:43:05 UTC
Да, но только в секретных чатах.
Коими пользуются примерно 0,1% народу, потому что они ОЧЕНЬ неудобны.
Ну и в рамках передачи данных от клиента к серверу, но на сервере они лежат фактически незашифрованные.
etwa
May 1 2018, 18:48:17 UTC 1 year ago
а вот генерирует ли телеграм оба ключа и обменивается ли он публичными в начале чата - тут вопрос, потому как по стандартной с хеме пользователю надо САМОМУ забрать у хозяина его публичный ключ, а иначе его легко подменить в процессе обмена.
mindfactor
May 1 2018, 19:15:19 UTC 1 year ago
Ну вот на телефоне чат есть, а в клиент на компьютере его перенести не могу, например. Никак. Бай секьюрити дизайн.
palaman
May 2 2018, 02:50:44 UTC 1 year ago
А именно.
Каждый публичный чат хранится на сервере в зашифрованном виде. Чтобы его прочитать, надо быть участником чата - то есть, иметь доступ к ключу, которым он зашифрован. Не знаешь ключа - можешь читать сколько угодно: ничего понять невозможно. К тебе на устройство история чата передается в зашифрованном виде, расшифровывается только у тебя на устройстве.
А где хранится этот ключ? (Особый для каждого чата.)
Ключ хранится на сервере, но тоже в зашифрованном виде, в моем индивидуальном списке - списке ключей ко всем моим чатам и каналам. Этот список зашифрован моим индивидуальным ключом, и он передается мне сразу после того, когда я вхожу в свой аккаунт. Передается тоже в зашифрованном виде, причем никому не известен мой индивидуальный ключ, пользуясь которым можно этот список прочесть.
Хорошо, а где же хранится мой индивидуальный ключ?
А он тоже хранится на сервере, и зашифрован! И передается мне в тот момент, когда я вхожу в свой аккаунт в зашифрованном виде. Чтобы его расшифровать, нужно знать мой пароль, который я должен хранить в тайне, это уже моя забота.
Итак.
Когда я хочу залогиниться, мне в первый же момент передается мой индивидуальный ключ. Он зашифрован. Чтобы его расшифровать, нужно знать пароль. Если я пароль забыл или если это не я, то никакого толку от этой передачи я не получу, воспользоваться системой не смогу. Но если я знаю пароль, я могу получить свой ключ с любого устройства.
Расшифровав индивидуальный ключ при помощи пароля, моё устройство запрашивает с сервера и расшифровывает список, где хранятся ключи от каждого чата, к которому я имею доступ. А затем по моему желанию запрашивает историю каждого моего чата и канала и расшифровывает её ключом от него.
Профит!
Не знаешь моего пароля - не может узнать ничего! Хотя все хранится на публичном сервере, в общем доступе, и может быть передано хоть в ФСБ, хоть куда. Никто ничего не поймет и не прочитает.
Не думаю, что Дуров глупее меня и не мог придумать той же схемы. А скорее всего, он придумал кое-что и похитрее. Я-то любитель и размышляю обо всем этом часами, а он профессионал - и размышляет годами. Большая разница!
mindfactor
May 2 2018, 11:31:51 UTC 1 year ago
Ключ один для всего чата ? На самом деле это пара ключей - открытый, для зашифровки, и закрытый, для расшифровки, и мы говорим именно про закрытый ключ ? Я правильно понимаю, что эта пара генерируется на сервере ?
>Итак.
>...
>Профит!
Взламывается эта схема легко, просто и элементарно. Сотрубники ФСБ приходят в сотовую компанию, показывают корочку и требуют изготовить копию вашей сим-карты, а вашу симкарту тем временем заблокировать. Немедленно получают копию, ваша симкарта перестаёт работать. Пока вы это поймёте, пока придёте в сотовый салон, пока вам сделают новую (ни словом не обмолвившись о причинах внезапной поломки, вы же понимаете ;))...
За это время сотрудники ФСБ запросят с сервера телеграмм восстановление пароля на ваш номер, получат его, зайдут в телеграмм под вашим аккаунтом, получают все истории всех чатов.
ВСЁ !
palaman
May 2 2018, 18:21:50 UTC 1 year ago
Не обязательно. Можно использовать симметричное шифрование и один ключ. Закрытый.
Но можно и пару, да. Это неважно.
> Я правильно понимаю, что эта пара генерируется на сервере ?
Нет, эта ключ генерируется у тебя на устройстве и на сервер передается в зашифрованном виде, скрытый твоим паролем. Ты раскрываешь этот ключ только другим участникам сайта.
> требуют изготовить копию вашей сим-карты, а вашу симкарту тем временем заблокировать
Если они не знают мой личный пароль, то ничего у них не выйдет.
> сотрудники ФСБ запросят с сервера телеграмм восстановление пароля на ваш номер, получат его
Да, это проблема. Я думаю, самое правильное её решение - это невозможность восстановления пароля. Как с биткойнами. Нет пароля - нет денег, и точка.
itimo
May 1 2018, 18:37:31 UTC 1 year ago
Насколько мне известно, задачу с двумя навешенными замками как вы ее сформулировали не решена. Это был бы прорывище.
Используется асимметричное шифрование, которое принципиально взламываемо, просто очень долго.
palaman
May 1 2018, 18:40:55 UTC 1 year ago Edited: May 1 2018, 18:42:29 UTC
Реализовать её легко. Достаточно, чтобы операторы шифрования были коммутативными. А таким свойством обладает, например, обычное возведение в степень.
itimo
May 1 2018, 19:45:50 UTC 1 year ago
Мне легче поверить что я ничего не понимаю.
Изучу матчасть)
palaman
May 1 2018, 20:13:35 UTC 1 year ago
Спасибо!
itimo
May 2 2018, 07:09:57 UTC 1 year ago
Вам спасибо.
Я с детства болею криптографией на самом деле, даже иногда жалею что не пошел в эту сферу профессионально)
palaman
May 2 2018, 12:47:24 UTC 1 year ago
palaman
May 6 2018, 05:24:35 UTC 1 year ago
Плохой из меня популяризатор :)
itimo
May 6 2018, 10:16:17 UTC 1 year ago
значит, надо эту задачу решать.
нобелевка точно будет)))
palaman
May 6 2018, 11:57:40 UTC 1 year ago
itimo
May 13 2018, 09:27:54 UTC 1 year ago
itimo
May 1 2018, 19:49:23 UTC 1 year ago
Да, вы правы, конечно.
Однако такой протокол можно атаковать - перехвати все три сообщения и все. Можно расшифповать.
palaman
May 1 2018, 20:11:53 UTC 1 year ago Edited: May 1 2018, 20:15:51 UTC
Возведение в степень на циклической группе выглядит как генератор случайных чисел :)
llobba
May 1 2018, 19:24:49 UTC 1 year ago
palaman
May 1 2018, 19:29:59 UTC 1 year ago
Для меня это просто повод поболтать о математике.
mindfactor
May 2 2018, 11:35:51 UTC 1 year ago
А тот, что не может сходу поддержать разговор об эллиптических кривых и Г-функции, просто ничего не поймёт. Для обывателя - там сложная мозговзрывающая математика, упрощённое описание которой (про открытый и закрытый ключи) много раз написано на любом заборе.
livejournal
May 1 2018, 19:33:44 UTC 1 year ago
vuntean
May 1 2018, 20:40:12 UTC 1 year ago
itimo
May 2 2018, 07:08:19 UTC 1 year ago
Смею предположить что это слоговое письмо типа корейского хангыля. Выглялит очень иниересно)
vuntean
May 2 2018, 09:53:57 UTC 1 year ago
mindfactor
May 2 2018, 11:43:23 UTC 1 year ago
Даже банальная функция XOR () не может быть вскрыта, если длина ключа больше длины шифруемого текста, об этом, кажется, даже теорема есть.
Беда в том, что использовать эти системы в широкой эксплуатации (например, в шифровке трафика между банковским сервером и клиент-банком) или вовсе невозможно, или чрезвычайно трудно и неудобно.
Так что ИБ-специалисты заняты поиском баланса между удобством и безопасностью.
zaharov
May 1 2018, 21:06:39 UTC 1 year ago
Ваше описание доставило большое удовольствие : ) Хотелось бы почитать еще.
palaman
May 2 2018, 02:18:47 UTC 1 year ago
Значит, как популяризатор я не безнадежен.
a_longway
May 2 2018, 10:18:24 UTC 1 year ago
Некоторые галковскманы (Каин) полагают, что блокировка Телеграмма - это шаг на пути создания европейской информационной инфраструктуры, полностью независимой от США. Даже Макрон там сидел до недавнего времени.
palaman
May 2 2018, 12:44:00 UTC 1 year ago
- Если из-за РGP применённого в Телеграме и разгорелся сыр-бор, тогда ещё на "взлёте" надо было отстреливать, а не после того, когда распространился.
- Зачем "на взлёте"? Скорее всего, борьба с Телеграмом ведется не с целью его ликвидации, но рекламы и распространения. Если уж "всемогущие русские хакеры" не смогли одолеть Телегу, значит, Телега воистину непобедима! Если уж великое и ужасное ФСБ обломалось и не смогло прочесть переписку террористов - значит, Телега машина в впрямь серьезная! Записывайтесь все на Телегу! и Ваша приватность будет Вам всячески гарантирована, ага.
- Да. Ужасно похоже на рекламу. Но исторический опыт подсказывает, что "хотели как лучше а получилось как всегда". То есть тупость и жадность противников раскрутили Пашу, как когда-то Беню.
- Тупость и жадность на уровне сознания - это всегда проявление умный и острожной игры Бессознательного. Люди, которые работают в ФСБ, не знают, НА КОГО они работают. Знать это им по чину не положено. Они работают БЕССОЗНАТЕЛЬНО
- Пришла мне в голову странная мысль.
А что, если все мы наивны, и те-кто-надо давно уже владеют ключами от Телеги, и смысл интриги с её блокировкой в том, чтобы убедить тех-кого-надо в том, что Телега свята и непорочна, и пользоваться ею можно безо всякого стеснения и опаски? 😶
Я говорю не столько о презренных террористах, которых и так переловили бы, если бы хотели. Но соцсетями ведь пользуются не только террористы....
Подумал, и решил, что нет, это перебор. Люди там таки не глупее меня. Если я подумал в эту сторону, то они тем более подумают... но террористы-то вполне могут оказаться глупее меня, почему бы и нет?
zaharov
May 2 2018, 12:58:34 UTC 1 year ago
А зачем таким способом передавать одноразовый ключ? Так можно и само сообщение передать.
palaman
May 2 2018, 13:07:10 UTC 1 year ago
Но тут вступают в силу соображения экономии.
Чтобы шифровку было невозможно взломать, однако процесс шифровки и дешифровки занимал немного времени, лучше шифровать текст простым способом, но с достаточно длинным ключом. А сам ключ шифровать сложным и заковыристым способом, который прямо к исходному тексту применить потребовалось бы слишком много времени. Да и собственно отправка текста - не такое просто дело. Ведь гонять туда-сюда по Интернету придется три раза, да ещё каждый раз шифровать, да перешифровывать.
Лучше сразу договориться о временном ключе, и потом уже не беспокоиться ни о чем.
sidorovmax
May 2 2018, 16:13:35 UTC 1 year ago
sidorovmax
May 2 2018, 16:14:29 UTC 1 year ago
itimo
May 2 2018, 17:32:50 UTC 1 year ago
хотя я бы на месте фсб и провайдеров так бы и делал)
palaman
May 2 2018, 18:25:41 UTC 1 year ago
sidorovmax
May 3 2018, 11:52:04 UTC 1 year ago
В промежутке между вами и сайтом стоит переходник (у провайдера), который говорит вам, что он и есть сайт, при этом сам соединяется с сайтом, как будто это вы с ним соединяетесь.
Получается 2 шифрованных канала:
1. Вы с переходником
2. Переходник с сайтом.
Вы уверены, что канал защищен.
Сайт уверен, что канал защищен.
Переходник уверенно читает обмен по каналу, перешифровывая информацию.
palaman
May 3 2018, 12:12:08 UTC 1 year ago Edited: May 3 2018, 12:13:25 UTC
Поймите, вся суть моей идеи в том, что на сервер не передается и не хранится не хранится вообще ничего незашифрованного. С другой стороны, на моем устройстве не хранится ничего вообще. Всё на сервере. Но чтобы понять, что там на сервере, надо знать мой пароль. Если его знаю только я, то взломать эту схему вообще невозможно.
На сервере хранится ключ к моей личной информации - я его не могу запомнить - но он тоже зашифрован. Он первым делом передается мне на устройство. Но прочитать его можно только зная мой пароль.
Недостаток этой схемы - невозможность восстановить пароль. Никак. Забыл пароль - всё. Теряешь аккаунт вместе со всем, что там хранится.
palaman
May 3 2018, 12:17:13 UTC 1 year ago
То, что Вы говорите - да, это идеальный перехват информации.
А то, что я предлагаю - это идеальная схема обмена информацией, которую взломать невозможно в принципе. Только терморектальным методом.
elisson
May 6 2018, 20:05:53 UTC 1 year ago
palaman
May 6 2018, 20:07:02 UTC 1 year ago
А я как раз сижу думаю, стоит ли публиковать продолжение.
Теперь решил, что опубликую.