Криптография

Zero-Knowledge Proofs: основы

Ethereum ZK-Rollup: тысячи транзакций сворачиваются в одно доказательство. Mainnet проверяет одно ZKP вместо тысяч транзакций - в 100x дешевле по gas. Zcash: транзакции полностью приватны, но сеть проверяет что никто не создаёт биткоины из воздуха. ZKP - математика позволяющая доказать правду не раскрывая данных.

  • **Zcash shielded transactions**: ZK-SNARKs доказывают что входы = выходам (баланс сохранён) без раскрытия сумм или адресов.
  • **StarkNet/zkSync**: ZK-Rollup на Ethereum. Тысячи транзакций -> одно доказательство на L1. Финальность транзакций за минуты вместо часов.
  • **Cloudflare Privacy Pass**: ZKP позволяет анонимно предъявить токен прохода CAPTCHA без раскрытия идентичности.
  • **EUDI Wallet (EU)**: европейские цифровые паспорта планируют ZKP для selective disclosure: доказать 'возраст >= 18' без раскрытия даты рождения.

Интерактивные доказательства с нулевым знанием

Zero-Knowledge Proof (ZKP): доказывающий (Prover) убеждает верифицирующего (Verifier) в истинности утверждения, не раскрывая ничего кроме самого факта истинности. Три свойства: Completeness (честный Prover убедит Verifier), Soundness (нечестный Prover не убедит), Zero-Knowledge (Verifier не узнаёт ничего нового).

ZKP применяются в Zcash (shielded transactions), Ethereum L2 rollups (ZK-Rollup), паспортной верификации (без раскрытия данных паспорта), anonymous credentials (доказать 'мне >= 18 лет' без имени), Privacy Pass (Cloudflare). ZK индустрия выросла с $0 в 2019 до $500M+ VC в 2022.

Что означает свойство Zero-Knowledge в ZKP?

Протокол Шнорра: ZKP знания секрета

Schnorr Identification Protocol: Prover доказывает знание приватного ключа x без его раскрытия. Трёхходовой протокол: Commitment (R) -> Challenge (e) -> Response (s). Верификация: s*G == R + e*X.

Почему нечестный Prover не может убедить Verifier в Schnorr протоколе?

Преобразование Фиата-Шамира: неинтерактивные ZKP

Fiat-Shamir heuristic (1986): превращает интерактивный ZKP в неинтерактивный (NIZKP). Verifier-challenge заменяется хэшем: e = H(R || X || message). Prover вычисляет всё самостоятельно. Подпись = (R, s) - это и есть Schnorr signature.

Fiat-Shamir доказуемо безопасен в Random Oracle Model (если H ведёт себя как идеальный случайный оракул). В Standard Model безопасность сложнее. ZK-SNARKs используют Fiat-Shamir для создания неинтерактивных доказательств из интерактивных (Groth16, PLONK).

Что позволяет Fiat-Shamir преобразование сделать с интерактивным ZKP?

Sigma-протоколы: класс ZKP

Sigma-протоколы (Σ-протоколы) - класс трёхходовых ZKP с commit-challenge-response структурой. Schnorr - частный случай. Sigma-протоколы композируются: AND (доказать знание x1 И x2), OR (x1 ИЛИ x2, без раскрытия который).

Применения OR-composition: Ring signatures (подпись от члена группы без раскрытия кого). Monero использует kривые подписи на основе OR-composition: '1 из n участников подписал транзакцию'. Privacy Pass токены: Cloudflare не знает каким конкретным пользователем использован токен.

ZKP полностью анонимны - никакая информация не раскрывается

ZKP раскрывает ровно один факт: что утверждение истинно. Метаданные (время, IP, размер доказательства) могут раскрывать дополнительную информацию. ZK-Rollup на Ethereum публично раскрывает транзакционный граф

Zero-Knowledge - свойство конкретного протокола, а не системы в целом. Реальные системы имеют side channels: timestamp correlation, network analysis, pattern-of-life.

Что уникально в OR-composition для Sigma-протоколов в сравнении с наивным OR?

Итоги

  • **ZKP свойства**: Completeness (честный Prover убедит), Soundness (нечестный - нет), Zero-Knowledge (Verifier узнаёт только факт истинности).
  • **Schnorr протокол**: commit (R) -> challenge (e) -> response (s). Zero-Knowledge знания приватного ключа. Soundness через невозможность угадать challenge.
  • **Fiat-Shamir**: e = H(R || X || msg). Интерактивный ZKP -> неинтерактивный. Schnorr signature = Fiat-Shamir(Schnorr ID). Основа ZK-SNARKs.
  • **Sigma-протоколы**: трёхходовые ZKP. Композиция AND/OR. OR-composition = ring signatures. Прямая дорога к Groth16 и PLONK.

Связанные темы

ZKP - теоретическая основа продвинутой приватности:

  • ZK-SNARKs — SNARKs = Succinct Non-interactive ARguments of Knowledge. Groth16 и PLONK строятся на Sigma-протоколах через Fiat-Shamir.
  • Цифровые подписи — Ed25519 подпись = Fiat-Shamir(Schnorr протокол на Curve25519). Sigma-протокол = теоретическая основа подписей.
  • Блокчейн криптография — Zcash (Groth16), Ethereum ZK-Rollups (PLONK/Stark) используют ZKP для приватности и масштабирования.

Вопросы для размышления

  • В Schnorr протоколе Prover не должен повторять k (commitment). Что произойдёт если один и тот же k использован для двух разных challenge?
  • Fiat-Shamir безопасен в Random Oracle Model. Что это означает на практике и есть ли реальные атаки на конкретные реализации?
  • Ring signature через OR-composition: 1 из 5 участников подписал. Как это связано с Monero и почему блокчейн-аналитика не может деанонимизировать транзакции?

Связанные уроки

  • net-44-zero-trust
Zero-Knowledge Proofs: основы

0

1

Войти