Доказательство с нулевым разглашением: отличия ZK-SNARKs от ZK-STARKs

Cyber Academy
5 min readNov 19, 2021

--

Одно из правил цифровой безопасности подразумевает, что чем меньше ваш цифровой след в сети, тем лучше. Но вебсайты, приложения, компании стремятся собрать как можно больше личной информации о пользователях. Мы обязаны разглашать данные о своей прописке или семейном положении банкам и другим учреждениям. Сложно получить медицинскую страховку, не предоставив страховщику медицинскую информацию, или получить ссуду, не раскрывая свой кредитный рейтинг. Криптографы попытались решить эту проблему и вернуть людям контроль над данными при помощи доказательства с нулевым разглашением — Zero-knowledge proof.

В этом материале вместе с разработчиком Петром Королевым мы постарались рассказать, что такое Zk-proof, снарки, старки и чем они отличаются.

Что такое метод Zero-knowledge proof и зачем он появился

Впервые определение доказательства с нулевым разглашением появилось в 1985 году в работе исследователей MIT «Сложность доказательств в интерактивных системах». В 1989 году открытие принесло им премию Геделя, а в 2012 году они стали лауреатами премии Тьюринга за создание криптосистемы с вероятностным шифрованием. Zero-knowledge proof — это криптографический протокол, который позволяет доказать истинность утверждения без необходимости раскрывать дополнительную информацию о нем. Можно оставить неразглашенной информацию о содержании, источнике, даже о критериях, по которым проверяющий (верификатор) узнал об истинности утверждения. Проверяющий с хешем С хотел бы, чтобы доказывающий предоставил доказательство того, что у него есть секретные данные, хешируемые в С. Он создает доказательство с нулевым разглашением, которое убеждает проверяющего в том, что у него есть данные, которые хешируются для С, без раскрытия самих данных проверяющему. Таким образом доказательства с нулевым разглашением могут помочь сохранить конфиденциальность соглашений, транзакций и взаимодействий.

Одним из примеров аутентификации с нулевым разглашением является ситуация, когда проверяющий имеет асимметричную пару ключей (например, RSA, EC) и использует закрытый ключ для ответа на запрос, отправленный с открытым ключом. Закрытый ключ никогда не раскрывается, но верификатор уверен, что у доказывающего он есть.

Настоящий ZKP должен соответствовать 3 критериям:

1. Полнота (Completeness): необходимо убедить проверяющего в том, что доказывающий обладает секретной информацией.

2. Обоснованность (Soundness): если информация ложная, она не может убедить проверяющего в достоверности информации проверяющего.

3. Нулевое знание (Zero knowledge): оно не должно открывать проверяющему больше ничего.

Волшебная пещера и доказательство с нулевым разглашением

Не расстраивайтесь, если вам все еще не до конца понятно, как это работает. Криптограф Жан-Жак Квискватер в 1990 году написал работу «Как Объяснить Протоколы Нулевого Разглашения своим детям». Представим кольцевую пещеру с одним входом и одним волшебным порталом, разделяющим две дорожки. Магический портал активируется от специального магического заклинания. Мы хотим доказать волшебнику, что у нас есть это заклинание, но при этом не разглашая само заклинание. Для этого волшебник соглашается подождать снаружи, пока мы входим в пещеру и идем до конца одного из двух возможных путей. Если мы знаем заклинание, то мы пройдем через портал и выйдем из другого конца из пещеры, доказав волшебнику, что мы знаем заклинание. Весь процесс может быть повторен несколько раз, чтобы подтвердить, что мы не случайно выбрали правильный путь.

Есть два типа ZKP: интерактивные и неинтерактивные

При интерактивном ZKP верификатор проводит проверку в режиме реального времени и отправляет запрос доказывающему, который обязан предоставить ответ.

Неинтерактивный ZKP подразумевает, что непосредственная коммуникация не требуется и подлинность утверждения может быть доказана постфактум.

Криптографы Фиат и Шамир обнаружили, что интерактивный протокол можно преобразовать в неинтерактивный, используя хеш-функцию для выбора задачи (без какого-либо взаимодействия с верификатором). Повторное взаимодействие между доказывающим и проверяющим становится ненужным, поскольку доказательство существует в одном сообщении, отправляемом к проверяющему.

Какие проблемы решает ZKP

В последние годы разработчики стремились решить три главных проблемы, связанные с доказательством: масштабируемость, приватность и универсальные решения L2 для DeFi.

Например, после игры CryptoKitties многие усомнились в том, что проект Ethereum жизнеспособный. Из-за проблем с масштабируемостью стоимость транзакций увеличилась в сотни раз, а время транзакций увеличилось с нескольких секунд до нескольких дней. Если бы мы поместили криптокотиков в L2 уровень, то блокчейн бы этого вовсе не заметил. При этом транзакции были бы защищены и логика бы не изменилась.

Проблема масштабирования крайне актуальна, особенно в эпоху DEXes — децентрализованных платформ, которые работают ончейн. С ними существует ряд проблем: медленная и кривая работа, хакерские взломы, фронтраннинг и другие мошенниества. Но все же современные блокчейны справляются. Но в будущем, если представить, что через 5–10 лет наступит токенизированное будущее, то потребуется решение этой проблемы. Нагрузка на сеть значительно возрастет.

Что такое Zk-SNARKs

ZK-SNARKs (Zero-Knowledge Succinct Non-Interactive ARgument of Knowledge, краткий неинтерактивный аргумент знания с нулевым разглашением) — модифицированный протокол, который появился в ориентированном на повышенную приватность проекте ZCash. Приватность Zcash базируется на том, что транзакции остаются зашифрованными, но при этом проверяются на валидность с помощью ZKP. Консенсус достигается без разглашения данных. Эти доказательства меньше по размеру и могут быть быстро проверены.

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

Благодаря сжатому объему доказательства Zk-SNARKs могут стать решением проблемы масштабируемости блокчейнов. Но серьезный недостаток этого метода — это фаза установки, необходимая для внедрения протокола в любую задачу. Во время этого фиксируется подлинность вычисления (circuit), а также допущение ложных доказательств (fake proofs). Для использования circuit публично, необходимо иметь «trusted setup». SNARK-протоколы мало применяются для произвольных Тьюринг-полных смарт-контрактов, так как каждый новый контракт потребует новой установки.

Что такое Zk-STARKs

Zk-STARK (Zero-Knowledge Scalable Transparent ARguments of Knowledge) — модификация протокола, предложенная проектом StarkWare. Zk-STARK не требует начальной trusted setup (следовательно, «t» — transparent тут означает прозрачность). Протокол полагается на более простую симметричную криптографию благодаря устойчивым к коллизии хеш-функциям.

Но скорость генерации и размер Старка больше, чем у Снарка. При этом они устойчивы к квантовым компьютерам. Протокол zk-STARKs не полагается на публичное шифрование, вскрываемое ключами, но вместо этого использует хеш-алгоритмы, такие как SHA2.

Cyber Academy — образовательная платформа для блокчейн-разработчиков. Присоединяйтесь к нам

Поддержите нас на Gitcoin

Анонсы | Website | Twitter | Телеграм-чат | GitHub | Facebook | Linkedin

--

--

Cyber Academy
Cyber Academy

Written by Cyber Academy

Образовательная платформа для блокчейн-разработчиков

No responses yet