a16z: Подробное объяснение принципа работы проекта голосования Cicada в сети ZK

原文:《Building Cicada: частное голосование в сети с использованием головоломок с блокировкой времени》 by Michael Zhu, a16z

Сборник: Kxp, BlockBeats

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

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

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

Обзор конфиденциальности голосования

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

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

**·**Конфиденциальность подсчета голосов. Многие системы голосования скрывают текущий подсчет голосов, т. е. количество голосов, полученных каждым вариантом, во время голосования избирателей, чтобы не повлиять на явку и стимулы избирателей. Мы видели, как это происходит в реальном мире: например, сенаторы США, которые голосуют позже, с большей вероятностью присоединятся к своей партии, чем сенаторы, которые голосуют раньше. В токен-взвешенном голосовании в цепочке гигантские киты могут поддерживать свое ложное чувство безопасности, удерживая своих оппонентов впереди (некоторым людям может быть лень голосовать, потому что они думают, что эти люди все равно выиграют), а затем проголосовать за себя на в последний момент голоса определяют результат.

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

· Отсутствие возможности получения: избиратели не должны предоставлять «квитанцию» своего бюллетеня третьей стороне, чтобы доказать, что их голос был отдан за кого-то, что может привести к продаже бюллетеня. Сопротивление принуждению — еще одно тесно связанное свойство, предотвращающее принуждение кого-либо к голосованию определенным образом. Эти свойства особенно привлекательны в децентрализованной среде, где право голоса может стать ликвидным через рынок смарт-контрактов. К сожалению, эти свойства очень трудно достичь. Действительно, Джуэлс и др. отмечают, что эти свойства невозможно достичь в условиях без разрешений без доверенного оборудования.

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

Cicada: конфиденциальность подсчета голосов с использованием гомоморфных головоломок с временной блокировкой

Чтобы обеспечить непрерывную конфиденциальность подсчета голосов, Cicada заимствует криптографические примитивы, которые никогда (насколько нам известно) не использовались в сети.

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

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

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

Новая система: эффективность и компромиссы

Для схемы голосования, которую можно практически применить в сети, необходимо учитывать несколько факторов. Во-первых, злоумышленник может попытаться манипулировать результатами голосования, отправив неправильно закодированные бюллетени. Например, мы могли бы ожидать, что головоломка временной блокировки каждого бюллетеня будет кодировать логическое значение: «1» для решения, за которое проголосовали, и «0» для против. Ярый сторонник может попытаться использовать такой код, как «100», чтобы увеличить свое реальное количество голосов.

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

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

Хотя процесс проверки этого сигма-протокола концептуально прост, на самом деле он требует нескольких больших операций по экспоненциальному модулю. Линейная гомоморфная схема Малавольты и Тьягараджана использует шифрование Пайе, поэтому эти экспоненциальные операции будут выполняться по модулю некоторого модуля RSA N^2. Для достаточно большого N эти операции возведения в степень недопустимы для большинства цепочек EVM (требующих миллионов газа). Чтобы уменьшить эту стоимость, Cicada вместо этого использует показатель Эль-Гамаля, который по-прежнему обеспечивает аддитивный гомоморфизм, но работает с меньшим модулем (N вместо N ^ 2).

Одним из недостатков использования ElGamal является то, что для расшифровки статистики требуются исчерпывающие дискретные логарифмы (обратите внимание, что это делается вне цепочки и эффективно проверяется в цепочке). Следовательно, его следует использовать только в том случае, если ожидаемый окончательный подсчет относительно невелик (например, менее 2^32, около 4,3 миллиона голосов). В исходной схеме, основанной на Пайе, ее можно эффективно расшифровать независимо от размера статистики.

Выбор модуля RSA N также требует компромиссов. В нашем методе используется модуль 1024 бита для повышения эффективности использования газа. Хотя это значительно превышает максимальный модуль RSA для факторизации (который составляет 829 бит), он меньше 2048-битного размера, обычно рекомендуемого для шифрования или подписи RSA. Однако в нашем приложении нам не нужна долговременная безопасность: когда выборы завершены, нет никакого риска, если будущее N разложено на множители. По истечении таймлока разумно использовать относительно небольшой модуль, предполагая, что статистика и голоса станут общедоступными. (Это также может быть легко обновлено в будущем, если алгоритм факторизации улучшится.)

Анонимность и право голоса

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

Другими словами, Cicada гарантирует только тайну бюллетеней во время голосования. Если любопытный наблюдатель хочет расшифровать бюллетень конкретного избирателя, он может сделать это и после закрытия избирательных участков. Стоимость расшифровки любого одного бюллетеня такая же, как стоимость расшифровки итогового подсчета, поэтому полная расшифровка бюллетеня n избирателей требует O(n) работы. Однако все эти голоса могут быть расшифрованы параллельно (при условии наличия достаточного количества компьютеров) в процессе, который занимает столько же времени, сколько и расшифровка итогового подсчета.

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

В нашем репозитории мы предоставляем пример контракта, который использует семафор для анонимности избирателя. Обратите внимание, что сам контракт Cicada не делает никаких предположений об определении или обеспечении права голоса. В частности, вы можете заменить Semaphore на Semacaulk или ZK Proof of State.

Агентство по подсчету голосов

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

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

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

Заключение

Cicada исследует множество направлений в области конфиденциальности голосования в сети и дополняет текущие исследования других групп. Как упоминалось выше, Cicada дополняет технологии анонимного членства в группах, такие как Semaphore, ZK proof-of-storage и обнулители, ограничивающие скорость. Цикаду также можно комбинировать с оптимистичной проверкой доказательств, предложенной командой Nouns Vortex, чтобы уменьшить газовую нагрузку избирателей.

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

Посмотреть Оригинал
Содержание носит исключительно справочный характер и не является предложением или офертой. Консультации по инвестициям, налогообложению или юридическим вопросам не предоставляются. Более подробную информацию о рисках см. в разделе «Дисклеймер».
  • Награда
  • комментарий
  • Поделиться
комментарий
0/400
Нет комментариев
  • Закрепить