Что такое доказательство с нулевым разглашением (zero-knowledge proof)?

A

Alex077

Модератор
11 Ноя 2018
6,258
64
48
Что такое доказательство с нулевым разглашением (zero-knowledge proof)?
Доказательство с нулевым разглашением — это криптографический протокол, который позволяет одной стороне (доказывающему) подтвердить истинность утверждения другой стороне (верификатору), при этом не раскрывая никакой дополнительной информации о ней (ни содержания, ни источника, из которого доказывающий узнал о правдивости).Такое определение впервые было предложено исследователями из Массачусетского технологического института (MIT) Шафи Голдвассером, Сильвио Микали и Чарльзом Ракоффом в научной статье “Сложность доказательств в интерактивных системах” (1985).
2
Как это работает?

Представьте, что вы находитесь в комнате с человеком, которому завязали глаза. На столе перед вами лежат два шарика — белый и черный. Вам необходимо доказать второму человеку (верификатору), что шарики действительно разных цветов, при этом не раскрывая каких именно.

Для этого вы должны попросить его спрятать оба шарика под стол. После этого попросите достать только один, чтобы вы могли его увидеть. Далее шарик снова прячется и в следующий раз верификатор снова может показать либо белый, либо черный. Однако вы сможете доказать утверждение, поскольку точно знаете, менял ли он их под столом.
Тем не менее полностью верификатор в истинности факта не будет уверен, ведь могли иметь место удача или обман. Эта проблема решается путем повторения эксперимента n количество раз. С каждым раундом шанс случайно оказаться правым будет уменьшаться вдвое: после пяти повторений вероятность обмана составит 1 к 32, после 10 раундов — 1 к 1024, а после 20 раундов — примерно 1 к 1 000 000.
Благодаря повторениям можно добиться желаемого уровня надежности доказательства, однако абсолютной уверенности достичь при этом невозможно.

3
Для чего используют доказательство с нулевым разглашением?

Одним из очевидных применений доказательства с нулевым разглашением в криптовалютах можно назвать проверку наличия у пользователя средств для транзакции, при этом не раскрывая участникам сети, кто этот пользователь и сколько денег у него на счету.
Этот протокол также можно использовать в сферах, где необходимо обеспечить безопасность данных (например, персональной информации) или проведение финансовой транзакции.
Доказательство с нулевым разглашением может играть роль инструмента, который обеспечивает верификацию данных и пользователей, предоставление привилегированного доступа и установление доверенных соединений.

4
Какие существуют виды доказательств с нулевым разглашением?

  • интерактивный (верификатор самостоятельно опрашивает доказывающего в режиме реального времени);
  • неинтерактивный (не требует непосредственной коммуникации между верификатором и доказывающим; первый может проверять подлинность утверждения постфактум).
Доказательства с нулевым разглашением можно также разделить на две группы, исходя из наличия или отсутствия фазы фиксации подлинности утверждения несколькими верификаторами — так называемой доверенной установки [trusted setup] с применением булевой функции.
Для некоторых протоколов, таких как zk-SNARKs (Zero-Knowledge Succinct Non-Interactive ARgument of Knowledge), это является необходимым условием. Верификаторы генерируют специальный секрет, который уничтожается сразу после доверенной установки. Если секрет продолжит существовать, то данные в сети можно будет подделать, тем самым нивелируя преимущества использования протокола.
Существуют протоколы, которые не требуют доверенной установки (например, zk-STARK (Zero-Knowledge Scalable Transparent ARguments of Knowledge).

5
Какие преимущества доказательств с нулевым разглашением?

  • повышение приватности пользователей в публичных блокчейнах и других сетях;
  • укрепление информационной безопасности за счет замены неэффективных способов аутентификации и верификации;
    повышение пропускной способности блокчейнов и улучшение масштабируемости.

6
Какие недостатки доказательств с нулевым разглашением?

  • требуют значительных вычислительных мощностей;
  • возможность компрометации при доверенной установке;
  • потенциальная уязвимость перед квантовыми вычислениями.

7
В каких проектах используются доказательства с нулевым разглашением?

Ориентированная на повышенную приватность пользователей криптовалюта ZCash использует модифицированный протокол zk-SNARKs. Этот же протокол был частично имплементирован в сети Ethereum в рамках хардфорка Byzantium. На данный момент разработчики эфира рассматривают дополнительные возможности применения этой технологии.
Стартап QEDIT разработал SDK (Software Development Kit), который позволяет имплементировать доказательства с нулевым разглашением в уже существующие блокчейны для повышения приватности транзакций с сохранением возможности их валидации нодами. Отметим, что проект уже был награжден Знаком Качества Европейской Комиссии, а среди его партнеров такие известные компании, как VMWare, Ant Financial и Deloitte.
Компания StarkWare создала решения на основе протокола zk-STARKs, которые также могут быть реализованы в существующих сетях. Проект уже привлек финансирование от Виталика Бутерина, Pantera Capital, Intel Capital, Sequoia Capital и других инвесторов.
Голландский банк ING выпустил модифицированную версию доказательства с нулевым разглашением — Zero-Knowledge Range Proof (ZKRP). Этот протокол может доказать, что клиент имеет заработную плату в диапазоне, необходимом для получения ипотечного кредита, при этом не раскрывая саму сумму.