Криптография
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 и почему блокчейн-аналитика не может деанонимизировать транзакции?