Перейти к основному содержанию

Последнее обновление страницы: 21 февраля 2024 г.

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

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

Доказательства с нулевым разглашением впервые встречаются в статье за 1985 год Сложность знания в интерактивных системах доказательства(opens in a new tab). В ней приводится определение доказательства с нулевым разглашением, широко используемое и сегодня:

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

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

Зачем нужны доказательства с нулевым разглашением?

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

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

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

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

Как работает доказательство с нулевым разглашением?

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

Протокол доказательства с нулевым разглашением должен соответствовать следующим критериям:

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

  2. Надежность. Если входные данные не верны, то теоретически невозможно обмануть протокол, чтобы он вернул результат «истина». Следовательно, нечестный доказывающий не сможет обмануть честного проверяющего и заставить его поверить в истинность неверного утверждения (за исключением ничтожно малой вероятности).

  3. Нулевое разглашение. Проверяющий ничего не узнает об утверждении, кроме его истинности или ложности (у него «нулевое знание» утверждения). Это требование также не позволяет проверяющему восстановить исходные входные данные (содержание утверждения) из доказательства.

В базовой форме доказательство с нулевым разглашением состоит из трех элементов: свидетель, вызов и ответ.

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

  • Вызов. Проверяющий случайно выбирает другой вопрос из набора и просит доказывающего ответить на него.

  • Ответ. Доказывающий принимает вопрос, вычисляет ответ и возвращает его проверяющему. Ответ доказывающего позволяет проверяющему понять, действительно ли он имел доступ к «свидетелю». Чтобы убедиться, что доказывающий не угадывает вслепую и не получает правильные ответы случайно, проверяющий задает дополнительные вопросы. При многократном повторении такого взаимодействия возможность доказывающего подделать знания о «свидетеле» значительно падает. Все повторяется до тех пор, пока проверяющий не будет удовлетворен.

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

Хороший пример, иллюстрирующий работу интерактивных доказательств, — это знаменитая история Жан-Жака Кискватера о пещере Али-Бабы(opens in a new tab). В этой истории Пегги (доказывающая) хочет доказать Виктору (проверяющему), что она знает секретную фразу, чтобы открыть волшебную дверь, не раскрывая фразу.

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

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

Для решения этой проблемы Мануэль Блум, Пол Фельдман, и Сильвио Микали предложили первые неинтерактивные доказательства с нулевым разглашением(opens in a new tab), где у доказывающего и проверяющего есть общий ключ. Это позволяет доказывающему продемонстрировать свое знание определенной информации (т. е. свидетеля) без предоставления самой информации.

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

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

Неинтерактивные доказательства представляют собой прорыв в технологии нулевого разглашения и стимулировали развитие используемых сегодня систем доказательства. Мы рассмотрим эти типы доказательств ниже.

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

ZK-SNARKs

ZK-SNARK — это аббревиатура от Zero-Knowledge Succinct Non-Interactive Argument of Knowledge (краткий неинтерактивный аргумент знания с нулевым разглашением). Протокол ZK-SNARK имеет следующие характеристики:

  • Нулевое разглашение. Проверяющий может проверить достоверность утверждения без каких-либо других сведений об утверждении. Единственное, что проверяющий знает об утверждении, — это является оно истинным или ложным.

  • Краткость. Доказательство с нулевым разглашением меньше чем «свидетель», и может быть быстро проверено.

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

  • Аргумент. Доказательство удовлетворяет требование «надежности», поэтому обман крайне маловероятен.

  • Знание. Доказательство с нулевым разглашением не может быть построено без доступа к секретной информации (свидетелю). Вычислить верное доказательство с нулевым разглашением для доказывающего, который не знает «свидетеля», трудно, если вообще возможно.

«Общий ключ», упомянутый ранее, относится к публичным параметрам, которые доказывающий и проверяющий согласны использовать для генерирования и проверки доказательств. Генерация публичных параметров, вместе называемых строкой общей ссылки (Common Reference String, CRS), является деликатной операцией из-за ее важности для безопасности протокола. Если энтропия (случайность), используемая для генерации CRS, попадает в руки нечестного доказывающего, он может рассчитывать ложные доказательства.

Протокол конфиденциального вычисления (multi-party computation, MPC)(opens in a new tab) — это способ снизить риски при генерации публичных параметров. Несколько сторон участвуют в церемонии доверенной установки(opens in a new tab), где каждый участник вводит некоторые случайные значения для генерации CRS. Пока хотя бы одна честная сторона уничтожает свою часть энтропии, протокол ZK-SNARK сохраняет вычислительную надежность.

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

ZK-STARKs

ZK-STARK — это аббревиатура от Zero-Knowledge Scalable Transparent Argument of Knowledge (открытый масштабируемый аргумент знания с нулевым разглашением). ZK-STARK напоминает ZK-SNARK, за исключением двух своих характеристик:

  • Масштабируемость. ZK-STARK быстрее ZK-SNARK при генерировании и проверке доказательств, когда размер «свидетеля» больше. С доказательствами STARK время доказывания и проверки лишь незначительно увеличивается по мере увеличения свидетеля (для SNARK время доказательства и проверки увеличивается линейно с размером свидетеля).

  • Открытость. ZK-STARK полагается на публично проверяемую случайность при генерации публичных параметров для доказательства и проверки вместо доверенной установки. Таким образом, это более открытый вариант по сравнению с ZK-SNARK.

ZK-STARK производит бо́льшие доказательства, чем ZK-SNARK, поэтому обычно предусматривает более высокие накладные расходы на проверку. Однако существуют случаи (такие, как доказывание крупных баз данных), где ZK-STARK может быть более затратоэффективным, чем ZK-SNARK.

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

Анонимные платежи

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

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

Существуют специальные «конфиденциальные монеты», предназначенные для абсолютно анонимных транзакций. Блокчейны, ориентированные на конфиденциальность, такие как Zcash и Monero, скрывают данные транзакций, включая адреса отправителя и получателя, тип активов, количество и хронологию транзакций.

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

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

Защита личности

Нынешние системы управления личными данными подвергают риску персональные данные. Доказательства с нулевым разглашением могут помочь людям подтвердить личность и в то же время защитить конфиденциальные данные.

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

Аутентификация

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

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

Проверяемые вычисления

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

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

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

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

Вот как это работает на практике:

  • Вместо обработки каждой транзакции Ethereum выгружает исполнение в отдельную цепочку.

  • После обработки транзакций другая цепочка возвращает результаты, которые будут применены к состоянию Ethereum.

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

Цепочка нуждается в способе проверки транзакций вне цепи без их повторного исполнения, иначе ценность вычислений вне цепи теряется.

Здесь в игру вступают проверяемые вычисления. Когда узел выполняет транзакцию за пределами Ethereum, он представляет доказательство с нулевым разглашением, чтобы подтвердить правильность исполнения вне цепочки. Это доказательство (называемое

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

Свертки с нулевым разглашением и валидиумы — это два решения для масштабирования вне цепочки, которые используют доказательство достоверности для обеспечения безопасной масштабируемости. Эти протоколы выполняют тысячи транзакций вне цепи и предоставляют доказательства для проверки на Ethereum. Эти результаты могут быть применены сразу после проверки доказательства, что позволяет Ethereum обрабатывать больше транзакций без увеличения вычислений в сети первого уровня.

Сокращение подкупа и сговора при голосовании в цепочке

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

Будучи определен как «координация усилий по ограничению открытой конкуренции путем обмана, мошенничества и введения в заблуждение других», сговор может иметь форму злоумышленника, влияющего на голосование путем предложения взяток. Например, Алиса может получить взятку от Боба, чтобы проголосовать за вариант B на голосовании, даже если она предпочитает вариант A.

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

Например, механизмы квадратичного финансирования(opens in a new tab) полагаются на пожертвования для оценки предпочтительности определенных вариантов среди различных проектов для общественного блага. Каждое пожертвование считается «голосом» за конкретный проект, при этом проекты, получающие больше голосов, получают больше средств из соответствующего пула.

Использование голосования в цепочке делает квадратичное финансирование подверженным сговору: транзакции блокчейна открыты, поэтому взяткодатели могут видеть действия взяткополучателей в цепи и проверять, как они «голосовали». Таким образом, квадратичное финансирование перестает быть эффективным средством распределения средств на основе общих предпочтений сообщества.

К счастью, новые решения, такие как MACI (Minimum Anti-Collusion Infrastructure — минимальная инфраструктура для борьбы со сговорами), используют доказательства с нулевым разглашением, чтобы сделать голосования в цепочке (например, механизм квадратичного финансирования) устойчивыми к взяточничеству и сговору. MACI — это набор смарт-контрактов и сценариев, которые позволяют центральному администратору (называемому «координатором») объединять голоса и подсчитывать результаты без раскрытия того, как проголосовало каждое отдельное лицо. При этом все же возможно проверить правильность подсчета голосов и подтвердить, что конкретное лицо участвовало в этом раунде голосования.

Как работает MACI с доказательствами с нулевым разглашением?

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

В MACI доказательства с нулевым разглашением используются для обеспечения правильности вычислений за счет того, что координатор никак не сможет некорректно обрабатывать голоса и результаты голосования. Это достигается за счет требования от координатора генерировать доказательства ZK-SNARK, подтверждающие, что a) все сообщения были корректно обработаны, б) окончательный результат соответствует сумме всех имеющих силу голосов.

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

  • Алиса регистрируется для голосования, отправив свой публичный ключ смарт-контракту.
  • Алиса соглашается голосовать за вариант В в обмен на взятку от Боба.
  • Алиса голосует за вариант B.
  • Алиса тайно посылает зашифрованную транзакцию для изменения публичного ключа, связанного с ее личностью.
  • Алиса посылает еще одно (зашифрованное) сообщение смарт-контракту, голосуя за вариант А, используя новый публичный ключ.
  • Алиса показывает Бобу транзакцию, которая показывает, что она проголосовала за вариант В(которая уже недействительна, так как публичный ключ больше не ассоциируется с личностью Алисы в системе).
  • Во время обработки сообщений координатор пропускает голос Алисы за вариант B и считает только голос за вариант A. Следовательно, попытка сговора Боба с Алисой и манипулирование голосованием в цепи не удалась.

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

Но только в тех случаях, когда координатор остается честным, MACI является мощным инструментом для обеспечения неприкосновенности голосования в цепи. Это объясняет его популярность среди приложений квадратичного финансирования (например, clr.fund(opens in a new tab)), которые основываются на честности выбора каждого голосующего.

Подробнее о MACI(opens in a new tab).

Недостатки использования доказательств с нулевым разглашением

Расходы на оборудование

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

Расходы на проверку доказательств

Проверка доказательств также требует сложных вычислений и увеличивает расходы на внедрение технологии нулевого разглашения в приложения. Эти расходы особенно важны в контексте доказывания расчетов. Например, ZK-свертки тратят ~ 500 000 единиц газа, чтобы проверить одно доказательство ZK-SNARK на Ethereum, а ZK-STARK требуют еще более высоких комиссий.

Предположения о доверии

В ZK-SNARK общая справочная строка (публичные параметры, CRS) генерируется один раз и доступна для повторного использования сторонам, желающим принять участие в протоколе нулевого разглашения. Публичные параметры создаются через церемонию доверенной установки, участники которой считаются честными.

Но для пользователей нет возможности оценить честность участников, им приходится верить на слово разработчикам. ZK-STARK избавлены от предположений о доверии, поскольку случайность, используемая для генерирования строк, можно публично проверить. В то же время исследователи работают над установками без доверия для ZK-SNARK с целью повышения безопасности механизмов доказывания.

Угрозы квантовых вычислений

ZK-SNARK использует криптографию эллиптических кривых (

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

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

Дополнительные ресурсы

Была ли эта статья полезной?