Cicada: приватне голосування в мережі через Timelock Puzzles і ZK

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

З цією метою ми запускаємо Cicada: нову бібліотеку Solidity з відкритим кодом, яка використовує головоломки блокування часу та докази з нульовим знанням для приватного голосування в мережі. Порівняно з існуючими системами, Cicada має унікальні властивості конфіденційності, мінімізує залежність від довіри, а також дуже ефективна в основній мережі Ethereum.

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

Огляд конфіденційності голосування

У будь-якій системі голосування (в ланцюжку чи іншій) нам потрібно враховувати багато різних рівнів конфіденційності. Розголошення індивідуальних бюлетенів, поточний підрахунок голосів та ідентифікація виборців по-різному впливають на виборців. Бажані властивості конфіденційності відрізняються від голосування до голосування, але ось деякі, які часто розглядаються в літературі з криптографії та соціальних наук:

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

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

· Анонімність виборця: у багатьох реальних системах голосування ваш голос залишається приватним, але проголосували ви чи ні, часто відомо іншим. Це може служити захистом від шахрайства виборців, оскільки публікація записів про те, хто проголосував, дозволить людям перевірити, чи хтось голосував від їхнього імені. Проте в ланцюжку ми можемо використовувати криптографічні примітиви, щоб запобігти шахрайству виборців, зберігаючи при цьому анонімність — наприклад, використовуючи семафор, ви можете довести без знання про те, що ви маєте право голосувати і ще не голосували.

· Відсутність підтвердження: виборці не повинні надавати «квитанцію» про свій бюлетень третій стороні, щоб підтвердити, як їхній голос був відданий за когось, що може призвести до продажу бюлетеня. Стійкість до примусу – ще одна тісно пов’язана властивість, яка запобігає примушенню когось голосувати певним чином. Ці властивості особливо привабливі в децентралізованому середовищі, де право голосу може стати ліквідним через ринок смарт-контрактів. На жаль, досягти цих властивостей дуже важко. Дійсно, Juels та інші зазначають, що цих властивостей неможливо досягти в налаштуваннях без дозволу без надійного обладнання.

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

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

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

По-перше, головоломка з блокуванням часу (Rivest, Shamir, Wagner, 1996) — це криптографічна головоломка, секрети якої можна розкрити лише після закінчення заздалегідь визначеного періоду часу, точніше, лише шляхом багаторазового виконання певних. Ці непаралелізовані обчислення використовується для вирішення головоломок. Головоломки Timelock корисні в контексті голосування для конфіденційності поточного підрахунку голосів: користувачі можуть надсилати свої голоси як головоломки Timelock, щоб їхні голоси залишалися приватними під час процесу голосування, але доступ до них можна було отримати після оприлюднення голосування. На відміну від більшості інших структур приватного голосування, це забезпечує конфіденційність підрахунку бюлетенів, не покладаючись на статистичні агентства (наприклад, виборчі працівники, які підраховують паперові або цифрові бюлетені), шифрування порогового значення (кілька довірених сторін повинні співпрацювати, щоб розшифрувати повідомлення) або будь-яка інша довірена сторона : будь-хто може розв’язати головоломку блокування часу, щоб переконатися, що результат буде оголошено після голосування.

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

Як зазначають автори статті, лінійні гомоморфні головоломки з блокуванням часу особливо підходять для приватного голосування: голоси можуть бути закодовані як головоломки, і їх можна гомоморфно комбінувати, щоб отримати головоломки, що кодують остаточну статистику. Це означає, що лише одне обчислення потрібне для виявлення остаточного підрахунку, а не вирішення унікальної головоломки для кожного голосу.

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

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

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

Щоб зробити доказ максимально ефективним, ми використовуємо спеціальний протокол sigma. Це доказ нульового знання, розроблений для конкретних алгебраїчних співвідношень, а не загальна система доказів. Це значно пришвидшує час перевірки: на стандартному ноутбуці для створення підтвердження дійсності бюлетеня в Python потрібно лише 14 мілісекунд.

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

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

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

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

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

Іншими словами, Cicada гарантує лише таємницю бюлетенів під час голосування. Якщо допитливий спостерігач захоче розшифрувати бюлетень певного виборця, він також може зробити це після закриття дільниць. Вартість розшифровки будь-якого бюлетеня така сама, як і вартість розшифровки остаточного підрахунку, тому для повного розшифрування бюлетеня для голосування n виборців потрібно O(n) роботи. Однак усі ці голоси можна розшифрувати паралельно (за умови наявності достатньої кількості комп’ютерів) у процесі, який займає стільки ж часу, скільки й розшифровка остаточного підрахунку.

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

У нашому репозиторії ми надаємо приклад контракту, який використовує Semaphore для анонімності виборців. Зауважте, що сам контракт Cicada не містить жодних припущень щодо визначення чи забезпечення права голосу. Зокрема, ви можете замінити Semaphore на Semacaulk або ZK Proof of State.

Агентство з підрахунку голосів

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

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

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

Висновок

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

Крім того, у нас є можливість налаштувати Cicada для підтримки різних схем голосування (наприклад, зважене голосування, квадратичне голосування), хоча складніші схеми можуть бути дорогими з обчислювальної точки зору для основної мережі Ethereum, вони можуть бути здійсненними в мережах рівня 2. Зважаючи на це, ми вітаємо будь-які пропозиції щодо майбутнього напрямку Cicada.

Переглянути оригінал
Контент має виключно довідковий характер і не є запрошенням до участі або пропозицією. Інвестиційні, податкові чи юридичні консультації не надаються. Перегляньте Відмову від відповідальності , щоб дізнатися більше про ризики.
  • Нагородити
  • Прокоментувати
  • Поділіться
Прокоментувати
0/400
Немає коментарів
  • Закріпити