Що таке доказ із нульовим розголошенням?
Доказ із нульовим розголошенням — це спосіб доведення правдивості твердження без розкриття самого твердження. Сторона, що доводить, — це особа, яка намагається довести твердження, а сторона, що перевіряє, відповідає за перевірку правдивості твердження.
Докази з нульовим розголошенням вперше з’явилися у статті «Складність знання в інтерактивних системах доведення»(opens in a new tab) від 1985 року, у якій наведено визначення доказу з нульовим розголошенням, що широко використовується і досі:
Протокол із нульовим розголошенням — це метод, за допомогою якого одна сторона (що доводить) може довести іншій стороні (що перевіряє), що щось є правдою, не розголошуючи жодної інформації, крім факту, що це конкретне твердження є правдою.
Докази з нульовим розголошенням вдосконалилися з плином років і зараз використовуються в кількох реальних сценаріях.
Навіщо потрібні докази з нульовим розголошенням?
Докази з нульовим розголошенням стали проривом у прикладній криптографії, оскільки вони обіцяли підвищити безпеку інформації для користувачів. Подумайте, як ви можете довести певне твердження (наприклад, «Я громадянин країни Х») іншій стороні (наприклад, постачальнику послуг). Вам потрібно надати «докази», щоб підтвердити свою заяву, як-от національний паспорт або посвідчення водія.
Проте цей підхід має свої проблеми, основною з яких є відсутність конфіденційності. Дані, що ідентифікують особу (PII), які надаються третім сторонам, зберігаються в централізованих базах даних, які вразливі до злому. Крадіжки особистості стають серйозною проблемою, і тому з’являються заклики до використання засобів, які краще захищають конфіденційність інформації, що передається.
Докази з нульовим розголошенням розв’язують цю проблему, усуваючи потребу в розкритті інформації для підтвердження правдивості тверджень. Протокол із нульовим розголошенням використовує твердження (яке називають «свідком») як вхідні дані для генерування лаконічного доказу його правдивості. Цей доказ надає надійні гарантії, що твердження є правдивим, не розкриваючи інформацію, яка була використана для його створення.
Повертаючись до нашого попереднього прикладу, єдиний доказ, який вам потрібен, щоб підтвердити свою заяву про громадянство, — це доказ із нульовим розголошенням. Той, хто перевіряє, повинен лише перевірити, чи є правдою певні властивості доказу, щоб переконатися, що твердження, як лежить у його основі, також є правдою.
Як працюють докази з нульовим розголошенням?
Доказ із нульовим розголошенням забезпечує можливість підтвердити правдивість твердження, не розкриваючи вміст твердження або спосіб, у який ви дізналися правду. Для цього протоколи з нульовим розголошенням використовують алгоритми, які приймають певні дані та повертають на виході результат «правда» або «неправда».
Протокол із нульовим розголошенням має відповідати таким критеріям:
Повнота. Якщо вхідні дані є правдивими, протокол із нульовим розголошенням завжди повертає значення «правда». Отже, якщо твердження, що лежить в основі доказу, є правдивим, а особа, яка доводять, і особа, яка здійснює перевірку, діють чесно, то доказ може бути прийнятий.
Надійність. Якщо вхідні дані неправдиві, теоретично неможливо обдурити протокол із нульовим розголошенням, щоб він повернув значення «правда». Отже, якщо особа, що доводить, каже неправду, вона не може обманути чесну особу, що перевіряє, переконавши її в тому, що неправдиве твердження є правдивим (за винятком незначної ймовірності).
Нульове розголошення. Особа, що здійснює перевірку, не отримує жодної інформації про твердження, крім відомостей про його правдивість або неправдивість (має «нульове знання» про твердження). Ця вимога також запобігає виведенню особою, що перевіряє, початкових даних (вмісту твердження) з доказу.
У базовій формі доказ із нульовим розголошенням складається з трьох елементів: свідок, виклик і відповідь.
Свідок. За використання доказу з нульовим розголошенням той, хто доводить, бажає довести знання ним певної прихованої інформації. Секретна інформація є «свідком» доказу, а передбачуване знання особи, що доводить, про свідка встановлює набір питань, на які може відповісти тільки той, хто має цю інформацію. Таким чином, особа, що доводить, розпочинає процес доведення, випадковим чином вибираючи питання, обчислюючи відповідь на нього та надсилаючи її особі, що здійснює перевірку.
Виклик. Особа, що здійснює перевірку, випадковим чином обирає інше питання з набору й просить особу, що доводить, відповісти на нього.
Відповідь. Особа, що доводить, приймає питання, обчислює відповідь і повертає її особі, що перевіряє. Відповідь особи, що доводить, дає особі, що перевіряє, можливість перевірити, чи справді особа, що доводить, має доступ до свідка. Щоб переконатися, що особа, що доводить, не вгадує відповіді, особа, що перевіряє, вибирає додаткові питання, які ставить особі, що доводить. За багаторазового повторення таких операцій, поки особа, що здійснює перевірку, не буде задоволена, імовірність того, що особа, яка доводить, підробляє знання про свідка, значно зменшується.
Вище описано структуру «інтерактивного доказу з нульовим розголошенням». Ранні протоколи з нульовим розголошенням використовували інтерактивне доведення, де перевірка правдивості твердження вимагала взаємодії між особою, що доводить, і особою, що перевіряє, з обміном повідомленнями.
Хорошим прикладом, який демонструє, як працюють інтерактивні докази, є відомий приклад Жан-Жака Квіскатера Історія про печеру Алі-Баби(opens in a new tab). У цій історії Пеггі (особа, що доводить) хоче довести Віктору (особі, що перевіряє), що вона знає секретну фразу для відчинення магічних дверей, не розкриваючи цю фразу.
Неінтерактивні докази з нульовим розголошенням
Хоча інтерактивне доведення було революційним, воно мало обмежену корисність, оскільки вимагало доступності та повторюваної взаємодії двох сторін. Навіть якщо особа, що перевіряє, була переконана в чесності особи, що доводить, доказ був недоступний для незалежної перевірки (обчислення нового доказу вимагало нового набору повідомлень між обома сторонами).
Для розв’язання цієї проблеми Мануель Блум, Пол Фелдман і Сильвіо Мікалі запропонували перші неінтерактивні докази з нульовим розголошенням(opens in a new tab), у яких особа, що доводить, і особа, що перевіряє, мають спільний ключ. Це дає особі, що доводить, змогу продемонструвати своє знання певної інформації (тобто свідка) без надання самої інформації.
На відміну від інтерактивних, неінтерактивні докази вимагають лише одного раунду комунікації між учасниками (особою, що доводить, і особою, що перевіряє). Особа, що доводить, передає секретну інформацію спеціальному алгоритму для обчислення доказу з нульовим розголошенням. Цей доказ надсилається особі, що перевіряє, яка переконується в тому, що особа, яка доводить, знає секретну інформацію, використовуючи інший алгоритм.
Неінтерактивне доведення зменшує комунікацію між особою, що доводить, та особою, що перевіряє, роблячи докази з нульовим розголошенням ефективнішими. Крім того, коли доказ згенеровано, перевірити його може будь-хто інший (з доступом до спільного ключа та алгоритму перевірки).
Неінтерактивні докази стали проривом для технології нульового розголошення та спонукали до розвитку систем доведення, які використовуються сьогодні. Ми обговоримо нижче ці типи доказів:
Типи доказів із нульовим розголошенням
ZK-SNARKs
ZK-SNARK є абревіатурою від Zero-Knowledge Succinct Non-Interactive Argument of Knowledge (лаконічне неінтерактивне підтвердження знання з нульовим розголошенням). Протокол ZK-SNARK має такі характеристики:
Нульове розголошення. Особа, що перевіряє, може перевірити чесність твердження, не знаючи більше нічого про саме твердження. Єдина інформація, яку особа, що перевіряє, має про твердження, полягає в тому, є воно правдивим чи хибним.
Лаконічність. Доказ із нульовим розголошенням є меншим за свідка й може бути швидко перевірений.
Неінтерактивність. Доказ є неінтерактивним, оскільки особа, що доводить, і особа, що перевіряє, взаємодіють лише один раз, на відміну від інтерактивних доказів, які вимагають кількох раундів комунікації.
Підтвердження. Доказ задовольняє вимогу надійності, тому обман надзвичайно малоймовірний.
Розголошення. Доказ із нульовим розголошенням не може бути створений без доступу до секретної інформації (свідка). Для особи, що доводить, яка не має свідка, обчислити правильний доказ із нульовим розголошенням важко або навіть неможливо.
Згаданий раніше «спільний ключ» належить до публічних параметрів, які особа, що доводить, та особа, що перевіряє, погоджуються використовувати для генерування та перевірки доказів. Генерування публічних параметрів (які разом відомі як загальний довідковий рядок (CRS)) є конфіденційною операцією через її важливість для безпеки протоколу. Якщо ентропія (випадковість), використана для генерування CRS, потрапить у руки недоброчесної особи, що доводить, вона може обчислити підроблені докази.
Багатостороннє обчислення (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 використовує докази з нульовим розголошенням, щоб приховати деталі транзакцій і гарантувати фінансову конфіденційність. На жаль, оскільки це інструменти конфіденційності «за згодою», вони асоціюються з незаконною діяльністю. Щоб подолати цю проблему, конфіденційність повинна врешті-решт стати стандартом за промовчанням у публічних блокчейнах.
Захист даних, що слугують для ідентифікації
Сучасні системи керування ідентифікацією піддають ризику персональні дані. Доведення з нульовим розголошенням може допомогти людям підтверджувати особу, захищаючи конфіденційні дані.
Докази з нульовим розголошенням особливо корисні в контексті децентралізованої ідентифікації. Децентралізована ідентифікація (яку також описують як «самосуверенну ідентифікацію») дає людині можливість контролювати доступ до персональних ідентифікаторів. Підтвердження свого громадянства без розкриття податкового номера чи паспортних даних є хорошим прикладом того, як технологія нульового розголошення забезпечує децентралізовану ідентифікацію.
Автентифікація
Щоб користуватися онлайн-сервісами, потрібно підтвердити свою особу та право доступу до цих платформ. Для цього часто потрібно надати особисту інформацію, таку як імена, електронні адреси, дати народження тощо. Можливо, вам також буде потрібно запам’ятати довгі паролі, щоб уникнути ризику втратити доступ.
Проте докази з нульовим розголошенням можуть спростити автентифікацію як для платформ, так і для користувачів. Після створення доказу з нульовим розголошенням із використанням загальнодоступних введених даних (наприклад, даних, що підтверджують членство користувача на платформі) і приватних введених даних (наприклад, даних користувача) користувач може просто надати його для автентифікації своєї особи, коли йому буде потрібно отримати доступ до сервісу. Це робить операції зручнішими для користувачів і звільняє організації від необхідності зберігати величезну кількість інформації про них.
Обчислення, що піддаються перевірці
Обчислення, що піддаються перевірці, — це ще одне застосування технології нульового розголошення для вдосконалення дизайну блокчейну. Обчислення, що піддаються перевірці, дають нам змогу передати обчислення іншій особі, зберігаючи результати, що піддаються перевірці. Така особа надає результат разом із доказом того, що програма була виконана правильно.
Обчислення, що піддаються перевірці, мають вирішальне значення для підвищення швидкості обробки в блокчейні без зменшення безпеки. Розуміння цього вимагає знання відмінностей у запропонованих рішеннях для масштабування Ethereum.
Рішення для масштабування в межах ланцюга, як-от сегментування, вимагають значної модифікації базового рівня блокчейну. Однак цей підхід дуже складний, і помилки в реалізації можуть підірвати модель безпеки Ethereum.
Рішення для масштабування поза ланцюгом не вимагають перероблювання основного протоколу Ethereum. Натомість вони покладаються на зовнішню модель обчислень, щоб покращити пропускну здатність на базовому рівні Ethereum.
Ось як це працює на практиці.
Замість обробки кожної транзакції Ethereum перекладає виконання на окремий ланцюг.
Після обробки транзакцій інший ланцюг повертає результати, які застосовуються до стану Ethereum.
Перевага тут полягає в тому, що Ethereum не потрібно виконувати жодних завдань, а лише застосовувати результати обчислень сторонніх джерел до свого стану. Це зменшує перевантаження мережі, а також підвищує швидкість транзакцій (протоколи поза ланцюгом оптимізуються для швидшого виконання).
Ланцюгу потрібен спосіб перевірки транзакцій поза ланцюгом без їх повторного виконання, інакше втрачається цінність їх виконання поза ланцюгом.
Тут у гру вступають обчислення, що піддаються перевірці. Коли вузол виконує транзакцію за межами Ethereum, він надсилає доказ із нульовим розголошенням, щоб підтвердити правильність виконання операції поза ланцюгом. Цей доказ (який називають ) гарантує, що транзакція чинна, даючи Ethereum змогу застосувати результат до свого стану, не чекаючи, поки хтось це оскаржить.
Зведення з нульовим розголошенням і валідіуми —це два рішення для масштабування поза ланцюгом, які використовують докази чинності для забезпечення безпечної масштабованості. Ці протоколи виконують тисячі транзакцій поза ланцюгом та надсилають докази для перевірки в Ethereum. Ці результати можна застосувати відразу після перевірки доказу, що дає Ethereum змогу обробляти більше транзакцій без збільшення обчислень на базовому рівні.
Зменшення хабарництва та змов під час голосування в ланцюзі
Блокчейн-схеми голосування мають багато переваг: вони повністю піддаються перевірці, захищені від атак, стійкі до цензури та не мають географічних обмежень. Але навіть схеми голосування в ланцюзі не захищені від проблеми змови.
Змова, яка визначається як «координація дій із метою обмеження відкритої конкуренції шляхом обману, дезорієнтування та введення в оману інших», може мати форму впливу зловмисника на голосування шляхом пропонування хабарів. Наприклад, Аліса може отримати хабар від Боба, щоб проголосувати за option B
у бюлетені, навіть якщо вона віддає перевагу option A
.
Підкуп і змова зменшують ефективність будь-якого процесу, який використовує голосування як сигнальний механізм (особливо там, де користувачі можуть довести, як вони голосували). Це може мати значні наслідки, особливо якщо голосування пов’язане з розподілом обмежених ресурсів.
Наприклад, квадратичні механізми фінансування(opens in a new tab) покладаються на пожертви, щоб оцінити, яким із різних суспільних проєктів віддають перевагу. Кожна пожертва зараховується як «голос» за певний проєкт, і ті проєкти, які отримують більше голосів, отримують більше коштів із відповідного пулу.
Використання голосування в ланцюзі робить квадратичне фінансування вразливим до змови: транзакції в блокчейні є відкритими, тож ті, хто пропонує хабар, можуть перевірити дії тих, хто його отримав, у ланцюзі, щоб побачити, як вони «голосували». Таким чином квадратичне фінансування перестає бути ефективним засобом розподілу коштів на підставі сукупних уподобань громади.
На щастя, новіші рішення, такі як MACI (мінімальна інфраструктура для запобігання змові), використовують докази з нульовим розголошенням, щоб зробити голосування в ланцюзі (наприклад, квадратичні механізми фінансування) стійким до хабарництва та змови. MACI — це набір смартконтрактів і сценаріїв, які дають змогу центральному адміністратору (так званому «координатору») зводити голоси та підраховувати результати без розкриття деталей голосування кожної особи. Попри це, все ще можна перевірити, чи правильно підраховано голоси, або підтвердити, що певна особа брала участь у голосуванні.
Як MACI працює з доказами з нульовим розголошенням?
Спочатку координатор розгортає контракт MACI на Ethereum, після чого користувачі можуть підписатися на голосування (зареєструвавши свій відкритий ключ у смартконтракті). Користувачі віддають голоси, надсилаючи повідомлення, зашифровані своїм відкритим ключем до смартконтракту (щоб голос був чинним, він має бути підписаний останнім відкритим ключем, пов’язаним з ідентифікацією користувача; це один із критеріїв). Потім координатор обробляє всі повідомлення після закінчення періоду голосування, підраховує голоси та підтверджує результати в ланцюзі.
У MACI докази з нульовим розголошенням використовуються для забезпечення правильності обчислень, унеможливлюючи неправильну обробку координатором голосів і результатів підрахунку. Цього досягають, вимагаючи від координатора генерувати докази ZK-SNARK, які підтверджують, що а) всі повідомлення були оброблені правильно і б) кінцевий результат відповідає сумі всіх чинних голосів.
Таким чином, навіть не повідомляючи про розподіл голосів за користувачами (як це зазвичай буває), MACI гарантує цілісність результатів, обчислених у процесі підрахунку. Ця особливість корисна для зниження ефективності основних схем змови. Ми можемо вивчити цю можливість, використовуючи попередній приклад із Бобом, який підкуповував Алісу, щоб вона проголосувала за потрібний йому варіант.
- Аліса реєструється для голосування, відправляючи свій відкритий ключ до смартконтракту.
- Аліса погоджується голосувати за
option B
в обмін на хабар від Боба. - Аліса голосує за
option B
. - Аліса таємно відправляє зашифровану транзакцію, щоб змінити відкритий ключ, пов’язаний із її особою.
- Аліса відправляє ще одне (зашифроване) повідомлення до смартконтракту, голосуючи за
option A
, з використанням нового відкритого ключа. - Аліса показує Бобу транзакцію, яка демонструє, що вона проголосувала за
option B
(яка є нечинною, оскільки відкритий ключ більше не пов’язаний з ідентифікацією Аліси в системі). - Під час обробки повідомлень координатор пропускає голос Аліси за
option B
та враховує лише голос заoption A
. Отже, спроба Боба вступити в змову з Алісою та маніпулювати голосуванням у ланцюзі не вдається.
За використання MACI необхідно довіряти координатору й вірити, що він не вступить у змову з хабарниками й не намагатиметься сам підкупити виборців. Координатор може розшифрувати повідомлення користувачів (необхідні для створення доказу), тому може точно перевірити, як голосувала кожна людина.
Але коли координатор залишається чесним, MACI є потужним інструментом для гарантування недоторканості голосування в мережі. Це пояснює популярність його застосування для програм квадратичного фінансування (наприклад, clr.fund(opens in a new tab)), які значною мірою покладаються на чесне голосування кожної людини.
Дізнайтеся більше про MACI(opens in a new tab).
Недоліки використання доказів із нульовим розголошенням
Витрати на обладнання
Генерування доказів із нульовим розголошенням передбачає дуже складні розрахунки, які найкраще виконуються на спеціалізованих машинах. Оскільки ці машини дорогі, вони часто недоступні для звичайних людей. Крім того, програми, які хочуть використовувати технологію нульового розголошення, повинні враховувати витрати на обладнання, що може збільшити вартість для кінцевих користувачів.
Витрати на перевірку доказів
Перевірка доказів також вимагає складних обчислень і збільшує витрати на впровадження технології нульового розголошення в програмах. Ці витрати особливо актуальні в контексті доведення обчислень. Наприклад, зведення з нульовим розголошенням платять близько 500 000 газу, щоб перевірити один доказ ZK-SNARK на Ethereum, а ZK-STARK вимагають іще вищої плати.
Припущення про довіру
У ZK-SNARK загальний довідковий рядок (публічні параметри) генерується один раз і доступний для повторного використання сторонам, які бажають брати участь у протоколі з нульовим розголошенням. Публічні параметри створюються через церемонію довіреного налаштування, учасники якої вважаються чесними.
Але насправді в користувачів немає ніякого способу оцінити чесність учасників, і користувачі повинні повірити розробникам на слово. ZK-STARK вільні від припущень про довіру, оскільки випадковість, що використовується для генерування рядка, публічно перевіряється. Тим часом дослідники працюють над недовіреними налаштуваннями для ZK-SNARK, щоб підвищити безпеку механізмів доведення.
Загрози квантових обчислень
ZK-SNARK використовує криптографію на еліптичних кривих () для шифрування. Хоча алгоритм ECDSA зараз є безпечним, розвиток квантових комп’ютерів може зламати його модель безпеки в майбутньому.
ZK-STARK вважається захищеним від загрози квантових обчислень, оскільки використовує для шифрування стійкі до колізій хеші. На відміну від публічних і приватних ключів, що використовуються в криптографії на еліптичних кривих, хешування, стійке до колізій, важче зламати алгоритмам квантових обчислень.
Довідкові джерела
- Програміст пояснює одну концепцію на 5 рівнях складності | WIRED(opens in a new tab) — YouTube-канал Wired
- Огляд прикладів використання доказів із нульовим розголошенням(opens in a new tab) — команда Privacy and Scaling Explorations
- Порівняння SNARK, STARK і рекурсивних SNARK(opens in a new tab) — Огляд Alchemy
- Доказ із нульовим розголошенням: покращення конфіденційності в блокчейні(opens in a new tab) — Дмітрій Лавренов
- zk-SNARK. Реалістичний приклад нульового розголошення і глибоке занурення в нього(opens in a new tab) — Адам Лучіано
- ZK-STARK — створення довіри, яку можна перевірити, навіть попри квантові компʼютери(opens in a new tab) — Адам Лучіано
- Чому можливі ZK-SNARK? Загальний огляд(opens in a new tab) — Віталік Бутерін
- Що таке доказ із нульовим розголошенням і яка його роль у блокчейні?(opens in a new tab) — Лівай Херц