Что такое доказательства с нулевым разглашением?
Доказательства с нулевым разглашением позволяют одной стороне доказать истинность утверждения, не раскрывая секретных данных, на которых оно основано.
Доказательства с нулевым разглашением — это криптографические методы, которые позволяют одной стороне доказать истинность утверждения без раскрытия секретной информации, лежащей в основе этого утверждения. В блокчейне это может означать доказательство того, что транзакция соответствует правилам, что пользователь входит в одобренный набор или что вычисление выполнено корректно без публикации всех приватных входных данных.
Доказательство может раскрыть ответ, не раскрывая данные
Базовая проблема проста. Представьте, что сервису нужно знать только, старше ли вам 18 лет. Обычный процесс проверки может потребовать полный документ, удостоверяющий личность, раскрывая ваше имя, дату рождения и номер документа. Систему с нулевым разглашением можно спроектировать так, чтобы сервис получал криптографическое доказательство утверждения «этот человек старше 18 лет», не получая лежащей в основе даты рождения.
Это не означает, что проверяющий не узнает буквально ничего. Он узнаёт, что доказываемое утверждение истинно. Скрытой остаётся та приватная информация, которая использовалась для его установления.
Надёжная система с нулевым разглашением обладает тремя ключевыми свойствами:
- Полнота: истинное утверждение может быть доказано честным доказывающим.
- Корректность: ложное утверждение не должно приниматься, кроме как с пренебрежимо малой вероятностью.
- Нулевое разглашение: проверяющий должен узнать не больше, чем истинность утверждения.
Математика различается между системами доказательств, но эти три идеи — полезная модель для понимания.
Доказывающий, свидетель и проверяющий — ключевые элементы
Доказательство с нулевым разглашением начинается с доказывающего, который знает некоторую приватную информацию. Криптографы часто называют эту информацию свидетелем. Доказывающий запускает алгоритм доказательства, который объединяет свидетеля с публичным утверждением и создаёт компактное доказательство.
Рисунок: три части доказательства с нулевым разглашением на примере из статьи о возрасте старше 18 лет. Секретные данные никогда не покидают доказывающего.
Проверяющий сверяет это доказательство с публичным утверждением. Если доказательство верно, проверяющий может принять утверждение, не получая самого свидетеля.
Рассмотрим упрощённый пример из блокчейна. Пользователь хочет доказать, что перевод корректен. Приватный свидетель может включать точные балансы и путь транзакции. Публичное утверждение может состоять в том, что транзакция подчиняется всем правилам протокола и не создаёт деньги из ниоткуда. Доказательство с нулевым разглашением позволяет сети проверить публичное утверждение, не раскрывая все приватные детали, использованные для его получения.
Это различие важно, поскольку блокчейны хорошо подходят для проверки, но плохо обеспечивают приватность. Публичные сети устроены так, чтобы независимые участники могли проверять одно и то же состояние. Техники с нулевым разглашением добавляют способ сохранить возможность проверки, раскрывая меньше данных.
Почему так часто упоминаются ZK-SNARK и ZK-STARK
«Доказательство с нулевым разглашением» описывает широкое семейство методов. В блокчейн-системах часто встречаются два названия:
| Система доказательств | На что указывает название | Практический компромисс |
|---|---|---|
| ZK-SNARK | Краткий (succinct), неинтерактивный аргумент знания | Очень компактные доказательства и быстрая проверка; некоторые конструкции требуют доверенной настройки |
| ZK-STARK | Масштабируемый, прозрачный аргумент знания | В распространённых конструкциях нет доверенной настройки; доказательства могут быть крупнее |
Эти аббревиатуры полезны, но они не являются конкурирующими криптовалютами или отдельными сетями. Это разные способы построения доказательств. Конкретные реализации по-разному решают вопросы размера доказательства, времени его создания, стоимости проверки, криптографических предположений и требований к настройке.
Для пользователя обычно важен не вопрос «SNARK или STARK?», а то, для проверки чего используется доказательство и какая информация остаётся публичной.
Доказательства с нулевым разглашением могут масштабировать блокчейн так же, как защищают приватность
Приватность — наиболее интуитивный сценарий использования, но масштабирование — одна из важнейших причин, по которым доказательства с нулевым разглашением применяются в криптоинфраструктуре.
ZK-роллап может выполнять множество транзакций вне базового уровня, а затем отправлять доказательство того, что полученный переход состояния корректен. Базовый блокчейн проверяет доказательство, а не пересчитывает каждую транзакцию с нуля. В результате распределение работы иное: тяжёлые вычисления выполняются в другом месте, а базовая цепочка проверяет компактное криптографическое утверждение.
Поэтому «ZK» появляется в обсуждениях систем второго уровня Ethereum даже тогда, когда транзакции не являются полностью приватными. Доказательство с нулевым разглашением может подтвердить корректность вычислений, не обязательно скрывая все данные транзакции.
Приватность и масштабирование пересекаются, но это не одна и та же характеристика.
Конкретный пример: доказательство принадлежности без раскрытия личности
Допустим, для приватного голосования в сети зарегистрированы 10 000 адресов. Цель — позволить каждому имеющему право участнику проголосовать один раз, не публикуя, какой зарегистрированный адрес отдал какой голос.
Участник может сформировать доказательство, которое по сути говорит:
Я знаю секрет, соответствующий одному из членов этого утверждённого набора, и я ранее не использовал эти учётные данные для голосования.
Верификатор проверяет доказательство и публичное условие защиты от двойного голосования. Голосующему не нужно раскрывать, какому члену набора он соответствует. В документации Ethereum по приватности описан этот тип анонимного членства как одно из практических применений технологии доказательств с нулевым разглашением.
Тот же шаблон можно адаптировать для учётных данных, контроля доступа, проверок соответствия требованиям и селективного раскрытия информации.
Нулевое разглашение само по себе не делает систему автоматически приватной
Это легко упустить. Протокол может использовать доказательства с нулевым разглашением и при этом раскрывать полезные метаданные: адреса кошельков, временные метки, размеры транзакций, взаимодействия с контрактами или точки депозита и вывода средств.
Приватность зависит от всей архитектуры системы, а не от наличия аббревиатуры ZK. Пользователь, который входит в приватную систему с публично идентифицированного адреса и сразу выводит средства на другой известный адрес, всё равно может создать связь, которую способны выявить инструменты анализа.
Доказательство защищает то, что было задумано скрывать. Оно не стирает всю остальную информацию, связанную с транзакцией.
Нулевое разглашение также не доказывает, что приложение безопасно
Математически корректное доказательство может показать, что программа следовала закодированным правилам. Это не гарантирует, что эти правила экономически разумны, свободны от ошибок или безопасны для пользователей.
Риск смарт-контрактов сохраняется. Сохраняются также риски управления ключами, риски мостов, управленческие риски и ошибки в схемах или программном обеспечении, используемых для генерации доказательств. Некоторые системы также зависят от церемоний настройки, специализированного оборудования или сложных криптографических библиотек.
Иными словами, доказательство может установить: «это вычисление было выполнено в соответствии со схемой». Оно не может установить: «этот продукт — хорошая идея».
Стоимость создания доказательства
Проверка доказательства с нулевым разглашением быстра и дешева, но его создание может требовать значительных вычислительных ресурсов. Этот дисбаланс определяет устройство систем ZK: специализированные операторы, которые иногда называются генераторами доказательств (provers), запускают мощное оборудование для создания доказательств, тогда как обычные узлы лишь проверяют их.
Где доказательства с нулевым разглашением важнее всего
Технология наиболее полезна, когда системе одновременно нужны верификация и ограниченное раскрытие информации. Распространённые примеры включают приватные учётные данные, анонимное членство, голосование с сохранением приватности, доказательства валидности транзакций и масштабирование блокчейна.
Она важна меньше, когда все входные данные уже публичны и вычисления достаточно дешевы, чтобы каждый мог проверить их напрямую. В этом случае добавление системы доказательств может усложнить решение, не решая реальной задачи.
Поэтому полезный вопрос — не в том, являются ли доказательства с нулевым разглашением продвинутой криптографией. Являются. Более точный вопрос: нужно ли конкретному приложению доказать что-то, не раскрывая и не пересчитывая всё, что за этим стоит.