Приватность UTXO
Cover

UTXO, адреса и CoinJoin: Обеспечение приватности в экономике Биткоина

3 октября 2022 г.
Перевод статьи Unchained. Поддержать проект.

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

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

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

Публично доступная информация #

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

UTXO располагаются в адресах #

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

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

Адреса отслеживаются в блокчейне #

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

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

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

Обеспечение приватности при получении биткоинов #

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

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

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

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

На данном этапе ключевым моментом является следующее: не забывайте о негативных последствиях повторного использования адресов. Настоятельно рекомендуется использовать новый адрес каждый раз, когда вы получаете биткоины; особенно от нового отправителя. Если вы раскроете адрес отправителю A и получите 0,2 BTC, а затем раскроете тот же адрес отправителю Б и получите 0,3 BTC, оба отправителя смогут увидеть, что вы получили 0,5 BTC из нескольких разных источников.

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

Обеспечение приватности при отправке биткоинов #

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

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

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

Предотвращение нежелательных комбинаций адресов #

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

Рассмотрим пример:

На приведенном выше рисунке отправитель A отправил вам 0,2 BTC, отправитель Б — 0,3 BTC, а отправитель В — 1,1 BTC. Поскольку вы каждый раз использовали разные адреса, ни один из отправителей не знает о том, сколько биткоинов находится в вашем распоряжении, помимо той суммы, которую они сами вам отправили.

Однако, как только вы возьмете UTXO с каждого адреса и объедините их, чтобы отправить кому-то 1,6 BTC, ваши три адреса окажутся связаны. Если отправитель A был злоумышленником, отслеживающим ваше поведение, он узнал, что два других адреса, предоставляющие входы для транзакции, скорее всего, принадлежат вашему кошельку. Он также может увидеть, что на этих адресах в какой-то момент находилось в общей сложности ещё 1,4 BTC, и он может узнать, кто владел этими биткоинами до того, как они попали к вам (возможно, узнав о ваших отношениях с отправителем Б и отправителем В).

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

Избегаем большой сдачи #

В нашей первой статье о UTXO мы обсуждали проблему для приватности, возникающую при использовании крупного UTXO для отправки кому-то гораздо меньшей суммы биткоинов. Например, если вы используете UTXO номиналом 0,9 BTC, чтобы отправить кому-то 0,2 BTC, вы также отправите оставшиеся 0,7 BTC обратно себе на новый адрес в качестве сдачи.

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

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

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

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

Восстановление анонимности с помощью CoinJoin #

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

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

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

Как работает CoinJoin? #

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

Рассмотрим пример:

Эта визуализация демонстрирует CoinJoin между вами и четырьмя другими участниками. Каждый участник берет 0,05 BTC с адреса, связанного с его личностью, и соглашается внести их в общую транзакцию (плюс комиссия). Когда транзакция завершается, каждый получает 0,05 BTC обратно в виде UTXO на совершенно новый адрес подконтрольного ему кошелька. Пять новых адресов, на которые поступают UTXO, должны быть анонимными, и любой наблюдатель, просматривающий блокчейн, не будет иметь представления о том, какой из адресов-получателей принадлежит вам. Вероятность того, что каждый из адресов принадлежит вам, составляет всего 20%.

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

Существует несколько различных реализаций CoinJoin, которые широко используются пользователями по всему миру для анонимной координации этого процесса. Наиболее известные варианты — WabiSabi, Samourai Whirlpool и JoinMarket. Каждая реализация работает по-своему и имеет свои преимущества, поэтому прежде чем сделать свой выбор, проведите дополнительное исследование.

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

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

Заключение #

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

Пылевая атака #

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

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

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

Запуск собственного узла #

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

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

Сеть Лайтнинг #

Отличный способ завершить эту серию о UTXO — обсудить Lightning Network. Лайтнинг — это, безусловно, самая популярная технология второго уровня, созданная поверх Биткоина. Она позволяет проводить транзакции за пределами блокчейна, используя сеть из мультисиг-контрактов 2-из-2, называемых каналами.

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

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

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

Поддержите переводчика #

Поддержать переводчика можно, отправив немного сат в сети Лайтнинг:

LNURL1DP68GURN8GHJ7MRW9E6XJURN9UH8WETVDSKKKMN0WAHZ7MRWW4EXCUP0X9UX2VENXDJN2CTRXSUN2VE3XGCRQPNAPC6


Connect to our relay to leave a comment. Details.
Подключитесь к нашему релею, чтобы оставить комментарий. Подробнее.