Понятие технологии zk-SNARK

28 августа, 2020 / Новичкам

zk-snark

В последние годы в крипто сообществе все чаще упоминаются различные протоколы с нулевым разглашением: в первую очередь в контексте конфиденциальности, реже в контексте масштабируемости и т.д.

Одним из наиболее изученных и, что наиболее важно, реализованных, является семейство протоколов zk-SNARK. Популярность SNARK вполне оправдана, так как протокол позволяет доказывать факты с нулевым разглашением: в то время как доказательство относительно невелико, безопасность гарантируется современной криптографией на основе эллиптических кривых. В частности, такой протокол используется в криптовалюте Zcash.

При использованиии протокола доказательства с нулевым разглашением zk-SNARK, пользователи никогда не узнают правил игры. Правила устанавливаются участниками процедуры генерации доверенных параметров системы («церемонии»), после завершения которой проверить эти правила невозможно.

Однако в этом также есть свои недостатки. Существуют секретные параметры, которые используются для церемонии и после этого должны быть уничтожены – их называют токсичными. Проблема в том, что если токсичные параметры не будут уничтожены, владелец сможет доказать ложные факты (в случае с Zcash – сгенерировать криптовалюту из воздуха).

Создание доверенной установки

Далее, математика, лежащая в основе протоколов SNARK, будет рассмотрена только поверхностно.

Давайте посмотрим на процесс генерации доверенных параметров. У нас есть постановка проблемы, факт решения которой мы хотим доказать с нулевым разглашением. Например, мы хотим проверить знание корня квадратного уравнения:

x ^ 2–6x + 5 = 0

Согласно протоколу, мы должны преобразовать это уравнение в форму QAP (Quadratic Arithmetic Programs). Далее для генерации и проверки пруфа необходимо получить доверенные параметры.

Оставим в скобках то, как QAP создает надежные параметры, что это за параметры и как их можно использовать для проверки доказательства, чтобы не углубляться в сложную математику. Обратите внимание только на то, что параметры представлены в виде точек на эллиптической кривой:

zk-snark solidity

Они получаются из постановки задачи в форме QAP посредством необратимой операции умножения на эллиптической кривой с использованием токсичных параметров.

Теперь, когда доверенные параметры созданы, мы можем работать с доказательствами. В нашем случае мы можем сгенерировать и проверить доказательство того, что корень уравнения известен (например, x = 1). Более того, доказательство не раскроет значение корня уравнения и будет состоять из нескольких точек на эллиптической кривой.

Однако в силу математики, лежащей в основе протокола, если кто-то сохранил токсичные параметры после церемонии, этот человек сможет доказать ложные факты. Возвращаясь к нашему примеру, мы сможем доказать, что 2 является корнем уравнения, хотя это, очевидно, неверно.

Церемония

Крупные проекты, использующие протоколы SNARK, прекрасно осведомлены о существовании проблемы токсичных параметров и серьезно относятся к правильности генерации исходных параметров. Самый известный пример – церемония Zcash.

Первая церемония прошла в октябре 2016 года. В ней приняли участие 6 известных разработчиков из криптовалютного сообщества. Протокол церемонии дает достаточные гарантии безопасности. А именно, если хотя бы один участник церемонии честен (т.е. правильно уничтожает свою часть токсичных параметров) и не будет взломан, церемония будет безопасной.

Во-вторых, в 2017–2018 годах произошла более совершенная церемония генерации доверенных параметров. Она проводилась в два этапа, в первой части (Powers of Tau) приняли участие 87 человек, а в заключительной части (Sapling MPC) приняли участие более 90 человек. Как и в случае с оригинальной церемонией, при честности хотя бы одного участника церемонию можно считать безопасной. Важной особенностью второй церемонии было то, что стать участником мог любой желающий. Таким образом, любой желающий мог получить твердые гарантии правильности протокола.

В заключение важно отметить, что критичность церемонии и связанные с ней угрозы следует рассматривать отдельно для каждой системы. При этом для всех систем, использующих протоколы SNARK, необходима надежная процедура генерации доверенных параметров с гарантиями уничтожения токсичных параметров.

 

Актуально