btc
bch
eth

Что такое Zero Knowledge Proof?

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

Доказательство с нулевым разглашением

Zero Knowledge Protocol (или Zero Knowledge Proof, ZKP) — способ проведения аутентификации без непосредственного обмена паролями, что существенно уменьшает вероятность их кражи. Использование данного протокола гарантирует невмешательство в процесс коммуникации третьих лиц и существенно повышает безопасность. ZPK позволяет передавать информацию на расстояние без раскрытия ее в пути. Однако данный способ верификации устроен таким образом, что проверяющий (Verifier) все равно может убедиться в том, что доказывающий (Prover) являетсятем человеком, за которого себя выдает. На первый взгляд, звучит довольно тяжело, и именно здесь нам на помощь приходят Алиса и Боб.

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

Давайте для простоты представим, что конфет может быть ровно 10, 20, 30 или 40. Для того, чтобы осуществить задуманное, Боб принес 4 сундука с надписями в виде каждой из возможных сумм.

Допустим, что у мальчика в пакете 20 конфет. Боб выкидывает ключи от всех коробок, кроме той, которая подходит его числу и покидает помещение.

Алиса в это время находит 4 листа и на одном из них рисует знак «+». Затем она подходит к коробкам и кладет листочек со знаком «+» в коробку с числом, соответствующим числу конфет у нее в пакете (предположим, что она собрала 30 подарков). В остальные коробки она бросает карточку со знаком «-». 

Теперь наступает очередь мальчика. Он открывает единственный сундук, ключ от которого у него остался и по знаку на найденном внутри листочке понимает, совпадает ли у них с подругой число конфет.

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

Этот метод отличается от традиционного способа аутентификации. Обычно стороны соглашаются на некую заранее известную форму секретной информации (например, пара логин-пароль).

В таком случае процесс работает следующим образом:

  • Prover посылает информацию о себе

  • Verifier проверяет полученную информацию на соответствие с базой данных. 

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

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

Использование протокола

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

Know Your Customer — политика «Знай своего клиента»

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

Кажется решение очевидно: банкам необходимо перейти на новую форму подтверждений, содержащим лишь информацию о том, владеет ли клиент достаточной для участия в той или иной процедуре суммой или нет. Но это однозначно увеличит объем работ для финансовых организаций. Более того, банк сможет проанализировать поведение своего клиента и получить много дополнительной информации, которую не каждый готов раскрыть. 

Выходом из ситуации может стать ZKP. Он позволяет Анне получать подтверждение от банка с необходимой суммой, не раскрывая каждый раз точную информацию финансовой организации. Эти письма будут валидными все время, пока организатор торгов доверяет кредитному учреждению потенциального покупателя.

Схема движения данных выглядит таким образом:

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

Интеллектуальные энергосистемы. Smart Grid

Работы по преобразованию систем энергоснабжения ведутся давно по всему миру. Считается, что демонополизация данного рынка пойдет на пользу как конечному потребителю, так и компаниям, предоставляющим данные услуги. Smart Grid — концепция, предполагающая создание сети распределенных подстанций для более эффективного использования ресурсов. Она позволит повысить рентабельность процессов, снизить вероятность отказа энергосистем и веерного отключение. Smart Grid также дает возможность использовать подключенные к сети устройства как накопители с возможностью дальнейшего перераспределения электричества (накопление энергии является огромной проблемой в традиционных системах). Это поволяет использовать огромное количество информации для принятия решений в режиме реального времени. 

Для осуществления работы умной сети нужен колоссальный объем данных, который должен осуществляться на основе peer-to-peer сети. Отсутствие единого центра сбора и обработки информации может быть заменено лишь на доступный всем взаимодействующим сторонам реестр. Проблема заключается в том, что информация о потреблении электричества является довольно личной: владея ей, можно сделать огромное количество выводов о жизни конкретного домохозяйства. Использование ZKP позволит избежать раскрытие приватной информации. При этом он будет гарантировать, что данные подлинны и участникам можно доверять.

Выборы, обеспечивающие анонимность и гарантирующие подлинность

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

На первый взгляд кажется, что это противоречащие друг другу понятия. В этом есть доля правды: соблюдение анонимность усложняет предоставление возможности проверки. Именно в этом нам и поможет Zero Knowledge Proof. Он позволяет удостовериться в правильности подсчета без раскрывания личной информации.

zk-SNARKs

Когда вы слышите о zero-knowledge proofs, скорее всего, речь идёт об их одной специфической разновидности – zk-SNARKах. В основе этих протоколов лежит сложный математический аппарат, однако в него можно не углубляться, если вы не внедряете это решение самостоятельно.

Начнём с названия. Zk означает zero-knowledge. SNARK –  succinct [сжатый] non-interactive [неинтерактивный] adaptive argument of knowledge [адаптирующееся доказательство знания].

Сжатый – значит достаточно эффективный, чтобы быть рассчитанным за короткий промежуток времени. Это чрезвычайно важно при проведении верификации.

Неинтерактивный означает, что SNARKи не требуют от Verifier непосредственного опроса Prover’a. Последний может опубликовать своё доказательство заранее, а верификатор проверит его подлинность. Представьте, что ваш учитель задаёт вам арифметическую задачу. Решив её, вы не сдаёте работу. Вместо этого zk-SNARKи доказывают учителю, что ваш результат верен.

Пока что всё выглядит очень просто, но стоит внести пару оговорок.

SNARKи требуют больших вычислительных мощностей. Зачастую им недостаёт ресурсов мобильных устройств. Однако в последнее время в этом отношении наблюдаются некоторые многообещающие подвижки.

Также присутствует проблема потери доступа к хэш-функции, на основании которой проверяется подлинность. Технология SNARK позволяет пользователю доказать, что у него есть доступ к определённому секрету, но тот, в свою очередь, должен обеспечивать его сохранность и доступность.

Самый же большой недостаток SNARKов – это так называемая фаза установки.

Фаза установки

Этот этап – необходимая часть введения SNARK-протоколов в любую задачу. На нём фиксируется подлинность вычисления [т.н. circuit], результат которого вы хотите доказать. Из-за этого ограничения SNARK-протоколы плохо подходят для произвольных Тьюринг-полных смарт-контрактов  —  каждый новый договор потребует новой установки. Каждая из задаваемых вашим учителем заданий потребует своей установочной фазы. Например, по одной фазе потребуется для осуществления операции сложения или умножения.

У фазы установки есть ещё один важный аспект. Именно на этом этапе создаётся секрет, существование которого допускает публикацию ложных доказательств [fake proofs]. В системе с двумя участниками (учитель-ученик) это допустимо – верификатор (ваш преподаватель) создаёт секрет, и безопасность обеспечивается до тех пор, пока он не делится секретом с вами.

Если вы хотите использовать какой-то circuit публично, то есть более чем с одним верификатором, необходимо иметь “trusted setup”. В данном случае секрет будет генерироваться не одним лицом (которое, кстати, обязано его сразу уничтожить), а группой пользователей. Если все участники группы придерживаются правил (то есть удаляют секретные данные), безопасность обмена гарантирована.

Для более детального знакомства с zk-SNARKами читайте:

  1. Intro to zk-SNARKs with examples

  2. zkSNARKs in a nutshell

  3. Zk-SNARKs: Under the Hood от Виталика Бутерина.

Zcash

Мы достаточно много сказали о zk-SNARKах, чтобы перейти к обсуждению Zcash, самой популярной валюты из тех, что используют данную технологию.

Итак, Zcash – это криптовалюта, основанная на zk-SNARKах, главная цель которой – сделать все операции полностью анонимными. Она использует специальный circuit в качестве своего trusted setup. Владельцы Zcash могут совершать такие же публичные транзакции, как и держатели биткоина. Вдобавок, им доступна опция сокрытия адресов получателя, отправителя и суммы перевода. Разработчики окрестили эту опцию «shielded transactions».

Zcash vs Monero

Zcash нередко сравнивают с Monero, хотя при близком рассмотрении становится ясно, что системы по-разному подходят к вопросам приватности. Monero использует механизм кольцевых подисей [ring signatures], позволяющий участникам транзакции «спрятаться в толпе» других участников сети при переправке валюты. Однако количество участников такого «миксера» ограничено – рекорд сети составил 4,500 адресов.

Shielded transactions, используемые в Zcash, производят анонимную пересылку каждого токена, что обеспечивает Zcash принципиальное превосходство над Monero.

Zcash наследует недостатки zk-SNARKов

Остатки деталей компьютера, уничтоженного Питером Тоддом после церемонии запуска Zcash:

Группа, состоявшая из криптографов и известных членов криптосообщества, собралась для работы над созданием Zcash. Нужно понимать, что доверие к этой криптовалюте основано на предположении о том, что члены группы руководствовались благими побуждениями при запуске сети и действительно уничтожили свои доли сгенерированного ими секрета. Если какие-то части остались в сохранности, получающий к ним доступ человек сможет производить поддельные токены, хотя и не будет способен раскрыть информацию о других транзакциях, обрабатываемых системой. Питер Тодд, эксперт по безопасности, в том числе разрабатывавший биткоин на ранних стадиях существования проекта, поделился своими впечатлениями от церемонии. Несмотря на то, что 14 ноября 2016 года он перечеркнул всё написанное, это стоит прочесть.

Следует также отметить, что высокие системные требования SNARKов не позволят обработать приватные транзакции на портативных устройствах, таких как hardware-кошельки Ledger.

Эфириум

Помимо обеспечения безопасности финансовых транзакций, zero-knowledge proofs служат и для сохранения неприкосновенности данных.

Эфириум – самый успешный блокчейн-проект из тех, что предлагают написание смарт-контрактов. Однако приватности члены Ethereum Foundation уделяли гораздо меньше внимания. Даже мельчайшие подробности любого смарт-контракта доступны для просмотра каждому пользователю блокчейна или хранятся в памяти полных узлов сети. Отправители и получатели средств, данные транзакций, исполняемый код и статус каждого контракта – все это открыто для просмотра любому желающему.

Эфириум-контракты, пользователям которых необходима приватность, могут обеспечить последнюю лишь за счёт off-chain-средств, то есть операций, проведённых за пределами блокчейна. Очевидно, что такой характер построения контрактов привносит в систему риск и человеческий фактор, что недопустимо.

Metropolis – следующее обновление протокола Эфириума. Оно даст возможность программистам, пишущим смарт-контракты, внедрять zk-SNARKи прямо в блокчейне и верифицировать информацию с их помощью.

Что это даст? Некоторые переменные в контрактах можно будет сделать приватными. Секретная информация сможет храниться не в блокчейне, а у пользователей. Те, в свою очередь, будут подтверждать, что действуют по правилам, посредством zk-SNARKов.

Представьте себе токен стандарта ERC20, при использовании которого информация о балансе держателя закрыта, а объёмы эмиссии общеизвестны и предсказуемы. Или представьте платформу для выдачи кредитов, сохраняющую приватность данных о кредиторе и условиях договора.

Однако zk-SNARKи не позволяют достигнуть отделённой от пользователя, автономной приватности в Эфириуме. Пока что они полагаются на off-chain-участника для хранения секрета. Без последнего отслеживать секрет будет некому, а все доказательства будут бесполезны.

Использованные материалы:

https://hackernoon.com/eli5-zero-knowledge-proof-78a276db9eff
https://www.cossacklabs.com/zero-knowledge-protocols-without-magic.html

http://blog.stratumn.com/zero-knowledge-explained-part-1-use-cases/

https://decentralize.today/zero-knowledge-proofs-zcash-and-ethereum-f6d89fa7cba8 

 
 
Комментарии

Your browser is out of date!
Install the latest version of your browser.