Понимание приватности в сети Биткоин

Оригинал 1 части на английском

Оригинал 2 части на английском

Оригинал 3 части на английском

Оригинал 4 части на английском

От переводчика

Данный цикл статей был опубликован разработчиками Samourai Wallet и OXT Research в 2021 году. Практические примеры здесь даны с использованием обозревателей блокчейна OXT (oxt.me) и KYCP (kycp.org), серверы которых были отключены после ареста разработчиков кошелька Samourai в апреле 2024 года. Однако, материал по-прежнему остается весьма полезным для всех, кто стремится детально изучить, как работает слежка за транзакциями в блокчейне и как улучшить свою приватность при взаимодействии с биткоинами. Не смотря на заголовок, эта информация актуальна для любого публичного блокчейна с моделью UTXO. В конце приведены ссылки на другие материалы OXT Research, сохраненные на archive.today.

Часть 1: Анализ цепочки и приватность транзакций

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

Введение

Осознание того, что Биткоин может использоваться для платежей, устойчивых к цензуре, началось в 2011 году с запуском Silk Road и спасением лишенного пожертвований WikiLeaks.

Одновременно с этим получила распространение опасная и недостоверная информация о приватности транзакций в сети Биткоин: “анонимные” платежи.

Такое представление не соответствовало действительности и во многом объяснялось непониманием базовой функциональности Биткоина. Кроме того, в 2011 году за блокчейном почти никто не следил. Но блокчейн — это навсегда.

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

Отслеживаемость — это мейнстрим

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

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

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

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

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

Постановка задачи — псевдонимный Биткоин

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

Однако транзакции в сети Биткоин осуществляются на прозрачные суммы по прозрачным адресам. Адреса — это псевдонимы, отражающие деятельность реального пользователя, а точнее, деятельность его приватного ключа.

Пример Биткоин-транзакции

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

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

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

В широком смысле эта практика стала синонимом терминов “отслеживаемость” и “анализ цепочки”.

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

Если эта деятельность в блокчейне приводит к кластеру кошельков идентифицированного экономического субъекта, исследователи могут получить PII пользователя, связанную с наблюдаемой транзакционной деятельностью.

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

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

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

Эвристики

Эвристики — это эмпирические правила, используемые для принятия решений в условиях неопределенности. Часто они основаны на практических упрощениях. Эвристики, являясь предположениями, основанными на не полных данных, не могут быть на 100% точными.

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

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

Неизрасходованные выходы транзакций (UTXO)

Биткоин-транзакции — это записи о движении биткоинов между адресами.

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

Пользователь создает транзакцию, указывая платежный адрес (адреса) и сумму (суммы) платежа. Это будут выходы созданной транзакции.

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

Неизрасходованные выходы транзакций (UTXO)

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

Примеры транзакций

Существует несколько общих категорий Биткоин-транзакций. Эти категории определяются на основе характеристик входов и выходов транзакций, а также нашего опыта и наблюдаемой маркировки кластеров. Примеры основных типов транзакций приведены ниже.

Простая трата

Транзакции простой траты являются одними из наиболее распространенных типов транзакций и составляют примерно 50% транзакций в сети Биткоин в последних блоках (источник: transactionfee.info).

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

Признаки:

  • Количество входов: 1 (или более)
  • Количество выходов: 2
  • Общая интерпретация: 1 платежный выход, 1 выход сдачи
Пример транзакции простой траты

Свип

“Свип” (Sweep) тратит один UTXO целиком на новый адрес.

Признаки:

  • Количество входов: 1
  • Количество выходов: 1
  • Общая интерпретация: Возможная передача самому себе
Пример “свип”-транзакции

Консолидация

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

Признаки:

  • Количество входов: >1
  • Количество выходов: 1
  • Общая интерпретация: Возможная передача самому себе
Пример консолидационной транзакции

Пакетная трата

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

Признаки:

  • Количество входов: ≥1
  • Количество выходов: много
  • Общая интерпретация: Крупная экономическая деятельность, вероятно, биржа
Пример пакетной траты

Совместные транзакции (CoinJoin)

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

Признаки:

  • Количество входов: много
  • Количество выходов: много
  • Характеристика выходов: Количество идентичных выходов является косвенным показателем количества участников.
Пример CoinJoin-транзакции

Обнаружение сдачи — интерпретации простой траты

В этом разделе мы рассмотрим интерпретации транзакций простой траты (1 вход, 2 выхода). Мы сосредоточимся на наиболее распространенной интерпретации таких транзакций, когда один выход интерпретируется как платеж, а оставшийся выход — как возврат средств на исходный кошелек. Полный список интерпретаций в рамках данной модели представлен в части 3. Цель данного раздела — ознакомить читателя с эвристикой, используемой для оценки простых трат и обнаружения выхода сдачи.

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

Внутренние данные транзакции ограничиваются следующим:

  • суммы (входы, выходы, комиссия майнерам)
  • тип скрипта входного адреса
  • тип скрипта выходного адреса
  • номер версии транзакции
  • время блокировки транзакции
  • возможность замены транзакции с помощью увеличения комиссии (replace-by-fee)

Определение выхода сдачи

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

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

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

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

Повторное использование адреса

Адреса создаются с помощью одного приватного ключа. Многократное использование одного и того же адреса является признаком активности одного и того же приватного ключа.

В простом случае, если один выход осуществляется на новый адрес, а второй выход — на тот же адрес, что и входной адрес, мы знаем, что повторно используемый адрес — это выход сдачи.

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

Пример транзакции с повторным использованием адреса

Эвристика круглого значения суммы платежа

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

Сумма сдачи при простой трате рассчитывается следующим образом:

сумма входа ➖ сумма платежа ➖ размер транзакции (vbyte) ✖️ комиссия сети (sat/vbyte)

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

Пример транзакции с круглым значением суммы платежа

Эвристика различных типов скриптов

Существует несколько типов скриптов Биткоин-адресов. Читателям наиболее знакомы следующие типы скриптов:

  • Pay to pubkey hash (P2PKH): Адреса, начинающиеся с 1
  • Pay to script hash (P2SH): Адреса, начинающиеся с 3
  • Native Segwit (версия 0) (bech32): Адреса, начинающиеся с bc1q

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

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

Пример транзакции с платежным выходом на другой тип скрипта Биткоин-адреса

Эвристика наибольшей суммы выхода

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

Эвристика наибольшей суммы выхода (TxID)

Резюме

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

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

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

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

Введение

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

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

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

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

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

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

  • повторное использование адресов в нескольких транзакциях
  • совместная трата 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. Перейдите по ссылке (TxID) на страницу транзакции и откройте граф транзакций.

  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: Защита от анализа цепочки

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

Введение

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

  1. Преодоление эвристики обнаружения сдачи при простых тратах
  2. Создание неоднозначного графа транзакций с помощью CoinJoin-транзакций с равными выходами
  3. Преодоление CIOH с помощью CoinJoin-транзакций

Модель владения UTXO и неоднозначность простых трат

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

В действительности простая трата имеет множество дополнительных интерпретаций, основанных на “модели владения” UTXO. Модель владения позволяет определить принадлежность входов и выходов транзакции. Полная интерпретация владения UTXO для транзакции с 1 входом и 2 выходами показана на рисунке ниже.

Модель владения UTXO при простой трате

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

Типичное поведение пользователя делает наиболее вероятными интерпретации 1 и 2. Интерпретации 3 и 4 возможны, хотя многие Биткоин-кошельки не имеют функции пакетной траты. Интерпретация 5 встречается редко из-за дополнительных комиссий и увеличения количества UTXO.

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

Преодоление эвристик обнаружения сдачи

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

Неоднозначная простая трата (TxID)

Защита от эвристики круглого значения суммы платежа

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

Идентичный тип скрипта в выходе сдачи

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

Случайное изменение положения выхода сдачи

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

Оценка транзакции с учетом внешних данных

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

Исходя из графа транзакций и будущих трат UTXO, какой выход может быть платежом? Имеют ли адреса в этой транзакции какую-либо историю повторного использования?

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

Движения UTXO и детерминированные траты

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

Связь между входами и выходами транзакции существует всегда. Эти внутритранзакционные отношения UTXO можно представить как “движения”. При этом BTC, расходуемые входными UTXO, передаются выходным UTXO.

Визуализация движения UTXO с помощью графа транзакций OXT (TxID)

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

Связь между входами и выходами может быть отображена на графе транзакций OXT путем выбора входа или выхода. Визуализатор транзакций на сайте kycp.org также показывает внутритранзакционные связи.

Визуализация движения UTXO с помощью KYCP (TxID)

Нарушение связей — недетерминированные транзакции

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

Нарушение детерминированных связей и создание неоднозначности графа требует особой структуры транзакций. Детерминизм зависит от количества входов и выходов транзакции, а также от количества BTC в каждом UTXO.

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

Пример серии транзакций с несколькими входами и выходами

Несмотря на зашумленность графа транзакций, детерминированные связи между UTXO транзакций с несколькими входами и выходами все же могут быть определены. Первым эту концепцию ввел Кристов Атлас в своем инструменте и алгоритме “CoinJoin Sudoku”.

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

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

Сегодня концепция CoinJoin Sudoku была расширена алгоритмом Больцмана, созданным LaurentMT, ведущим разработчиком OXT. Алгоритм Больцмана использует концепцию CoinJoin Sudoku для оценки транзакций по нескольким параметрам, связанным с приватностью.

Для правильно построенных CoinJoin-транзакций связь между входами и равными выходами все еще существует, однако эти связи являются вероятностными, а не детерминированными. Алгоритм Больцмана вычисляет матрицу вероятностей связей (LPM — Link Probability Matrix) для зависимостей между входами и выходами транзакции.

Результат LPM транзакции можно найти на странице TRANSACTION в OXT. На вкладке INPUTS & OUTPUTS подмножество связей между входом и каждым выходом можно увидеть, кликнув по значку “цепочки” справа от нужного UTXO.

Подмножество матриц связей в OXT (TxID)

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

Движения UTXO и LPM в KYCP (TxID)

Энтропия — CoinJoin с равными выходами, и когда уместно применять CIOH

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

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

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

Транзакция с равными выходами и детерминированными связями (TxID)

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

Алгоритм Больцмана эффективно использует анализ суммы подмножеств, чтобы задать вопрос: Существует ли множество способов (интерпретаций), которыми входы транзакции могли бы оплатить ее выходы?

Если транзакция имеет несколько интерпретаций движений UTXO, то энтропия транзакции будет больше или равна 0. Понятие энтропии берет свое начало в термодинамической ментальной модели. В этой модели количество интерпретаций можно рассматривать как микросостояния общего макросостояния транзакции.

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

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

Оценка CoinJoin в кошельке DarkWallet с помощью KYCP (TxID)

Интерпретация транзакций в KYCP

KYCP содержит значительный объем информации о транзакциях, включая повторное использование адресов в рамках транзакции, детерминированные и вероятностные связи, а также слияния входов и выходов. Приведенный пример транзакции — это CoinJoin-транзакция в кошельке DarkWallet. Детерминированные связи для одинаковых выходов нарушены, но детерминированные связи между входами и “выходами сдачи” все еще существуют. Также обратите внимание, что выходы 1 и 3 отправляются (объединяются) в одну и ту же будущую транзакцию. Это указывает на то, что одни и те же пользователи/кошельки снова смешивают монеты.

CoinJoin — равные выходы (шифрование) против PayJoin (стеганография)

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

Граф CoinJoin-транзакции в Whirlpool (TxID)

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

Другой тип CoinJoin называется PayJoin, или pay-to-end-point, или Stowaway в Samourai Wallet. Транзакции PayJoin представляют собой совместную транзакцию между пользователем, совершающим платеж, и пользователем, получающим платеж. В блокчейне многие PayJoin не имеют ни различимых паттернов, ни применимых эвристик.

По сути, PayJoin-транзакции неотличимы от обычной транзакции, в которой пользователь тратит несколько UTXO. Не имея каких-либо отличительных признаков в блокчейне, аналитик может неверно применить CIOH к таким типам транзакций и ошибочно предположить, что каждый из входов контролируется одним и тем же пользователем.

Таким образом, транзакции PayJoin представляют собой стеганографическую технику. Стеганография — это процесс сокрытия секретного сообщения (факта CoinJoin) в обычных данных (обычная транзакция с несколькими входами). Поскольку PayJoin не имеют достоверного следа в блокчейне, они часто приводят к ложным кластерам CIOH.

Другие техники — “разрыв” графа транзакций

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

Эта техника также способствовала популяризации понятия “испорченности”, когда пользователи миксера могут неосознанно получить в рамках обмена UTXO с некоторой “проблемной историей”. Заинтересованные читатели могут ознакомиться с нашими оценками двух крупнейших кастодиальных миксеров (ChipMixer и Blender) из нашего расследования взлома KuCoin.

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

Резюме

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

Мы выяснили, что эвристика обнаружения сдачи может быть преодолена путем:

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

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

Транзакции PayJoin также являются совместными транзакциями. Они вовлекают плательщика и получателя в создание транзакции и имеют такой же “отпечаток”, как и обычные транзакции с несколькими входами. Не имея идентифицируемого отпечатка, эти транзакции преодолевают CIOH.

Часть 4: Применение концепций анализа цепочки для улучшения приватности пользователей

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

Введение

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

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

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

Потерянные в блокчейне — отправные точки и нарушение псевдонимности

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

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

Для начинающих аналитиков обычно необходим некоторый “контекст” для проведения анализа. Таким ценным контекстом часто является анализ собственных транзакций. Пользователям, оценивающим историю своих транзакций через сторонний обозреватель блокчейна, рекомендуется использовать VPN или браузер Tor для предотвращения связи своего IP-адреса с информацией о транзакциях.

Рабочий процесс в обозревателе OXT — адреса в качестве отправных точек

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

  1. Войдите в свою учетную запись OXT. Учетные записи бесплатны и не требуют для создания какой-либо персональной информации.

  2. Введите нужный адрес в строку поиска.

Запрос адреса в OXT
  1. Перейдите на вкладку TRANSACTIONS
Вкладка TRANSACTIONS на странице ADDRESS в OXT
  1. Выберите нужную транзакцию. Пользователи должны учитывать, что по начальному адресу может быть проведено несколько платежей. Если по адресу было проведено несколько транзакций, необходимо выбрать нужную транзакцию, исходя из объема и даты/времени проведения транзакций.

  2. После этого откроется страница транзакции.

Страница с деталями транзакции и инструментом создания графа
  1. Откройте граф транзакции, чтобы начать оценку движений UTXO.

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

Направления анализа — история и будущие траты UTXO

Аналитики, получив исходную транзакцию и UTXO, могут вести исследование в двух направлениях.

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

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

Направление исследования — источник и место назначения

Не следует отслеживать движение UTXO в различных кастодиальных сервисах. Маловероятно, что депозитный UTXO будет использован для выплат объекту, внесшему депозит.

Последствия отправки и получения платежей для приватности

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

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

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

Рассмотренные ниже приемы призваны смягчить негативные побочные эффекты прозрачности Биткоина.

Транзакции для повышения приватности в кошельке Samourai

Большая часть анализа цепочки основана на следующих основных концепциях:

  • Аналитики нуждаются в отправной точке
  • Определение графа транзакций
  • Обнаружение сдачи
  • Кластеризация отдельных адресов по эвристике владения совместными входами

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

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

Скрытые адреса — отказ от отправной точки

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

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

Вместо обмена прямыми адресами для получения платежей пользователи могут обмениваться “скрытыми адресами”. В основе “скрытых адресов” лежат концепции, заимствованные из протокола обмена ключами Диффи-Хеллмана — важнейшей криптографической концепции, лежащей в основе TLS/SSL, одной из наиболее важных форм криптографии, используемой в защищенных коммуникациях в интернете.

Реализация скрытых адресов в Samourai Wallet основана на предложении BIP47, выдвинутом проектом Open Bitcoin Privacy Project. Многоразовые платежные коды BIP47 позволяют отправителю создавать неограниченное количество уникальных Биткоин-адресов для платежей адресату без необходимости получателю быть онлайн.

Архитектура платежного кода BIP47 v1 (Источник)

Многоразовые платежные коды лишают аналитиков “простой” стартовой точки в блокчейне Биткоина. Более подробную информацию о многоразовом платежном коде в Samourai Wallet можно найти здесь.

Контроль монет — разделение UTXO

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

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

  • Маркировка полученных платежных UTXO. Как минимум, маркировка должна включать информацию об отправителе и причине платежа.
  • Пометка “Не тратить”. Чтобы кошелек не смог случайно включить UTXO в будущий платеж, UTXO можно сделать нерасходуемыми для включения в будущие платежи.
  • Отправка отдельных UTXO (выборочная активация). UTXO можно тратить выборочно.
Контроль монет в Samourai Wallet

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

Ricochet — увеличение дистанции

Ricochet — это простой инструмент, который автоматически добавляет “скачки” (хопы), или фиктивные транзакции, между UTXO отправителя и назначением платежа. Ricochet-транзакции не скрывают источник средств и не нарушают граф транзакций. Однако эти транзакции увеличивают дистанцию между назначением платежа и предыдущей историей UTXO.

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

Пример Ricochet-транзакции

Текущая версия Ricochet производит четыре дополнительных скачка. Более “динамичный” Ricochet с изменяемым количеством хопов планируется в будущих обновлениях. Более подробную информацию о Ricochet можно найти здесь.

Stonewall и Stonewall x2 — безопасные платежи

Stonewall и Stonewall x2 используют один и тот же алгоритм выбора UTXO для создания транзакций со свойствами CoinJoin. Stonewall — это имитация CoinJoin, использующая входы из одного кошелька. Stonewall x2 — это “настоящий” CoinJoin, в котором используются входы от двух взаимодействующих пользователей/кошельков.

Использование одного и того же алгоритма означает, что эти транзакции имеют идентичные отпечатки в блокчейне и неразличимы для сторонних наблюдателей. Таким образом, аналитики должны учитывать возможность того, что любая Stonewall-транзакция может являться “настоящим” CoinJoin.

Пример Stonewall-транзакции

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

Благодаря свойствам CoinJoin, Stonewall-транзакции способны преодолеть эвристику круглого значения суммы платежа, которая не может быть побеждена простой тратой. Stonewall преодолевает эту эвристику путем создания транзакции с “фиктивным” выходом, равным предполагаемой сумме платежа.

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

Stowaway — преодоление CIOH

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

Пример Stowaway-транзакции

PayJoin-транзакции, как правило, не имеют отличимого отпечатка в блокчейне. При построении транзакции используются два кошелька для включения входов от отправителя и получателя платежа. Это преодолевает CIOH и создает “ложный кластер”. Вследствие того, что получатель вносит вход в PayJoin-транзакцию, истинная сумма платежа в транзакции также скрывается.

Whirlpool — создание приватности в будущем

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

Whirlpool является единственной реализацией CoinJoin со 100% энтропией ZeroLink. Whirlpool не включает в транзакцию “несмешанную сдачу”, которая может быть использована для дальнейшего отслеживания действий пользователя.

Пример Whirlpool-транзакции

Процесс Whirlpool-транзакции начинается с транзакции Tx0, которая оплачивает комиссию координатора, создает готовые к смешиванию UTXO (Premix), равные номиналу пула плюс комиссия майнерам, и отдельный UTXO сдачи.

Входы для Tx0 следует выбирать с осторожностью, чтобы избежать объединения UTXO из разных источников. Совмещение нескольких источников входов позволяет выявить владение объединяемыми входами. UTXO сдачи также должны обрабатываться с осторожностью, чтобы не связывать напрямую любые будущие траты.

Пример транзакции Tx0

После CoinJoin и разрыва связей между исходными UTXO (Premix) и смешанными UTXO (Postmix) получатели платежей могут быть уверены, что отправители платежей не смогут достоверно отследить дальнейшие траты их платежных UTXO.

Резюме

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

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

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

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

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

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

К таким шагам относятся:

  • отказ от привязки действий в блокчейне к личности в интернете
  • избегание повторного использования адресов
  • разделение UTXO с разной историей
  • обеспечение приватности в будущем с помощью CoinJoin
  • использование рассмотренных ранее расширенных инструментов траты для преодоления эвристик анализа цепочки.

Грамотное использование этих приемов может позволить пользователям получить привычный базовый уровень приватности.

Заключение

Многие читатели просили подготовить общее руководство по приватности в сети Биткоин и OXT. Мы надеемся, что это руководство станет для вас отправной точкой для дальнейшего расширения вашего понимания приватности Биткоина.

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

Отзывы, комментарии и пожелания о создании дополнительных руководств приветствуются.

Спасибо за прочтение и оставайтесь в безопасности.


— Исследовательская команда OXT


Ссылки на другие материалы OXT Research