Выбор ложных выходов в Monero и защищённые пулы Zcash: глубокое сравнение
Два фундаментально разных подхода к приватности
Monero и Zcash — два наиболее известных приватных криптовалютных проекта, но их подходы к обеспечению анонимности принципиально различаются. Monero использует механизм ложных выходов (decoys) в кольцевых подписях, создавая правдоподобное отрицание для каждой транзакции. Zcash полагается на защищённые пулы (shielded pools), где транзакции полностью скрыты с помощью доказательств с нулевым разглашением (zk-SNARK). Каждый подход имеет собственные компромиссы между безопасностью, масштабируемостью и практической анонимностью.
Понимание этих различий критически важно для осознанного выбора инструмента финансовой приватности. В этом материале мы рассмотрим оба механизма с технической стороны, проанализируем известные уязвимости и оценим их эволюцию.
Механизм ложных выходов в Monero
Каждая транзакция Monero включает набор входов (inputs), каждый из которых ссылается на группу выходов (outputs) из блокчейна. Один из этих выходов — реальный (принадлежит отправителю), остальные — ложные (decoys). Кольцевая подпись математически доказывает, что отправитель владеет одним из выходов в кольце, но не раскрывает, каким именно.
Как работает выбор ложных выходов. Алгоритм выбора decoys — не случайный. Он следует распределению, имитирующему реальные паттерны расходования средств. Если бы decoys выбирались равномерно из всей истории блокчейна, внешний наблюдатель мог бы использовать временной анализ: реальные выходы статистически чаще расходуются вскоре после создания, чем через годы. Поэтому алгоритм Monero использует гамма-распределение с поправкой на недавние блоки, чтобы ложные выходы были статистически неотличимы от реальных по возрасту.
Текущий размер кольца в Monero — 16 (1 реальный + 15 ложных выходов). Это означает, что для одного входа транзакции существует 16 равновероятных кандидатов в отправители. При нескольких входах множества пересекаются, что теоретически может снизить анонимность, хотя на практике это сложно эксплуатировать.
Ключевые изображения (Key Images). Для предотвращения двойной траты Monero использует механизм ключевых изображений. При расходовании выхода генерируется уникальное ключевое изображение, которое записывается в блокчейн. Если тот же выход будет использован повторно, ключевое изображение совпадёт, и транзакция будет отклонена. Ключевое изображение не раскрывает, какой именно выход из кольца был потрачен, но позволяет сети убедиться в отсутствии двойной траты.
Известные атаки на механизм ложных выходов
Механизм decoys подвергался нескольким типам атак и анализов, которые важно рассмотреть для объективной оценки.
Временной анализ (Temporal Analysis). Исследования показали, что распределение возрастов реальных выходов отличается от распределения ложных. Злоумышленник, знающий точное время транзакции, может повысить вероятность идентификации реального выхода. Monero неоднократно обновлял алгоритм выбора decoys для минимизации этой утечки информации. В текущей реализации различие минимально, но не нулевое.
Анализ потоков (Flow Analysis). Если злоумышленник контролирует оба конца обменной операции (например, отправляет средства на биржу и выводит с неё), он может использовать информацию о времени и суммах для построения вероятностных графов транзакций. Кольцевые подписи значительно усложняют этот анализ, но не устраняют его полностью при продвинутом противнике с обширными данными.
Атака повторного использования выходов (EAE Attack). В схеме Eve-Alice-Eve злоумышленник отправляет известную транзакцию жертве, затем ожидает, когда жертва потратит полученные средства. Зная свой выход в кольце следующей транзакции, злоумышленник может исключить его из кандидатов, уменьшая эффективный размер кольца. Увеличение размера кольца (как планируется в Seraphis) снижает эффективность этой атаки.
Poisoned outputs. Если значительная часть выходов в блокчейне принадлежит одному субъекту (например, государственному агентству, создающему массу транзакций), эти выходы могут использоваться как decoys в чужих транзакциях. Владелец этих выходов знает, что они ложные, и может исключить их из кольца, уменьшая анонимность реального отправителя. Защита от этой атаки — увеличение размера кольца и разнообразия выбора decoys.
Защищённые пулы Zcash
Zcash использует принципиально иной подход. Вместо смешивания реального выхода с ложными, экранированные транзакции создают доказательство с нулевым разглашением (zk-SNARK), которое подтверждает корректность транзакции без раскрытия какой-либо информации о ней. Отправитель, получатель и сумма полностью скрыты внутри криптографического доказательства.
Структура экранированного пула. Все экранированные выходы Zcash существуют в общем пуле (shielded pool). При совершении транзакции пользователь доказывает, что его выход принадлежит пулу, и создаёт уникальный nullifier (аналог ключевого изображения Monero), предотвращающий двойную трату. Размер множества анонимности теоретически равен всему экранированному пулу — в этом главное преимущество перед decoy-подходом.
Эволюция Zcash. Zcash прошёл через несколько обновлений своей системы доказательств. Sprout — первая реализация с zk-SNARK на основе протокола Groth16, требующая доверенной церемонии. Sapling — оптимизированная версия с более быстрой генерацией доказательств и уменьшенными требованиями к памяти. Orchard — текущее поколение на основе Halo 2, устраняющее необходимость доверенной настройки через рекурсивную композицию доказательств.
Фундаментальная проблема Zcash: опциональность приватности
Теоретическое преимущество zk-SNARK перед кольцевыми подписями в размере множества анонимности нивелируется главным практическим недостатком Zcash — приватность опциональна.
Zcash поддерживает четыре типа транзакций: прозрачные (t-to-t), экранирование (t-to-z), деэкранирование (z-to-t) и полностью экранированные (z-to-z). На протяжении всей истории проекта подавляющее большинство транзакций оставалось прозрачными. По состоянию на 2025 год доля экранированных транзакций значительно выросла благодаря обновлениям, упрощающим их создание, но прозрачные транзакции по-прежнему составляют существенную часть.
Почему это проблема? Когда пользователь переходит из прозрачного в экранированный пул (t-to-z) и затем обратно (z-to-t), анализ времени и сумм может связать эти транзакции, несмотря на формальную анонимность экранированного этапа. Это особенно эффективно при малом количестве одновременных экранированных транзакций.
Monero избегает этой проблемы: все транзакции обязательно используют кольцевые подписи, скрытые адреса и RingCT. Нет прозрачного и приватного режима — есть только один режим, и он приватный. Это означает, что всё множество транзакций формирует анонимный набор, а не только его подмножество.
Сравнение по ключевым параметрам
Размер множества анонимности. Теоретически: Zcash (весь экранированный пул) побеждает Monero (16 decoys). Практически: Monero (все транзакции обязательно приватные) побеждает Zcash (малая доля экранированных транзакций формирует реальное множество анонимности).
Криптографические допущения. Monero: безопасность основана на задаче дискретного логарифмирования в группе эллиптических кривых. Bulletproofs не требуют доверенной настройки. Zcash (Orchard): Halo 2 также не требует доверенной настройки, но полагается на более сложные криптографические допущения, включая безопасность полиномиальных обязательств.
Размер транзакции. Транзакция Monero: ~1.4 КБ. Экранированная транзакция Zcash (Orchard): ~2.8 КБ. Monero более эффективен по размеру, несмотря на включение 16 decoys. Однако SNARK-доказательства Zcash скрывают больше информации в каждом доказательстве.
Время генерации транзакции. Monero: менее секунды на современном оборудовании. Zcash (Orchard): несколько секунд на мобильных устройствах. Для пользовательского опыта это заметная разница, особенно на бюджетных устройствах.
Аудируемость эмиссии. Monero: общее количество монет может быть проверено без компрометации приватности (суммы доказательств Педерсена). Zcash: в экранированном пуле аудит эмиссии полностью зависит от безопасности zk-SNARK. Если криптографическое допущение будет нарушено, злоумышленник сможет создавать монеты незаметно. В 2018 году была обнаружена уязвимость в генерации параметров Sprout, которая теоретически позволяла это сделать (хотя нет доказательств эксплуатации).
Эволюция обоих проектов
Monero движется в сторону увеличения размера кольца и более эффективных доказательств. Протокол Seraphis планирует увеличить размер кольца до 128 и более, используя более компактные криптографические конструкции. Исследуются full-chain membership proofs, которые могли бы сделать множество анонимности равным всему множеству выходов блокчейна — устраняя теоретическое преимущество Zcash в этом параметре.
Zcash, со своей стороны, работает над увеличением доли экранированных транзакций. Обновление NU5 (Orchard) значительно упростило использование экранированных транзакций, а переход к Zcash Shielded Assets (ZSA) расширит экранированный пул за счёт поддержки пользовательских токенов. Некоторые разработчики Zcash предлагали сделать приватность обязательной, но пока это не реализовано из-за регуляторных опасений.
Реальная анонимность: теория vs практика
Теоретическая криптографическая стойкость — необходимое, но не достаточное условие реальной анонимности. На практике многие атаки эксплуатируют не криптографию, а метаданные: время транзакций, размеры сумм, паттерны использования, сетевые данные (IP-адреса).
Monero лучше защищён от анализа метаданных на уровне протокола. Dandelion++ обфусцирует распространение транзакций в сети, затрудняя привязку транзакции к IP-адресу отправителя. Обязательная приватность означает, что все пользователи формируют одно неразличимое множество.
Zcash экранированные транзакции защищают содержимое транзакции, но сам факт использования экранированного пула может быть информативен. Переход между прозрачным и экранированным режимами создаёт границы, на которых утечка информации возможна.
Для пользователей, которым нужна практическая финансовая конфиденциальность в повседневных транзакциях, Monero остаётся более надёжным выбором благодаря обязательной приватности и зрелому набору инструментов. Приобрести XMR можно через MoneroSwapper — сервис обмена криптовалют без KYC-верификации, поддерживающий более 200 криптовалютных пар.
Выводы
Механизм ложных выходов Monero и защищённые пулы Zcash представляют два фундаментально различных компромисса в дизайне приватных криптовалют. Zcash предлагает теоретически более сильную криптографическую приватность на уровне отдельной транзакции, но ослабляется опциональностью. Monero предлагает менее мощную криптографию отдельной транзакции (16 decoys вместо всего пула), но компенсирует это обязательностью и однородностью.
Оба проекта эволюционируют в сторону устранения собственных слабостей: Monero — к большим множествам анонимности через Seraphis, Zcash — к большей доле экранированных транзакций. Конвергенция этих подходов — возможно, через использование ZKP с полным покрытием блокчейна и обязательной приватностью — может стать следующим значительным шагом в развитии приватных криптовалют.
🌍 Читать на