Протокол знань про нуль - це метод, за допомогою якого одна сторона (доводчик) може довести до іншої сторони (перевіряючий), що щось є правдою, не розкриваючи жодної інформації, окрім того, що цей конкретний вислів є правдою.
Докази з нульовим розголошенням поліпшилися з роками і зараз вони використовуються в кількох реальних додатках.
Докази з нульовим розголошенням стали проривом у застосованій криптографії, оскільки вони обіцяли покращити безпеку інформації для осіб. Подумайте, як ви можете довести твердження (наприклад, „Я є громадянином країни Х“) іншій стороні (наприклад, постачальнику послуг). Вам потрібно буде надати „докази“, щоб підтвердити своє твердження, такі як національний паспорт або посвідчення водія.
Але є проблеми з таким підходом, головним чином - відсутність конфіденційності. Особиста ідентифікована інформація (ОІІ), яка ділиться з послугами сторонніх сторін, зберігається в центральних базах даних, які піддаються вразливості від взломів. З поширенням крадіжок особистості стає критичною проблемою, і є заклики до більш конфіденційних засобів обміну чутливою інформацією.
Докази з нульовим рівнем вирішують цю проблему, усуваючи потребу в розкритті інформації для підтвердження правдивості вимог. Протокол з нульовим рівнем використовує заяву (звану 'свідком') як вхід, щоб згенерувати стислий доказ її правдивості. Цей доказ надає міцні гарантії того, що заява є правдивою, не розкриваючи інформації, використаної для її створення.
Повертаючись до нашого попереднього прикладу, єдиним доказом, який вам потрібно представити для підтвердження вашої вимоги на громадянство, є доказ з нульовим знанням. Верифікатору потрібно лише перевірити, чи відповідні властивості доказу відповідають дійсності, щоб переконатися, що базове твердження також є правдивим.
Докази з нульовим розголошенням дозволяють довести правду заяви, не розголошуючи її вмісту або розкриваючи, як ви виявили правду. Для забезпечення цього можливості протоколи з нульовим розголошенням базуються на алгоритмах, які приймають певні дані на вході та повертають 'true' або 'false' на виході.
Протокол з нульовими знаннями повинен задовольняти наступні критерії:
У базовій формі доказ знання нуля складається з трьох елементів: свідок, виклик та відповідь.
Вище описана структура 'інтерактивного доказу знань нуля'. Ранні протоколи нуль-знань використовували інтерактивне доведення, де перевірка валідності твердження вимагала взаємодії між доводами та перевіряючими.
Добрий приклад, який ілюструє, як працюють інтерактивні докази, - це відомий Жан-Жак КіскартерКазка про печеру Алі-Баби
(відкривається в новій вкладці)
. У історії Пеггі (доведена) хоче довести Віктору (перевіряючому), що вона знає секретну фразу для відкриття магічних дверей, не розголошуючи фразу.
Хоча революційна, інтерактивна доведення мала обмежену корисність, оскільки вона потребувала наявності двох сторін і повторюваної взаємодії. Навіть якщо перевіряючий був переконаний в чесності доведення, доказ був недоступним для незалежної перевірки (обчислення нового доказу потребувало нового набору повідомлень між доводником та перевіряючим).
Для вирішення цієї проблеми Мануель Блум, Пол Фелдман та Сільвіо Мікалі запропонували перше невзаємодійні докази нульового знання
де доказувач і перевіряючий мають спільний ключ. Це дозволяє доказувачу продемонструвати свої знання певної інформації (тобто, свідка), не надаючи саму інформацію.
У відміну від інтерактивних доказів, неінтерактивні докази потребують лише одного раунду спілкування між учасниками (доказувачем і перевіряючим). Доказувач передає секретну інформацію спеціальному алгоритму для обчислення доказу нульового знання. Цей доказ надсилається перевіряючому, який перевіряє, що доказувач володіє секретною інформацією за допомогою іншого алгоритму.
Неінтерактивне доведення зменшує комунікацію між доводником та перевіряючим, роблячи ZK-докази більш ефективними. Більше того, як тільки доказ згенеровано, він доступний для будь-кого іншого (з доступом до спільного ключа та алгоритму верифікації), щоб перевірити.
Невзаємодійні докази стали проривом для технології нульового доказу та сприяли розвитку систем доведення, які використовуються сьогодні. Ми обговорюємо ці типи доказів нижче:
ZK-SNARK - це скорочення від Zero-Knowledge Succinct Non-Interactive Argument of Knowledge. Протокол ZK-SNARK має наступні якості:
Згаданий раніше 'спільний ключ' вказує на загальні параметри, з якими доказувач і перевіряючий погоджуються використовувати для генерації та перевірки доказів. Генерація загальних параметрів (загалом відомих як загальна референтна рядок (CRS)) є чутливою операцією через її важливість для безпеки протоколу. Якщо ентропія (випадковість), використана під час генерації CRS, потрапить у руки недоброчесного доказувача, він може обчислити хибні докази.
Багатосторонні обчислення (MPC)
(відкривається в новій вкладці)
це спосіб зменшення ризиків при формуванні загальних параметрів. В процесі беруть участь кілька сторін.церемонія довіреного налаштування
(відкривається в новій вкладці)
, де кожна особа вносить деякі випадкові значення для генерації CRS. Поки одна чесна сторона знищує свою частину ентропії, протокол ZK-SNARK зберігає обчислювальну звуковість.
Довірені налаштування потребують від користувачів довіри до учасників у генерації параметрів. Однак розробка ZK-STARKs дозволила створити протоколи доведення, які працюють без довіреної настройки.
ZK-STARK - це скорочення від нуль-знання масштабованого прозорого аргументу знань. 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 та validiumsдва рішення позашляхового масштабування, які використовують докази достовірності для забезпечення безпечного масштабованості. Ці протоколи виконують тисячі транзакцій позашляхово і подають докази для перевірки на Ethereum. Ці результати можуть бути застосовані негайно після того, як доказ буде перевірено, що дозволяє Ethereum обробляти більше транзакцій без збільшення обчислень на базовому рівні.
Схеми голосування на блокчейні мають багато перевагових характеристик: вони повністю аудитовані, захищені від атак, стійкі до цензури та вільні від географічних обмежень. Однак, навіть схеми голосування на ланцюжку не є імунними до проблеми змови.
Визначивши як «координацію з метою обмеження відкритої конкуренції шляхом обману, шахрайства та вводження в оману інших», змова може приймати форму зловмисника, що впливає на голосування, пропонуючи хабарі. Наприклад, Аліса може отримати хабар від Боба за голосування за варіант B на бюлетені навіть якщо вона віддає перевагу варіанту A.
Хабарництво та змова обмежують ефективність будь-якого процесу, який використовує голосування як сигнальний механізм (особливо там, де користувачі можуть довести, як вони проголосували). Це може мати серйозні наслідки, особливо коли голоси відповідальні за розподіл рідкісних ресурсів.
Наприклад, квадратичні механізми фінансування
(відкривається в новій вкладці)
покладатися на пожертви, щоб виміряти вибір серед різних проектів громадського добра. Кожна пожертва вважається "голосом" за певний проект, при цьому проекти, які отримують більше голосів, отримують більше коштів з фонду співставлення.
Використання голосування на ланцюжку робить квадратичне фінансування вразливим до зговору: транзакції блокчейну є публічними, тому хабарники можуть перевірити діяльність хабарника на ланцюжку, щоб побачити, як вони "голосували". Таким чином, квадратичне фінансування перестає бути ефективним засобом розподілу коштів на основі агрегованих вподобань спільноти.
На щастя, нові рішення, такі як MACI (Мінімальна інфраструктура проти злочинних угод), використовують докази нульового знання для того, щоб зробити голосування на ланцюжку (наприклад, квадратичні фінансові механізми) стійкими до підкупу та зговору. MACI - це набір смарт-контрактів та скриптів, які дозволяють центральному адміністраторові (званий “координатором”) агрегувати голоси та підбивати підсумки, не розкриваючи конкретики того, як голосував кожен окремий учасник. Тим не менш, все ще можна перевірити, що голоси були правильно підраховані, або підтвердити, що певна особа брала участь у голосуванні.
На початку координатор розгортає контракт MACI на Ethereum, після чого користувачі можуть зареєструватися для голосування (зареєструвавши свій відкритий ключ в смарт-контракті). Користувачі голосують, відправляючи повідомлення, зашифровані їх відкритим ключем, до смарт-контракту (дійсний голос повинен бути підписаний найновішим відкритим ключем, пов'язаним з ідентифікацією користувача, серед інших критеріїв). Після цього координатор обробляє всі повідомлення після завершення періоду голосування, підраховує голоси та перевіряє результати on-chain.
У 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 вважається імунним до загрози квантового обчислення, оскільки використовується ударостійка хеш-функція для шифрування. На відміну від використання пар ключів публічного-приватного типу в еліптичній криптографії, ударостійка хеш-функція складніше для алгоритмів квантового обчислення взламати.
Протокол знань про нуль - це метод, за допомогою якого одна сторона (доводчик) може довести до іншої сторони (перевіряючий), що щось є правдою, не розкриваючи жодної інформації, окрім того, що цей конкретний вислів є правдою.
Докази з нульовим розголошенням поліпшилися з роками і зараз вони використовуються в кількох реальних додатках.
Докази з нульовим розголошенням стали проривом у застосованій криптографії, оскільки вони обіцяли покращити безпеку інформації для осіб. Подумайте, як ви можете довести твердження (наприклад, „Я є громадянином країни Х“) іншій стороні (наприклад, постачальнику послуг). Вам потрібно буде надати „докази“, щоб підтвердити своє твердження, такі як національний паспорт або посвідчення водія.
Але є проблеми з таким підходом, головним чином - відсутність конфіденційності. Особиста ідентифікована інформація (ОІІ), яка ділиться з послугами сторонніх сторін, зберігається в центральних базах даних, які піддаються вразливості від взломів. З поширенням крадіжок особистості стає критичною проблемою, і є заклики до більш конфіденційних засобів обміну чутливою інформацією.
Докази з нульовим рівнем вирішують цю проблему, усуваючи потребу в розкритті інформації для підтвердження правдивості вимог. Протокол з нульовим рівнем використовує заяву (звану 'свідком') як вхід, щоб згенерувати стислий доказ її правдивості. Цей доказ надає міцні гарантії того, що заява є правдивою, не розкриваючи інформації, використаної для її створення.
Повертаючись до нашого попереднього прикладу, єдиним доказом, який вам потрібно представити для підтвердження вашої вимоги на громадянство, є доказ з нульовим знанням. Верифікатору потрібно лише перевірити, чи відповідні властивості доказу відповідають дійсності, щоб переконатися, що базове твердження також є правдивим.
Докази з нульовим розголошенням дозволяють довести правду заяви, не розголошуючи її вмісту або розкриваючи, як ви виявили правду. Для забезпечення цього можливості протоколи з нульовим розголошенням базуються на алгоритмах, які приймають певні дані на вході та повертають 'true' або 'false' на виході.
Протокол з нульовими знаннями повинен задовольняти наступні критерії:
У базовій формі доказ знання нуля складається з трьох елементів: свідок, виклик та відповідь.
Вище описана структура 'інтерактивного доказу знань нуля'. Ранні протоколи нуль-знань використовували інтерактивне доведення, де перевірка валідності твердження вимагала взаємодії між доводами та перевіряючими.
Добрий приклад, який ілюструє, як працюють інтерактивні докази, - це відомий Жан-Жак КіскартерКазка про печеру Алі-Баби
(відкривається в новій вкладці)
. У історії Пеггі (доведена) хоче довести Віктору (перевіряючому), що вона знає секретну фразу для відкриття магічних дверей, не розголошуючи фразу.
Хоча революційна, інтерактивна доведення мала обмежену корисність, оскільки вона потребувала наявності двох сторін і повторюваної взаємодії. Навіть якщо перевіряючий був переконаний в чесності доведення, доказ був недоступним для незалежної перевірки (обчислення нового доказу потребувало нового набору повідомлень між доводником та перевіряючим).
Для вирішення цієї проблеми Мануель Блум, Пол Фелдман та Сільвіо Мікалі запропонували перше невзаємодійні докази нульового знання
де доказувач і перевіряючий мають спільний ключ. Це дозволяє доказувачу продемонструвати свої знання певної інформації (тобто, свідка), не надаючи саму інформацію.
У відміну від інтерактивних доказів, неінтерактивні докази потребують лише одного раунду спілкування між учасниками (доказувачем і перевіряючим). Доказувач передає секретну інформацію спеціальному алгоритму для обчислення доказу нульового знання. Цей доказ надсилається перевіряючому, який перевіряє, що доказувач володіє секретною інформацією за допомогою іншого алгоритму.
Неінтерактивне доведення зменшує комунікацію між доводником та перевіряючим, роблячи ZK-докази більш ефективними. Більше того, як тільки доказ згенеровано, він доступний для будь-кого іншого (з доступом до спільного ключа та алгоритму верифікації), щоб перевірити.
Невзаємодійні докази стали проривом для технології нульового доказу та сприяли розвитку систем доведення, які використовуються сьогодні. Ми обговорюємо ці типи доказів нижче:
ZK-SNARK - це скорочення від Zero-Knowledge Succinct Non-Interactive Argument of Knowledge. Протокол ZK-SNARK має наступні якості:
Згаданий раніше 'спільний ключ' вказує на загальні параметри, з якими доказувач і перевіряючий погоджуються використовувати для генерації та перевірки доказів. Генерація загальних параметрів (загалом відомих як загальна референтна рядок (CRS)) є чутливою операцією через її важливість для безпеки протоколу. Якщо ентропія (випадковість), використана під час генерації CRS, потрапить у руки недоброчесного доказувача, він може обчислити хибні докази.
Багатосторонні обчислення (MPC)
(відкривається в новій вкладці)
це спосіб зменшення ризиків при формуванні загальних параметрів. В процесі беруть участь кілька сторін.церемонія довіреного налаштування
(відкривається в новій вкладці)
, де кожна особа вносить деякі випадкові значення для генерації CRS. Поки одна чесна сторона знищує свою частину ентропії, протокол ZK-SNARK зберігає обчислювальну звуковість.
Довірені налаштування потребують від користувачів довіри до учасників у генерації параметрів. Однак розробка ZK-STARKs дозволила створити протоколи доведення, які працюють без довіреної настройки.
ZK-STARK - це скорочення від нуль-знання масштабованого прозорого аргументу знань. 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 та validiumsдва рішення позашляхового масштабування, які використовують докази достовірності для забезпечення безпечного масштабованості. Ці протоколи виконують тисячі транзакцій позашляхово і подають докази для перевірки на Ethereum. Ці результати можуть бути застосовані негайно після того, як доказ буде перевірено, що дозволяє Ethereum обробляти більше транзакцій без збільшення обчислень на базовому рівні.
Схеми голосування на блокчейні мають багато перевагових характеристик: вони повністю аудитовані, захищені від атак, стійкі до цензури та вільні від географічних обмежень. Однак, навіть схеми голосування на ланцюжку не є імунними до проблеми змови.
Визначивши як «координацію з метою обмеження відкритої конкуренції шляхом обману, шахрайства та вводження в оману інших», змова може приймати форму зловмисника, що впливає на голосування, пропонуючи хабарі. Наприклад, Аліса може отримати хабар від Боба за голосування за варіант B на бюлетені навіть якщо вона віддає перевагу варіанту A.
Хабарництво та змова обмежують ефективність будь-якого процесу, який використовує голосування як сигнальний механізм (особливо там, де користувачі можуть довести, як вони проголосували). Це може мати серйозні наслідки, особливо коли голоси відповідальні за розподіл рідкісних ресурсів.
Наприклад, квадратичні механізми фінансування
(відкривається в новій вкладці)
покладатися на пожертви, щоб виміряти вибір серед різних проектів громадського добра. Кожна пожертва вважається "голосом" за певний проект, при цьому проекти, які отримують більше голосів, отримують більше коштів з фонду співставлення.
Використання голосування на ланцюжку робить квадратичне фінансування вразливим до зговору: транзакції блокчейну є публічними, тому хабарники можуть перевірити діяльність хабарника на ланцюжку, щоб побачити, як вони "голосували". Таким чином, квадратичне фінансування перестає бути ефективним засобом розподілу коштів на основі агрегованих вподобань спільноти.
На щастя, нові рішення, такі як MACI (Мінімальна інфраструктура проти злочинних угод), використовують докази нульового знання для того, щоб зробити голосування на ланцюжку (наприклад, квадратичні фінансові механізми) стійкими до підкупу та зговору. MACI - це набір смарт-контрактів та скриптів, які дозволяють центральному адміністраторові (званий “координатором”) агрегувати голоси та підбивати підсумки, не розкриваючи конкретики того, як голосував кожен окремий учасник. Тим не менш, все ще можна перевірити, що голоси були правильно підраховані, або підтвердити, що певна особа брала участь у голосуванні.
На початку координатор розгортає контракт MACI на Ethereum, після чого користувачі можуть зареєструватися для голосування (зареєструвавши свій відкритий ключ в смарт-контракті). Користувачі голосують, відправляючи повідомлення, зашифровані їх відкритим ключем, до смарт-контракту (дійсний голос повинен бути підписаний найновішим відкритим ключем, пов'язаним з ідентифікацією користувача, серед інших критеріїв). Після цього координатор обробляє всі повідомлення після завершення періоду голосування, підраховує голоси та перевіряє результати on-chain.
У 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 вважається імунним до загрози квантового обчислення, оскільки використовується ударостійка хеш-функція для шифрування. На відміну від використання пар ключів публічного-приватного типу в еліптичній криптографії, ударостійка хеш-функція складніше для алгоритмів квантового обчислення взламати.