DeFi. Приватные ДеФи. Monero vs. Black Marble
О важном
Недавно по чатам прокатилась новая волна хейта и скабрёзных шуток в сторону причастности в Web 3.0 & Web3. И направлены они были на Monero: хотя вопросу не один месяц и решения по нему есть.
Задача данной статьи - собрать позиции по атаке, раскрыть её суть и показать, что децентрализация работает. И вполне успешно. А все эти рассказы о том, что государство всё сломает, - лишь байки для неофитов.
Перевод
Это вольный перевод сразу нескольких значимых материалов по теме…
Введение
Источник: getmonero.org/it/resources/research-lab/pubs/MRL-0001.pdf.
Не так давно Rucknium запросил финансирование на проведение статистических исследований, направленных на улучшение приватности Monero и обоснование изменений протокол: в частности, он сосредоточился на анализе подозрительной спам-атаки “Black Marble” flood в сети Monero в марте 2024 г. и подготовке отчёта Monero Research Lab по её влиянию на приватность, опыт пользователей и возможные контрмеры.
Для нас важно, что один из базисов - моделирование сочетания атаки Black Marble с методом т.н. цепной реакции (декомпозиция Декомпозиция Далмейджа-Мендельсона) для проверки, может ли флуд транзакций вызвать массовую деанонимизацию цепочки.
Помимо этого была идея создать сетевой сканер узлов для поиска источника большого объёма транзакций-спама.
Поэтому на момент первичного анализа было готово улучшение алгоритма выбора приманок OSPEAD но его безопасное внедрение возможно лишь при хардфорке (одновременная работа разных алгоритмов выбора выходов опасна для приватности).
[Прим. Menaskop: в Monero для обеспечения приватности используется технология кольцевых подписей. Когда вы отправляете XMR, ваша транзакция включает "mixins" — это набор входов (UTXO), среди которых один настоящий (ваш), а остальные — "приманки" (decoys, или chaff). Все они выглядят одинаково, чтобы скрыть, какой из них настоящий].
Суть
Первый научный бюллетень Monero Research Lab (MRL-0001, сентябрь 2014) описывает потенциальную уязвимость анонимности в протоколе CryptoNote на основе кольцевых подписей.
В работе показано, что анонимность одного участника зависит от анонимности других: если в кольцевой подписи в качестве примесей использованы выходы, которые впоследствии станут прозрачными (например, их владелец потратил их без микширования), то наблюдатель сможет раскрыть настоящие траты других пользователей.
В статье авторы использовали модель с «чёрными» и «белыми» шариками для иллюстрации.
Каждый выход трактуется как шар в урне: «чёрные» шарики — это раскрытые (или контролируемые атакующим) выходы, «белые» — анонимные.
Если атакующий увеличивает долю «чёрных шаров» в общей массе UTXO, то при недостаточно большом размере кольца возникает ненулевая вероятность, что все примеси в данном кольце окажутся скомпрометированным.
В таком случае кольцевая подпись теряет не прослеживаемость – истинный вход вычисляется однозначно, поскольку все остальные члены кольца явно не являются реальными тратами.
«Цепная реакция» заключается в том, что раскрытие нескольких выходов может транзитивно нарушить анонимность множества других транзакций.
Если параметры протокола выбраны неудачно (например, слишком малый размер колец, low mixin), а злоумышленник владеет достаточной частью выходов сети, то глобальная НЕ прослеживаемость может резко ухудшиться – компрометация одних транзакций постепенно «распространяется» на другие по графу ссылок.
Отмечается, что такая атака не нарушает криптографию одноразовых адресов (stealth-адреса остаются секретными), то есть личности отправителей не раскрываются напрямую.
Тем не менее, факт связывания транзакций серьёзно подрывает конфиденциальность: даже если пользователь не был злонамерен, потратив свои монеты открыто, его действия непреднамеренно снижают анонимность тех, кто использовал эти монеты как примеси.
В заключение MRL-0001 рекомендует консервативный выбор параметров для предотвращения такого сценария.
Требуется достаточное количество миксинов (примесей) в кольцах и общая независимость выходов, чтобы сеть деградировала даже при наличии «плохих» выходов.
Проще говоря, если UTXO-пул заполнится большим числом «неанонимных» выходов, честным узлам станет сложно формировать по-настоящему приватные транзакции – «плохие деньги вытесняют хорошие» по аналогии с законом Грешема.
Работа MRL-0001 впервые формализовала проблему, позднее получившую название «Black Marble» атаки – то есть массового спама сетью выходов, чья наличие в кольцах обнуляет их ценность как примесей. Это задало направление дальнейшим исследованиям по улучшению стойкости Monero к анализу блокчейна.
Продолжение
Источник: ieeexplore.ieee.org/document/8456034.
В другой работе (уже за 2018 год) исследователи Dimaz A. Wijaya и др. анализируют практический способ эксплуатации описанной выше уязвимости Monero.
Они вводят термин «Black Marbles Attack» для классического сценария (по аналогии с MRL-0001), когда атакующий стремится контролировать как можно больше выходов в блокчейне.
Авторы предлагают новый вариант атаки, в которой вместо прямого спама сетью злоумышленник модифицирует алгоритм выбора примесей в кошельке жертвы.
В этой работе было показано, что, если кошелёк или сервис формирования транзакций действует недобросовестно (например, намеренно выбирает примеси не случайно, а по определённому шаблону), то он может незаметно для пользователя свести эффективность кольцевой подписи почти к нулю.
Фактически, транзакция будет иметь эффект “нулевого миксина”, когда все члены кольца кроме настоящего легко исключаются внешним аналитиком.
При этом атака не затрагивает сами средства – монеты не крадутся, а приватность разрушается скрытно, через структуру транзакций.
Авторы отмечают, что анонимность Monero во многом полагается на корректную работу кошельков, предполагая случайное и непредвзятое добавление примесей. Если это предположение нарушено, пользователи остаются уязвимы.
Например, правительственные органы могут заставить регулируемые биржи или провайдеров кошельков строить транзакции особым образом (по схеме атаки), чтобы отслеживать перемещение монет без прямого раскрытия адресов. [Прим. Menaskop: de facto так и происходит, поэтому исходить надо из данного сценария].
Таких “меток” может быть немного, но даже частичная деанонимизация подрывает обещание не прослеживаемости Monero.
Важное отличие нового метода от исходной «Black Marble» атаки: его могут осуществлять многие участники одновременно без явного сговора.
Если разные кошельки или сервисы внедрят схожий “деанонимизирующий” шаблон, каждый из них будет невольно помогать другим, так как все помеченные выходы становятся общедоступными ориентирами в блокчейне.
В классической схеме требовалось, чтобы один злоумышленник захватил большую долю UTXO; здесь же даже разрозненные действия суммируются, постепенно снижая совокупную анонимность пользователей.
По результатам исследования авторы приходят к выводу, что полагаться только на добросовестность программного обеспечения кошелька нельзя.
Необходимо усовершенствовать сам протокол Monero, чтобы даже скомпрометированный или вредоносный кошелёк не мог настолько облегчить анализ транзакций.
Предлагается внедрять защитные меры на уровне сети, исключающие возможность незаметного повторения эффекта нулевого миксина.
Например, сообщество Monero впоследствии обсудило механизмы вроде Full-Chain Membership Proofs и прочие протокольные изменения, которые устраняют уязвимости текущего подхода с кольцевыми подписями.
Данная работа подтвердила серьёзность угрозы, описанной в MRL-0001, и расширила её контекст: если “Black Marble” подразумевает спам от злоумышленника, то «Monero Ring Attack» показывает, что и от доверенных посредников (кошельков, бирж) может исходить схожая атака.
Это стимулировало разработчиков Monero уделить больше внимания статистическим аспектам приватности и усилить независимость анонимности пользователей от внешних допущений.
Новые открытия
В марте 2024 разработчики Monero создали задачу №119 в репозитории исследовательской лаборатории, чтобы обсудить контрмеры против подозреваемого спам-флуда “Black Marble”.
Поводом стало резкое увеличение числа транзакций в сети (примерно в 3 раза), особенно транзакций с 1 входом и 8–16 выходами, что соответствует профилю атаки: злоумышленник заполняет блокчейн многочисленными выходами, пытаясь уменьшить долю «честных» (не принадлежащих ему) выходов в кольцах.
Отмечается, что сообщество разделилось во мнениях о природе этого всплеска: некоторые считали его органическим ростом или побочным эффектом (например, из-за Monero NFT, “Mordinals”), другие – целенаправленной атакой.
Авторы тикета исходят из принципа «предусмотрительность превыше оптимизма»: раз невозможно доказать отсутствие атаки, следует действовать так, будто она идёт, поскольку Monero — в первую очередь инструмент защиты приватности.
Проигнорировать потенциальную угрозу было бы слишком рискованно для пользователей.
В задаче приведён перечень возможных мер защиты (актуальных для текущей версии сети v16 “Fluorine Fermi”), с указанием их достоинств и недостатков. Среди предложений:
- Ничего не предпринимать – плюс в том, что избегаются поспешные изменения и возможные ошибки, требующие ещё одного хардфорка для исправления. Минус: если атака реально идёт, атакующий продолжит снижать эффективный размер колец с теми же затратами, и у сообщества нет понимания, насколько велики его ресурсы.
- Увеличить минимальный размер кольца – каждый транзакция будет включать больше примесей, не принадлежащих атакующей стороне, что усложнит цепную деанонимизацию и повысит расходы на флуд. Требуется хардфорк; вырастет нагрузка на узлы и незначительно – средний размер транзакции (потенциально комиссии). Зато таким шагом сеть станет более готовой к переходу на будущие схемы (напр. Seraphis), где размер псевдо-анонимного набора выше текущего.
- Поднять минимальные комиссии – то есть изменить параметры динамического размера блока так, чтобы в условиях переполнения мемпула базовая комиссия росла быстрее. Это отпугнёт спамера (транзакции станут дорогими), но и для обычных пользователей комиссии в долгосрочной перспективе увеличатся. Мера требует хардфорка и даёт эффект не сразу (основана на более длинной медиане блоков).
- Ввести дополнительную плату за множество выходов – сделать комиссию зависимой от числа выходов: например, транзакции с более чем 2 выходами платят прогрессивно больше за каждый выход сверх второго. В нормальных условиях большинство переводов имеет 2 выхода (адрес получателя + сдача), и для них плата не изменится или вырастет минимально. Зато спам-схема с 16 выходами подорожает в разы, что может заставить атакующего прекратить флуд или раздробить его на мелкие транзакции. Недостатки: нужен хардфорк; честные транзакции с большим числом получателей станут дороже; злоумышленник может адаптироваться и перейти на спам 1–2-выходными переводами, сделав атаку менее заметной, но всё ещё возможной.
- Повысить минимальную комиссию ретрансляции на узлах – т.е. выпустить обновление ПО узлов, при котором они отказываются ретранслировать транзакции с комиссией ниже нового порога. Это можно внедрить без хардфорка, но если часть узлов не обновится, атакующий сможет распространять спам через них. Кроме того, злоумышленник может вообще обойти ретрансляцию, договорившись напрямую с майнерами о включении своих операций. По сути, эффект аналогичен повышению минимальной комиссии через хардфорк, но есть риск фрагментации сети и координации майнеров с атакером.
- Добавить PoW-проверку для транзакций – потребовать, чтобы отправитель перед отправкой рассчитывал небольшое доказательство работы. Предлагаются два варианта: на уровне узлов (relay) – каждый узел проверяет PoW транзакции прежде чем переслать дальше (изменение возможно без форка); на уровне консенсуса – майнер включает транзакцию в блок только если в её структуре присутствует корректный PoW (потребуется хардфорк). Оба подхода увеличивают издержки спамера не финансово, а вычислительно: ему понадобится больше мощностей и электроэнергии для рассылки тысячи транзакций. Минусы: усложняется жизнь добросовестных отправителей с маломощными устройствами (может занять время расчёт PoW, нагреться телефон и т.п.); а атакер снова-таки может обойти правило relay, посылая сделки прямо майнерам (тогда только вариант с консенсус-PoW надёжен, но это серьёзное изменение протокола).
- Ограничить время жизни транзакций в мемпуле – уменьшить TTL неподтверждённых транзакций (TTL — максимальное время, в течение которого транзакция считается действительной). Тогда часть спам-операций будет «протухать» и выпадать из очереди, не успев попасть в блок. Это может снизить общий объём спама, если атакующий не успевает поддерживать непрерывный поток. Но полностью меру без форка не внедрить (узлы должны согласованно обновиться), и опять же майнеры могут напрямую получать старые транзакции. Атакующий может настроить ботов рассылать спам с нужной периодичностью, чтобы обходить это ограничение.
Ни одна из описанных мер не устраняет корневую проблему — саму возможность атак типа Black Marble при использовании колец фиксированного размера. Поэтому в обсуждении подчёркивается, что многие решения носят временный или паллиативный характер, пока Monero не перейдёт на новую транзакционную схему без колец.
В списке «отложенных» мер фигурирует внедрение Full-Chain Membership Proofs (FCMP) вместе с протоколом Seraphis – это кардинально иной подход, обеспечивающий доказуемо устойчивую приватность (требует отказа от текущих кольцевых подписей).
Однако его реализация оценивается в +/- 5 лет. Альтернативно предлагается промежуточное решение FCMP++ на базе текущего RingCT, над которым работает разработчик kayabaNerve; по оптимистичным оценкам, его можно подготовить за ~12–18 месяцев.
Эти инициативы находятся на стадии исследований и не способны защитить пользователей в краткосроке, поэтому обсуждаемые выше «точечные» меры рассматриваются как временный щит на ближайшие форки.
Стоит отметить, что в тикете также упомянуты идеи, которые не подходят для реализации: например, сместить алгоритм выбора примесей так, чтобы чаще выбирались более старые выходы (теоретически это замедлит накопление новых «чёрных» выходов, но одновременно облегчает аналитикам угадывать свежие траты, и если спам продолжится долго, преимущество исчезнет).
Ещё мысль — организовать контратаку: честные участники сами могли бы заполнять блокчейн транзакциями-фейками, храня приватно данные о них, а после окончания спама удалить эти данные, не позволив злоумышленнику ими воспользоваться. На практике такой план нереален: требует доверия (что все честные участники сотрут информацию) и идеальной координации, иначе невозможно понять, когда атака закончилась.
Наконец, рассматривалось, не начать ли майнерам добровольно ограничивать размер блоков, чтобы спамеру приходилось конкурировать за место с нормальными транзакциями. Но это предполагает альтруизм и единство всех майнеров, чего нельзя гарантировать, да и снижает пропускную способность сети.
Надо сказать, что тикет #119 иллюстрирует оперативную реакцию сообщества Monero на новые атаки: разработчики и исследователи совместно проанализировали ситуацию, признали серьёзность угрозы, но без паники, и сформировали целостный план — от немедленных параметрических изменений до долгосрочного перехода на новые крипто-примитивы.
Эта дискуссия укрепила понимание, что для сохранения анонимности в Monero нужны как быстрые инженерные решения, так и фундаментальные улучшения протокола.
См. доп.: Defeating a Black Marble Flood Against Monero - GitHubGitHubhttps://raw.githubusercontent.com › main › pdf.
Важное исследование
Отдельно можно посмотреть на репозиторий Rucknium “Monero-Black-Marble-Flood” (GitHub, 2024).
Данный репозиторий содержит результаты независимого исследования Rucknium по всплеску транзакций в Monero в марте 2024, подозреваемому в рамках атаки типа Black Marble.
В нём опубликован черновой отчёт «March 2024 Suspected Black Marble Flooding Against Monero: Privacy, User Experience, and Countermeasures», где автор анализирует статистику: 4 марта 2024 г. суммарный ежедневный объём транзакций Monero внезапно вырос почти втрое, и если предположить, что это была атака-флуд, то средний эффективный размер кольца (т.е. реальная анонимность транзакций) снизился приблизительно с 16 до 5.5.
Иначе говоря, значительная часть примесей могла принадлежать злоумышленнику, сокращая набор возможных реальных выходов в каждой транзакции примерно на 2/3.
Rucknium отмечает, что при текущем масштабе спама полной деанонимизации добиться трудно: по его оценкам, даже при трёхкратном росте трафика у атакующего пока нет возможности выполнить цепной анализ и однозначно вычислить реальные траты во всех кольцах.
Тем не менее, ущерб приватности ощутим, и продолжение атаки усугубило бы ситуацию.
В отчёте рассмотрены потенциальные контрмеры: например, анализируется, как изменится безопасность, если увеличить размер кольца ( >16), и какой эффект это даст для пользователей и атакующего.
Отдельный документ в репозитории («Defeating a Black Marble Flood Against Monero: Best Options for Ring Size and Transaction Fee») содержит расчёт оптимальных изменений параметров, затрудняющих атаку.
Выяснилось, что для спамера наименьшей по затратам стратегией было создание транзакций именно с 16 выходами (максимально разрешённое сейчас число) – по подсчётам Rucknium, стоимость комиссии на каждый выведенный выход при таком флуде почти в 4 раза ниже, чем если бы он спамил стандартными транзакциями с 2 выходами.
Следовательно, повышение платы за каждый выход сверх второго способно увеличить расходы атакующего в 4 раза, практически не затронув большинство обычных пользователей. Этот вывод лёг в основу предложения о “penalize outputs above 2” как одной из наиболее эффективных мер.
Репозиторий содержит и программные инструменты анализа. В частности, Rucknium разработал пакет xmrpeers (на языке R) для сбора и статистической обработки данных одноранговой сети Monero.
С его помощью пытались определить, не исходят ли все подозрительные транзакции спама от одного узла (IP-адреса) – для этого проводится опрос узлов и сбор их локальных мемпулов в фазе «fluff» протокола Dandelion++.
Кроме того, выложены скрипты на R для моделирования описанных атак: например, код для применения разложения Далмейджа-Мендельсона к графу транзакций Monero. Это позволяет проверить, может ли атака Black Marble в сочетании с известными уязвимостями в графе (т.н. chain-reaction analysis) приводить к ещё более широкой деанонимизации.
Самое интересное, что в ридми репозитория представлены инструкции, как воспроизвести графики и выводы исследования, подключив свой Monero-узел и выгрузив необходимые данные (например, распределение возрастов выходов, загрузка мемпула, изменение доли различных типов транзакций во времени и т.д.).
Rucknium поощряет независимую проверку: каждый желающий с достаточными ресурсами может запустить анализ и убедиться в его результатах. Исключение составляет разве что анализ самих неподтверждённых транзакций (мемпул) – эти данные не хранятся в блокчейне и требовали отдельного сбора во время атаки.
Исследование Monero-Black-Marble-Flood тесно связано с другими источниками: например, оно как раз обсуждается разработчиками в тикете #119 (проект упоминается там как база для принятия решений) и в сообществе (сам Rucknium ссылался на свой отчёт, отвечая на вопросы пользователей о спаме).
Более того, результаты этого проекта (оценка просадки анонимности и эффективность различных мер) были доложены на конференциях и легли в основу инструментария (например, веб-приложение для подбора параметров защиты от Black Marble.
Таким образом, репозиторий Rucknium служит практической реализацией статистического подхода к выявлению и нейтрализации сетевой атаки на приватность Monero. Его выводы помогли сообществу выработать сбалансированные решения, опирающиеся на данные, а не на догадки.
Что по тредам? Reddit
Тред на Reddit (r/Monero, 2024): «Requesting update on Black Marble network spam attack…» также можно проанализировать. И вот что увидим:
Пользователь Reddit обратился к сообществу Monero с просьбой объяснить в понятных словах, что происходит с “Black Marble” спам-атакой на сеть.
Он отметил, что по отрывочным техническим обсуждениям сложно понять, насколько серьёзна проблема: это реальная угроза или просто паника (FUD)? Также он предложил модераторам закрепить пост с обновлениями, чтобы пользователи были в курсе ситуации.
На вопрос откликнулся как раз Rucknium (ведущий исследователь этой атаки). Он сообщил, что работает над анализом спама и возможных защит, поэтому не может тратить много времени на постоянные обновления в Reddit.
По его словам, на выходных он разработал инструмент xmrpeers для статистического анализа p2p-сети Monero, и выложил его на GitHub – это поможет выяснить, не идут ли все подозрительные транзакции с одного узла (IP-адреса).
Rucknium признал, что подготовленный им официальный PDF-отчёт написан академическим стилем и труден для понимания неспециалистом. Поэтому он порекомендовал ознакомиться с его более доступным пояснением на Reddit: пост «Empirical Privacy Impact of Mordinals (Monero NFTs)». Хотя тот пост посвящён “Mordinals” (нефункциональным токенам в Monero), базовые концепции “чёрных марморов” там описаны проще и сопровождаются наглядными диаграммами.
По сути, аналогия та же: большое количество известных выходов (например, созданных для Monero-NFT) может ухудшить анонимность так же, как намеренный спам – понимание этого из контекста Mordinals поможет разобраться и в текущей атаке.
Отдельно Rucknium отметил, что любой желающий может самостоятельно повторить его анализ при наличии своего узла Monero и достаточного объёма ОЗУ.
В репозитории есть тот самый README с инструкцией, как запустить скрипты и построить графики, используя данные блокчейна и сети. (Повторюсь: единственное, что нельзя получить постфактум, – данные мемпула во время атаки, но все остальные метрики доступны.)
Такой призыв к открытости показал, что авторы исследования стремятся к проверяемости своих выводов и прозрачности для сообщества.
Один из участников выразил обеспокоенность, что сбор данных о сетевых узлах (как делает Rucknium с xmrpeers) сам по себе может быть использован для деанонимизации или что разработчиков «подталкивают» к действиям, играющим на руку атакующим.
Rucknium ответил на критику: мониторинг сети — не новая идея, и если “приватностные” энтузиасты не сделают этого, то злоумышленники всё равно могут провести такой сбор тайно.
По его словам, протокол Dandelion++ действительно призван скрывать исходные IP транзакций, но когда сигнал атаки столь массовый, даже Dandelion-трассировка может не дать достаточно шума, чтобы замаскировать источник спама.
Поэтому лучше проактивно выявить узлы-«супер-рассыльщики» и принять меры, чем игнорировать эту возможность.
Ветеран сообщества rbrunner7 также прокомментировал ситуацию. Он напомнил, что событие ещё в развитии, ежедневно появляются новые данные и идеи, и потому трудно давать окончательные оценки.
По его мнению, «небо не падает» – то есть критической катастрофы не происходит – торопиться с выводами не стоит.
Другая точка зрения от разработчиков: лучше не требовать мгновенных изменений в коде Monero, поскольку сырые решения “на горячую” могут привести к новым ошибкам или уязвимостям.
Лучше потратить время и найти взвешенное решение, чем потом спешно откатывать неверные правки.
Таким образом, Reddit-обсуждение подтвердило, что проблема Black Marble-спама вызвала большой интерес и волнение в сообществе, но прямой паники удалось избежать.
Пользователей успокоили тем, что разработчики активно изучают атаку (подтверждено присутствием Rucknium в диалоге), и что на данный момент Monero продолжает работать штатно – вопрос лишь в том, как и когда будут улучшены механизмы защиты.
В итоге модераторы действительно создали отдельный закрепленный пост с разъяснениями, а дальнейшая информация поступала по мере готовности исследований.
Считаю, что этот случай подчеркнул важность открытой коммуникации: даже по сложным техническим вопросам команда Monero старается донести до сообщества суть проблемы и шаги по её решению на понятном языке.
Заключение
Как по мне - всё это демонстрация, что государства и корпорации - сильны, но открытый исходный год, слаженный труд и повышенные интеллектуальные способности - вполне себе способы им противостоять.