Человек настолько велик, насколько это допускает его разум.

 

Вы находитесь в баре, и разговариваете о вариантах анонимности с несколькими клиентами. Господин рядом с вами делает ставку на систему PrivateSend от dash. Другой парень хочет продать вам monero. Бармен — поклонник эфирума и не заботится об анонимности. Он говорит, что «это будет реализовано в какой-то момент, но до этого есть еще время». Между миксеров, кольцевых подписей и master nodes, вы спрашиваете вслух, нет ли лучшего инструмента для защиты собственных данных и … финансового усмотрения.

На другом конце бара, тощий парень с тонкими волосами смотрит на вас и, кажется хочет присоединиться к обсуждению. Вы его заметили и улыбайтесь ему. Парень тянется к вам, и кричит прямо в ухо  – ”zero-knowledge proofs”. Доказательство нулевого знания (скажем, это будет русская версия).

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

Я хочу сначала предупредить читателей. Буду жертвовать формой в пользу содержания. Если вы видите что я повторяюсь, и четыре предложения начинаются с одного и того же предмета и я даю 3-4 синонимов одному и тому же глаголу, один за другим, вы принимаете ситуацию. Это и так сложны предмет, и на каждом шагу все нужно прояснить.

 

Аналогия  

Представьте себе, что человек, которого вы никогда раньше не видели, o которым никогда не слышали, какой-нибудь незнакомец, приближается к вам на улице. Он говорит, что знает твою мать. Он также говорит вам, что ваша мама находится в больнице и что вам нужно быстро садится к нему в машине и он отвезет  вас в больницу скорой помощи. Что вы делаете? Вы беспокоитесь о своей матери, но вы также должны быть довольно подозрительными.

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

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

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

 

Вопрос — ответ

Хорошим примером доказательства нулевого знания будет криптографический протокол с вопросом-ответом.

Ваш друг Фердинанд, пишет в Твиттере что он только что съел пиццу в пиццерии на углу. Вы прекрасно знаете, что Фердинанд обычно не ест пиццу. Вы думаете,что  его аккаунт был взломан, поэтому вы отправляете ему личное сообщение и просите его зашифровать сообщение «да, я даже съел целую пиццу» с его личным паролем. Если полученный шифрованный текст может быть расшифрован с помощью открытого ключа, вы знаете, что он имеет доступ к учетной записи Twitter.

В приведенном выше примере важно помнить, что вы, проверяющий, тот, кто выбирает сообщение, чтоб человек который должен доказать зашифрует его. Если человек, который делает выбор, выбирает сообщение, а учетная запись Фердинанда была скомпрометирована, тогда злоумышленник может использовать любое прошлое сообщение, которое Фердинанд зашифровал с помощью личного пароля, к которому у него есть доступ. Например, предположим, что в прошлом Фердинанд зашифровал сообщение «Мне нравится этот ресторан» и злоумышленник имеет доступ к шифротексту и оригинальному тексту. Нападавший, ответственный за доказательство его подлинности, может использовать это старое сообщение и убеждать верификатора. Этот тип атаки называется повторной атакой/atac replay, то есть атакой, которая полагается на повторение старого сообщения.

Итак, до тех пор, пока Фердинанд не зашифровал это сообщение в прошлом, у вас нет проблем. На практике вы также должны включить nonce (случайное число в сообщении), чтобы убедиться, что он уникален или даже лучше — использовать алгоритм подписи, который делает этот процесс для вас, а не использовать асимметричное шифрование.

 

Потому что …

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

Однако мы должны понимать, что метод доказательства нулевого знания не «разрешает» анонимность. Вместо этого он является одним из компонентов системы анонимности. Другие типы доказательств нулевого знания могут иметь разные функциональные возможности в этих системах.

Больше новостей Facebook. Подписывайтесь Telegram и Instagram.

 

 

 

Автор – Matt Loungo

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

Please enter your comment!
Please enter your name here