Поговорим об анализе транзакций Bitcoin (btc)

Overlord

IT RC
Команда форума
Модератор
Всем привет! Друзья, постоянные читатели раздела, да и просто гости форума, рад представить Вашему вниманию тему волнующих многих пользователей. Надеюсь Вы извлечете для себя что-то полезное. После прочтения приглашаю Всех к обсуждению!

Введение.


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

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

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



1. Несколько интерпретаций блокчейн транзакций

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

Рассмотрим пример транзакции:

1 BTC ----> 1 BTC
3 BTC 3 BTC

Эта транзакция имеет два входа, стоимостью 1 BTC и 3 BTC, и создает два выхода, также стоимостью 1 BTC и 3 BTC.

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

Существует как минимум девять возможных интерпретаций:

1) Алиса обеспечивает оба входа и платит 3 BTC Бобу. Алиса владеет выходом 1 BTC (то есть, это выход сдачи).
2) Алиса обеспечивает входы и выплачивает 1 BTC Бобу, при этом 3 BTC возвращаются Алисе в качестве сдачи.
3) Алиса обеспечивает вход 1 BTC, а Боб обеспечивает вход 3 BTC. Алиса получает выход 1 BTC, а Боб получает выход 3 BTC. Это своего рода транзакция CoinJoin.
4) Алиса платит 2 BTC Бобу. Алиса обеспечивает вход 3 BTC, получает выход 1 BTC; Боб обеспечивает вход 1 BTC и получает 3 BTC. Это будет тип транзакции PayJoin .
5) Алиса платит 4 BTC Бобу (но почему-то использует два выхода).
6) Ложная транзакция - Алиса владеет всеми входами и выходами и просто перемещает монеты между своими адресами .
7) Алиса платит Бобу 3 BTC и Кэрол 1 BTC. Это пакетный платеж без адреса сдачи.
8) Алиса платит 3, Боб платит 1; Кэрол получает 3 BTC, а Дэвид получает 1 BTC. Это пакетный платеж CoinJoin без адреса сдачи .
9) Алиса и Боб платят 4 BTC Кэрол (но используя два выхода).

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

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

Единицы валюты биткойн не имеют водяных знаков в транзакции (другими словами, они не имеют маленьких серийных номеров). Например, входные данные 1 BTC в этой транзакции могут оказаться в выходных данных 1 BTC или в части выходных данных 3 BTC, или в комбинации обоих. Транзакции - это сопоставления «многие ко многим», поэтому в данном смысле невозможно ответить на вопрос, где окажется 1 BTC. Такая взаимозаменяемость биткойнов в рамках одной транзакции является важной причиной различных интерпретаций вышеуказанной транзакции.

2. Модель угрозы

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

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

3. Метод слияния данных

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

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

Блокчейн-атаки на конфиденциальность


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

Биткойн использует модель UTXO . Транзакции имеют входы и выходы, их может быть как по одному так и несколько. Предыдущие выходные данные могут использоваться в качестве входных данных для последующих транзакций. Выход, который еще не был потрачен, называется выходом неизрасходованной транзакции (UTXO). UXTO часто называют «монетами». UTXO связаны с биткойн-адресом и могут быть потрачены путем создания действительной подписи, соответствующего scriptPubKey адреса.

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

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


1. Эвристика принадлжености входа

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


Например, рассмотрим эту транзакцию с входами A, B и C; и выходами X и Y.

A (1 BTC) --> X (4 BTC)
B (2 BTC) Y (2 BTC)
C (3 BTC)

Эта транзакция будет указывать, что адреса B и C принадлежат одному и тому же лицу, которому принадлежит адрес A.

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

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


2. Обнаружение адреса сдачи

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

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

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

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

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

Отказ от повторного использования адресов - очевидная защитная мера.

  • Фингерпринтинг кошелька

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

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

В качестве примера рассмотрим пять типичных транзакций, которые потребляют по одному входному адресу и выдают два выходных. A, B, C, D, E относятся к транзакциям. 1, 2 и т. д. относятся к выходным адресам этих транзакций.



--> C1
A1 --> B2 --> C2
--> B2 --> D1
--> D2 --> E1
--> E2

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

В примере транзакции с несовпадающими фингерпринтом, заменены на X, и показаны ниже. Цепь четко прослеживается, ясно, что B2, D2, E1 - это адреса сдачи, которые принадлежат тому же кошельку, что и A1.


-> Х
A1 -> X -> X
-> B2 -> X
-> D2 -> E1
-> Х

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

  • Форматы адресов. Кошельки обычно используют только один тип адреса. Если транзакция имеет все входы и один выход одного и того же типа адреса (например, p2pkh) с остальными выходами другого типа (p2sh), то разумным предположением является то, что выход в том же формате адреса (p2pkh) - это сдача, и выход в другом формате адреса (p2sh) - это платеж, принадлежащий кому-то другому.
  • Типы скриптов. Каждый кошелек обычно использует только один скрипт. Например, передающий кошелек может быть P2SH 2-из-3 кошельком с мультиподписью, который делает транзакции на два выхода: одну состоящую 2-из-3 адресов с мультиподписью и другую 2-из-2 адресов с мультиподписью. Различные скрипты являются признаком того, что один выход является адресом оплаты, а другой выход адреса сдачи.
  • BIP69 Лексикографическое индексирование входов и выходов транзакций. Этот BIP описывает стандартный способ для кошельков упорядочить свои входы и выходы для конфиденциальности. В настоящее время в экосистеме кошельков есть комбинации кошельков, которые реализуют и не реализуют данный стандарт, что помогает в фингерпринтинге. Обратите внимание, что обычная транзакция « один вход-два-выхода» со случайным порядком будет придерживаться BIP69 в 50% случаев.
  • Количество входов и выходов. Разные пользователи часто строят транзакции по- разному. Например, частные лица часто совершают транзакции только с двумя выходами; оплата и сдача, в то время как крупные организации, такие как биржи, используют консолидацию и пакетирование. Выход, который позже используется для создания пакетной транзакции, вероятно, не был сдачей. Эту эвристику также называют «потребительской эвристикой».
  • Поля транзакций. Значения в формате транзакции , которые могут варьироваться в зависимости от программного обеспечения кошелька: nLockTime - это поле в транзакциях, устанавливаемое некоторыми кошельками, чтобы сократить комиссию. Комбинации кошельков в экосистеме,как реализуют так и не реализуют эту функцию. nLockTime также может использоваться в некоторых приватных протоколах, таких как CoinSwap и nSequence.
  • Комиссии майнеров. Различное программное обеспечение кошелька может по-разному реагировать на нехватку места для майнеров, что может привести к разным видам выплат майнерам. Это также может быть способом фингерпринтинга кошельков.
  • Выбор монет. Различные программы для кошельков могут выбирать, какие UTXO тратить, используя разные алгоритмы, которые можно использовать для фингерпринтинга .


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

  • Круглые числа
Многие суммы платежей являются круглыми числами, например: 1 BTC или 0.1 BTC. В этом случае оставшаяся сумма сдачи будет не круглым числом (например, 1.783974 BTC). Это будет полезно для поиска адреса сдачи. Сумма может быть круглым числом в другой валюте.

  • Комиссия
BIP 0125 определяет механизм замены неподтвержденной транзакции другой транзакцией, которая платит более высокую комиссию. В контексте пространства ограниченного рынка пользователь может обнаружить, что его транзакция не подтверждается достаточно быстро, поэтому он решает «увеличить комиссию» или заплатить более высокую плату майнеру. Однако, как правило, новая более высокая оплата комиссионых майнера будет происходить за счет уменьшения суммы сдачи. Таким образом, если злоумышленник наблюдает за всеми неподтвержденными транзакциями, он может видеть как более раннюю транзакцию с низкой комиссией, так и более позднюю транзакцию с высокой комиссией, и результат с уменьшенной суммой будет выходом сдачи.

Этот риск может быть уменьшен за счет уменьшения суммы платежа (в модели «получатель платит за комиссию»).

  • Эврестика лишнего входа
Также известна как «эвристика оптимальной сдачи». Рассмотрим эту транзакцию с биткойнами. Она имеет два входа на 2 BTC и 3 BTC и два выхода на 4 BTC и 1 BTC.


2 BTC -> 4 BTC
3 BTC 1 BTC


Предполагая, что один из выходов является сдачей, а другой - платежом. Существует две интерпретации: выход платежа - это либо выход 4 BTC, либо выход 1 BTC. Но если выход 1 BTC является суммой платежа, то вход 3 BTC не требуется, поскольку кошелек мог потратить на вход 2 BTC и заплатить за это более низкую комиссию майнеру. Это указывает на то, что реальный выходной платеж равен 4 BTC, а 1 BTC является выходом сдачи.

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

2 BTC -> 4 BTC
3 BTC 6 BTC
5 BTC

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

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

  • Отправка в другой тип скрипта


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

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

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

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

  • CoinJoin с равным выходом


Транзакции CoinJoin с равным выходом раскроют адрес сдачи, потому что это выходы, которые не имеют равных значений. Например:

A (1 BTC)
X (5 BTC) ---> B (1 BTC)
Y (3 BTC) C (4 BTC)
D (2 BTC)

Существует явный признак того, что выход D является сдачей, принадлежащим владельцу входа Y, в то время как выход C является сдачей, принадлежащим входу X. Однако CoinJoin нарушает эвристику принадлежности и эффективно скрывает владение выходами оплаты (A и B), поэтому оптимальным решением в значительной степени будет в пользу использования CoinJoin.

  • Рост кластеров

Кластеры кошельков, установленные при помощи эвристики принадлежности входа, обычно растут (по количеству адресов) медленно и постепенно. Объединение двух больших кластеров встречается редко и может указывать на то, что эвристика имеет недостатки. Таким образом, другой способ определить адрес сдачи состоит в том, чтобы выяснить, какой выход приводит к медленному росту кластеров. Точное значение «насколько медленно» кластеру позволено расти, остается открытым вопросом.


3. Сумма

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

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

  • Входные суммы, раскрывающие состояние счета отправителя

Несовпадение размеров доступного входа с требуемым может привести к утечке общего состояния счета отправителя. Например, при намерении отправить 1 биткойн кому-либо, пользователь может иметь вход только на 10 биткойнов. Они создают транзакцию, в которой 1 биткойн отправляется получателю, а 9 биткойнов - на другой адрес . Получатель может посмотреть транзакцию в блокчейне и сделать вывод, что отправителю принадлежало не менее 10 биткойнов.

По аналогии с бумажными деньгами, если вы отдаете купюру в 100 долларов США для оплаты напитка стоимостью всего 5 долларов США, бармен узнает, что ваш баланс составляет не менее 95 долларов США. Конечно, он может быть и выше, но, по крайней мере, не ниже .



  • Точные суммы платежа (без сдачи)


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

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

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

4. Пакетирование

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

Что касается приватности, то здесь подразумевается, что получатели могут видеть количество и адрес получателей.

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


5. Тайный покупатель

Платеж методом тайного покупателя, используется злоумышленником чтобы получить конфидециальную информацию о своей цели. Это будет работать, даже если избежать повторного использования адреса. Например, если целью является онлайн-продавец, то злоумышленник может купить небольшой предмет. В интерфейсе платежа ему будет показан один из биткойн-адресов продавца. Теперь злоумышленник знает, что этот адрес принадлежит продавцу, и наблюдая в блокчейне за последующими транзакциями, будет обнаружена ещё информация, которая в сочетании с другими методами может раскрыть много данных о продавце. Эвристика принадлежности входа и обнаружение адреса сдачи может выявить другие адреса, принадлежащие продавцу (при условии, что контрмеры, такие как CoinJoin не используются), и может дать нижнюю границу для объема продаж. Это работает, потому что любой пользователь Интернета может запросить один из адресов продавца .



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

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

Правильным решением для кошельков - не тратить монеты, которые попали на уже использованные пустые адреса.

7. Корреляция суммы

Корреляция сумм относится к поиску выходных сумм во всем блокейне.

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


V --> [миксер] --> V - fee


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

Способ противостоять количественной корреляции состоит в том, чтобы разделить отправку биткойнов обратно пользователю на множество транзакций с выходными суммами (w0, w1, w2), которые вместе составляют V минус комиссия.



V --> [миксер] --> w0
--> w1
--> w2


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

8. Временная корреляция

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

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


Атаки не использующие блокчейн



1. Анализ трафика


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

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

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

Для обнаружения источника транзакции или блока может использоваться атака Сивиллы (sybil attack), при которой злоумышленник не может полностью контролировать интернет-соединение жертвы. Он, создает множество своих поддельных узлов на разных IP-адресах, которые настойчиво заявляют о себе, пытаясь привлечь больше узлов для подключения к ним, они также пытаются подключиться к как можно большему количеству других прослушивающих узлов.

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

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

2. Браузерный кошелек

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

3. Сайты с проводниками блоков (Blockchain explorer)

Blockchain Explorer широко используется. Некоторые пользователи даже ищут свою транзакцию на этих веб-сайтах и обновляют ее, пока она не достигнет 3 подтверждений. Это не есть хорошо для вашей приватности, поскольку веб-сайт может легко связать IP-адрес пользователя с его транзакцией в биткойнах (если только не используется tor), а запросы к его веб-сайту показывают, что транзакция или адрес представляют интерес для кого-то, кто имеет определенные поведенческие паттерны.


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


4. BIP 37

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

5. Публичные серверы Electrum

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

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

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

6. Прослушка

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

Решение состоит в том, чтобы шифровать адреса, где это уместно, или каким-то образом скрыть их от злоумышленника в соответствии с моделью угрозы.

7. Раскрытие данных при совершении операций с биткойнами

Иногда пользователи могут добровольно раскрывать данные о себе или быть обязанными сделать это, лицом с которым они взаимодействуют. Например, многие биржи требуют, чтобы пользователи проходили проверки на предмет борьбы с отмыванием денег и "Знай своего клиента" (AML / KYC), которые требуют от пользователей раскрытия личной информации, такой как их настоящее имя, место жительства, род занятий и доход. Вся эта информация затем связывается с биткойн-адресами и транзакциями, которые впоследствии используются.

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

8. Цифровая криминалистика

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

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

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


Методы улучшения конфиденциальности (вне блокчейна)



1. Анонимное получение биткойнов


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

Многие биржи требуют, чтобы пользователи проходили проверки на предмет борьбы с отмыванием денег и «Знай своего клиента» (AML / KYC), что требует от пользователей раскрытия личной информации, такой как их настоящее имя, место жительства, род занятий и доход. Вся эта информация затем связывается с биткойн- адресами и транзакциями, которые впоследствии используются.

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

  • Операции с наличными

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


2. Синхронизация истории кошелька

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

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

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

  • Получение личной информации

В криптографии, протокол поиска информации (PIR) - это протокол, который позволяет пользователю извлекать
Фильтрация блоков на стороне клиента

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

  • Адресный запрос через луковую маршрутизацию

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

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

3. Контрмеры к анализу трафика

Bitcoin Core и его форки имеют контрмеры против атак Сивиллы и атак информационного затмения. Атаки информационного затмения - это разновидность атаки Сивиллы, когда злоумышленник пытается контролировать все пиры своей цели и блокировать или контролировать доступ к остальной части сети. Такие атаки были тщательно изучены в статье Eclipse Attacks в одноранговой сети Биткойн за 2015 год, которая привела к созданию нового кода для Bitcoin Core для смягчения последствий.

Bitcoin Core и его fork алгоритмы используют алгоритм, известный как триклинг, при ретрансляции неподтвержденных транзакций с целью максимально затруднить поиск IP-адреса источника транзакции. Для каждого пира, узел хранит список операций.

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

  • Tor
Если злоумышленник, контролирует соединение, тогда биткойн может быть полностью запущен через Tor. Tor зашифрован и скрывает конечные точки, поэтому провайдеры интернет-услуг даже не узнают, что вы используете биткойны. Остальные узлы соединения биткойна не смогут увидеть ваш IP-адрес , так как Tor скрывает его. Bitcoin Core и его fork алгоритмы обладают функциями, чтобы упростить настройку и использование Tor. Некоторые легкие кошельки также полностью работают через Tor .

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

  • Протокол Dandelion (Одуванчик)

Протокол Dandelion - еще одна технология для трансляции приватных транзакций. Основная идея заключается в том, что распространение транзакции происходит в два этапа: сначала этап "стебля"(этап "stem"), а затем этап "пуха" (этап "fluff"). Во время этапа "стебля", каждый узел передает транзакцию к случайно выбранному узлу. После случайного количества перемещений по цепочке транзакция входит в этап "пуха". Наконец, она достигает точки, где узел вещания объявляет о ней остальной части сети через процесс диффузии. Даже когда злоумышленник может определить местоположение этапа "пуха", гораздо сложнее определить источник "этапа" стебля.

  • Получение биткойн-данных через спутник

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

С 2019 года компания предлагает платный API, который позволяет транслировать любые данные в любую точку мира через спутник, что, по-видимому, и позволяет им зарабатывать деньги. Но, похоже, базовый сервис трансляции блокчейна всегда будет бесплатным.


Методы улучшения конфиденциальности (блокчейн)



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


1. Как избежать повторного использования адресов

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

  • Как избежать принудительного повторного использования адреса

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

2. Контроль монет

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

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

3. Мульти-транзакции

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


4. Избегайте сдачи

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

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

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

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


5. Несколько выходов сдачи

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

6. Улучшения приватности скрипта

Через скрипт каждого биткойн выхода может происходить утечка конфиденциальной информации. Например, по состоянию на конец 2018 года около 70% адресов биткойнов обладают одной подписью, а 30% обладают мультиподписью. Много исследований было направлено на улучшение конфиденциальности скриптов путем поиска способов, чтобы несколько разных типов скриптов выглядели одинаково. Помимо улучшения приватности, эти идеи также улучшают масштабируемость системы за счет снижения требований к объему хранилища и пропускной способности.

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

Schnorr - это система цифровых подписей, которая имеет много преимуществ по сравнению с "статус-кво" ECDSA . Одним побочным эффектом является то, что любая N-of-N и M-of-N мультиподпись может быть легко сделана так, чтобы она выглядела как single-sig при включении в блокчейн.

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

В скриптах без сценариев почти единственная видимая вещь - это открытые ключи и подписи. Более того, в многопартийной среде будет единый открытый ключ и единственная подпись для всех участников. Всё выглядит одинаково -платежные каналы Lightning Network выглядят так же, как single-sig платежи, эскроу, атомарные свопы или федеративные привязанные сайдчейны. Практически все, что вы думаете о том, что люди делают с биткойнами будет выглядеть одинаково.


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

Taproot - это способ объединить систему подписей Schnorr с MAST. Система подписей Schnorr может использоваться для траты монет, но MAST используется только при желании пользователя. Подпись schnorr может быть любой N-of-N или использовать любой скрипт сценария без сценариев. Следствием использования taproot является гораздо большая анонимность для смарт-контрактов, поскольку любой контракт, такой как Lightning Network, CoinSwap , мультиподпись и т. д., будет казаться неотличимым от обычной транзакции с единственной подписью в блокчейне.

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

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

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

7. Централизованные миксер сервисы

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

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

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

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

8. CoinJoin

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

  • CoinJoin транзакции с идентичными выходами

Скажем, что транзакция ниже является CoinJoin транзакцией. Это означает, что входы 2 BTC и 3 BTC фактически
принадлежат разным субьектам.


2 BTC -> 3 BTC
3 BTC 2 BTC


Эта транзакция нарушает эвристику принадлежности входа, поскольку все ее входы не принадлежат одному и тому же человеку, но все еще легко определить, где закончились биткойны каждого входа. Если посмотреть на суммы (и предположить, что эти два субъекта не платят друг другу), становится очевидным, что вход 2 BTC заканчивается в выходе 2 BTC, и то же самое для 3 BTC. Чтобы действительно улучшить приватность, нам нужна транзакция CoinJoin, которая имеет более одного выхода одинакового размера:



2 BTC -> 2 BTC
3 BTС 2 BTC
1 BTC


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

  • PayJoin

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

PayJoin (также называемый pay-to-end-point или P2EP)- это особый тип CoinJoin транзакции между двумя сторонами, где одна сторона платит другой. Транзакция, не имеет несколько выходов с одинаковым значением.


2 BTC --> 3 BTC
5 BTC 4 BTC


Это можно было бы интерпретировать как простую транзакцию, выплачиваемую куда-то с оставшейся сдачей (на данный момент игнорируем вопрос о том, какой выход является платежом, а какой - сдачей). Другой способ интерпретации этой транзакции состоит в том, что вход 2 BTC принадлежит продавцу, а 5 BTC принадлежит их покупателю, и что эта транзакция предполагает, что клиент заплатил 1 BTC продавцу. Невозможно сказать, какая из этих двух интерпретаций верна. Результатом является совместная транзакция, которая нарушает эвристику принадлежности входа и улучшает приватность, но также не обнаружима и неотличима от любой обычной биткойн-транзакции.

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

9. CoinSwap

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

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



Адрес Алисы ---> адрес депонирования 1 ---> Адрес Боба
Адрес Боба ---> адрес депонирования 2 ---> Адрес Алисы

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



10. CoinJoinXT

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

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

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

11. TumbleBit

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

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

12. Off-chain транзакции

Off-chain транзакции относятся к любой технологии, которая допускает транзакции биткойнов за пределами блокчейна.

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

Lightning Network - это отдельная большая тема касательно приватности биткойнов, поэтому ей выделен разел ниже.

  • Цифровые сертификаты на основе слепой подписи

Это еще один способ выполнения Off-chain транзакций, основанный на слепых подписях. Платежи через такую систему будут очень приватными. Данная система является закрытой, а сервер-эмитент является центральной точкой отказа, через который все деньги могут быть украдены. Однако эта концепция все еще может быть полезна в определенных ситуациях, когда например, Lightning Network недоступен.


  • Sidechains( сайдчейны)

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

13. Конфиденциальные транзакции

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

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

Lightning Network



Lightning Network - это технология off-chain транзакций, основанная на платежных каналах. Она имеет почти ту же модель безопасности, что и биткойн-транзакции. Не будет преувеличением сказать, что Lightning Network - это революция для биткойнов.

Помимо значительного улучшения приватности, транзакции Lightning Network также намного быстрее и дешевле, чем on-chain транзакции. Lightning узлы создают двухсторонние каналы оплаты между ними, а Lightning транзакции направляются от одного узла к другому. Узлу-источнику и узлу-назначения не нужно иметь канал оплаты непосредственно между ними, поскольку транзакции могут маршрутизироваться через множество промежуточных узлов.

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


1. Луковая маршрутизация

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

2. Атомарные разветвленные платежи

Атомарные разветвленные платежи (AMP) - это протокол в Lightning, который позволяет маршрутизировать один платеж через несколько сетевых транзакций Lightning. Например, если у пользователя есть пять каналов, каждый с балансом 2 BTC, он может отправить один платеж в размере 7 BTC по протоколу AMP по нескольким различным каналам lightning network. С точки зрения приватности, использование AMP приведет к тому, что промежуточные узлы не будут доставлять полную сумму оплаты в 7 BTC, а только частичные суммы платежей в размере 2 BTC или 1 BTC (или любой другой комбинации). Это положительно сказывается на конфиденциальности, поскольку направленные платежи больше не будут допускать утечку информации о точной сумме платежа.


3. Сторонние кошельки

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

Это означает, что все транзакции Lightning Network пользователя будут видны этой компании, и поэтому они не будут иметь никакой конфиденциальности, точно так же, как использование веб-кошелька не имеет никакой конфиденциальности для on-chain пространства биткойнов. Начиная с 2019 года над этой моделью работают Zap Wallet и Lightning Peach. Кошелек Peach фактически имеет флажки в графическом интерфейсе, говорящие «Я согласен с политикой конфиденциальности», и просмотр политики конфиденциальности показывает, что кошелек отслеживает все виды конфидециальной информации. Излишне говорить, что пользователь заботящийся о своей анониминости, не должен использовать такие кошельки.

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



4. Типы анонимных скриптов

Такие типы скриптов как: Schnorr , сценарии без сценариев, taproot и ECDSA-2P - обеспечивают конфиденциальность Lightning Network благодаря тому, что транзакции канала платежей блокчейна кажутся неотличимыми от обычных транзакций блокчейна с единой подписью.



5. Отправка пробных платежей для выявления состояния баланса каналов

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

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

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



Существующие решения для обеспечения приватности



Теперь обощим какое в принципе существует ПО, которое поможет оставаться анонимным при использовании Bitcoin.


1. Lightning Network

Существует несколько реализаций Lightning Network; такие как LND , c-lightning , eclair и т. д.

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

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


2. Ручной CoinJoin

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

3. JoinMarket

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

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

Конфиденциальность значительно улучшается за счет многократного повторения CoinJoin транзакций, поэтому проект JoinMarket включает tumbler script, в котором создаются автоматические CoinJoin транзакции в случайное время и на случайные суммы. Биткойны могут быть депонированы в кошелек JoinMarket HD, а tumbler script отправит их через множество CoinJoin транзакций на три или более адресов назначения. Эта функция использования более чем одного адреса назначения необходима для противостоянию отслеживанию на основе сумм.

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

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


4. Wasabi Wallet

Wasabi Wallet - кошелек, в котором реализован CoinJoin. Это кошелек с открытым исходным кодом, использующий так называемую технику смешивания Chaumian CoinJoin для анонимизации биткоин-транзакций. Пакет включает в себя Tor и весь трафик между клиентами и сервером проходит через него, поэтому IP-адреса скрыты. Кошелек прост в установке и использовании. Кошелек включает в себя все стандартные технологии обеспечения конфиденциальности, такие как HD- кошелек и предотвращение повторного использования адресов, а также обязательный контроль монет. Кошелек использует фильтрацию блоков на стороне клиента для приватного получения собственной истории транзакций.

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

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

Сервер находится в ведении компании zkSNACKs, которая разработала Wasabi Wallet. Компания получает свой доход, взимая комиссию с каждой CoinJoin транзакции.


5. Samourai Wallet

Samourai Wallet - это мобильный биткоин кошелек, который нацелен на максимальную безопасность и конфиденциальность пользователя. Stowaway - это реализация PayJoin. Stonewall - это схема, которая создает транзакции, которые выглядят как CoinJoin транзакции, но на самом деле в них участвует только один человек. Эти поддельные CoinJoin транзакции предназначены для создания ложных срабатываний в алгоритмах, используемых гипотетической компанией следящей за транзакциями. PayNyms - это реализация адресов ECDH . Кошелек также имеет функцию, генерирования адреса сдачи, где он генерирует адрес сдачи того же типа, что и адрес платежа; это позволяет избежать фингерпринтинга с использованием типов адресов, что приводит к обнаружению адреса сдачи.

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



6. Liquid sidechain

Начиная с 2018 года Liquid sidechain реализует Конфиденциальную транзакцию (CT), которая позволяет передавать биткойны по этому сайдчейну, сохраняя при этом суммы транзакций скрытыми. Продукт разработан компанией Blockstream и предназначен для бирж и трейдеров. Это позволяет быстро переводить биткойны анонимно.

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


Какой из этого всего вывод?

  • Подумайте о том, от чего вы скрываетесь, какова ваша модель угроз и каков ваш противник. Обратите внимание, что существуют компании по надзору за транзакциями, которые осуществляют крупномасштабное наблюдение за экосистемой биткойнов.
  • Не используйте адреса повторно. Адреса должны быть показаны одному субъекту для получения денег и никогда не должны использоваться снова после того, как средства на них были потрачены.
  • Старайтесь раскрывать как можно меньше информации о себе при совершении транзакций, например, избегайте проверок AML / KYC.
  • Используйте кошелек, подкрепленный вашей собственной полной фильтрацией узлов или блоков на стороне клиента, но определенно не веб-кошелек.
  • При пересылке цепных транзакций используйте Tor, если ваш кошелек не поддерживает его, скопируйте и вставьте шестнадцатеричные данные транзакции в форму веб-трансляции через браузер Tor.
  • Максимально используйте Lightning Network.
  • Если Lightning Network недоступен, используйте кошелек, который задействует CoinJoin.
  • Если Вы считаете, что можете попасть за стол к цифровому криминалисту, используйте такое решение, как TAILS OS или аналоги.


Всем спасибо за внимание!
 
Назад
Сверху