Хабрахабр

Обзор техник анализа анонимных блокчейнов

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

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

Более подробно об этом можно почитать в работе «A Fistful of Bitcoins: Characterizing Payments Among Men with No Names». Почти все эти техники используют одни и те же подходы — сначала с помощью простых эвристик адреса объединяются в кластеры, затем эмпирически определяется принадлежность каждого кластера к той или иной площадке.

Первыми попытками были «тумблеры» — сервисы, отправляющие транзакции от имени нескольких пользователей, которые требовали доверия к самому миксеру. Так как приватность переводов до сих пор не является основной целью биткоина, начал появляться спрос на способы сохранить граф своих платежей в тайне. Как развитие этой идеи начали появляться криптовалюты, для которых главное — приватность переводов. Для снижения рисков, связанных с доверием к централизованным сервисам, появился всем известный протокол CoinJoin, не позволявший третьей стороне (а именно самому миксеру) завладеть деньгами пользователей. Далее мы подробнее рассмотрим способы анализа этих блокчейнов. В топе Coinmarketcap сейчас можно найти три из них — Monero, Dash и ZCash, чья совокупная капитализация на момент написания статьи составляет порядка 1,8 млрд долларов.

CoinJoin

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

image

В этом примере Эрни и Барак решают скинуться и совместной транзакцией выполнить переводы Чарли и Дональду. Как мы видим на рисунке, становится сложно понять, кто решил заплатить за предвыборную кампанию Дональда — Эрни или Барак.

Одной из первых техник (и вполне успешной) деанонимизации CoinJoin-транзакций была CoinJoin sudoku. Но в этом случае «сложно» не значит «невозможно». На практике это может выглядеть примерно так (Источник — https://www.coinjoinsudoku.com/advisory/): Автор предлагает анализировать различные комбинации входов и выходов, которые в сумме дают одно и то же значение, предполагая, что они могут соответствовать одному платежу.

image

В работе «Privacy-Enhancing Overlays in Bitcoin» авторы пошли дальше и рассматривали атакующего — злоумышленника, который активно участвовал в транзакциях. Если атакующий участвовал в ряде совместных транзакций, то он может исключить свои входы и выходы, облегчив себе анализ.

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

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

Однако, хотя это одна из первых попыток и имеет довольно слабую модель анонимности, за последний год количество таких транзакций выросло втрое и достигло 4,09% от общего числа платежей (по данным сайта longhash.com), что говорит о растущем спросе на приватность в сети Bitcoin.

Dash

Dash (бывший DarkCoin) → форк биткоина. Транзакции в Dash не являются приватными по умолчанию, для проведения приватных платежей в Dash есть функция Private Send. Она унаследовала принцип работы CoinJoin вместе с большинством его недостатков.

Первыми можно пользоваться для осуществления прозрачной транзакции, а последние нужны для участия в замешивании. Dash делит выходы пользователя на два типа: обычные и приватные. 00001 DASH, 0. При конвертации обычных выходов транзакция, которая их тратит, разбивает их по номиналам вида 1. д. 100001 DASH и т. После этого отправитель выбирает мастерноду, с помощью которой будет производиться компоновка транзакции. и переводит на подконтрольные пользователю одноразовые адреса. После этого она готова к отправке в сеть. Когда набирается достаточное количество участников, формируется транзакция и отправляется на подпись каждому из отправителей.

Источник — Dash detailed: Пример PrivateSend-транзакции в Dash, которая использует по три разных адреса отправителей и получателей.

image

В отличие от CoinJoin, пользователь избавляется от необходимости следить самому за тем, чтобы его публичный ключ не появился дважды в одном из таких замешиваний. Однако это слабо защищает от отслеживаний источника — можно банально отследить цепочку «конвертаций» до реального выхода, откуда применить одну из стандартных для биткоина техник анализа источников транзакций. Эмпирически было выявлено, что если у выходов имеется один общий предок, то, скорее всего, это и есть сам отправитель.

Вкупе с некоторыми эвристиками это преимущество может быть сведено на нет. Деноминация выходов приватной транзакции усложняет атаки типа CoinJoin sudoku, но не защищают от них полностью.

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

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

На Reddit можно найти посты о том, как кому-то удалось деанонимизировать часть private send-транзакций. Сейчас в Сети активно критикуют модель приватности Dash. Например, в этом посте автор утверждает, что за последние 15 дней ему удалось отследить около 13% транзакций до их источника.

ZCash

ZCash появился в 2016 году как реализация протокола ZeroCash и стал всем известен благодаря использованию доказательств с нулевым разглашением zkSNARKs. ZCash не обязывает использовать только конфиденциальные транзакции — большинство транзакций в его сети прозрачные и унаследовали свое устройство от биткоина.

Таким образом защищенные транзакции можно разделить на три типа в зависимости от стадии прохождения shielded pool-а: Для использования функции конфиденциальных платежей пользователь должен перевести необходимую часть средств в так называемый shielded pool.

  • Shielding transaction. Транзакция из публичного пространства в shielded pool. Здесь отправитель, в отличие от получателя, не скрывается, но видно, сколько средств переходит «в тень».
  • Private transaction. Транзакция внутри shielded pool-а. Здесь неизвестны ни отправитель, ни получатель, ни сумма перевода. Фактически известно только то, что в этой транзакции тратятся средства, «которые когда-либо попадали в пул».
  • Deshielding transaction. Транзакция, выводящая средства из pool-а. Неизвестно, кто их выводит, но известно, кому и сколько.

Иллюстрация разных типов транзакции. Слева направо: обычная прозрачная транзакция, shielding transaction, private transaction, deshielding transaction. Источник — «An Empirical Analysis of Anonymity in Zcash»:

image

Важно отметить, что сеть требует, чтобы все сгенерированные монеты (block reward-ы) попадали в shielded pool, тем самым эффективно увеличивая anonymity set для замешивания транзакций.

Однако получить статистику по тому, кто и сколько средств выводил из shielded pool-а, намного сложнее. Эмпирический анализ публичных транзакций в ZCash (на начало 2018 года они составляли 73% от общего числа транзакций) не представляет особых сложностей и подвержен тем же техникам, что и сам биткоин. Ее авторы исследовали платежи на основании нескольких эвристик — наблюдений, сделанных на основании поведения пользователей: Одной из первых попыток проанализировать защищенные транзакции в 2018 году была работа «An empirical analysis of anonymity in Zcash».

  • Если в транзакции тратится два и более прозрачных выхода (вне зависимости от того, прозрачная это транзакция, shielded или смешанного типа), то, скорее всего, эти выходы принадлежат одному и тому же участнику сети.
  • Если в прозрачном переводе указан только один получатель (т. е. без сдачи), то, скорее всего, все источники средств этой транзакции принадлежат получателю.
  • Любой вывод из shielded pool-а на сумму 250.0001 ZEC (таких переводов было достаточно много) принадлежит основателям сети. Это приблизительно равнялось награде за 100 блоков.
  • Если в deshielding-транзакции более 100 выходов, один из которых принадлежит известному майнинговому пулу, то можно заключить, что это вывод средств майнеров. Все остальные выходы можно обозначить как принадлежащие майнерам.
  • Если есть пара shielding- и deshielding-транзакций с уникальной суммой и разницей в несколько блоков, причем shielding-транзакция случилась раньше, то эти транзакции связаны между собой. Это описывается в работе «On the linkability of Zcash transactions».

На иллюстрациях ниже приведена некоторая аналитика, которую удалось построить авторам работы на базе этих эвристик:

image

image

image

Авторы смогли идентифицировать 65,6% транзакций, выводящих средства из пула. Значительных успехов в идентификации платежей внутри пула достичь не удалось.

В недавней работе «Privacy and Linkability of Mining in Zcash» исследователи из Университета Люксембурга (University of Luxembourg) проанализировали работу майнинговых пулов и выявили два паттерна при выплате вознаграждений:

  • Майнинговый пул выводит награду за блок на свой публичный адрес и оттуда раздает вознаграждение майнерам. Они назвали это Pattern T.
  • Майнинговый пул хранит добытые монеты в shielded pool-е и в какой-то момент выдает вознаграждения майнерам оттуда на их публичные адреса. Этот паттерн назвали Pattern Z.

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

Следуя такому подходу, исследователям удалось увеличить долю идентифицированных выплат пулов с 65,6% в предыдущей работе до 84,1% на одних и тех же данных.

Однако у этого подхода есть свои минусы:

  • Его можно применять к достаточно узкому временному интервалу примерно в 2000 блоков (около четырех дней), так как майнеры склонны менять майнинговые пулы;
  • Очень сложно выявить транзакции, принадлежащие маленьким пулам, которые нашли лишь несколько блоков, так как их транзакции с выплатами не вписываются в общий паттерн с крупными пулами из-за малого числа выходов в них.

Результаты анализа представлены на иллюстрации:

image

На основании этих данных авторы делают вывод, что 95,6% всех транзакций ZCash является потенциально «раскрываемыми», что приближает приватность ZCash к уровню биткоина.

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

Monero

Monero была запущена в апреле 2014 года и является самой популярной реализацией протокола CryptoNote. Вместо публичных адресов получателей средств Monero использует одноразовые адреса в каждом платеже, таким образом для стороннего наблюдателя нет возможности криптографически сопоставить одноразовый адрес получателя с его публичным адресом. Для сокрытия отправителя эта технология использует идею замешивания, однако делает это способом, отличным от CoinJoin. В Monero отправителю не нужно искать другого кандидата, чтобы совершить совместную транзакцию. Вместо этого кошелек сам набирает произвольные выходы из блокчейна, прячет среди них тот выход, который желает потратить, и скрепляет это все кольцевой подписью. Кольцевая подпись здесь служит для того, чтобы убедить валидатора транзакции в том, что отправитель действительно владеет одним из замешиваемых выходов, и он не является потраченным. Так достигается высокая степень неопределенности при попытке отследить платеж до его получателя. Пример мы можем видеть на иллюстрации:

image

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

Так он рос каждый год и сейчас составляет 11. До 2016 года замешивания в сети Monero были необязательными, а потом минимальный размер кольцевой подписи подняли до 3.

В 2017 году в работе под названием «An Empirical Analysis of Traceability in the Monero Blockchain» группа исследователей указала на две слабости протокола криптовалюты (стоит отметить, что они были не первыми, кто говорил об этом, но они смогли на практике предоставить результаты анализа транзакций).

Ее также называют анализом при помощи «цепной реакции». Первая уязвимость относится к негативному эффекту от использования ранее допустимых транзакций с нулевым замешиванием. При малом числе фальшивых выходов в транзакции реальные можно вычислить с большой долей вероятности методом исключения. Авторы на практике показали, что полагаться только на анонимизацию при помощи одноразовых адресов не только бесполезно, но это также ведет к деанонимизации других платежей, использующих эти выходы в качестве замешиваемых — уже известно, где они были потрачены. Таким образом исследователям удалось отследить около 62% транзакций, сделанных до февраля 2017 года.

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

image

image

При помощи этой эвристики на тот момент авторам удалось раскрыть примерно 80% источников транзакций.

Однако сейчас эти техники представляют больше академический интерес, так как данные слабости разработчики уже исправили — минимальный mixin подняли до 11, закон распределения, по которому набираются выходы для замешивания, заменили на более приближенный к реальности и реализовали протокол конфиденциальных транзакций.

closed sets). В другой работе под названием «New Empirical Traceability Analysis of CryptoNote-Style Blockchains» исследователи пытаются проанализировать транзакции Monero при помощи «закрытых множеств» (англ.

Допустим, у нас есть четыре выхода pk1, pk2, pk3 и pk4. Объясним на примере. Теперь нам надо найти четыре такие транзакции, где будут использованы исключительно они:

image

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

Однако, поскольку такие множества — довольно редкое явление, им удалось отследить только 0,084% выходов, и эту технику можно рассматривать как дополнение к другим способам анализа. Авторы проводили эксперименты на блокчейне Monero с уже включенными конфиденциальными транзакциями и минимальным размером кольцевой подписи 5. Такой результат позволяет заключить, что современная Monero предоставляет довольно сильные гарантии конфиденциальности.

Что в итоге

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

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть