Что такое доказательство с нулевым разглашением (zero-knowledge proof)?
Доказательство с нулевым разглашением — это криптографический протокол, который позволяет одной стороне (доказывающему) подтвердить истинность утверждения другой стороне (верификатору), при этом не раскрывая никакой дополнительной информации о ней (ни содержания, ни источника, из которого доказывающий узнал о правдивости). Впервые о доказательстве с нулевым разглашением написали в своей научной статье исследователи из Массачусетского технологического института (MIT) Шафи Голдвассером, Сильвио Микали и Чарльзом Ракоффом еще в 1985 г.
Доказательство с нулевым разглашением можно охараетеризовать тремя основными свойствами:
1. Полнота. Если доказывающий знает утверждение, то он сможет убедить в этом проверяющего.
2. Корректность. Если доказывающий не знает утверждение, то он может обмануть проверяющего только с небольшой вероятностью.
3. Нулевое разглашение. Проверяющий, даже если он ведет себя нечестно, не узнает ничего кроме самого факта, что утверждение известно доказывающему.
Какие существуют виды доказательств с нулевым разглашением?
- интерактивный (проверяющий самостоятельно опрашивает доказывающего в режиме реального времени)
- неинтерактивный (не требует непосредственной коммуникации между проверяющим и доказывающим; первый может проверять подлинность утверждения постфактум).
Доказательства с нулевым разглашением можно также разделить на две группы, исходя из наличия или отсутствия факта фиксации подлинности утверждения несколькими проверяющими.
Как это работает?
Доказательство как правило имеет форму интерактивного протокола. Это означает, что сторона B задает ряд вопросов доказывающему, если он знает секрет, то ответит на все вопросы правильно. Если секрет стороне A неизвестен, но она хочет убедить в обратном проверяющего, у нее есть некоторая вероятность (как минимум 50%) ответить правильно на вопрос. Однако, после некоторого количества вопросов (10–50) проверяющий с достаточно высокой вероятностью убеждается в том, что доказывающий не знает секрет. При этом, ни один из ответов не дает никаких сведений о самом секрете.
Хорошо объясняет доказательство с нулевым знанием Жан-Жак Кискатер и Луи Гиллу с помощью истории о пещере Али-Бабы (см. рисунок). Чтобы пройти сквозь пещеру, необходимо открыть дверь между C и D. Дверь открывается только тогда, когда кто-нибудь произносит волшебные слова. Пусть Пегги знает волшебные слова и хочет доказать это Виктору, не раскрывая самих слов.
Вот как происходит доказательство с нулевым знанием в данном случае:
1. Виктор находится в точке А.
2. Пегги проходит весь путь по пещере до двери либо по проходу C, либо по проходу D. Виктор не видит в какую сторону пошла Пегги. После того, как Пегги исчезнет в пещере, Виктор переходит в точку В.
3. Виктор кричит Пегги, чтобы она вышла из пещеры либо из левого прохода, либо из правого прохода.
4. Пегги, при необходимости используя волшебные слова, чтобы отпереть дверь, выходит из пещеры из того прохода, из которого просил ее выйти Виктор.
5. Пегги и Виктор повторяют этапы 1–4 некоторое количество раз.
В случае когда Пегги не знает секрета, то она не сможет обмануть Виктора, если этапы доказательства повторяются несколько раз подряд. Так как она может выйти только из того прохода, в который она зашла, в каждом раунде протокола вероятность угадать, с какой стороны Виктор попросит ее выйти, составляет 50 %. Соответственно, ее вероятность обмануть Виктора также равна 50 %. Однако, вероятность обмануть его в двух раундах составит уже 25 %, а в n раундах у нее есть только один шанс из 2^n. Виктор может уверенно предположить, что если все n (n=10–50) раундов доказательства Пегги правильны, то она действительно знает тайные слова, открывающие дверь между точками С и D.
Для чего используют доказательство с нулевым разглашением?
Одним из очевидных применений доказательства с нулевым разглашением в криптовалютах можно назвать проверку наличия у пользователя средств для транзакции, при этом не раскрывая участникам сети, кто этот пользователь и сколько денег у него на счету.
Этот протокол также можно использовать в сферах, где необходимо обеспечить безопасность данных (например, персональной информации) или проведение финансовой транзакции.
Доказательство с нулевым разглашением может играть роль инструмента, который обеспечивает верификацию данных и пользователей, предоставление привилегированного доступа и установление доверенных соединений.
Какие преимущества доказательств с нулевым разглашением?
- повышение приватности пользователей в публичных блокчейнах и других сетях
- укрепление информационной безопасности за счет замены неэффективных способов аутентификации и верификации;
повышение пропускной способности блокчейнов и улучшение масштабируемости.
Какие недостатки доказательств с нулевым разглашением?
- требуют значительных вычислительных мощностей
- возможность компрометации при доверенной установке
- потенциальная уязвимость перед квантовыми вычислениями.
Какие проекты используют доказательства с нулевым разглашением?
Ориентированная на повышенную приватность пользователей криптовалюта ZCash использует модифицированный протокол zk-SNARKs. Этот же протокол был частично имплементирован в сети Ethereum в рамках хардфорка Byzantium.
Стартап QEDIT разработал SDK (Software Development Kit), который позволяет имплементировать доказательства с нулевым разглашением в уже существующие блокчейны для повышения приватности транзакций с сохранением возможности их валидации нодами.
Компания StarkWare создала решения на основе протокола zk-STARKs, которые также могут быть реализованы в существующих сетях.
Aztec — это проект, который пытается внедрить доказательство с нулевым разглашением в существующую сеть Ethereum путем создания стека интеллектуальных контрактов, ориентированных на конфиденциальность.
Ну, и конечно же, Aleo — первая в мире полнофункциональная платформа для разработки частных приложений (с нулевым разглашением), отличающаяся скоростью, целостностью и масштабируемостью. Aleo достигает этого, используя децентрализованные системы и криптографию с нулевым разглашением для защиты пользовательских данных в Интернете. Для создания приложения на Aleo был разработан язык программирования Leo. Он позволяет разработчикам интуитивно и легко писать приложения с нулевым разглашением и гарантирует, что данные пользователей по умолчанию являются конфиденциальными.
Статья написана — Aleksander#8393
В статье использовались материалы из следующих источников:
1. https://forklog.com/cryptorium/chto-takoe-dokazatelstvo-s-nulevym-razglasheniem-zero-knowledge-proof/