a16z: Як Cicada використовує головоломки з блокуванням часу та докази з нульовим знанням, щоб увімкнути голосування в мережі

Cicada має нові властивості конфіденційності, мінімізує припущення про довіру та достатньо ефективна для використання в основній мережі Ethereum.

**Автор:**Michael Zhu

Склав: Лінн, MarsBit

Усі системи голосування, які функціонують будь-яким значущим чином, покладаються на чесність і прозорість. На перший погляд, це робить блокчейн ідеальною платформою для побудови цих систем – справді, багато децентралізованих організацій прийняли голосування без дозволу як засіб вираження колективних намірів, часто володіючи величезним багатством або налаштовуючи ключові параметри протоколу у випадку. Але голосування в ланцюжку також має недоліки: конфіденційність все ще не вивчена та не розроблена, що не підходить для систем голосування Web3 — у більшості протоколів голосування в ланцюзі, які зараз використовуються, бюлетені та результати голосування є повністю публічними. Без конфіденційності результатами голосування можна легко маніпулювати, а стимули виборців перекоригувати, що потенційно може призвести до недемократичних результатів.

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

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

Короткий огляд приватних опитувань

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

  • Конфіденційність бюлетенів: таємні бюлетені, також відомі як «австралійські бюлетені», були розроблені для реальних систем голосування як спосіб збереження індивідуальних уподобань виборців і пом’якшення підкупу та примусу (встановлюється в ланцюжку, нам може знадобитися сильніша властивість, ніж бюлетень). конфіденційність - дивіться "неотримання" нижче). Конфіденційність голосування також може пом’якшити упередженість соціальної бажаності — хтось відчуває менший тиск щодо голосування на основі того, що інші думають про їхній вибір.
  • Конфіденційність поточних підрахунків: багато систем голосування приховують поточні підрахунки або кількість голосів, які вже віддано за кожен варіант, поки виборці ще голосують, щоб уникнути впливу на явку та мотивацію виборців. Ми бачили, як це відбувається в реальному світі; наприклад, сенатори США, які голосують пізніше, з більшою ймовірністю приєднаються до своєї партії, ніж сенатори, які голосують раніше. І в ланцюжку: під час зваженого голосування кити можуть заколисувати своїх опонентів помилковим відчуттям безпеки, тримаючи їх попереду (дехто може полінуватися голосувати, припускаючи, що все одно виграє), а потім віддати свій власний голос на остання хвилина Приходьте і визначте результат.
  • Анонімність виборця: у багатьох реальних системах голосування ваш голос не є публічним, але той факт, що ви проголосували, часто публічний. Це важливо, щоб запобігти фальсифікаціям виборців, оскільки публікація записів виборців дозволяє людям перевірити, чи інші голосували від їхнього імені. Проте в ланцюжку ми можемо запобігти шахрайству виборців, зберігаючи анонімність за допомогою криптографічних примітивів. Наприклад, за допомогою Semaphore ви можете довести без жодних знань, що ви є дійсним виборцем, який ще не голосував.
  • Відсутність підтвердження: окремі виборці надають «квитанцію» про свій бюлетень третій стороні, щоб підтвердити, як вони проголосували, що інакше може призвести до продажу квитків. Тісно пов’язаною, але сильнішою властивістю є опір примусу, який перешкоджає комусь примушувати виборців до голосування певним чином. Ці властивості є особливо привабливими в децентралізованому середовищі, де права голосу можна зробити ліквідними через ринки розумних контрактів. На жаль, їх також важко реалізувати — фактично, Juels та інші зазначають, що це неможливо в середовищі без дозволу без надійного обладнання.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Статистичний орган

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

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

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

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

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

  • Подяка: Cicada була розроблена спільно з Джозефом Бонно. Дякуємо Ендрю Холу за довідкову інформацію про історичні передумови конфіденційності голосування. Також дякуємо Роберту Хакетту за його відгук про цю статтю. Особлива подяка Стефані Зінн за редагування. *
Переглянути оригінал
Контент має виключно довідковий характер і не є запрошенням до участі або пропозицією. Інвестиційні, податкові чи юридичні консультації не надаються. Перегляньте Відмову від відповідальності , щоб дізнатися більше про ризики.
  • Нагородити
  • Прокоментувати
  • Поділіться
Прокоментувати
0/400
Немає коментарів
  • Закріпити