Протокол нулевого знания - это метод, с помощью которого одна сторона (доказатель) может доказать другой стороне (проверяющему), что что-то верно, не раскрывая никакой информации, кроме факта, что это конкретное утверждение верно.
Доказательства нулевого знания улучшились с годами и сейчас используются в нескольких приложениях реального мира.
Доказательства нулевого знания стали прорывом в области прикладной криптографии, поскольку они обещали улучшить безопасность информации для отдельных лиц. Подумайте, как вы можете доказать утверждение (например, "Я гражданин страны X") другой стороне (например, поставщику услуг). Вам нужно предоставить "доказательства" в поддержку вашего утверждения, такие как национальный паспорт или водительское удостоверение.
Но у этого подхода есть проблемы, в основном связанные с отсутствием конфиденциальности. Личная идентифицируемая информация (ЛИИ), передаваемая третьим сторонам, хранится в централизованных базах данных, которые уязвимы к взломам. С учетом того, что кража личности становится критической проблемой, возникают требования к более надежным средствам защиты конфиденциальной информации.
Доказательства с нулевым разглашением решают эту проблему, устраняя необходимость раскрывать информацию для доказательства правильности утверждений. Протокол с нулевым разглашением использует утверждение (называемое 'доказательством') в качестве входных данных для генерации краткого доказательства его правильности. Это доказательство обеспечивает надежные гарантии того, что утверждение верно, не раскрывая информацию, использованную при его создании.
Вернемся к нашему ранее примеру, единственным доказательством, которое вам нужно предоставить для подтверждения вашего гражданства, является доказательство с нулевым разглашением. Верификатору нужно только проверить, действительно ли определенные свойства доказательства истинны, чтобы быть убежденным, что исходное утверждение также истинно.
Доказательство в нулевом знании позволяет вам доказать правду утверждения, не раскрывая содержание утверждения или как вы узнали правду. Для этого возможности протоколы с нулевым знанием полагаются на алгоритмы, которые берут некоторые данные на входе и возвращают 'истина' или 'ложь' на выходе.
Протокол нулевого знания должен удовлетворять следующим критериям:
В основной форме доказательство нулевого знания состоит из трех элементов: свидетель, вызов и ответ.
Выше описана структура 'интерактивного нулевого доказательства знания'. Ранние протоколы нулевого знания использовали интерактивное доказательство, при котором проверка достоверности утверждения требовала обмена сообщениями между доказывающими и проверяющими.
Хорошим примером, иллюстрирующим работу интерактивных доказательств, является знаменитый Жан-Жак Кискатер.История о пещере Али-Бабы
. В истории Пегги (доказатель) хочет доказать Виктору (проверяющему), что она знает секретную фразу для открытия волшебной двери, не раскрывая фразу.
Хотя революционное интерактивное доказательство имело ограниченную полезность, поскольку требовало наличия двух сторон и повторяющегося взаимодействия. Даже если верификатор был убежден в честности доказывающего, доказательство было недоступно для независимой верификации (вычисление нового доказательства требовало нового набора сообщений между доказывающим и верификатором).
Для решения этой проблемы Мануэль Блум, Пол Фелдман и Сильвио Микали предложили первуюневзаимодействующие доказательства нулевого знания
где у проверяющего и верификатора есть общий ключ. Это позволяет проверяющему продемонстрировать свои знания о некоторой информации (т. е. свидетельстве), не предоставляя саму информацию.
В отличие от интерактивных доказательств, неинтерактивные доказательства требуют только одного раунда коммуникации между участниками (доказателем и верификатором). Доказатель передает секретную информацию специальному алгоритму для вычисления доказательства нулевого разглашения. Это доказательство отправляется верификатору, который проверяет, что доказатель знает секретную информацию, используя другой алгоритм.
Невзаимодействующее доказательство сокращает коммуникацию между доказывающим и проверяющим, что делает ZK-доказательства более эффективными. Более того, после генерации доказательства оно доступно для любого другого лица (с доступом к общему ключу и алгоритму проверки) для проверки.
Невзаимодействующие доказательства стали прорывом для технологии нулевого разглашения и способствовали развитию систем доказательств, используемых в настоящее время. Мы обсудим эти типы доказательств ниже:
ZK-SNARK - это акроним от Zero-Knowledge Succinct Non-Interactive Argument of Knowledge. Протокол ZK-SNARK обладает следующими качествами:
Упомянутый ранее 'общий ключ' относится к общим параметрам, согласованным доказывающим и верификатором для генерации и проверки доказательств. Генерация общих параметров (известных коллективно как Строка Общей Ссылки (CRS)) является чувствительной операцией из-за ее важности для безопасности протокола. Если энтропия (случайность), используемая при генерации CRS, попадет в руки недобросовестного доказывающего, он может вычислить ложные доказательства.
Многопартийные вычисления (MPC)
это способ снижения рисков при генерации общих параметров. В процессе участвуют несколько сторон. церемония доверенной установки
, где каждый участник вносит некоторые случайные значения для генерации CRS. Пока одна честная сторона уничтожает свою часть энтропии, протокол ZK-SNARK сохраняет вычислительную звучность.
Доверенные настройки требуют, чтобы пользователи доверяли участникам процесса генерации параметров. Однако разработка ZK-STARKs позволила создавать протоколы доказательств, которые работают без доверенной настройки.
ZK-STARK - это акроним от Zero-Knowledge Scalable Transparent Argument of Knowledge. ZK-STARK похожи на ZK-SNARK, за исключением того, что они:
ZK-STARKs производят более крупные доказательства, чем ZK-SNARKs, что обычно означает более высокие накладные расходы на верификацию. Однако есть случаи (например, доказательство больших наборов данных), когда ZK-STARKs могут быть более экономичными, чем ZK-SNARKs.
Платежи по кредитным картам часто видны нескольким сторонам, включая поставщика платежей, банки и другие заинтересованные стороны (например, государственные органы). Хотя финансовое наблюдение имеет преимущества для выявления незаконной деятельности, оно также подрывает конфиденциальность обычных граждан.
Криптовалюты задумывались как средство обеспечения возможности для пользователей проводить частные, одноранговые транзакции. Но большинство транзакций с криптовалютами открыто видны на публичных блокчейнах. Личности пользователей часто псевдонимичны и могут быть связаны с реальными личностями добровольно (например, включая адреса ETH в профилях Twitter или GitHub) или могут быть ассоциированы с реальными личностями с использованием базового анализа данных на цепи и вне ее.
Существуют специальные «монеты конфиденциальности», предназначенные для полностью анонимных транзакций. Блокчейны, ориентированные на конфиденциальность, такие как Zcash и Monero, скрывают детали транзакций, включая адреса отправителя/получателя, тип актива, количество и сроки транзакции.
Запекая в технологию нулевого знания в протокол, блокчейн-сети, ориентированные на конфиденциальность, позволяют узлам проверять транзакции, не имея доступа к данным транзакции.
Доказательства нулевого разглашения также применяются для анонимизации транзакций на публичных блокчейнах. Примером является Tornado Cash, децентрализованный, некастодиальный сервис, который позволяет пользователям проводить частные транзакции на Ethereum. Tornado Cash использует доказательства нулевого разглашения для затруднения деталей транзакций и гарантирования финансовой конфиденциальности. К сожалению, поскольку эти инструменты конфиденциальности являются «добровольными», они ассоциированы с незаконной деятельностью. Для преодоления этого конфиденциальность в конечном итоге должна стать стандартной на публичных блокчейнах.
Существующие системы управления личностью ставят персональные данные под угрозу. Нулевые доказательства могут помочь отдельным лицам подтвердить личность, защищая при этом чувствительные детали.
Доказательства нулевого знания особенно полезны в контексте децентрализованная идентичность. Децентрализованная идентичность (также описываемая как 'суверенная идентичность') дает человеку возможность контролировать доступ к личным идентификаторам. Доказательство вашего гражданства без раскрытия ваших налогового идентификационного номера или деталей паспорта - хороший пример того, как технология нулевого разглашения обеспечивает децентрализованную идентичность.
Использование онлайн-сервисов требует подтверждения вашей личности и права на доступ к этим платформам. Это часто требует предоставления личной информации, такой как имена, адреса электронной почты, даты рождения и так далее. Вам также может потребоваться запомнить длинные пароли или рискнуть потерять доступ.
Доказательства с нулевым разглашением, однако, могут упростить аутентификацию как для платформ, так и для пользователей. После того как ZK-доказательство было сгенерировано с использованием открытых входных данных (например, данных, подтверждающих членство пользователя на платформе) и закрытых входных данных (например, данные пользователя), пользователь может просто предъявить его для аутентификации своей личности, когда ему нужно получить доступ к сервису. Это улучшает опыт пользователей и освобождает организации от необходимости хранить огромные объемы информации о пользователе.
Проверяемые вычисления - еще одно применение технологии нулевого знания для улучшения дизайна блокчейна. Проверяемые вычисления позволяют нам передавать вычисления другому субъекту, сохраняя при этом проверяемые результаты. Субъект представляет результат вместе с доказательством того, что программа была выполнена правильно.
Проверяемые вычисления критичны для улучшения скорости обработки на блокчейнах без уменьшения безопасности. Для понимания этого необходимо знать различия в предлагаемых решениях для масштабирования Ethereum.
Решения масштабирования на цепи, такие как шардинг, требуют обширной модификации базового уровня блокчейна. Однако этот подход является очень сложным, и ошибки в реализации могут подорвать модель безопасности Ethereum.
Внебиржевые масштабные решенияне требуют переработки основного протокола Ethereum. Вместо этого они полагаются на модель вычислений, переданных на аутсорсинг, чтобы улучшить пропускную способность базового уровня Ethereum.
Вот как это работает на практике:
Преимущество здесь заключается в том, что Ethereum не обязан выполнять какие-либо действия и только должен применять результаты внешнего вычисления к своему состоянию. Это снижает сетевую загруженность и также улучшает скорость транзакций (протоколы вне цепи оптимизируются для более быстрого выполнения).
Цепочке нужен способ проверки внеланцетренних транзакций без их повторного выполнения, в противном случае утрачивается ценность выполнения внеланцетренних операций.
Здесь вступает в игру проверяемое вычисление. Когда узел выполняет транзакцию вне Ethereum, он представляет доказательство с нулевым разглашением, чтобы доказать правильность выполнения вне цепи. Это доказательство (называемое
доказательство правильности) гарантирует, что транзакция действительна, позволяя Ethereum применить результат к своему состоянию — без ожидания возражений.
Zero-knowledge rollupsивалидиумыдве внебиржевые масштабируемые решения, которые используют доказательства правильности для обеспечения безопасного масштабирования. Эти протоколы выполняют тысячи транзакций вне цепи и отправляют доказательства для верификации на Ethereum. Эти результаты могут быть применены немедленно после верификации доказательства, что позволяет Ethereum обрабатывать больше транзакций без увеличения вычислений на базовом уровне.
Схемы голосования на блокчейне имеют множество преимущественных характеристик: они полностью аудируемы, защищены от атак, устойчивы к цензуре и не имеют географических ограничений. Но даже схемы голосования в цепочке не защищены от проблемы коллузии.
Определенное как "координирование для ограничения открытого конкуренции путем обмана, мошенничества и введения в заблуждение других", сговор может принимать форму злонамеренного деятеля, влияющего на голосование путем предложения взяток. Например, Алиса может получить взятку от Боба за голосование за вариант B на бюллетене, даже если она предпочитает вариант A.
Подкуп и сговор ограничивают эффективность любого процесса, который использует голосование в качестве сигнального механизма (особенно когда пользователи могут доказать, как они проголосовали). Это может иметь серьезные последствия, особенно если голоса отвечают за распределение ограниченных ресурсов.
Например, механизмы квадратичного финансирования
полагаются на пожертвования для измерения предпочтения определенных вариантов среди различных проектов общественного блага. Каждое пожертвование считается «голосом» за определенный проект, при этом проекты, получившие больше голосов, получают больше средств из фонда сопоставления.
Использование голосования на цепочке делает квадратичное финансирование уязвимым к коллаборации: транзакции блокчейна являются публичными, поэтому подкупщики могут проверить онлайн-активность взятого на подкуп человека, чтобы увидеть, как они 'голосовали'. Таким образом, квадратичное финансирование перестает быть эффективным средством распределения средств на основе агрегированных предпочтений сообщества.
К счастью, новые решения, такие как MACI (Минимальная инфраструктура против мошенничества), используют доказательства нулевого знания, чтобы сделать онлайн-голосование (например, механизмы квадратичного финансирования) устойчивыми к подкупу и сговору. MACI - это набор смарт-контрактов и скриптов, которые позволяют центральному администратору (называемому «координатором») агрегировать голоса и подводить итоги, не раскрывая конкретики по поводу того, как каждый отдельный участник проголосовал. Тем не менее, все еще возможно проверить, что голоса были посчитаны правильно, или подтвердить, что конкретное лицо участвовало в голосовании.
В начале координатор разворачивает контракт MACI на Ethereum, после чего пользователи могут зарегистрироваться для голосования (зарегистрировав свой открытый ключ в смарт-контракте). Пользователи голосуют, отправляя сообщения, зашифрованные их открытым ключом, в смарт-контракт (действительный голос должен быть подписан самым последним открытым ключом, связанным с идентификацией пользователя, среди других критериев). После этого координатор обрабатывает все сообщения после окончания периода голосования, подводит итоги голосования и проверяет результаты в цепи.
В MACI нулевые доказательства используются для обеспечения правильности вычислений, делая невозможным неправильную обработку голосов и подсчет результатов координатором. Это достигается путем требования от координатора генерировать доказательства ZK-SNARK, подтверждающие, что a) все сообщения были обработаны правильно b) окончательный результат соответствует сумме всех допустимых голосов.
Таким образом, даже не раскрывая разбивку голосов по пользователям (как это обычно бывает), MACI гарантирует целостность результатов, рассчитанных в ходе подсчета. Эта функция полезна для снижения эффективности базовых схем коллузии. Мы можем исследовать эту возможность, используя предыдущий пример, когда Боб подкупает Алису проголосовать за опцию:
Использование MACI требует доверия координатору, чтобы он не сговаривался с подкупщиками или не пытался подкупать избирателей самостоятельно. Координатор может расшифровывать сообщения пользователей (необходимо для создания доказательства), поэтому он может точно проверить, как проголосовал каждый человек.
Но в тех случаях, когда координатор остается честным, MACI представляет собой мощный инструмент для гарантирования неприкосновенности онлайн-голосования. Это объясняет его популярность среди приложений квадратичного финансирования (например, clr.fund
) которые сильно полагаются на честность выборов каждого отдельного человека.
.
Генерация нулевых доказательств включает в себя очень сложные вычисления, лучше всего выполняемые на специализированных машинах. Поскольку эти машины дорогие, они часто недоступны для обычных людей. Кроме того, приложениям, которые хотят использовать технологию нулевого доказательства, необходимо учитывать аппаратные затраты, которые могут увеличить издержки для конечных пользователей.
Проверка доказательств также требует сложных вычислений и увеличивает затраты на внедрение технологии нулевого разглашения в приложениях. Эти затраты особенно важны в контексте вычисления доказательств. Например, ZK-rollups платят ~ 500,000 газу за проверку одного ZK-SNARK доказательства на Ethereum, а для ZK-STARKs требуются еще более высокие сборы.
В ZK-SNARK общая строка ссылки (общие параметры) генерируется один раз и доступна для повторного использования сторонам, которые хотят принять участие в протоколе с нулевым разглашением. Общие параметры создаются с помощью церемонии доверенной настройки, где предполагается, что участники честны.
Но действительно нет способа для пользователей оценить честность участников, и пользователи должны верить разработчикам на слово. ZK-STARKs свободны от доверия, так как случайность, используемая при генерации строки, общедоступна для проверки. Тем временем исследователи работают над недоверенными настройками для ZK-SNARKs, чтобы повысить безопасность механизмов доказательства.
ZK-SNARK использует криптографию на эллиптических кривых
ECDSA) для шифрования. В настоящее время алгоритм ECDSA безопасен, однако развитие квантовых компьютеров в будущем может нарушить его модель безопасности.
ZK-STARK считается невосприимчивым к угрозе квантового вычисления, поскольку он использует устойчивые к столкновениям хеши для шифрования. В отличие от общедоступных частно-публичных ключей, используемых в эллиптической криптографии, устойчивые к столкновениям хеширование более сложно взламывается квантовыми алгоритмами вычисления.
Протокол нулевого знания - это метод, с помощью которого одна сторона (доказатель) может доказать другой стороне (проверяющему), что что-то верно, не раскрывая никакой информации, кроме факта, что это конкретное утверждение верно.
Доказательства нулевого знания улучшились с годами и сейчас используются в нескольких приложениях реального мира.
Доказательства нулевого знания стали прорывом в области прикладной криптографии, поскольку они обещали улучшить безопасность информации для отдельных лиц. Подумайте, как вы можете доказать утверждение (например, "Я гражданин страны X") другой стороне (например, поставщику услуг). Вам нужно предоставить "доказательства" в поддержку вашего утверждения, такие как национальный паспорт или водительское удостоверение.
Но у этого подхода есть проблемы, в основном связанные с отсутствием конфиденциальности. Личная идентифицируемая информация (ЛИИ), передаваемая третьим сторонам, хранится в централизованных базах данных, которые уязвимы к взломам. С учетом того, что кража личности становится критической проблемой, возникают требования к более надежным средствам защиты конфиденциальной информации.
Доказательства с нулевым разглашением решают эту проблему, устраняя необходимость раскрывать информацию для доказательства правильности утверждений. Протокол с нулевым разглашением использует утверждение (называемое 'доказательством') в качестве входных данных для генерации краткого доказательства его правильности. Это доказательство обеспечивает надежные гарантии того, что утверждение верно, не раскрывая информацию, использованную при его создании.
Вернемся к нашему ранее примеру, единственным доказательством, которое вам нужно предоставить для подтверждения вашего гражданства, является доказательство с нулевым разглашением. Верификатору нужно только проверить, действительно ли определенные свойства доказательства истинны, чтобы быть убежденным, что исходное утверждение также истинно.
Доказательство в нулевом знании позволяет вам доказать правду утверждения, не раскрывая содержание утверждения или как вы узнали правду. Для этого возможности протоколы с нулевым знанием полагаются на алгоритмы, которые берут некоторые данные на входе и возвращают 'истина' или 'ложь' на выходе.
Протокол нулевого знания должен удовлетворять следующим критериям:
В основной форме доказательство нулевого знания состоит из трех элементов: свидетель, вызов и ответ.
Выше описана структура 'интерактивного нулевого доказательства знания'. Ранние протоколы нулевого знания использовали интерактивное доказательство, при котором проверка достоверности утверждения требовала обмена сообщениями между доказывающими и проверяющими.
Хорошим примером, иллюстрирующим работу интерактивных доказательств, является знаменитый Жан-Жак Кискатер.История о пещере Али-Бабы
. В истории Пегги (доказатель) хочет доказать Виктору (проверяющему), что она знает секретную фразу для открытия волшебной двери, не раскрывая фразу.
Хотя революционное интерактивное доказательство имело ограниченную полезность, поскольку требовало наличия двух сторон и повторяющегося взаимодействия. Даже если верификатор был убежден в честности доказывающего, доказательство было недоступно для независимой верификации (вычисление нового доказательства требовало нового набора сообщений между доказывающим и верификатором).
Для решения этой проблемы Мануэль Блум, Пол Фелдман и Сильвио Микали предложили первуюневзаимодействующие доказательства нулевого знания
где у проверяющего и верификатора есть общий ключ. Это позволяет проверяющему продемонстрировать свои знания о некоторой информации (т. е. свидетельстве), не предоставляя саму информацию.
В отличие от интерактивных доказательств, неинтерактивные доказательства требуют только одного раунда коммуникации между участниками (доказателем и верификатором). Доказатель передает секретную информацию специальному алгоритму для вычисления доказательства нулевого разглашения. Это доказательство отправляется верификатору, который проверяет, что доказатель знает секретную информацию, используя другой алгоритм.
Невзаимодействующее доказательство сокращает коммуникацию между доказывающим и проверяющим, что делает ZK-доказательства более эффективными. Более того, после генерации доказательства оно доступно для любого другого лица (с доступом к общему ключу и алгоритму проверки) для проверки.
Невзаимодействующие доказательства стали прорывом для технологии нулевого разглашения и способствовали развитию систем доказательств, используемых в настоящее время. Мы обсудим эти типы доказательств ниже:
ZK-SNARK - это акроним от Zero-Knowledge Succinct Non-Interactive Argument of Knowledge. Протокол ZK-SNARK обладает следующими качествами:
Упомянутый ранее 'общий ключ' относится к общим параметрам, согласованным доказывающим и верификатором для генерации и проверки доказательств. Генерация общих параметров (известных коллективно как Строка Общей Ссылки (CRS)) является чувствительной операцией из-за ее важности для безопасности протокола. Если энтропия (случайность), используемая при генерации CRS, попадет в руки недобросовестного доказывающего, он может вычислить ложные доказательства.
Многопартийные вычисления (MPC)
это способ снижения рисков при генерации общих параметров. В процессе участвуют несколько сторон. церемония доверенной установки
, где каждый участник вносит некоторые случайные значения для генерации CRS. Пока одна честная сторона уничтожает свою часть энтропии, протокол ZK-SNARK сохраняет вычислительную звучность.
Доверенные настройки требуют, чтобы пользователи доверяли участникам процесса генерации параметров. Однако разработка ZK-STARKs позволила создавать протоколы доказательств, которые работают без доверенной настройки.
ZK-STARK - это акроним от Zero-Knowledge Scalable Transparent Argument of Knowledge. ZK-STARK похожи на ZK-SNARK, за исключением того, что они:
ZK-STARKs производят более крупные доказательства, чем ZK-SNARKs, что обычно означает более высокие накладные расходы на верификацию. Однако есть случаи (например, доказательство больших наборов данных), когда ZK-STARKs могут быть более экономичными, чем ZK-SNARKs.
Платежи по кредитным картам часто видны нескольким сторонам, включая поставщика платежей, банки и другие заинтересованные стороны (например, государственные органы). Хотя финансовое наблюдение имеет преимущества для выявления незаконной деятельности, оно также подрывает конфиденциальность обычных граждан.
Криптовалюты задумывались как средство обеспечения возможности для пользователей проводить частные, одноранговые транзакции. Но большинство транзакций с криптовалютами открыто видны на публичных блокчейнах. Личности пользователей часто псевдонимичны и могут быть связаны с реальными личностями добровольно (например, включая адреса ETH в профилях Twitter или GitHub) или могут быть ассоциированы с реальными личностями с использованием базового анализа данных на цепи и вне ее.
Существуют специальные «монеты конфиденциальности», предназначенные для полностью анонимных транзакций. Блокчейны, ориентированные на конфиденциальность, такие как Zcash и Monero, скрывают детали транзакций, включая адреса отправителя/получателя, тип актива, количество и сроки транзакции.
Запекая в технологию нулевого знания в протокол, блокчейн-сети, ориентированные на конфиденциальность, позволяют узлам проверять транзакции, не имея доступа к данным транзакции.
Доказательства нулевого разглашения также применяются для анонимизации транзакций на публичных блокчейнах. Примером является Tornado Cash, децентрализованный, некастодиальный сервис, который позволяет пользователям проводить частные транзакции на Ethereum. Tornado Cash использует доказательства нулевого разглашения для затруднения деталей транзакций и гарантирования финансовой конфиденциальности. К сожалению, поскольку эти инструменты конфиденциальности являются «добровольными», они ассоциированы с незаконной деятельностью. Для преодоления этого конфиденциальность в конечном итоге должна стать стандартной на публичных блокчейнах.
Существующие системы управления личностью ставят персональные данные под угрозу. Нулевые доказательства могут помочь отдельным лицам подтвердить личность, защищая при этом чувствительные детали.
Доказательства нулевого знания особенно полезны в контексте децентрализованная идентичность. Децентрализованная идентичность (также описываемая как 'суверенная идентичность') дает человеку возможность контролировать доступ к личным идентификаторам. Доказательство вашего гражданства без раскрытия ваших налогового идентификационного номера или деталей паспорта - хороший пример того, как технология нулевого разглашения обеспечивает децентрализованную идентичность.
Использование онлайн-сервисов требует подтверждения вашей личности и права на доступ к этим платформам. Это часто требует предоставления личной информации, такой как имена, адреса электронной почты, даты рождения и так далее. Вам также может потребоваться запомнить длинные пароли или рискнуть потерять доступ.
Доказательства с нулевым разглашением, однако, могут упростить аутентификацию как для платформ, так и для пользователей. После того как ZK-доказательство было сгенерировано с использованием открытых входных данных (например, данных, подтверждающих членство пользователя на платформе) и закрытых входных данных (например, данные пользователя), пользователь может просто предъявить его для аутентификации своей личности, когда ему нужно получить доступ к сервису. Это улучшает опыт пользователей и освобождает организации от необходимости хранить огромные объемы информации о пользователе.
Проверяемые вычисления - еще одно применение технологии нулевого знания для улучшения дизайна блокчейна. Проверяемые вычисления позволяют нам передавать вычисления другому субъекту, сохраняя при этом проверяемые результаты. Субъект представляет результат вместе с доказательством того, что программа была выполнена правильно.
Проверяемые вычисления критичны для улучшения скорости обработки на блокчейнах без уменьшения безопасности. Для понимания этого необходимо знать различия в предлагаемых решениях для масштабирования Ethereum.
Решения масштабирования на цепи, такие как шардинг, требуют обширной модификации базового уровня блокчейна. Однако этот подход является очень сложным, и ошибки в реализации могут подорвать модель безопасности Ethereum.
Внебиржевые масштабные решенияне требуют переработки основного протокола Ethereum. Вместо этого они полагаются на модель вычислений, переданных на аутсорсинг, чтобы улучшить пропускную способность базового уровня Ethereum.
Вот как это работает на практике:
Преимущество здесь заключается в том, что Ethereum не обязан выполнять какие-либо действия и только должен применять результаты внешнего вычисления к своему состоянию. Это снижает сетевую загруженность и также улучшает скорость транзакций (протоколы вне цепи оптимизируются для более быстрого выполнения).
Цепочке нужен способ проверки внеланцетренних транзакций без их повторного выполнения, в противном случае утрачивается ценность выполнения внеланцетренних операций.
Здесь вступает в игру проверяемое вычисление. Когда узел выполняет транзакцию вне Ethereum, он представляет доказательство с нулевым разглашением, чтобы доказать правильность выполнения вне цепи. Это доказательство (называемое
доказательство правильности) гарантирует, что транзакция действительна, позволяя Ethereum применить результат к своему состоянию — без ожидания возражений.
Zero-knowledge rollupsивалидиумыдве внебиржевые масштабируемые решения, которые используют доказательства правильности для обеспечения безопасного масштабирования. Эти протоколы выполняют тысячи транзакций вне цепи и отправляют доказательства для верификации на Ethereum. Эти результаты могут быть применены немедленно после верификации доказательства, что позволяет Ethereum обрабатывать больше транзакций без увеличения вычислений на базовом уровне.
Схемы голосования на блокчейне имеют множество преимущественных характеристик: они полностью аудируемы, защищены от атак, устойчивы к цензуре и не имеют географических ограничений. Но даже схемы голосования в цепочке не защищены от проблемы коллузии.
Определенное как "координирование для ограничения открытого конкуренции путем обмана, мошенничества и введения в заблуждение других", сговор может принимать форму злонамеренного деятеля, влияющего на голосование путем предложения взяток. Например, Алиса может получить взятку от Боба за голосование за вариант B на бюллетене, даже если она предпочитает вариант A.
Подкуп и сговор ограничивают эффективность любого процесса, который использует голосование в качестве сигнального механизма (особенно когда пользователи могут доказать, как они проголосовали). Это может иметь серьезные последствия, особенно если голоса отвечают за распределение ограниченных ресурсов.
Например, механизмы квадратичного финансирования
полагаются на пожертвования для измерения предпочтения определенных вариантов среди различных проектов общественного блага. Каждое пожертвование считается «голосом» за определенный проект, при этом проекты, получившие больше голосов, получают больше средств из фонда сопоставления.
Использование голосования на цепочке делает квадратичное финансирование уязвимым к коллаборации: транзакции блокчейна являются публичными, поэтому подкупщики могут проверить онлайн-активность взятого на подкуп человека, чтобы увидеть, как они 'голосовали'. Таким образом, квадратичное финансирование перестает быть эффективным средством распределения средств на основе агрегированных предпочтений сообщества.
К счастью, новые решения, такие как MACI (Минимальная инфраструктура против мошенничества), используют доказательства нулевого знания, чтобы сделать онлайн-голосование (например, механизмы квадратичного финансирования) устойчивыми к подкупу и сговору. MACI - это набор смарт-контрактов и скриптов, которые позволяют центральному администратору (называемому «координатором») агрегировать голоса и подводить итоги, не раскрывая конкретики по поводу того, как каждый отдельный участник проголосовал. Тем не менее, все еще возможно проверить, что голоса были посчитаны правильно, или подтвердить, что конкретное лицо участвовало в голосовании.
В начале координатор разворачивает контракт MACI на Ethereum, после чего пользователи могут зарегистрироваться для голосования (зарегистрировав свой открытый ключ в смарт-контракте). Пользователи голосуют, отправляя сообщения, зашифрованные их открытым ключом, в смарт-контракт (действительный голос должен быть подписан самым последним открытым ключом, связанным с идентификацией пользователя, среди других критериев). После этого координатор обрабатывает все сообщения после окончания периода голосования, подводит итоги голосования и проверяет результаты в цепи.
В MACI нулевые доказательства используются для обеспечения правильности вычислений, делая невозможным неправильную обработку голосов и подсчет результатов координатором. Это достигается путем требования от координатора генерировать доказательства ZK-SNARK, подтверждающие, что a) все сообщения были обработаны правильно b) окончательный результат соответствует сумме всех допустимых голосов.
Таким образом, даже не раскрывая разбивку голосов по пользователям (как это обычно бывает), MACI гарантирует целостность результатов, рассчитанных в ходе подсчета. Эта функция полезна для снижения эффективности базовых схем коллузии. Мы можем исследовать эту возможность, используя предыдущий пример, когда Боб подкупает Алису проголосовать за опцию:
Использование MACI требует доверия координатору, чтобы он не сговаривался с подкупщиками или не пытался подкупать избирателей самостоятельно. Координатор может расшифровывать сообщения пользователей (необходимо для создания доказательства), поэтому он может точно проверить, как проголосовал каждый человек.
Но в тех случаях, когда координатор остается честным, MACI представляет собой мощный инструмент для гарантирования неприкосновенности онлайн-голосования. Это объясняет его популярность среди приложений квадратичного финансирования (например, clr.fund
) которые сильно полагаются на честность выборов каждого отдельного человека.
.
Генерация нулевых доказательств включает в себя очень сложные вычисления, лучше всего выполняемые на специализированных машинах. Поскольку эти машины дорогие, они часто недоступны для обычных людей. Кроме того, приложениям, которые хотят использовать технологию нулевого доказательства, необходимо учитывать аппаратные затраты, которые могут увеличить издержки для конечных пользователей.
Проверка доказательств также требует сложных вычислений и увеличивает затраты на внедрение технологии нулевого разглашения в приложениях. Эти затраты особенно важны в контексте вычисления доказательств. Например, ZK-rollups платят ~ 500,000 газу за проверку одного ZK-SNARK доказательства на Ethereum, а для ZK-STARKs требуются еще более высокие сборы.
В ZK-SNARK общая строка ссылки (общие параметры) генерируется один раз и доступна для повторного использования сторонам, которые хотят принять участие в протоколе с нулевым разглашением. Общие параметры создаются с помощью церемонии доверенной настройки, где предполагается, что участники честны.
Но действительно нет способа для пользователей оценить честность участников, и пользователи должны верить разработчикам на слово. ZK-STARKs свободны от доверия, так как случайность, используемая при генерации строки, общедоступна для проверки. Тем временем исследователи работают над недоверенными настройками для ZK-SNARKs, чтобы повысить безопасность механизмов доказательства.
ZK-SNARK использует криптографию на эллиптических кривых
ECDSA) для шифрования. В настоящее время алгоритм ECDSA безопасен, однако развитие квантовых компьютеров в будущем может нарушить его модель безопасности.
ZK-STARK считается невосприимчивым к угрозе квантового вычисления, поскольку он использует устойчивые к столкновениям хеши для шифрования. В отличие от общедоступных частно-публичных ключей, используемых в эллиптической криптографии, устойчивые к столкновениям хеширование более сложно взламывается квантовыми алгоритмами вычисления.