Что такое zk-SNARK?

icon DATA
Фото - Что такое zk-SNARK?
zk-SNARK — это наиболее известная форма доказательства с нулевым разглашением (ZKP). С ее помощью пользователь подтверждает факт владения данными без их раскрытия другой стороне. Концепция похожа на игру “Шпион”, в которой участники доказывают, что знают слово, не называя его.
Первая научная работа, которая описывала zk-SNARK, была опубликована в 2013 году. Один из авторов — Алессандро Кьеза, сооснователь приватной криптовалюты Zcash и компании StarkWare Industries (разработчик Starknet). Zcash стал первой реализацией zk-SNARK в качестве технологии приватных транзакций.

Что означает zk-SNARK?

После Zcash появилось множество модификаций zk-SNARK, однако первоначальная логика работы технологии остается неизменной. Она описывает значения аббревиатуры zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge). Рассмотрим каждое из них детальнее.

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

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

Верификатор надевает очки, а доказывающий перемешивает шары в руках. Если верификатор увидит, что цветовой тон предметов отличается — цвета разные, если нет — одинаковые. В данном примере очки выступают в роли zk-SNARK.

Succinct. В контексте криптографии под краткостью понимается размер доказательства и скорость его проверки. Независимо от сложности и объема исходных данных, их доказательство остается компактным.

Допустим, вам необходимо изучить книгу на 50 страниц. Для того, чтобы не читать ее целиком, вы используете помощь посредника (zk-SNARK), который резюмирует материал. Несмотря на то, что краткое содержание (доказательство) короче исходной книги (данные), оно все равно отражает ее суть.

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

Arguments of Knowledge. Утверждение того, что доказывающая сторона обладает деталями операции, а не только ее исходом. Используя zk-SNARK, вы не просто доказываете, что “сумма двух чисел равна 10”, но и знание конкретных чисел, которые были использованы.

Варианты применения zk-SNARK

Основатель Ethereum Виталик Бутерин рассказал о ключевых проблемах блокчейна на конференции EDCON2023, которая прошла в мае этого года. Он выделил 4 ключевые сложности индустрии, включая:

  • конфиденциальность,
  • масштабируемость,
  • безопасность учетной записи пользователя,
  • безопасность смарт-контрактов.

Он также подчеркнул важность zk-SNARK в решении этих проблем и их роль в формировании экосистемы Web3 в ближайшее десятилетие. Чтобы понять варианты применения zk-SNARK, рассмотрим, как он решает первые три, наиболее релевантные проблемы.

Масштабирование

Rollups — это один из способов масштабирования блокчейна, который формирует группы из нескольких транзакций и обрабатывает их вне основной сети. zk-Rollups используют ZKP, делая блокчейн более эффективным.
Принцип работы zk-Rollups. Источник: messari.io

Принцип работы zk-Rollups. Источник: messari.io

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

Краткость zk-SNARK позволяет эффективно проверить валидность всех транзакций, а неинтерактивность технологии — уменьшает нагрузку сети. Это приводит к увеличению пропускной способности блокчейна и снижению комиссий.

zkSync и Polygon Hermez — наиболее известные проекты, использующие zk-SNARK для масштабирования Ethereum.

Приватные транзакции

zk-SNARK обеспечивает приватность транзакций в блокчейне. Такие данные, как адрес отправителя и получателя, а также объем операции могут быть замаскированы. Несмотря на то, что детали скрыты, транзакции все еще проверяются валидаторами.

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

Zcash и Tornado Cash — наиболее известные проекты, использующие zk-SNARK для осуществления приватных транзакций.

Приватность идентификации

Подтверждение личности требуется для доступа к банковским услугам, путешествиям и даже похода в кино. Чем чаще человек предоставляет данные о своей личности, тем больше вероятность того, что они будут скомпрометированы.

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

Zk-creds — протокол для проверки учетных записей, использующий zk-SNARK.

Как работает zk-SNARK

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

Функция генерации ключей 

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

Рассмотрим систему, в которой C(x,w) — это утверждение, которое необходимо проверить, не раскрывая его деталей. В данном случае, x — это общедоступные данные, а w — приватные. Функция установки — математическое представление этого утверждения, которое принимает параметр безопасности λ. Она используется для генерации ключа подтверждения pk и ключа проверки vk.

Установка(C,λ)  → (pk,vk)

Функция генерации доказательств

Доказывающий запускает эту функцию для создания криптографического подтверждения prf, которое затем он отправляет проверяющей стороне. Для этого используется приватные данные w (англ. witness — свидетель), публичные данные x и ключ подтверждения pk. 

Доказательство(w,x,pk)  → prf

Функция проверки

Верификатор использует эту функцию для проверки подтверждения, которое ему предоставила доказывающая сторона. Он применяет доказательство prf, ключ верификации vk и публичные данные x.

Проверка(prf,vk,x) → True (доказательство верно) или False (доказательство неверно)
Схема работы zk-SNARK. Источник: medium.com

Схема работы zk-SNARK. Источник: medium.com

Принцип работы является эффективным, поскольку сохраняет 3 базовых правила ZKP, а именно:

  1. Полнота. Если утверждение C(x,w) правильное, то доказательство prf всегда будет достоверным. 
  2. Устойчивость. Если утверждение C(x,w) неправильное, то любое доказательство prf, сгенерированное доказывающим, будет признано верификатором неверным.
  3. Нулевое разглашение. Верификатор проверяет доказательство prf, не зная о приватных данных w.

Важно понимать, что “доказывающий” и “проверяющий” — это алгоритмы.

Это фундаментальный принцип работы zk-SNARK. Кроме этого, существует 3 концепции, которые лежат в основе технологии, а именно: криптография эллиптических кривых, доверительная настройка и эвристика Фиата-Шамира.

Криптография эллиптических кривых. Безопасность zk-SNARK обеспечивает криптография на основе эллиптических кривых (ECC). ECC — это подход, который использует открытый и закрытый ключи для шифрования данных. Этот же принцип есть и в Bitcoin.

Доверительная настройка. Используется для создания ключа подтверждения и проверки. В этом процессе генерируются специальные данные, называемые “токсичные отходы”. Если они попадут в руки злоумышленников, последние смогут создать ложные доказательства. Одно из решений этой проблемы — многосторонние вычисления.

Многосторонние вычисления базируются на распределении обязательств между большим количеством участников. Теперь токсичные отходы поделены на части, каждая из которых принадлежит конкретному участнику сети. Если хотя бы один из них уничтожит свою долю, создать ложное доказательство будет невозможно.

Эвристика Фиата-Шамира. Преобразует интерактивные системы доказательств в неинтерактивные. Отличает zk-SNARK от других типов ZKP.

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

Заключение

Как и большинство новых технологий, zk-SNARK может использоваться для незаконной деятельности, что также влияет и на добросовестных участников рынка. Например, в 2022 году Министерство финансов США ввело санкции против криптомиксера Tornado Cash, а многие dApps не поддерживают взаимодействие с Zcash.

Несмотря на это, многие считают zk-SNARK одним из главных трендов крипторынка в 2024 году. К их числу относятся, например, Виталик Бутерин и венчурный фонд a16z. Последний из них даже утверждал, что zk-SNARK станет мейнстримом.

Пишет о DeFi и криптовалютах через призму технологий.