Доказательство с нулевым разглашением (Zero-Knowledge Proof) — это криптографический протокол, который позволяет доказать, что утверждение верно, и доказывающая сторона его знает, но без предоставления информации подтверждающей это утверждение проверяющей стороне. Сложность данного доказательства заключается в том, что необходимо доказать наличие данных, не раскрывая их содержания.
Что бы протокол был по настоящему таковым, он должен обладать тремя следующими свойствами:
- Полнота. Если утверждение действительно верно, то доказывающий обязан убедить проверяющего с любой заданной точностью.
- Корректность. В противном случае, если утверждение не верно, любой доказывающий не сможет убедить проверяющего (исключением является очень малая вероятность, которой можно пренебречь).
- Нулевое разглашение (ZK). Если утверждение является верным, то никто не сможет узнать никакой информации, кроме того факта, что утверждение верно.
Zero-Knowledge Proof (ZKP) не является математическим доказательством, так как всегда есть крайне низкая вероятность того, что доказывающая сторона сможет убедить проверяющую сторону в ложном утверждении (ложная корректность). Простыми словами доказательство с нулевым разглашением не является детерминированным доказательством, а представляет из себя вероятностное доказательство. Не смотря на это, есть методы и алгоритмы, которые позволяют уменьшить вероятность «ошибки корректности» до настолько низкого значения, что им можно пренебрегать.
Алгоритмы ZK-протоколов
Можно выделить два основных протокола нулевого разглашения, которые используются чаще всего:
- zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) — краткий не интерактивный аргумент знания с нулевым разглашением. Доказывающая сторона может доказать владение информацией при помощи секретного ключа и при этом ни как не взаимодействуя с проверяющей стороной. Секретный ключ уничтожается сразу после доверенной установки.
- zk-STARK (Zero-Knowledge Scalable Transparent ARguments of Knowledge) — краткий прозрачный аргумент с нулевым разглашением). В отличии от ZK-SNARK, не требует доверенной установки, а используемая случайность является общедоступной информацией.
Преимущества
- Повышение конфиденциальности пользователей.
- Увеличение информационной безопасности.
- Повышение пропускной способности и масштабируемости блокчейнов.
Недостатки
- Для работы данных алгоритмов требуется значительная вычислительная мощность.
- Есть небольшая вероятность компрометации при доверенной установке.
- Потенциальная уязвимость к квантовым вычислениям.
Где используется ZK?
- ZCash использует модифицированный протокол zk-SNARK для увеличения конфиденциальности транзакций пользователей.
- Компании Resistance и StarkWare разрабатывают решения для работы децентрализованных бирж на основе zk-STARK.
- Polygon запустил виртуальную машину Miden VM, которая работает на базе протокола zk-STARK.
- Голландский банк ING использует модифицированную версию Zero-Knowledge Range Proof (ZKRP). Данная модификация протокола может доказать, что клиент банка имеет заработную плату в определенном диапазоне, который позволяет ему взять ипотечный кредит, но не раскрывает точную сумму.
На этом применение доказательства нулевого разглашения не заканчивается, множество криптовалютных проектов занимается разработкой решений, в той или иной степени используя данные протоколы.