Классификация и оценка методов микширования
Исследование, посвященное методам микширования монет в блокчейне Биткойна: их классификации, сравнению и оценке.
Блокчейн — революционная технология, предлагающая множество преимуществ: прозрачность, отслеживаемость и неизменность данных. С другой стороны этот уникальный набор качеств может угрожать конфиденциальности пользователей. В отличие от традиционных финансовых систем, в Биткойне транзакции публичны и записываются в блокчейн навсегда, а доступ к полной истории записей есть у любого интересующегося. Несмотря на использование для платежей псевдонимных идентификаторов, наблюдатель — в том числе злоумышленник — может раскрыть реальные данные пользователей с помощью набора эвристических правил, применяемых для выявления возможных связей между транзакциями, их отправителями и получателями и потребляемыми услугами (например, онлайн-покупками).
В этой связи сообществом было предложено множество подходов для снижения финансовой прозрачности и повышения анонимности пользователей Биткойна. Методы варьируются от использования сервисов микширования «монет» до офчейн-транзакций, решающих различные проблемы конфиденциальности. Эта статья посвящена методам микширования монет в блокчейне Биткойна: их классификации, сравнении и оценке. Мы исследуем и опишем их ограничения и обратим внимание на новые возникающие проблемы и вызовы.
Структура статьи:
Содержание:
Введение
Дизайн первой системы был опубликован Сатоши Накамото в конце 2008 года [45]. С тех пор число вариантов использования блокчейн-технологий далеко за рамками исключительно криптовалют растет экспоненциально. Это и цепочки поставок, здравоохранение, системы идентификации, и модные сегодня веб 3.0 и NFT.
В отличие от традиционных систем, которые полагаются на централизованные организации, в основе блокчейн-технологий лежит реестр данных, неизменность записей в котором гарантируется распределенной сетью узлов. В частности, в открытых блокчейнах, таких как Биткойн, любой может присоединиться к сети, получить доступ к истории записей и проверить корректность всех транзакций начиная с блока генезиса. Это считается одной из ключевых особенностей технологии блокчейн, однако такая прозрачность может угрожать финансовой конфиденциальности пользователей.
Это связано с тем, что все записи в блокчейне Биткойна хранятся в незашифрованном виде и открыты для любого интересующегося. Доступная таким образом информация включает (не ограничиваясь этим) адреса отправителя и получателя, а также суммы транзакций. Несмотря на использование открытых ключей в качестве псевдонимных идентификаторов, конфиденциальность пользователей все еще может быть нарушена. Хотя сама по себе каждая транзакция раскрывает довольно мало информации, исследования показали, что нахождение связей между множеством транзакций подчас позволяет раскрыть фактические личности пользователей, взаимодействия между ними и их финансовые данные. Раскрытие такой информации может иметь нежелательные последствия: привлекать преступников, способствовать распространению вымогательства или дискриминации и/или служить источником конкурентного преимущества.
В доступной литературе есть несколько исследований конфиденциальности Биткойна, авторы которых сумели воспроизвести и
проанализировать цепочку взаимодействий между пользователями, определить отношения между ними и раскрыть реальные
личности этих пользователей [49, 42, 28, 35]. Это, в свою очередь, побудило исследователей как в академических кругах, так и внутри отрасли, искать способы противодействия утечкам пользовательских данных, что привело к появлению множества (i) новых проектов, изначально ориентированных на конфиденциальность, таких как Zcash или Monero, и (ii) предложений по улучшению конфиденциальности в Биткойне.
Эти два подхода классифицируются соответственно как (i) предусмотренная на уровне протокола и (ii) реализуемая в дополнениях конфиденциальность данных [55]. В данном исследовании мы рассматриваем только методы повышения конфиденциальности, предложенные для Биткойна, и, конкретнее, основанные на микшировании «монет» [27]. В частности, мы оценим и сравним существующие подходы к микшированию, проанализируем их конфиденциальность, безопасность и эффективность, обратив также внимание на возможность их реализации в блокчейне Биткойна в нынешнем его виде. Исследование отвечает на следующие вопросы:
Вклад этой работы в общий корпус исследований имеет два аспекта: (i) обзор доступной литературы по заданной теме и (ii) сравнительная оценка существующих методов микширования в Биткойне.
Что касается структуры статьи, то в первой части мы кратко опишем разновидности атак деанонимизации пользователей Биткойна.
(От переводчика: рекомендую также обратить внимание на эту статью с руководством по анализу графа транзакций и практическими рекомендациями по повышению собственной конфиденциальности при пользовании Биткойном.)
Во второй части перечислим и обсудим существующие методы микширования, в третьей оценим их в соответствии с предварительно определенными критериями. В заключении мы подведем итоги исследования и обрисуем основные проблемы и вызовы, возникающие перед технологиями микширования сегодня.
(От переводчика: за разъяснением концепций и терминов из области Биткойна и блокчейн-технологий адресую читателя к глоссарию БитНовостей.)
Контекст: деанонимизация пользователей в Биткойне
Публичная доступность блокчейна Биткойна, помимо преимуществ, создает проблемы конфиденциальности для пользователей. Действительно, с помощью эвристических правил в сочетании с информацией из других источников — таких как форумы, интернет-магазины и т.п. — можно эффективно находить взаимосвязи между транзакциями и адресами, объединять их в кластеры и даже идентифицировать пользователей.
В этом разделе мы перечислим основные эвристики, используемые для деанонимизации пользователей Биткойна, а затем рассмотрим недавние исследования известных атак на его блокчейн, в которых оказалось возможно скомпрометировать анонимность пользователей.
В области блокчейн-технологий существует некоторая неопределенность в отношении термина «анонимность». Возьмем определение, предложенное Андреасом Пфицманом и Маритом Хансеном [48]: «Субъекта нельзя идентифицировать среди множества других субъектов в анонимном множестве».
Биткойн не является полностью анонимным, и множество исследований [49, 42, 28, 16, 35] представили примеры деанонимизации пользователей, в которых биткойн-адреса оказалось возможно связать с их реальными владельцами. Перечислим некоторые наиболее известные методы деанонимизации [9, 49].
(От переводчика: подробнее и с наглядными примерами о перечисленных методах можно прочесть также в этой статье.)
Эвристика по общему владению входами. Когда транзакция имеет несколько входов, каждый из них должен быть подписан соответствующей цифровой подписью. Предполагается, что все входы транзакции принадлежат одному пользователю, поскольку обычно несколько пользователей не объединяются для создания одной транзакции [9]. С учетом этого, эвристика по общему владению входами приписывает владение всеми входами транзакции одному пользователю. Согласно [28], эта эвристика позволяет идентифицировать почти 69% адресов из клиентских кошельков.
Идентификация адресов для сдачи. Когда сумма входов транзакции превышает сумму ее выходов, создается новый адрес для получения сдачи, на который отправитель получает соответствующий остаток — сдачу [18]. Эта эвристика подразумевает, что адрес для сдачи принадлежит тому же субъекту, что и адреса-источники входов транзакции [9].
Граф транзакций. Граф транзакций может наглядно продемонстрировать поток биткойнов между пользователями. Биткойн-адреса представлены в виде узлов графа, а транзакции связывают адреса входов с адресами выходов, образуя ребра графа [19]. Поскольку вход транзакции связан с выходом предыдущей транзакции, становится возможным определить взаимосвязи между транзакциями [43]. Кроме того, большинство транзакций имеют адреса для сдачи, которые контролируются тем же псевдонимным отправителем, что и входы, а значит, могут быть связаны с тем же субъектом на графе транзакций. По результатам взаимодействия с сервисами, требующими идентификации реальной личности пользователей, биткойн-адреса могут быть связаны с этими реальными идентификационными данными, и, следовательно, появляется возможность проследить по графу взаимосвязи между предыдущими транзакциями пользователей. Поэтому, как отмечается также в [31], использование нового адреса для каждой транзакции, хоть и повышает конфиденциальность, но само по себе не может гарантировать отсутствие утечки конфиденциальных данных. Еще одна проблема заключается в том, что отправителю известен адрес получателя, и, следовательно, он может идентифицировать дальнейшие транзакции получателя и определить его контрагентов.
Установление связей между адресами одного типа и повторное использование адресов. Адреса, используемые в транзакциях неоднократно, можно кластеризовать как принадлежащие одному субъекту сети.
Атаки по сторонним каналам. Атаки по сторонним каналам [9] — через корреляцию по времени, суммам и информации на уровне сети [8] — могут нарушать конфиденциальность транзакций и пользователей.
Дополнительная информация. Для маркировки адресов может быть использована сторонняя дополнительная информация [9] — с форумов, от продавцов, из поисковых систем и т.д.
Исследования, посвященные деанонимизации пользователей Биткойна
В последние годы было опубликовано несколько исследований на тему деанонимизации пользователей блокчейна с использованием описанных выше методов. Мейклджон с соавт. [42] кластеризовали биткойн-кошельки на основе признаков общей принадлежности, а затем использовали атаки повторной идентификации для классификации стоящих за кластерами пользователей. Они пришли к выводу, что информация, собираемая биткойн-компаниями, такими как биржи, а также возможность маркировать денежные потоки в адрес этих компаний, ограничивают возможности для использования Биткойна в противозаконной деятельности. Рейд и Харриган [49] проанализировали анонимность в Биткойне на основе топологической структуры двух сетей, полученных из публичной истории транзакций Биткойна, и показали, как различные типы утечки данных могут способствовать деанонимизации пользователей Биткойна. В своем исследовании они использовали анализ потоков и временной анализ, с помощью которых идентифицировали более 60% пользователей в визуализации и раскрыли взаимоотношения между ними. Харриган и Фреттер [28] исследовали причины эффективности простых эвристик в Биткойне. Они рассматривали влияние повторного использования адресов, объединения, которого можно избежать, суперкластеров с высокой централизацией и роста кластеров адресов. Ермилов и соавт. [16] в своей модели кластеризации дополнили эвристики на основе ончейн-данных внешней информацией, полученной вне блокчейна. Журдан с соавт. [35] определили функции для классификации субъектов сети с точки зрения соседства на графе транзакций, а также на основе централизации и временных особенностей блокчейна Биткойна, и с их помощью классифицировали адреса по различным категориям, включая биржи, провайдеров азартных игр, сервисы общего профиля и даркнет.
Результаты перечисленных исследований подчеркивают необходимость повышения конфиденциальности блокчейна с помощью дополнительных эффективных методов и технологий. В следующем разделе рассмотрим существующие методы микширования.
Методы микширования
Транзакции состоят из входов и выходов, которые можно отслеживать с помощью разнообразных аналитических инструментов. Механизм микширования скрывает корреляцию между входами и выходами, так что аналитик не может отследить вход, опираясь на данные в блокчейне. Связи между адресами получателя, а также сумма транзакции, тоже могут быть скрыты с помощью продвинутых методов.
Существуют различные методы микширования, различающиеся с точки зрения конфиденциальности, безопасности и эффективности. Эти методы можно разделить на несколько категорий: централизованные микшеры, атомарные свопы, CoinJoin и производные от него и пороговые подписи. Мы расскажем о них далее в этом разделе.
На рисунке 1 представлена классификация методов микширования и их эволюция:
Но сначала опишем методологию, принятую для идентификации, отбора и обобщения предметов этого исследования.
Методология исследования
Мы руководствовались общими рекомендациями в отношении организации исследований, включая (i) определение предметов исследования, (ii) поиск и отбор литературы и (iii) анализ и обобщение извлеченных данных.
Для поиска исследовательских материалов по теме в базах данных IEEE xplore, Springer и Science Direct использовали ключевые слова: blockchain, privacy, mixing, tumbler, tumbling и bitcoin. Провели также поиск неопубликованных работ в arxiv.org и eprint.iacr.org. Кроме того, выполнили прямой поиск существующих реализаций методов микширования на GitHub.
В общей сложности в результате поиска мы получили 869 научных работ. Прочитали все названия и отбросили статьи, не относящиеся к теме исследования. Следующим этапом прочитали тезисы всех работ и также отбросили статьи, не относящиеся к теме исследования. Мы рассматривали только статьи, опубликованные с 2009 по 2020 год. Дубликаты и работы, не рассматривающие подробно методы микширования или не связанные с Биткойном, также были отброшены.
Литература для систематизации отобрана на основе следующих критериев, основываясь на [1]: (i) область применения: метод совместим с блокчейном Биткойна в крайнем случае через софтфорк; (ii) «подрывной» потенциал: описываемый в исследовании метод представляет собой новую область, исследуемую сообществом; (iii) ценность: уникальность метода исследования решений в области сохранения конфиденциальности.
Второй аспект вклада, вносимого нашим исследованием, состоит в сравнительной оценке выбранных методов микширования по критериям, определенным в следующих параграфах. Методы микширования оценивались по трем основным категориям: безопасность, конфиденциальность и эффективность. В имеющейся литературе предлагается несколько критериев, и мы в своем выборе ориентировались на широко используемые в исследованиях последнего времени.
Централизованные микшеры
В этом подразделе мы исследуем методы микширования, основанные на работе централизованного посредника, где отправители отправляют свои монеты в централизованный сервис, который перемешивает монеты, полученные от различных отправителей, и рассылает соответствующим получателям.
Сайты-микшеры
Идея микширования первоначально была предложена Дэвидом Чаумом [13] в 1981 году для обеспечения анонимного обмена сообщениями по протоколу электронной почты, не полагаясь на универсального доверенного посредника. Аналогичные методы в последние годы используются для решения проблемы анонимности в блокчейнах. Последние используют сети микширования — например, сайты-микшеры — для обфускации связей между отправителями и получателями.
Например, если Алиса (A), Боб (B) и Кэрол (C) хотят отправить свои монеты получателям A’, B’ и C’ соответственно, то они могут совместно использовать для своих транзакций микшер (рис. 2). Последний принимает монеты отправителей в равных количествах, смешивает их и пересылает на адреса получателей. По опубликованным транзакциям нельзя определить, отправила ли Алиса свои монеты получателю A’, B’ или C’.
На большинстве сайтов-микшеров пользователям предлагается заполнить форму, в которой они указывают адрес получателя и выбирают предпочитаемую задержку микширования. Затем микшер генерирует новый адрес для получения монет от отправителя. Этот адрес для депозита отображается вместе с комиссией за микширование, комиссией за транзакцию и условиями пользования сервисом.
MixCoin
Протокол MixCoin [9] был предложен Бонне и соавт. как вариант биткойн-микшера, предотвращающий кражу монет в сервисах микширования, и подразумевает предоставление цифровой подписи микшера в качестве гарантии на случай злонамеренного поведения сервиса. Согласно протоколу, микшер должен подписать параметры микширования отправителя (например, адрес получателя, предпочтительные сроки трансфера монет, сумму, комиссию микшера). В случае, если микшер не пересылает монеты соответствующим получателям, отправитель может опубликовать гарантию. Для любых интересующихся лиц это будет доказывать злонамеренное поведение микшера, что негативно отразится на его репутации.
В MixCoin размер комиссии микшера имеет определяющее значение, поскольку постоянная комиссия при последовательном микшировании может раскрывать транзакции микшера. Для повышения анонимности микширующие транзакции среди всех микшеров имеют стандартный размер, чтобы они выглядели однородно. Объединение в цепочку нескольких микшеров может обеспечить надежную анонимность.
BlindCoin
BlindCoin [58] — это модификация протокола MixCoin, добавляющая в него «слепые» подписи. Слепые подписи были предложены Чаумом [12] для подписи сообщений без раскрытия подписанту их содержания. Использование слепой подписи в BlindCoin скрывает связь между адресами входов и выходов от самого микшера, который дает свою гарантию, предоставляя слепую подпись для адреса получателя. Позже отправитель, используя новый идентификатор, анонимно отправляет микшеру адрес получателя в открытом виде. Микшер отправит монеты на адрес получателя, поскольку видит на том собственную подпись.
LockMix
LockMix [2] — это централизованный микшер, модифицирующий протокол BlindCoin [58], предотвращающая кражу монет микшером с помощью многосторонней цифровой подписи (мультиподписи).
Для запуска протокола микшер объявляет в сеть параметры, включая пользовательский депозит, сумму, период ожидания (в блоках) и комиссию микшера. Алиса добавляет желаемые значения времени, которые считаются крайними сроками для шагов протокола, а также заслепленный адрес получателя и свой адрес KA для создания адреса с мультиподписью. Микшер создает адрес с мультиподписью 2-из-2 (KAM) с адресом Алисы (KA) и собственным адресом микшера (KM). Микшер добавляет адрес с мультиподписью и свой эскроу-адрес (условного депонирования), подписывает все параметры и отправляет их обратно Алисе. Затем Алиса вносит сумму, превышающую сумму микширования, на KAM в качестве залога, расслепляет адрес получателя и отправляет в микшер. Микшер отправляет монеты получателю, Алиса ждет согласованное количество подтверждений, а затем отправляет монеты на эскроу-адрес, предоставленный микшером. Наконец, Алиса создает с адреса с мультиподписью 2-из-2 транзакцию, в которой переводит в адрес микшера комиссию за микширование, а остаток возвращает себе. Алиса и микшер оба должны подписать эту транзакцию, чтобы получить свои монеты.
Хотя и Алиса, и микшер, могут прервать выполнение протокола на любом из описанных выше шагов, это не принесет выгоды никому из них. В случае недобросовестного поведения оба теряют свои монеты или выгоду, что является обоюдно проигрышным сценарием.
Obscuro
Obscuro [57] — это протокол централизованного микшера с использованием безопасной среды исполнения (TEE, от Trusted Execution Environment).
Чтобы запустить протокол, микшер генерирует ключ в TEE и публикует открытый ключ и биткойн-адрес. Все пользователи отправляют свои монеты на один адрес микшера и публикуют свои транзакции в сеть. В транзакции включаются зашифрованные адреса получателей и скрипт для возврата монет на случай, если они не будут потрачены в течение определенного времени. Obscuro сканирует блокчейн и извлекает эти транзакции. Микшер расшифровывает адреса получателей, перемешивает их и переводит монеты на соответствующие адреса получателей. Микширующая транзакция включает все пользовательские транзакции депозита как входы и перетасованный список адресов получателей в качестве выходов.
Протокол позволяет указать максимальное и минимальное количество участников микширования, а также ограничить период ожидания (в блоках) микширующей транзакции. Указание минимального количества участников гарантирует пользователям минимальный размер микширующего множества до того, как они примут участие в протоколе.
Атомарные свопы
Атомарные свопы позволяют пользователям обмениваться друг с другом монетами таким образом, что, если одна сторона получает оплату, то другая сторона получает оплату тоже.
FairExchange
Это протокол для обмена монетами между двумя пользователями, предложенный Барбером с соавт. [3].
В нашем примере Алиса отправляет монеты на адрес Боба, а Боб — на адрес Алисы. Первым шагом Алиса и Боб создают две пары ключей для использования в разных транзакциях, затем генерируют секретные значения ai и bi и совместно выбирают протокол для предоставления H(ai+bi) и H(bi), которые будут включены в транзакции предложения. Как показано на рисунке 3, чтобы предложить монеты, Боб создает транзакцию TOB, для выполнения которой нужно предоставить либо подписи Алисы и Боба, либо подпись Алисы и bi. Боб также создает возвратную транзакцию TRB, чтобы гарантировать возврат своих монет, если выполнение протокола будет прервано. Он ждет, когда Алиса подпишет транзакцию TRB, и публикует TOB и TRB. Алиса делает то же самое, где для выполнения ее транзакции TOA нужно предоставить либо подписи Алисы и Боба, либо подпись Боба и ai + bi. Боб выполняет транзакцию Алисы в TFB, используя свою подпись и ai+bi. Тогда Алиса вычитает ai и получает bi, чтобы выполнить транзакцию Боба (TFA).
Xim
Xim [6] предлагает новый подход к поиску пользователя для выполнения FairExchange-транзакций. Протокол использует блокчейн для распространения информации о запросах на микширование, в которых Алиса платит майнеру 𝜏/2 монеты за размещение своего запроса в блоке, включая ее контакт для связи с партнерами (например, onion-адрес или ссылку на доску объявлений). Из связавшихся с ней участников она может выбрать для партнерства одного. Выбранный участник, чтобы начать создавать транзакции, должен заплатить майнеру 𝜏 монет (для предотвращения атак DoS и Сибиллы). Если он этого не делает, Алиса выбирает другого участника. После того как второй участник оплачивает комиссию, Алиса выплачивает еще 𝜏/2, тем самым подтверждая партнерство. После этого они могут обмениваться монетами, используя протокол FairExchange.
CoinSwap
CoinSwap [41] устраняет риск кражи монет посредником. В общей сложности этот протокол требует выполнения четырех транзакций — двух для платежей и двух для высвобождения средств. Чтобы запустить протокол, Алиса создает транзакцию с мультиподписью 2-из-2 T0, для выполнения которой нужно предоставить подписи Алисы и Кэрол (σA ∧ σC) (рис. 4).
Кэрол создает транзакцию с мультиподписью T1, для выполнения которой нужно предоставить подписи Кэрол и Боба (σC ∧ σB). Первым делом Кэрол и Боб создают транзакции возврата T0R и T1R, гарантирующие, что монеты будут отправлены обратно Алисе и Кэрол соответственно, если выполнение протокола будет прервано. Справедливо, когда время блокирования (таймлок) для T0R больше, чем для T1R. Чтобы исключить кражу монет в случае обмана одного из участников, протокол использует транзакции с блокировкой по хешу, хешлоком. Чтобы создать транзакции с хешлоком, Боб выбирает случайное значение x, вычисляет его хеш (H(x)) и отправляет этот хеш Алисе и Кэрол. Алиса создает транзакцию с хешлоком T2, для выполнения которой нужно предоставить подпись Кэрол и значение x. Кэрол, в свою очередь, создает транзакцию с хешлоком T3, для выполнения которой нужно предоставить подпись Боба и значение x. Боб должен опубликовать x, чтобы получить T3, что позволяет Кэрол получить T2. Этот хешлок предназначен только для того, чтобы вернуть свои монеты в случае некорректного поведения других пользователей. В ином случае x не следует публиковать, поскольку это раскрывает связь между этими транзакциями в блокчейне. Следующим шагом Кэрол ожидает получения x от Боба, после чего создает транзакцию T4 (для отправки монет Бобу) и отправляет ее Бобу для подписания, после чего публикует в блокчейн. Когда T4 подтверждена, Алиса создает транзакцию T5 (для отправки монет Кэрол) и отправляет ее Кэрол для подписания, после чего публикует в блокчейн. Если только Боб не раскроет значение x Кэрол, она не сможет выполнить T1R и получить эти монеты до истечения срока блокировки для T0R. Если этот срок истек, то Алиса может истребовать свои монеты из T0R, а Боб может одновременно с ней вернуть свои монеты по хешлоку.
Кэрол нужно использовать разные идентификаторы для транзакций с Кэрол и с Бобом [44].
Главное в CoinSwap то, что транзакции осуществляются двумя разными путями, что позволяет размещать их в двух разных блокчейнах, поддерживающих транзакции с блокировкой по хешу и по времени (например, в Bitcoin и Litecoin) [21].
New CoinSwap
Поскольку CoinSwap был предложен до появления кодов операций check lock time verify (CLTV) [56] или check sequence verify (CSV) [10], он использовал для создания возвратных транзакций функцию nLockTime. Транзакции с хешлоком в нем использовались для отмены платежа и в иных случаях публиковать их не следовало. New CoinSwap [21] использует для создания транзакций с блокировкой по времени и по хешу CLTV, а также segwit, решающий проблему пластичности транзакций, что делает новую версию протокола устойчивой к кражам. В этом протоколе Алиса берет на себя роль Боба в оригинальном CoinSwap, что устраняет взаимодействие с получателем. Алиса сначала отправляет монеты на свой новый адрес, а затем может использовать микшированные монеты для отправки настоящему получателю.
PaySwap
PaySwap [5] — это усовершенствованная версия CoinSwap. PaySwap использует для создания адресов с мультиподписью 2-из-2 двусторонний ECDSA. Адреса такого типа аналогичны обычным адресам с одной подписью.
Алиса1 платит Бобу1, а Боб2 платит Алисе2 с помощью CoinSwap-транзакций — например, с помощью кошелька Joinmarket [4]. Алиса может быть маркет-тейкером, а Боб — маркет-мейкером. Алиса, как тейкер, платит Бобу комиссию. Для предотвращения корреляции сумм, при которой злоумышленник может выполнить поиск по сумме транзакции и найти Алису2, PaySwap использует несколько транзакций, когда Алиса отправляет монеты Бобу и получает в обмен несколько транзакций различного номинала, вместе составляющих сумму обмена. Чтобы обойти проблему внутренней отслеживаемости, когда Боб может отследить поток монет на адресе Алисы, Алиса может направить свои монеты через нескольких маркет-тейкеров (скажем, Боба, Кэрол и Дейва). При таком маршруте каждый маркет-тейкер знает только предыдущий и следующий адреса. Алиса проинформирует каждого маркет-тейкера о входящем и исходящем адресе CoinSwap. Таким образом, ни один из мейкеров не может отличить, принадлежит ли входящий адрес Алисе или предыдущему маркетмейкеру.
Для повышения конфиденциальности транзакций предлагается также сочетание транзакций с мультиподписью и усложненного роутинга. Сочетание CoinSwap с PayJoin также рассматривается как возможное решение для нарушения эвристики по общему владению входами, когда входы Боба могут быть добавлены в транзакции вместе со входами Алисы.
Blindly signed contract (BSC)
Протокол [31] предлагается в двух схемах: (i) ончейн и (ii) офчейн. В первом случае используются бездоверительные посредники, во втором — сети каналов микроплатежей, в которых транзакции выполняются офчейн, а подтверждаются ончейн.
Ончейн-схема состоит из двух FairExchange-транзакций, то есть в блокчейн должны быть отправлены четыре транзакции, в которых Алиса отправляет монеты Бобу через посредника (Кэрол). Чтобы инициировать протокол, Кэрол публикует в блокчейне открытые параметры, включая параметры слепых подписей, комиссию за транзакцию, размер вознаграждения (рассматриваемого в протоколе как плата за микширование) и временные интервалы для транзакций. Затем Боб выбирает новый адрес для получения монет. Для создания транзакций Алиса выбирает серийный номер и отправляет Бобу его хеш. Боб отправляет этот хеш Кэрол и запрашивает у нее создание транзакции (TOC–>B), в которой Кэрол предлагает одну монету Бобу, если она получит ваучер V = (sn, σ), содержащий серийный номер, хеш которого равен тому, что Боб предоставил заранее. Кэрол публикует в блокчейне транзакцию TOC–>B. Алиса заслепляет серийный номер (sn) и создает транзакцию, предлагающую 1+w монет Кэрол, если Кэрол предоставит слепую подпись на (sn). Как только она получает подтверждение в блокчейне, Кэрол выполняет транзакцию TFA–>C (которая платит Кэрол), предоставив слепую подпись (σ) на (sn). Алиса может получить σ и отправить ваучер Бобу, чтобы выполнить транзакцию TFC–>B, отправляющую монеты от Кэрол к Бобу.
TumbleBit
TumbleBit [30] обеспечивает конфиденциальность в сценарии с бездоверительным центральным тумблером через решение головоломки. Протокол подразумевает подтверждение четырех транзакций в двух блоках. В общих чертах, тумблер выплачивает монеты Бобу, если тот решает задачу, затем тумблер продает решение задачи, предоставленное, Алисой, за такое же количество монет. Чтобы запустить протокол, тумблер создает RSA [50] задачу для решения ε, принимает ECDSA подпись, зашифрованную в соответствии с решением задачи RSA, и создает шифротекст c. Эта подпись представляет собой подпись транзакции, позволяющей Бобу потратить один биткойн из транзакции условного депонирования.
Как показано на рисунке 6, тумблер отправляет задачу z и шифротекст c Бобу, который, заслепив их, получает z* и отправляет результат Алисе. Затем Алиса создает FairExchange-транзакции с тумблером, чтобы получить заслепленное решение, заплатив тумблеру желаемую сумму. Алиса отправляет заслепленную задачу тумблеру (который может решить задачу) и получает ε*. Затем Алиса отправляет ε* Бобу. Боб расслепляет полученное значение в ε и получает монеты из TF2.
CoinJoin и его производные
Микширование на основе CoinJoin использует методы, не требующие участия доверенных посредников, что устраняет эту единую точку отказа. Кроме того, большинство предлагаемых методов могут устранять риск кражи монет и необходимость в комиссиях за микширование.
CoinJoin
Протокол CoinJoin был предложен Грегори Максвеллом в 2013 году [40]. Поскольку входы биткойн-транзакций должны быть подписаны отдельно соответствующими подписями, пользователи могут совместно создавать одну транзакцию со входами от каждого из них. Таким образом, они не только нарушают эвристику по общему владению входами, но также могут скрыть связь между входами и выходами транзакций, если отправят на адреса выходов похожие монеты. Чтобы создать такую транзакцию (рис. 7), пользователи предоставляют свои адреса входов, выходов и для сдачи, а также по отдельности подписывают транзакцию. Один из пользователей объединяет подписи в одну и транслирует транзакцию в сеть.
CoinShuffle
CoinShuffle [52] — это модификация CoinJoin, созданная с целью обеспечить невозможность отслеживания пользователей микширования и вдохновленная протоколом Dissent [14].
Пользователи находят друг друга по p2p-протоколу, после чего каждый пользователь (кроме Алисы) создает новую пару ключей зашифрования-расшифрования и передает открытый ключ зашифрования. Алиса создает многоуровневое шифрование своего адреса выхода A’, используя ключи шифрования всех пользователей, и отправляет результат Бобу (рис. 8). Боб дешифрует его и создает многоуровневое шифрование своего адреса выхода B’ с оставшимися ключами. После этого он перемешивает результаты и отправляет их следующему участнику, и тот повторяет те же действия. Последний пользователь получает все выходы, добавляет собственный выход, перемешивает их отправляет перетасованный список всем пользователям. Каждый пользователь может проверить, есть ли в списке его/ее выход. Каждый пользователь создает транзакцию из всех входов в перетасованные выходы, подписывает ее и передает другим пользователям. Когда все пользователи передадут свои подписи, один из них может создать полностью подписанную транзакцию и опубликовать микширующую транзакцию в сеть. Протокол может перейти в фазу обвинения в случае ненадлежащего выполнения требований хотя бы одним пользователем. Этот пользователь будет исключен, а выполнение протокола начато заново.
CoinShuffle++
CoinShuffle++ [53] использует протокол DiceMix [60], который требует последовательной обработки. Его предшественник CoinShuffle [52] требует ряда раундов коммуникации, линейного относительно количества пользователей. CoinShuffle++ использует DiceMix для параллельной обработки микширования, которая не зависит от количества пользователей и требует фиксированного количества раундов коммуникации. Микширующая транзакция с 50 пользователями в CoinShuffle++ может быть выполнена за 8 секунд.
ValueShuffle
ValueShuffle [51] представляет собой расширение CoinShuffle++. Протокол сочетает CoinJoin с Confidential Transactions и скрытыми (stealth) адресами. Использование Confidential Transactions обеспечивает конфиденциальность суммы транзакции, что является значительным улучшением по сравнению с его предшественниками, поскольку это не только скрывает сумму транзакции от посторонних глаз, но и позволяет пользователям перемешивать друг с другом различные количества монет. Кроме того, анонимность получателя (в рамках нашего исследования рассматриваемая как невозможность установить точную связь с отправителем) может быть гарантирована с помощью stealth-адресов, позволяющих отправлять монеты непосредственно на адрес получателя. Stealth-адрес — это уникальный одноразовый адрес, генерируемый отправителем для повышения конфиденциальности получателя — как платежный код.
CoinJoinXT
CoinJoinXT [25] предлагает форму coinjoin-транзакций, в которой пользователи сначала отправляют средства на адрес фондирования (funding address), который они совместно контролируют с помощью многосторонних подписей. Затем они подписывают ряд расходных транзакций с этого адреса (использование SegWit решает проблему пластичности транзакций). Во всех расходных транзакциях должно быть прописано определенное значение таймлока, чтобы предотвратить их одновременную публикацию. Расходные транзакции могут быть формировать цепочку или дерево. Все транзакции должны требовать подписи обеих сторон. Подтвердив подписи на транзакциях, участники могут транслировать адрес фондирования. Возможно также добавлять UTXO каждого пользователя в последующих транзакциях. Однако, чтобы предотвратить двойное расходование, они также должны создать и предварительно подписать для каждого раунда возвратную транзакцию с определенным таймлоком.
Для предотвращения атаки по сумме подмножеств участники могут использовать офчейн-инструменты — например, Lightning Network — для отправки части выходов в канал и изменения баланса со временем. Проблема различимости мультиподписи в P2SH-скрипте может быть решена с использованием схемы Шнорра [54] или конструкции на основе Scriptless ECDSA [38] для формирования транзакций с мультиподписью 2-из-2, таких как P2PKH-транзакции.
Snicker
Snicker [22] — это простая неинтерактивная форма CoinJoin, в которой ключи для шифрования переиспользуются. Это может быть достигнуто без сервера или взаимодействия между участниками. Это полезно в CoinJoin между двумя сторонами, где один из участников (Алиса) шифрует запрос открытым ключом другого участника (Боба), чтобы создать CoinJoin-предложение.
Алисе нужно просканировать блокчейн, чтобы найти потенциальных участников в соответствии с суммой и возрастом его UTXO. Сканирование блокчейна может быть выполнено одним из блок-эксплореров, и Алиса загружает данные только для поиска активных пользователей. Сообщение Алисы содержит ее UTXO, желаемый адрес получателя, сумму, комиссию за транзакцию, полный шаблон транзакции по UTXO Алисы и Боба, подпись Алисы на транзакции и адрес получателя Боба, который создается путем добавления k’G либо к существующему повторно используемому открытому ключу (версия 1), либо к значению R в одной из подписей Боба (версия 2). Алиса включает значение k’ в зашифрованное сообщение, чтобы Боб мог получить закрытый ключ от вновь сгенерированного открытого ключа. Алиса отправляет зашифрованное сообщение в сеть — например, на доску объявлений. Боб может расшифровать сообщение, подтвердить право собственности на новопредложенный открытый ключ, подписать и транслировать транзакцию в сеть.
PayJoin
PayJoin [24] (аналогично Bustapay [29] и P2EP [7]) решает, проблему различимости метода CoinJoin в блокчейне путем добавления к входам транзакции по крайней мере одного UTXO получателя. Это нарушает эвристику по общему владению входами, одно из важнейших эвристических правил, используемых для деанонимизации пользователей Биткойна. Кроме того, это скрывает истинную сумму платежа, поскольку выход будет больше реальной суммы платежа. Для запуска протокола [23], Боб отправляет адрес получателя и сумму. Алиса создает и подписывает транзакцию, в которой отправляет указанную сумму на адрес Боба и указывает свой адрес для получения остатка, после чего отправляет транзакцию Бобу. Боб проверяет транзакцию и создает новую транзакцию, добавляя свои входы к транзакции, созданной Алисой. Затем он меняет сумму выхода и добавляет к конечной сумме свои выходы. Он подписывает свои входы и отправляет эту новую транзакцию Алисе. Алиса проверяет и подписывает транзакцию и транслирует ее в сеть. На рисунке 9 приведена схема простой формы PayJoin.
Пороговые подписи
Методы пороговой подписи используют совместные подписи, которые для выполнения транзакции требуют предоставления определенного порогового количества подписей.
CoinParty
CoinParty [62] обеспечивает обоснованное отрицание через микширующих пиров, вместо группы транзакций, как в CoinJoin и его производных. Протокол использует пороговый вариант ECDSA (на основе [33]) с использованием протокола конфиденциального вычисления (Secure multi-party computation).
На первом этапе микширующие пиры генерируют набор эскроу-адресов (T1, T2 и T3) из порогового ECDSA, находящегося под совместным контролем микширующих пиров, а затем отправляют различные эскроу-адреса пиру каждого входа. Пиры входов отправляют свои монеты на эскроу-адреса (рис. 10). Монеты на эскроу-адресах могут быть потрачены только в том случае, если транзакции подпишет большинство микширующих пиров. На этапе шаффлинга (перемешивания) пиры входов используют многоуровневое шифрование для шифрования своих адресов выходов с помощью открытых ключей микширующих пиров. Затем они транслируют микширующим пирам зашифрованный выход вместе с хешем своего выхода (для использования при проверке окончательных перетасованных адресов микширующих пиров). Каждый микширующий пир дешифрует выход и перетасовывает адрес и отправляет его следующему пиру. Последний микширующий пир перемешивает адреса выходов и транслирует их микширующим пирам. Все микширующие пиры проверяют перетасованные адреса и запускают генератор псевдослучайных чисел, чтобы получить окончательную перестановку выходов, что не позволяет последнему пиру контролировать последнюю перестановку и обеспечивает случайный шаффлинг. Наконец, микширующие пиры отправляют монеты на адреса выходов. Поскольку закрытые ключи эскроу-адресов являются общими для всех микширующих пиров, для создания и подписания каждой транзакции применяется пороговый вариант ECDSA.
SecureCoin
SecureCoin [32] использует для микширования монет технику CoinJoin вместе с пороговой цифровой подписью.
Первым шагом пользователи генерируют совместный адрес (J) в пороговых базах. Для этого они должны совместно вычислить открытый ключ. После того как адрес сгенерирован, пользователи совместно выполняют транзакцию (T1), чтобы отправить свои монеты на адрес J (рис. 11). Следующим шагом они генерируют новые адреса получателей и перемешивают адреса. Шаффлинг адресов и фаза обвинения почти аналогичны CoinShuffle, в котором пользователи зашифровывают адреса своих получателей и отправляют их следующему пользователю для расшифровки сообщения и добавления его адреса получателя. Если какой-либо из пользователей нарушает правила, протокол переходит в фазу обвинения, в которой нарушитель исключается, и шаффлинг повторяется с оставшимися пользователями. На последнем этапе пользователи создают транзакцию (T2) с адреса J на адреса получателей честных пользователей и адреса входов исключенных в фазе обвинения пользователей. То есть пользователь получает свои монеты, даже если нарушил — умышленно или нет — правила протокола. Для завершения протокола большинство пользователей должны совместно подписать транзакцию.
Secure Escrow Address (SEA)
Secure Escrow Address (SEA) [60] — это децентрализованный протокол, который использует распределенную генерацию ключа, как предложено в [20], для отправки монет сначала на временный адрес, находящийся под совместным контролем пользователей, а затем на адреса получателей.
Для этого все участники совместно создают открытый ключ совместного адреса (J), где у каждого пользователя есть часть секрета для расхода монет с адреса J. Затем каждый участник генерирует пару ключей зашифрования-расшифрования, аналогично CoinShuffle [52], после чего они перемешивают адреса получателей, используя многоуровневое шифрование, и последний участник транслирует перемешанный список. Каждый участник проверяет список, чтобы убедиться, что в нем есть его адрес получателя. Если всё правильно, они создают транзакцию и переводят монеты с адреса J на адреса получателей. Чтобы потратить монеты с адреса J, пользователи должны подписать транзакцию каждый своей частью секрета.
Протокол не был представлен в виде задокументированного предложения и нет результатов тестирования, показывающих, как работает распределенная генерация ключей в схеме ECDSA.
Обсуждение и анализ
В этом разделе мы обсудим конфиденциальность, безопасность и эффективность выбранных методов микширования и представим обзор их практического применения.
Критерии оценки
Этот подраздел посвящен оценке методов микширования с точки зрения конфиденциальности, безопасности и эффективности. На рисунке 12 показаны критерии оценки, которые были отобраны нами из числа наиболее часто рассматриваемых в специализированной литературе.
Критерии конфиденциальности:
Критерии безопасности:
Критерии эффективности:
Оценка методов микширования
В таблице 1 мы оцениваем методы микширования в четырех основных категориях — централизованные микшеры, атомарные свопы, CoinJoin + производные и пороговые подписи, — и приводим результат сравнения по критериям конфиденциальности, безопасности и эффективности. Далее в этом разделе мы подробно рассказываем об исследовании методов микширования в соответствии с заданными критериями.
Конфиденциальность
Анонимное множество. По этому критерию сравнение производилось исходя из трех размеров анонимного множества: большого, среднего и малого. Большинство методов микширования, за исключением некоторых производных от CoinJoin, могут обеспечивать большой размер анонимного множества, и скрывать микширующую транзакцию среди других транзакций в блокчейне. В большинстве методов на основе CoinJoin анонимное множество ограничено размером транзакции; кроме того координация между большим числом пользователей для создания coinjoin-транзакции на практике трудно реализуема, поскольку большие анонимные множества увеличивают риски DoS-атаки и атаки Сибиллы, а также увеличивают потерю пропускной способности. Причина, по которой мы присвоили умеренный размер CoinShuffle++ и ValueShuffle, состоит в том, что в этих протоколах одноуровневое взаимодействие между пользователями было улучшено за счет использования DiceMix, позволяющего 50 участникам создавать транзакцию за 8 секунд, что считается разумным результатом для такого размера анонимного множества. CoinSwap могут быть скрыты в блокчейне среди всех транзакций одинаковой стоимости (реализация двустороннего ECDSA, в котором транзакции с мультиподписью выглядят как транзакции с одной подписью, может эффективно обеспечить анонимность для таких транзакций). Хотя атомарные свопы имеют большой размер анонимного множества, он ограничивается транзакциями с таймлоком [44].
Несвязанность. Во всех рассматриваемых методах пользователям для получения микшированных монет необходимо создать новые адреса. Однако нет никакой гарантии, что эти адреса не будут использованы в будущем. Следовательно, эти адреса и их транзакции могут быть связаны друг с другом, что может быть использовано при анализе графа транзакций. ValueShuffle может достигать несвязанности при использовании одноразовых stealth-адресов. Однако stealth-адреса могут быть применены и в других методах для повышения конфиденциальности в отношении несвязанности адресов и транзакций. Например, Darkwallet, который не обновлялся с 2015 года [11], был реализацией CoinJoin с использованием stealth-адресов. Здесь нужно также отметить, что из-за уникальной структуры stealth-адресов, их анонимность ограничивается числом пользователей, использующих такие адреса [44].
Неотслеживаемость. Все методы микширования направлены на повышение неотслеживаемости транзакций в блокчейне. Однако есть методы, которые обладают этим свойством лишь частично, — те, что обладают внутренней отслеживаемостью, то есть взаимосвязь между входами и выходами транзакций в них возможно отследить участникам микширования. Это означает, что вовлеченные в микширование участники могут хранить данные других пользователей, что чревато последующей утечкой информации. Однако нужно отметить, что, даже когда связи между адресами можно проследить среди участников микширования, эти протоколы обеспечивают защиту от внешних блокчейн-аналитиков [44].
Конфиденциальность суммы платежа. Обеспечение полной конфиденциальности либо сокрытия фактической суммы платежа — это важное свойство, повышающее конфиденциальность транзакций, не позволяя отследить транзакции по сумме. Из методов микширования, ValueShuffle предлагает использовать для этой цели Confidential Transactions (CT), активация которого в Биткойне возможна только через софтфорк. От реализации в Биткойне CT могут выиграть все методы микширования: это устранит необходимость в фиксированном номинале микширования в предлагаемых методах, что, как следствие, повышает удобство использования и ликвидность в других методах, пользователи которых получат возможность смешивать желаемое количество монет. [47] сравнивает реализацию CT в TumbleBit и CoinJoin и указывает на то, что CT снизит стоимость микширования в транзакциях на крупные суммы, однако увеличит ее для транзакций на небольшие суммы. Кроме того, применение CT в биткойн-транзакциях увеличивает размер комиссии за транзакцию еще в девять раз. Объединение транзакций в цепочку с помощью CoinJoinXT может обеспечить определенный уровень конфиденциальности суммы платежа. Однако она разрушается атакой по сумме подмножеств. PayJoin также обеспечивает частичную конфиденциальность по этому критерию, скрывая истинные суммы платежей.
Безопасность
Устойчивость к кражам. Один из важнейших критериев для платежных сетей — это предотвращение кражи или потери монет. В блокчейне этот критерий имеет определяющее значение ввиду отсутствия практического решения для возврата монет (помимо хардфорка). Большинство методов микширования пытаются удовлетворять этому критерию, однако сайты-микшеры исключить кражу монет не могут. В MixCoin и BlindCoin кража может быть обнаружена, но не предотвращена. Наличие эпизодов мошенничества со стороны сайтов-микшеров в прошлом [30, 37] тоже не повышает доверия к таким сервисам. Методы, основанные на пороговых подписях, не могут полностью исключить кражу монет, потому что для них требуется, чтобы большинство пользователей были честными, что непросто гарантировать в открытой одноуровневой сети. Методы на основе атомарных свопов и CoinJoin могут обеспечить соблюдение этого критерия в рассматриваемых протоколах.
Устойчивость к DoS-атакам. Согласно нашему определению устойчивости к DoS-атакам, в большинстве методов микширования на основе CoinJoin и пороговых подписей это свойство отсутствует, поскольку успешное выполнение этих протоколов подразумевает необходимость в честном поведении пользователей. Для предотвращения DoS-атак в некоторых из рассматриваемых методов предусмотрено выявление и исключение вредоносных пользователей и повторный запуск протокола, а также блокировка UTXO злоумышленника. Однако это не может полностью предотвратить DoS-атаки. Из производных CoinJoin, устойчивым к DoS-атакам можно считать PayJoin, поскольку в нем получатель может транслировать исходную транзакцию, если отправитель отказывается подписать PayJoin. Централизованные микшеры и атомарные свопы устойчивы к DoS, поскольку ни один из участников не может прервать протокол и повлиять на остальных.
Устойчивость к атакам Сибиллы. В большинстве методов атаки Сибиллы предотвращаются путем получения комиссии за микширование вперед. Методы на основе CoinJoin, не обладающие устойчивостью к атакам Сибиллы (CoinJoin, CoinShuffle, CoinShuffle++, ValueShuffle), — это те, что не предлагают предотвращать такие атаки в своих протоколах.
Эффективность
Отсутствие взаимодействия между адресами входов транзакции. Все централизованные микшеры и большинство атомарных свопов (кроме FairExchange и Xim) не требуют взаимодействия между адресами входов. В большинстве методов на основе CoinJoin (за исключением Snicker, представляющего собой неинтерактивную версию CoinJoin) регистрация входов, создание транзакции и подписание требуют доступности пользователей онлайн во время выполнения протокола. Даже если пользователь не злонамеренный, потеря соединения приводит к сбою протокола. Это может приводить к задержкам в создании CoinJoin-транзакций, в то время как большинство других методов микширования могут быть выполнены без взаимодействия между адресами входов. Методы на основе пороговых подписей также требуют взаимодействия между адресами входов для подписания транзакции.
Отсутствие взаимодействия с получателем. Obscuro, PayJoin и PaySwap требуют взаимодействия с получателями, то есть для успешного завершения протокола получатель должен быть онлайн. CoinSwap, BSC и TumbleBit хоть и требуют взаимодействия с получателем в исходном протоколе, отправитель в этих протоколах может играть роль получателя, воспользовавшись разными идентификаторами, и это позволяет исключить взаимодействие с реальным получателем. В таком сценарии отправитель получает монеты на собственный новый адрес, и требуется еще одна транзакция, чтобы переслать монеты после микширования на желаемый адрес.
Прямая отправка получателю. Этот критерий показывает, что в некоторых из предполагаемых методов пользователю необходимо сначала отправить микшируемые монеты на собственный адрес, а затем уже переслать их на желаемый адрес назначения. Эта проблема существует в методах на основе CoinJoin и пороговых подписей, где участник должен предоставить новый выход, если протокол переходит в фазу обвинения. ValueShuffle для обхода этой проблемы использует stealth-адреса, которые могут решить эту проблему и для других методов микширования на основе CoinJoin и пороговых подписей.
Совместимость с Биткойном. Большинство методов совместимы с блокчейном Биткойна в его нынешнем виде. Однако ValueShuffle требует активации Confidential Transactions через софтфорк. BSC требует также активации в блокчейне Биткойна поддержки слепых подписей, опять же, через софтфорк. Obscuro требует небольших изменений в реализации Bitcoin Core.
Количество транзакций и блоков. В последних двух колонках обозначено минимально необходимое количество транзакций и блоков для завершения одного раунда протокола, что дает представление о сроках выполнения микширования и комиссиях сети, которые необходимо оплатить участникам. Очень важно учитывать затраты участников на микширование, а также то, что вкупе с дополнительной комиссией за транзакции это может стать существенным препятствием для распространения практического использования этих методов микширования. Даже в методах на основе CoinJoin участники вынуждены заплатить по крайней мере одну дополнительную комиссию сети за микширующую транзакцию, а потом только перевести монеты на адрес назначения. Учитывая, что одного раунда CoinJoin недостаточно для обеспечения анонимности пользователей, им придется выполнить несколько раундов микширования, чтобы достичь желаемого анонимного множества, что увеличивает минимальное количество транзакций и блоков, которые для этого должны быть подтверждены. Методы на основе атомарных свопов также требуют выполнения четырех транзакций по меньшей мере в двух блоках, что увеличивает сроки и затраты на выполнение микширования.
Практические реализации
Большинство вышеупомянутых методов микширования не были реализованы на практике либо налицо значительная задержка между созданием протокола и его практической реализацией. В таблице 2 перечислены сервисы, реализующие эти протоколы, с разбивкой по видам микширования. Большую часть реализаций предсказуемо составляют централизованные сайты-микшеры.
Dumplings [46] указывает на прирост числа coinjoin-транзакций за последние два года (с 2018). Впрочем, нужно отметить, что количество coinjoin-транзакций может увеличиваться и за счет нескольких раундов микширования с тем, чтобы увеличить размер анонимного множества.
Joinmarket, Wasabi и Samourai — это реализации coinjoin-кошельков. Joinmarket использует модель с тейкерами и мейкерами, в которой тейкер объявляет о своем желании совершить coinjoin-транзакцию, а мейкеры участвуют в coinjoin-транзакции с ним, получая за это комиссию. При таком подходе конфиденциальность обеспечивается для тейкера, который создает coinjoin-транзакцию [26]. Wasabi использует Chaumian CoinJoin, в котором участники регистрируют свои входы и вслепую подписывают выходы координатору для создания coinjoin-транзакции. Samourai предлагает Whirlpool, в котором указаны пулы, к которым пользователи могут присоединиться для перемешивания своих монет с монетами других участников и создания coinjoin-транзакций. В Samourai кошелек знает xpub пользователей, от которых получены их биткойн-адреса, следовательно, против кошелька конфиденциальность отсутствует [46].
Работа SharedCoin (coinjoin-сервиса от Blockchain.info, в котором Blockchain.info удалось установить взаимосвязи между входами и выходами пользователей), а также Darkwallet, создававшего coinjoin-транзакции с использованием stealth-адресов, была остановлена, вероятно, по юридическим причинам. В 2020 BTCpay внедрил поддержку PayJoin, чтобы позволить продавцам создавать магазины, принимающие payjoin-транзакции. На момент написания Wasabi, Samourai, Joinmarket и Bluewallet поддерживают payjoin-транзакции. Но создание payjoin-транзакций между пользователями было реализовано ранее в Joinmarket и Samourai Wallet (Stowaway). Shufflepuff [61] находится в альфа-версии на GitHub и последние обновления датируются 2016 годом, а Nxt [34] был активирован в основной сети с блока 621 000 (09.03.2020). Однако на момент написания функция CoinShuffle была удалена из списка функций кошелька.
Согласно [44], FairExhange-транзакции нельзя обнаружить в блокчейне. На момент написания коммерческих реализаций методов микширования на основе атомарных свопов не существует. Недавно [5] был предложен новый дизайн CoinSwap — PaySwap. На GitHub есть несколько альфа-реализаций TumbleBit (NTumbleBit и Breeze), которые на момент написания статьи не являются коммерческими.
Будущие исследования
Будущие исследования могут быть проведены в трех областях: удобство использования, правоприменительные практики и практичность методов микширования.
Удобство использования. Удобная в использовании система может привлечь больше пользователей и, следовательно, усилить их анонимность [15]. В этом контексте имеет смысл рассмотреть следующие вопросы: (i) В какой степени пользователи осведомлены о реализуемых в дополнениях и предусмотренных на уровне протокола технологиях обеспечения конфиденциальности и их практической реализации? (ii) Доверяют ли они сторонним сервисам сохранения конфиденциальности? (iii) Что предпочтут пользователи: методы, реализуемые в дополнениях (кошельках и сервисах), или технологии, реализованные на уровне протокола (конфиденциальные койны)? Согласны ли пользователи платить увеличенными комиссиями и сроками выполнения транзакций за больший уровень конфиденциальности в блокчейне? (iv) Есть ли существенная разница в готовности платить за конфиденциальность между искушенными и неискушенными в вопросах конфиденциальности пользователях? (v) Какие свойства больше интересуют пользователей: предотвращение повторного использования адресов, сокрытие суммы платежа, сокрытие источника и адреса назначения, прямая отправка получателю, отсутствие потребности во взаимодействии между пользователями? (vi) В отношении существующих реализаций методов микширования, понимают ли пользователи, что им нужно делать и как это сделать?
Правоприменение. Использование практик обеспечения конфиденциальности в дарквебе очевидно, а значит, любые методы сохранения конфиденциальности могут быть использованы для противозаконной деятельности. К ним также могут прибегать и обычные пользователи, осознающие катастрофические последствия деанонимизации в блокчейне. Насколько нам известно, не существует исследований современных практик классификации адресов назначения coinjoin-транзакций как одного из наиболее распространенных методов микширования (таблица 2). Хотя получателей coinjoin-транзакций нельзя легко идентифицировать, классификация этих адресов с использованием достоверной информации может пролить свет на использование CoinJoin в блокчейне Биткойна. Поэтому полезной отправной точкой для дальнейших исследований могла бы стать подробная разработка следующей темы: возможно ли классифицировать адреса назначения coinjoin-транзакций, чтобы определить процент использования их в противозаконной деятельности? В сфере криптовалют всегда существует компромисс между конфиденциальностью и практиками правоприменения. Обеспечение конфиденциальности для большинства пользователей и одновременно предотвращение широкого использования технологии в преступной деятельности и на темных рынках по-прежнему остается нерешенной проблемой в этой области. В [36] предлагается модель, позволяющая правоохранительным органам сотрудничать с участниками coinjoin-транзакций в поиске преступников, что могло бы стать хорошим способом учесть интересы как пользователей, так и правоохранительных органов.
Практичность. Вывод на рынок технологии PayJoin может эффективно обеспечить конфиденциальность пользователей, поскольку PayJoin позволяет нарушить так называемую эвристику по общему владению входами. Однако эти транзакции должны быть реализованы таким образом, чтобы их нельзя было идентифицировать в блокчейне как PayJoin. При реализации протокола следует учитывать эвристику по необязательному входу и снятие цифровых отпечатков кошельков, нужны также дополнительные исследования их эффективности при маркировке payjoin-транзакций. Coinjoin-транзакции с неравными суммами — еще одно интересное направление для дополнительных исследований. На данный момент различимость в блокчейне coinjoin-транзакций с выходами одинакового размера может создавать проблему для пользователей, поскольку некоторые биржи отказываются принимать выходы coinjoin-транзакций. Knapsack [39] и Wabisabi [17] могли бы стать хорошей основой для будущей работы для улучшения неразличимости этих
типов транзакций.
В заключение
Цель данного исследования состоит в обзоре и сравнительной оценке методов микширования в Биткойне. В ходе исследования было проведено сравнение множества предложений, отобранных в соответствии с заданными критериями. Эти предложения обеспечивают различные гарантии с точки зрения конфиденциальности, безопасности и эффективности. Высокий уровень конфиденциальности негативно влияет на эффективность, масштабируемость и удобство использования.
Из методов на основе атомарных свопов, New CoinSwap и его предшественники могут соответствовать большинству критериев, хотя они предполагают выполнение большего числа транзакций, что ведет к увеличению сроков и стоимости микширования.
Методы на основе CoinJoin получили сравнительно широкое практическое применение. Однако различимость транзакций в блокчейне вследствие выходов одинакового размера и уязвимость перед DoS-атаками являются серьезными проблемами для этих методов микширования.
Предложенный недавно протокол PayJoin, также основанный на CoinJoin, действительно способен решить проблему различимости микширующих транзакций в блокчейне и повысить уровень анонимности пользователей.
Одним из главных преимуществ методов на основе CoinJoin является сокращение количества транзакций, необходимых для завершения протокола, что повышает их доступность. Хотя выполнение нескольких раундов CoinJoin может обеспечить значительно лучшую анонимность, это увеличивает также и сроки и стоимость микширования. Однако большинство производных от CoinJoin не обеспечивают большого анонимного множества и возможности обоснованного отрицания.
Использование Confidential Transactions для сокрытия суммы UTXO, предлагаемое в ValueShuffle, может эффективно решить эту проблему и обеспечить неразличимость транзакций для протоколов на основе CoinJoin.
Методы микширования часто требуют выполнения определенного минимального количества транзакций для сокрытия связей между отправителями и получателями. Хотя увеличение числа транзакций может повысить анонимность, это подразумевает также увеличение сроков и стоимости выполнения микширования. Хотя сама плата за микширование может быть незначительной, комиссии сети за дополнительные транзакции могут существенно ограничивать использование технологий.
Согласно нашим результатам, за исключением централизованных микшеров и методов на основе пороговых подписей, большинство методов микширования удовлетворяют критерию устойчивости к кражам.
Мы также исследовали практические реализации методов микширования, чтобы указать, какие протоколы наиболее распространены и какие функции были добавлены а реализации.
Наконец, мы обсудили будущие направления развития и проблемы, с которыми сталкиваются методы микширования. Притом что первоначальное намерение обеспечения строгой конфиденциальности для пользователей состояло в том, чтобы предотвратить раскрытие пользовательских данных злоумышленникам и преступникам, такие методы сохранения конфиденциальности могут быть использованы для осуществления противозаконной деятельности. Поэтому сообществу нужно искать новые методы, позволяющие отличать транзакции, используемые для противозаконной деятельности, от обычных микширующих транзакций (например, с целью обеспечения финансовой конфиденциальности).
Сноски
[1] Alrawi, O., Lever, C., Antonakakis, M., Monrose, F., 2019. Sok: Security evaluation of home-based iot deployments, in: 2019 IEEE Symposium on Security and Privacy (SP), IEEE. pp. 1362–1380. ↩
[2] Bao, Z., Shi, W., Kumari, S., Kong, Z.y., Chen, C.M., 2019. Lockmix: a secure and privacy-preserving mix service for bitcoin anonymity. International Journal of Information Security , 1–11. ↩
[3] Barber, S., Boyen, X., Shi, E., Uzun, E., 2012. Bitter to better — how to make bitcoin a better currency, in: International conference on financial cryptography and data security, Springer. pp. 399–414. ↩
[4] Belcher, C., (2018) Last accessed 24 March 2021. Joinmarket. https://github.com/JoinMarket-Org/joinmarket-clientserver . ↩
[5] Belcher, C., Last accessed 16 July 2020. Design for a coinswap implementation for massively improving bitcoin privacy and fungibility. https://gist.github.com/chris-belcher/9144bd57a91c194e332fb5ca371d0964 . [↩ PaySwap] [↩ практические реализации]
[6] Bissias, G., Ozisik, A.P., Levine, B.N., Liberatore, M., 2014. Sybilresistant mixing for bitcoin, in: Proceedings of the 13th Workshop on Privacy in the Electronic Society, pp. 149–158. ↩
[7] Blockstream, Last accessed 20 September 2020. Improving privacy using pay-to-endpoint (p2ep). https://blockstream.com/2018/08/08/en-improving-privacy-using-pay-to-endpoint/ . ↩
[8] Bojja Venkatakrishnan, S., Fanti, G., Viswanath, P., 2017. Dandelion: Redesigning the bitcoin network for anonymity. Proceedings of the ACM on Measurement and Analysis of Computing Systems 1, 1–34. ↩
[9] Bonneau, J., Narayanan, A., Miller, A., Clark, J., Kroll, J.A., Felten, E.W., 2014. Mixcoin: Anonymity for bitcoin with accountable mixes, in: International Conference on Financial Cryptography and Data Security, Springer. pp. 486–504. [↩ контекст] [↩ атаки по сторонним каналам] [↩ MixCoin]
[10] BtcDrak, M.F., Lombrozo, E., 2015. Bip 112: Checksequenceverify. URl: https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki . ↩
[11] caedesvvv, 2015. Darkwallet. https://github.com/darkwallet/darkwallet/releases/tag/0.8.0 . ↩
[12] Chaum, D., 1983. Blind signatures for untraceable payments, in: Advances in cryptology, Springer. pp. 199–203. ↩
[13] Chaum, D.L., 1981. Untraceable electronic mail, return addresses, and digital pseudonyms. Communications of the ACM 24, 84–90. ↩
[14] Corrigan-Gibbs, H., Ford, B., 2010. Dissent: accountable anonymous group messaging, in: Proceedings of the 17th ACM conference on Computer and communications security, pp. 340–350. ↩
[15] Dingledine, R., Mathewson, N., Syverson, P., 2005. Challenges in deploying low-latency anonymity. NRL CHACS Report , 5540–625. ↩
[16] Ermilov, D., Panov, M., Yanovich, Y., 2017. Automatic bitcoin address clustering, in: 2017 16th IEEE International Conference on Machine Learning and Applications (ICMLA), IEEE. pp. 461–466. [↩ контекст] [↩ исследования деанонимизации]
[17] Ficsór, Kogman, Y., Seres, I.A., Last accessed 3 Feb 2021. Wabisabi. https://github.com/zkSNACKs/WabiSabi/releases/download/build-70d01424bbce06389d2f0536ba155776eb1d8344/WabiSabi.pdf . ↩
[18] Filtz, E., Polleres, A., Karl, R., Haslhofer, B., 2017. Evolution of the bitcoin address graph, in: Data science–Analytics and applications. Springer, pp. 77–82. ↩
[19] Fleder, M., Kester, M.S., Pillai, S., 2015. Bitcoin transaction graph analysis. arXiv preprint arXiv:1502.01657 . ↩
[20] Gennaro, R., Jarecki, S., Krawczyk, H., Rabin, T., 1999. Secure distributed key generation for discrete-log based cryptosystems, in: International Conference on the Theory and Applications of Cryptographic Techniques, Springer. pp. 295–310. ↩
[21] Gibson, A., 2017 (Last accessed 23 August 2020). New coinswap. https://joinmarket.me/blog/blog/coinswaps/ . [↩ CoinSwap] [↩ New CoinSwap]
[22] Gibson, A., 2017 (Last accessed 31 August 2020). Snicker – simple non-interactive coinjoin with keys for encryption reused. https://joinmarket.me/blog/blog/snicker/ . ↩
[23] Gibson, A., 2018 (Last accessed 23 August 2020)a. Basic payjoin / p2ep protocol for joinmarket wallets. https://gist.github.com/AdamISZ/4551b947789d3216bacfcb7af25e029e . ↩
[24] Gibson, A., 2018 (Last accessed 23 August 2020)b. Payjoin. https://joinmarket.me/blog/blog/payjoin/ . ↩
[25] Gibson, A., 2018 (Last accessed 31 August 2020). Coinjoinxt — a more flexible, extended approach to coinjoin. https://joinmarket.me/blog/blog/coinjoinxt/ . ↩
[26] Gibson, A., Last accessed 3 Feb 2021. From mac to wabisabi. https://joinmarket.me/blog/blog/from-mac-to-wabisabi/ . ↩
[27] Halpin, H., Piekarska, M., 2017. Introduction to security and privacy on the blockchain, in: 2017 IEEE European Symposium on Security and Privacy Workshops (EuroS&PW), IEEE. pp. 1–3. ↩
[28] Harrigan, M., Fretter, C., 2016. The unreasonable effectiveness of address clustering, in: 2016 Intl IEEE Conferences on Ubiquitous Intelligence & Computing, Advanced and Trusted Computing, Scalable Computing and Communications, Cloud and Big Data Computing, Internet of People, and SmartWorld Congress (UIC/ ATC/ ScalCom/ CBDCom/ IoP/ SmartWorld), IEEE. pp. 368–373. [↩ вступление] [↩ контекст] [↩ исследования деанонимизации]
[29] Havar, R., Last accessed 20 September 2020. Bustapay bip: a practical sender/receiver coinjoin protocol. https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-August/016340.html . ↩
[30] Heilman, E., Alshenibr, L., Baldimtsi, F., Scafuro, A., Goldberg, S., 2017. Tumblebit: An untrusted bitcoin-compatible anonymous payment hub, in: Network and Distributed System Security Symposium. [↩ TumbleBit] [↩ устойчивость к кражам]
[31] Heilman, E., Baldimtsi, F., Goldberg, S., 2016. Blindly signed contracts: Anonymous on-blockchain and off-blockchain bitcoin transactions, in: International conference on financial cryptography and data security, Springer. pp. 43–60. [↩ контекст] [↩ BSC]
[32] Ibrahim, M.H., 2017. Securecoin: A robust secure and efficient protocol for anonymous bitcoin ecosystem. IJ Network Security 19, 295–312. ↩
[33] Ibrahim, M.H., Ali, I., Ibrahim, I., El-Sawi, A., 2003. A robust threshold elliptic curve digital signature providing a new verifiable secret sharing scheme, in: 2003 46th Midwest Symposium on Circuits and Systems, IEEE. pp. 276–280. ↩
[34] Jelurida, Last accessed 11 August 2020. Nxt. https://nxtdocs.jelurida.com/Coin_Shuffling . ↩
[35] Jourdan, M., Blandin, S.,Wynter, L., Deshpande, P., 2018. Characterizing entities in the bitcoin blockchain, in: 2018 IEEE International Conference on Data MiningWorkshops (ICDMW), IEEE. pp. 55–62. [↩ вступление] [↩ контекст] [↩ исследования деанонимизации]
[36] Keller, P., Florian, M., Böhme, R., 2020. Collaborative deanonymization. arXiv preprint arXiv:2005.03535 . ↩
[37] LeGaulois, Last accessed 11 August 2020. 2020 list bitcoin mixers bitcoin tumblers websites. https://bitcointalk.org/index.php?topic=2827109.0 . ↩
[38] Malavolta, G., Moreno-Sanchez, P., Schneidewind, C., Kate, A., Maffei, M., 2019. Anonymous multi-hop locks for blockchain scalability and interoperability., in: NDSS. ↩
[39] Maurer, F.K., Neudecker, T., Florian, M., 2017. Anonymous coinjoin transactions with arbitrary values, in: 2017 IEEE Trustcom/BigDataSE/ICESS, IEEE. pp. 522–529. ↩
[40] Maxwell, G., 2013a. Coinjoin: Bitcoin privacy for the real world, 2013. URL: https://bitcointalk.org/index.php . ↩
[41] Maxwell, G., 2013b. Coinswap: transaction graph disjoint trustless trading (2013). URL: https://bitcointalk.org/index.php . ↩
[42] Meiklejohn, S., Pomarole, M., Jordan, G., Levchenko, K., McCoy, D., Voelker, G.M., Savage, S., 2013. A fistful of bitcoins: characterizing payments among men with no names, in: Proceedings of the 2013 conference on Internet measurement conference, pp. 127–140. [↩ вступление] [↩ контекст] [↩ исследования деанонимизации]
[43] Moser, M., 2013. Anonymity of bitcoin transactions. ↩
[44] Möser, M., Böhme, R., 2017. Anonymous alone? measuring bitcoin’s second-generation anonymization techniques, in: 2017 IEEE European Symposium on Security and Privacy Workshops (EuroS&PW), IEEE. pp. 32–41. [↩ CoinSwap] [↩ анонимное множество] [↩ несвязанность] [↩ неотслеживаемость] [↩ практические реализации]
[45] Nakamoto, S., 2008. Bitcoin: A peer-to-peer electronic cash system. ↩
[46] nopara, ., Last accessed 3 Feb 2021. Dumplings. https://github.com/nopara73/Dumplings . ↩
[47] nopara73, Last accessed 3 Feb 2021. Tumblebit vs coinjoin. https://nopara73.medium.com/tumblebit-vs-coinjoin-15e5a7d58e3 . ↩
[48] Pfitzmann, A., Hansen, M., 2010. Aterminology for talking about privacy by data minimization: Anonymity, unlinkability, undetectability, unobservability, pseudonymity, and identity management. ↩
[49] Reid, F., Harrigan, M., 2013. An analysis of anonymity in the bitcoin system, in: Security and privacy in social networks. Springer, pp. 197–223. [↩ вступление] [↩ контекст] [↩ исследования деанонимизации]
[50] Rivest, R.L., Shamir, A., Adleman, L., 1978. A method for obtaining digital signatures and public-key cryptosystems. Communications of the ACM 21, 120–126. ↩
[51] Ruffing, T., Moreno-Sanchez, P., 2017. Valueshuffle: Mixing confidential transactions for comprehensive transaction privacy in bitcoin, in: International Conference on Financial Cryptography and Data Security, Springer. pp. 133–154. ↩
[52] Ruffing, T., Moreno-Sanchez, P., Kate, A., 2014. Coinshuffle: Practical decentralized coin mixing for bitcoin, in: European Symposium on Research in Computer Security, Springer. pp. 345–364. [↩ CoinShuffle] [↩ CoinShuffle++] [↩ Secure Escrow Address]
[53] Ruffing, T., Moreno-Sanchez, P., Kate, A., 2017. P2p mixing and unlinkable bitcoin transactions., in: NDSS, pp. 1–15. ↩
[54] Schnorr, C.P., 1989. Efficient identification and signatures for smart cards, in: Conference on the Theory and Application of Cryptology, Springer. pp. 239–252. ↩
[55] Tasca, P., Tessone, C.J., 2017. Taxonomy of blockchain technologies. principles of identification and classification. arXiv preprint arXiv:1708.04872 . ↩
[56] Todd, P., 2014. Bip 65: Op checklocktimeverify. Github (accessed 18 October 2015) https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki . ↩
[57] Tran, M., Luu, L., Kang, M.S., Bentov, I., Saxena, P., 2018. Obscuro: A bitcoin mixer using trusted execution environments, in: Proceedings of the 34th Annual Computer Security Applications Conference, pp. 69. ↩
[58] Valenta, L., Rowan, B., 2015. Blindcoin: Blinded, accountable mixes for bitcoin, in: International Conference on Financial Cryptography and Data Security, Springer. pp. 112–126. [↩ BlindCoin] [↩ LockMix]
[59] Van Saberhagen, N., 2013. Cryptonote v 2.0. ↩
[60] Wang, Q., Li, X., Yu, Y., 2017. Anonymity for bitcoin from secure escrow address. IEEE Access 6, 12336–12341. ↩
[61] Weigl, D., 2016 (Last accessed 11 August 2020). Mycelium shufflepuff. https://github.com/DanielWeigl/Shufflepuff . ↩
[62] Ziegeldorf, J.H., Grossmann, F., Henze, M., Inden, N., Wehrle, K., 2015. Coinparty: Secure multi-party mixing of bitcoins, in: Proceedings of the 5th ACM Conference on Data and Application Security and Privacy, pp. 75–86. ↩
Источник: bitnovosti.com