27 марта 2020

Обзор процесса CoinJoin

Справка

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

Проблема

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

Некоторые, так называемые, “анализирующие цепочку” компании специализируются на подобном анализе Биткоин-блокчейна. Одними из известных примеров являются Chainalysis & Crystal.

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

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

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

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

Решение

К счастью, в 2013 году Грег Максвелл представил инновационный метод запутывания ончейн связей между неизрасходованными транзакциями (utxo). Он назвал этот метод CoinJoin.

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

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

Рассмотрим следующий пример;

Элис, Боб и Чарли — три отдельных пользователя сети Биткоин, собирающиеся смешать свои utxo при помощи CoinJoin.

Ввод 1: 0.1 BTC utxo Элис с биржи.

Ввод 2: 0.1 BTC utxo Боба от продажи бейсбольной карточки онлайн.

Ввод 3: 0.1 BTC utxo Чарли, который он хочет однажды подарить своей дочери.

Справочная информация о причинах использования CoinJoin каждым участником:

  • Элис не хочет, чтобы биржа отслеживала ее расходы.
  • Боб не хочет, чтобы бейсбольный фанат видел, сколько у него биткоинов.
  • Чарли живет в деспотической стране, где обладание биткоином незаконно.

Транзакция CoinJoin принимает эти три ввода и создает транзакцию, которая создает 3 новых вывода.

Стороне, анализирующей данную транзакцию, невозможно определить какому из пользователей принадлежит тот или иной вывод.

Детали

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

Давайте разобьем процесс участия в CoinJoin на 3 стадии.

  • Этап 1 | Премикс: Как сохранить конфиденциальность при добавлении входных данных в CoinJoin.
  • Этап 2 | Микс: Как сохранить конфиденциальность во время самой процедуры CoinJoin.
  • Этап 3 | Пост-микс: Как сохранить конфиденциальность при использовании транзакций после процедуры CoinJoin.

Этап 1 | Премикс

Я в ближайшем времени добавлю информацию о первом этапе.

Этап 2 | Микс

Сохранение конфиденциальности во время процедуры CoinJoin.

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

Координационный подход 1

(ПРЕДУПРЕЖДЕНИЕ: **НЕ ИСПОЛЬЗУЙТЕ ДАННУЮ ПРАКТИКУ**)

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

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

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

  • Потеря конфиденциальности: При таком подходе участник, координирующий CoinJoin, ДОЛЖЕН знать все связи между входными и выходными данными. Таким образом, остальные участники CoinJoin доверяют координирующему свою конфиденциальность.
  • Потеря биткоинов: При таком подходе участник, координирующий CoinJoin, ДОЛЖЕН иметь доступ к каждому вводу. Таким образом, на время процесса CoinJoin остальные участники доверяют координирующему свои биткоины.

Координационный подход 2a

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

При таком подходе существует явный и реальный риск потери конфиденциальности.

  • Потеря конфиденциальности: При данном подходе участник, координирующий процесс CoinJoin, ДОЛЖЕН знать все связи между входными и выходными данными. Таким образом, другие члены CoinJoin доверяют этому участнику свою конфиденциальность.

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

Это не означает, что для инструмента CoinJoin, использующего данный подход, не представляется возможным украсть/потерять монеты. Этот подход, скорее, предоставляет ВОЗМОЖНОСТЬ проектировки инструмента CoinJoin таким образом, чтобы исключить риск потери биткоина.

Координационный подход 2б

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

Риски потери приватности и биткоинов при использовании данного подхода аналогичны таковым при подходе 2a.

Координационный подход 3

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

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

  • Иметь полный контроль над своими монетами в любое время.
  • Быть единственным обладателем информации о собственных выходных данных.

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

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

**ВНИМАНИЕ**

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

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

Этап 3 | Пост-Микс

В ближайшее время я добавлю информацию о третьем этапе.

Реализации

Имело место много проектов, которые пытались сделать CoinJoin неизрасходованных транзакций пользователей возможным. В настоящее время активны 3 из них:

Я постараюсь вкратце описать каждый инструмент.

Joinmarket

Основной принцип работы JoinMarket основан на том, что рынки являются эффективным способом стимулирования пользователей к CoinJoin.

  • Этап 1 | Пре-микс: Блокчейн-коммуникации осуществляются через Bitcoin Core и, опционально, через Tor.
  • Этап 2 | Микс: координационный подход 2/a
  • Этап 3 | Пост-микс : Bitcoin Core

Википедия исчерпывающе описывает данный процесс:

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


Модель [JoinMarket] основывается на предоставлении возможности оплаты CoinJoin-операций. С одной стороны — обладающие низким временны́м предпочтением участники CoinJoin, собирающие комиссию с участников, желающих присоединиться к процессу. Их называют маркет-мейкерами. С другой стороны — участники CoinJoin с высоким временны́м предпочтением, которые готовы заплатить за возможность мгновенно принять участие в операции. Этих участников называют маркет-тейкеры.

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

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

Wasabi

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

Этап 1 | Пре-микс: Всё общение осуществляется через Tor и Блок-фильтры BIP 158 (см. примечание).

Этап 2 | Микс: координационный подход 3

Этап 3 | Пост-микс : utxo маркировка и контроль монет, трансляция посредством сети Tor через случайную ноду

Из документов Wasabi:

Координатор Wasabi пришлет вам […] блок-фильтры, и вы локально проверите, содержит ли блок транзакцию с вашими монетами. Если нет, то фильтр сохраняется для последующего использования и синхронизации новых кошельков. Если да, то кошелек подключится к случайной пиринговой полной Биткоин-ноде чтобы запросить весь блок. […] Для загрузки каждого блока Wasabi устанавливает новую уникальную учетную запись Tor. Это означает, что выявить факт принадлежности загрузки всех блоков одному субъекту будет сложно.

Примечание: использование BIP 158 не то же самое, что и использование собственной ноды. Вы вынуждены доверять, что:

  • Сервер Wasabi предоставляет вам верный фильтр
  • Сервер Wasabi не скрывает никаких фильтров

Whirlpool

Whirlpool — это инструмент для смешивания, который расширяет функциональность приложения Samourai Wallet (SW) для Android и включает в себя возможности CoinJoin.

Этап 1 | Пре-микс : Вся коммуникация осуществляется через Tor, возможность присоединения к собственной ноде или ноде разработчиков SW (см. примечание).

Этап 2 | Микс: координационный подход 3

Этап 3 | Пост-микс : utxo маркировка и контроль монет, трансляция посредством сетиу Tor через вашу собственную ноду или ноду разработчиков SW (см. примечание).

Примечание по использованию собственной ноды или ноды разработчиков SW:

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

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

Обсудить в Discord!