Часть 2: Ключевые концепции анализа цепочки
Cover

Часть 2: Ключевые концепции анализа цепочки

6 августа 2021 г.
Данный материал также доступен в видеоформате в этом плейлисте.

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

Перевод статьи от разработчиков Samourai Wallet

Поддержать проект

Введение #

Теперь, когда мы представили основные понятия в первой части, мы можем перейти к ключевым концепциям, лежащим в основе анализа цепочки, расширив наш анализ за счет включения “внешних” данных о транзакциях.

В частности, во второй части мы рассмотрим два наиболее важных инструмента, лежащих в основе анализа цепочки:

  • Граф транзакций
  • Эвристика владения совместными входами (она же кластеризация кошельков)

Внешние данные о транзакциях #

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

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

  • повторное использование адресов в нескольких транзакциях
  • совместная трата UTXO с нескольких адресов в одной транзакции (кластеризация кошельков)
  • скрипты с несколькими подписями (Multisig), которые раскрываются только после траты UTXO
  • отпечатки кошелька в серии транзакций
  • данные вне блокчейна, такие как выходы, потраченные на маркированные кластеры, и IP-адреса узлов, транслирующих транзакцию
  • анализ объема, времени и других признаков транзакций

Анализ графа транзакций #

Граф транзакций - это простейший способ показать взаимосвязь входов и выходов в нескольких транзакциях.

Граф транзакций в OXT представляет собой направленный ациклический граф (DAG). Графы DAG используются для отображения взаимосвязи между двумя различными объектами. В случае с Биткоином граф транзакций отображает взаимосвязь между UTXO и транзакциями.

Основы построения графа транзакций в OXT #

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

  1. Чтобы получить доступ к графу транзакций, перейдите на страницу TRANSACTION в OXT, введя или кликнув интересующий вас TxID.
  2. Щелкните значок отображения графа транзакций на панели инструментов в левой части экрана.

Страница транзакции в OXT и переход к графу транзакций

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

Однократный клик на транзакции позволяет выделить ее, изменить цвет с синего на зеленый, и отобразить дополнительные опции на панели инструментов (в левой части экрана).

Начальный граф с выделением и панелью инструментов

Значки панели инструментов выполняют следующие действия:

Действия на панели инструментов графа транзакций

Дважды кликните на транзакции, чтобы полностью раскрыть все UTXO в транзакции. UTXO отображаются в виде “ребер” (линий) со стрелками, указывающими, является ли UTXO входом (направленным в сторону транзакции) или выходом (направленным в сторону от транзакции). На графе также отображается транзакция, создающая входы или потребляющая выходы. Если выход не израсходован, то на конце UTXO будет отображаться незаполненный ромб.

Полностью развернутая транзакция

Двойной щелчок или полное развертывание транзакции может сделать граф транзакций зашумленным и трудночитаемым. Чтобы свести беспорядок к минимуму, мы предлагаем выборочно разворачивать UTXO. Чтобы выборочно развернуть UTXO, выберите транзакцию и откройте окно с деталями транзакции. Входы и выходы транзакции можно выборочно развернуть, наведя курсор мыши на правую часть текста адреса и выбрав опцию “Expand Tx Graph”.

Выборочное развертывание UTXO

На графе при наведении курсора мыши на вход или выход отображается дополнительная информация об интересующем объекте без необходимости раскрытия вкладки с деталями транзакции.

Вес линий на графе транзакций и предварительный просмотр

Граф транзакций OXT также поможет автоматически обрабатывать некоторую дополнительную информацию. Транзакции и UTXO будут иметь разный относительный “вес” в зависимости от их объемов в BTC. Это может быть очень полезно для выявления сдачи и иллюстрации “отслаиваемых цепочек” (Peel Chain), о которых мы подробнее поговорим ниже.

Пример графа транзакций отслаиваемой цепочки (Peel Chain) #

Ниже приведен пример простого графа транзакций.

  1. Перейдите по ссылке на страницу транзакции и откройте граф транзакций.

  2. Выделите транзакцию одинарным кликом мыши.

  3. Откройте окно сведений о транзакции, кликнув соответствующий значок на левой панели инструментов.

Выбранная транзакция и ее детали

  1. Дважды кликните на начальной транзакции, чтобы развернуть все входы и выходы.

  2. Уменьшите масштаб с помощью колеса мыши и переориентируйте граф от самых старых транзакций к новым (слева направо), выбирая и перетаскивая транзакции.

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

За каким выходом мы должны следовать?

Если мы применим эвристику различных типов скриптов (см. часть 1), то определим второй выход как сдачу.

  1. Дважды щелкните на следующей транзакции, которая расходует второй выход из исходной транзакции.

  2. Повторите процесс идентификации сдачи, используя эвристики, представленные в части 1. Разверните еще две транзакции, используя этот процесс.

Пример “отслаиваемой цепочки” (закладка с графом транзакций)

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

Фирмы, занимающиеся наблюдением за блокчейном, пытаются представить их как разновидность подозрительной деятельности, связанной со “структурированием или отмыванием денег”. Хотя, как мы уже описывали в первой части, примерно 50% транзакций с биткоинами - это простые траты с 1 входом и 2 выходами, т.е. совершенно нормальное поведение.

Для наших целей отслаиваемая цепочка - это простой процесс отслеживания активности одного кошелька на протяжении нескольких транзакций.

Отпечаток кошелька и интерпретация графа транзакций #

При дальнейшем взаимодействии с примером отслаиваемой цепочки станут очевидны дополнительные закономерности, свидетельствующие о постоянстве отпечатков (Fingerprint) кошелька. В том числе следующие:

  1. Наибольший выход, отображаемый с помощью функции автоматического определения веса линий в OXT, делает выходы сдачи легко различимыми.
  2. Выходы сдачи всегда оплачиваются на адреса P2PKH.
  3. Выходы сдачи всегда являются вторыми из двух выходов.
  4. На графе не показаны, но также заслуживают внимания неизменные номер версии транзакции (2) и время блокировки (0) на всем графе. Чтобы увидеть эту информацию, щелкните на идентификаторе транзакции в окне с деталями транзакции для перехода на страницу TRANSACTION. Затем выберите вкладку TECHNICAL для отображения номера версии транзакции (TX VERSION) и времени блокировки (NLOCKTIME).
  5. Развернув историю предыдущих или будущих трат на данном графе транзакций, можно обнаружить другие транзакции с аналогичной схемой.

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

  1. Скрипты адресов на входе и выходе
  2. Позиция UTXO сдачи
  3. Номер версии и время блокировки

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

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

Кластеризация кошельков — эвристика владения совместными входами #

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

Большинство Биткоин-кошельков сегодня представляют собой иерархические детерминированные кошельки. Они генерируют один главный приватный ключ, который используется для получения дочерних приватных/публичных ключей и связанных с ними адресов.

Программное обеспечение кошелька, как правило, автоматически создает новый адрес для каждого платежа (UTXO). Если баланс одного UTXO или адреса недостаточен для проведения платежа, кошелек включает дополнительные UTXO/адреса, контролируемые различными закрытыми ключами, необходимые для траты требуемой суммы. Большинство кошельков делают это автоматически, без участия пользователя.

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

Предположение о том, что каждый вход в транзакцию контролируется одним и тем же кошельком, называется эвристикой владения совместными входами (CIOH — Common Input Ownership Heuristic) или, проще говоря, эвристикой объединения входов.

Пример CIOH и кластера

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

ANON - схема кластеризации OXT #

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

Но без дополнительной информации кошелек остается “анонимным”, так как он не связан с деятельностью какого-либо реального субъекта. В результате OXT присваивает каждому новому кластеру префикс ANON, за которым следует номер.

Пример ANON кластера

OXT рассчитывает несколько видов активности кластера, в том числе:

  • Сводку общей активности (баланс, количество транзакций, даты активности, количество адресов)
  • Графики месячной и дневной транзакционной активности, объемов отправленных и полученных BTC, отправленных и полученных UTXO, а также статистику адресов
  • Временная диаграмма активности кластера по дням недели и часам
  • Раздел примечаний, в котором пользователи OXT могут добавить заметки о возможной принадлежности или контексте взаимодействия с неизвестным кластером в ходе исследования.

Общая статистика кластеров в OXT доступна для просмотра без учетной записи. Однако при наличии бесплатной учетной записи OXT (не требующей указания электронной почты) пользователь может получить доступ к дополнительным функциям. При входе в систему доступна статистика кластера, включая ежедневный баланс, ежедневные объемы, списки транзакций, списки адресов и т.д.

Временные паттерны ANON кластера

Вкладка с отображением активности UTXO в ANON кластере

Принадлежность кластеров - от ANON до маркированного сервиса #

Используя CIOH, OXT будет отслеживать активность кластера кошелька в блокчейне. Чтобы приписать кластер кошелька конкретному сервису, необходимо взаимодействовать с ним.

Аналитик может создать учетную запись и отправить BTC на депозитный адрес, предоставленный сервисом. Это даст возможность следить за тратами своих депозитных UTXO. При трате UTXO аналитик может приписать этот адрес и расходуемые вместе с ним выходы к соответствующему идентификатору кластера.

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

Пример маркированного кластера

Применение внешних данных транзакции для обнаружения сдачи #

Для интерпретации обнаружения сдачи может быть использована дополнительная информация, включая “отпечатки” кошельков, время трат UTXO и кластеризацию выходов.

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

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

Пример простой траты с платежом на биржу

Наиболее важным аспектом CIOH является не то, как он используется для нарушения приватности отдельных пользователей, а то, как кластеризация кошельков вокруг централизованных сервисов негативно и существенно влияет на конфиденциальность графа транзакций сети Биткоин.

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

Обзор #

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

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

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

В части 3 рассматриваются основные концепции повышения приватности в сети Биткоин, включая:

  1. Случайный отпечаток кошелька для защиты от обнаружения сдачи.
  2. Движения UTXO и фундаментальная связь между входами и выходами.
  3. Как CoinJoin с равными выходами решает проблему детерминированности движений UTXO.
  4. Энтропия транзакций.
  5. Как PayJoin преодолевает эвристику владения совместными входами.

В части 4 рассматриваются:

  1. Анализ, требующий “отправной точки”.
  2. Последствия отправки и получения платежей для приватности.
  3. Как существующие методы обеспечения приватности могут смягчить многие из проблем, обсуждаемых в данном руководстве.

Поддержите переводчика #

Поддержать переводчика можно, отправив немного сат в сети Лайтнинг:

LNURL1DP68GURN8GHJ7MRW9E6XJURN9UH8WETVDSKKKMN0WAHZ7MRWW4EXCUP0X9UX2VENXDJN2CTRXSUN2VE3XGCRQPNAPC6


Connect to our relay to leave a comment. Details.
Подключитесь к нашему релею, чтобы оставить комментарий. Подробнее.