Monero Tracing, лекция для сотрудников Chainalysis. Part I.

Monero Tracing, лекция для сотрудников Chainalysis. Part I.

special for @TorZireael1

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

Наша сегодняшняя программа начнется с основ Monero, что это такое, как она работает и почему люди используют ее. Затем мы кратко познакомимся с нашим внутренним инструментом Monero block explorer, который мы используем для анализа Monero. И наконец, мы рассмотрим реальный случай на рынке Darknet, который мы расследовали не так давно. И вы сможете увидеть на практике, как выглядит наша трассировка. Пожалуйста, не стесняйтесь задавать вопросы в чате. У меня здесь есть несколько коллег, которые с удовольствием ответят на ваши вопросы или оставят их на потом, когда мы проведем Q&A.

Итак, что такое Monero? Monero - это криптовалюта, которая, как и Bitcoin, сочетает в себе криптографию и распределенные реестры для безопасной и проверяемой передачи стоимости. Но как конфиденциальная криптовалюта, она имеет встроенные функции, которые призваны сохранить использование и безопасность распределенных реестров, но добавляет передовую криптографию для дополнительного уровня конфиденциальности в публичном блокчейне. Я просто вкратце объясню, почему я считаю Monero очень крутой. Это действительно передовая линия гонки вооружений, если хотите, между криптографами и следователями вроде нас, или защитниками конфиденциальности, или преступниками и следователями вроде нас.

У Monero невероятная команда разработчиков. Они постоянно ищут слабые места в своих протоколах конфиденциальности. И поэтому они очень активно стараются сделать протокол максимально безопасным и приватным. Так что в криптографическом плане здесь происходят очень интересные вещи. А это значит, что и нам приходится делать интересные вещи, чтобы попытаться отследить его.

Monero зародилась в документе под названием CryptoNote, который был нацелен на достижение приватности и децентрализации. CryptoNote была впервые реализована в криптовалюте под названием Bytecoin, которую некоторые называют первой конфиденциальной криптовалютой. Затем из сообщества Bytecoin выделилась Monero из-за споров вокруг Bytecoin и его анонимной команды разработчиков. Сейчас Monero, безусловно, самая известная монета для приватности. Еще есть несколько монет - Zcash и Dash, которые также используются.

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

Почему Monero лучше, чем Bitcoin? Конечно, «лучше» - это субъективный термин, но если вы сторонник конфиденциальности, то это действительно объективно лучше. Изначально биткойн считался анонимным и не отслеживаемым многими людьми. Если взглянуть на блокчейн, то это просто строки букв и цифр. Любой может создать новый адрес и так далее. Но со временем стало ясно, что на самом деле это просто фикция. Все можно связать и отследить и полностью все видно в блокчейне bitcoin. По этой причине Monero немного лучше для тех, кто хочет сохранить свою конфиденциальность, заткнув эти дыры.

Мне нравится показывать эту карту активных узлов в сети Monero, потому что она показывает, насколько глобально децентрализована сеть, а это на самом деле очень важно. Некоторые страны приняли меры, чтобы объявить конфиденциальные криптовалюты вне закона. Такие страны, как Япония и ОАЭ, уже объявили конфиденциальные криптовалюты вне закона, а недавно в ЕС просочился проект постановления, которое должно было их запретить. Но поскольку эта система настолько децентрализована, что одному правительству практически невозможно в одностороннем порядке закрыть всю сеть. И по этой причине она снова в своем роде защищена от определенных вмешательств правительства. У пользователей остается множество способов, которыми они могут осуществлять транзакции в сети.

кошельки Monero

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

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

Одной из отличительных особенностей является так называемая кольцевая конфиденциальная транзакция, также известная как кольцевая CTs. Когда вы отправляете транзакцию Monero, вместо того, чтобы было совершенно очевидно, что средства поступают от вашей личности, протокол Monero автоматически привлекает кучу других транзакций, проведенных ранее в блокчейне Monero, а затем скрывает реальный расход средств среди всех этих приманок (decoys). Изначально включение таких decoys было необязательным, но со временем стало ясно, что если люди не соглашаются на это, то это делает всю сеть слабее. Поэтому теперь существует обязательный минимальный размер кольца. В начале, несколько лет назад, он составлял 11, что означало, что при каждой транзакции на входе вы видели один истинный вывод, который был спрятан среди 10 decoys. В настоящее время размер кольца составляет 16, то есть один настоящий вывод и 15 decoys. И ведутся разговоры о том, чтобы увеличить это число до сотен, что значительно усложнит нашу работу, поскольку большая часть этой работы заключается в том, чтобы научиться удалять эти decoys, чтобы вы могли выполнить элементарное отслеживание.

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

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

Решением является так называемое доказательство с нулевым разглашением ( (Zero-Knowledge Proofs), когда вы хотите убедить кого-то, что знаете некую секретную информацию, не раскрывая при этом, что это за секретная информация на самом деле. Так и в Monero - инициатор транзакции является доказывающим и пытается убедить верификатора, майнера, что он контролирует закрытые ключи для некоторых входящих ранее транзакций и что суммы совпадают, не раскрывая при этом, какие входящие транзакции является реальными и какая сумма тратится. Это действительно сложная концепция. У меня было много проблем с этим, потому что я не математик и не логик. Поэтому вот пара аналогий, которые помогают мне немного лучше понять, как можно что-то доказать, не предоставляя никакого контекста того, что вы доказываете.

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

Where's Waldo?

Поэтому давайте перейдем к более сложному примеру. Предположим, у нас есть книга «Where's Waldo?» [примечание - "Где Волдо?" это детская книга в которой в различных иллюстрациях нужно находить главного героя], и мы хотим доказать кому-то, что знаем, где находится Waldo, но не хотим показывать где конкретно он находится. То есть мы хотим доказать, что знаем где Waldo, но не хотим точно указывать его местораположение. Как мы можем это сделать? Ну, один из способов - взять большой кусок картона и прорезать в нем маленькую дырочку размером с Waldo, а затем наложить этот картон на страницу книги так, чтобы все, кроме Waldo, было заслонено. Затем мы можем показать это нашему другу. Наш друг видит Waldo, но не видит никакой другой информации, связанной с ним. Таким образом, мы можем доказать, что знаем что-то, не раскрывая того, что мы знаем. Возвращаясь к Monero, доказательство с нулевым разглашением позволяет отправлять Monero, не раскрывая информации о том кто конкретно из членов кольца отправляет и какова была сумма потраченных Monero на самом деле.

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

Есть еще пара внедренных технологий в блокчейн Monero, о которых стоит поговорить. Первая — это пуленепробиваемость (buletproofs). Не так уж важно, как работают buletproof технологии. Просто приятно знать, что они сделали сеть намного быстрее и снизили комиссии за транзакции. И поэтому они сделали ее немного более законным вариантом для торговли криптовалютой. Гораздо более крупная и опасная часть технологии, которая была добавлена, называется Dandelion ("Одуванчик"). Dandelion изначально был разработан для блокчейна Bitcoin, но затем был внедрен для Monero. И то, что он делает - это скрывает информацию об IP-адресе отправителя транзакции. Любой может стать частью блокчейна. Любой может настроить свою собственныю ноду и заставить его получать и передавать транзакции. И когда вы участвуете в такой сети, если другая нода отправляет вам транзакцию, то вы можете определить IP-адрес, с которого приходит транзакция. Очевидно, что это большой пробел в конфиденциальности. Вы не хотите, чтобы кто-то мог видеть ваш IP-адрес, когда вы отправляете транзакцию.

Способ, которым Dandelion решает эту проблему, заключается в том, что он как бы разделяет передачу транзакции на две части. Начинается все с фазы анонимности, когда транзакция просто передается от одной ноды к другой, не распространяясь более широко по всей сети. Затем, в определенный случайно выбранный момент, нода решает начать распространять транзакцию по всей сети. И если вы получаете ее на этом более позднем этапе, вы понятия не имеете, является ли IP-адрес, с которого вы ее получаете, тем же самым IP-адресом, с которого она пришла. И на самом деле очень вероятно, что IP-адрес этого человека, инициатора транзакции, по сути невидим для вас. Поэтому для нас это стало действительно большой проблемой, потому что большая часть того, как мы отслеживаем Monero, включает в себя наблюдение за IP-адресами различных сервисов.

Таким образом мы можем узнать, что потенциально, если транзакция транслируется с определенного IP, это может быть признаком того, что эта транзакция была инициирована, например, сервисом. Dandelion сделал это невозможным. Но мы еще дальше поговорим о том, как это можно обойти. Но главное, что нужно знать, - это то, что Dandelion был внедрен в октябре 2020 года. И поэтому все, что произошло после этого времени, IP-наблюдения, которые мы собираем, будут намного, намного слабее. Их достоверность будет гораздо ниже. До октября 2020 года мы чувствовали себя вполне уверенно в наших IP-наблюдениях. Поэтому очень важно помнить об этом, когда мы видим IP-адреса в нашем инструменте. Мы всегда должны думать о том, находимся ли мы в эпоху до Dandelion или после него. Чтобы наглядно показать разницу между биткоином и Monero давайте посмотрим на публичный проводник блоков и увидим, как по-разному они отображаются.

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

Здесь мы видим скрытые адреса, и поэтому мы не можем просто ввести этот адрес в строку поиска и увидеть другие транзакции этого пользователя. Нет никакого способа связать этот адрес с реальным кошельком, с которого он был отправлен. Мы видим, что реальные вводы скрываются среди всех этих приманок. Эта транзакция произошла, когда размер кольца был 11, то есть на каждый вход приходится 10 ложных входов и один настоящий, который тратится. Вы также видите, что суммы не раскрываются. Однако есть немного больше информации, которую мы можем использовать, и это действительно сбор этих хлебных крошек, которые позволяют нам начать определять поведение блокчейна Monero. Поэтому я просто выделю несколько вещей, которые мы видим на следующей странице.

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

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

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

Вы можете видеть, что большинство пользователей предпочитают использовать стандартную однократную плату, но на этом графике есть и множество других пиков. Конечно, вы видите пики в 5, 25 и 1 000 раз, но среди них так много разных пиков, что мы можем определить, что некоторые из них принадлежат сервисам, если они постоянно используют такую структуру платы. Итак, на этом этапе я собираюсь начать рассказывать немного о нашем внутреннем блокчейне, инструменте Monero Block Explorer.

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

Во-первых, у нас есть поле «Transaction features box», которое мы иногда называем «отпечатком пальца» транзакции. Это некоторые из тех характеристик, которые мы можем получить, несмотря на все эти функции конфиденциальности. Первое число - это количество входов транзакции. Второе число - количество выходов транзакции. Третье число - структура комиссии, которую использует транзакция. Есть также дополнительные поля данных, нам не нужно говорить о них слишком много, но это еще один способ, с помощью которого мы можем попытаться отследить людей, использующих Monero.

Мы также можем увидеть IP-адрес, который мы впервые увидели, транслируя эту транзакцию. Однако, как вы заметили, мы видим, что находимся в декабре 2021 года, то есть уже после внедрения Dandelion. Поэтому мы должны помнить, что велика вероятность того, что этот IP-адрес не является тем, который первым инициировал эту транзакцию. Если посмотреть на разделы входов и выходов, то можно заметить, что некоторые строки уже закрашены серым цветом - это наш инструмент исключает некоторые приманки. Он использует различные эвристики, чтобы определить, что некоторые из них могли быть потрачены ранее с более высокой степенью вероятности или другие методы используемые для исключения подставных целей. Так что мы можем практически не обращать внимания на эти серые строки. Вы также можете увидеть здесь, внизу, IP-адрес, помеченный как RPC. И это то, что всегда привлекает наше внимание. Это означает, что пользователь подключился к одному из наших узлов, чтобы передать свою транзакцию. Таким образом мы как бы обходим Dandelion. Пользователь подключается непосредственно к нам, и поэтому мы можем видеть его IP-адрес, когда он подключается.

Конечно, это может происходить через прокси, VPN или Tor, но мы точно уверены в том, что транзакция идет именно с этого IP-адреса. Поэтому мы поговорим об этих наблюдениях за RPC немного подробнее через несколько минут. Хочу обратить внимание еще на несколько моментов.

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

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



Report Page