Опубликован: 01.02.2018 | Уровень: для всех | Доступ: платный
Лекция 6:

Основы анонимности

< Лекция 5 || Лекция 6: 12345 || Лекция 7 >

Как лишить Биткойн анонимности

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

На рис. 6.3 изображена страница пожертвований WikiLeaks, на которой показана цитата, утверждающая, что биткойн - это безопасная и анонимная цифровая валюта.

Страница пожертвований Wikileaks

Рис. 6.3. Страница пожертвований Wikileaks

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

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

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

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

Алиса идет в супермаркет и хочет купить чайник. У Алисы есть несколько Биткойнов разного достоинства, а в магазине чайник стоит восемь биткойнов.

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

Алиса покупает чайник в магазине

Рис. 6.4. Алиса покупает чайник в магазине

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

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

Это первый способ, как можно связать транзакции вместе. Позже будет рассмотрен метод анонимности, называемый Coin Join (соединение монет), который помогает избежать такой атаки. Однако этот способ является надежным только в случае использования обычного программного обеспечения Биткойн-кошелька, и это было показано во множестве исследовательских работ. В частности, одна из научных работ "Анализ анонимности в системе биткойнов" использовала этот метод для определенной цели. Несколько лет назад была широко известна кража биткойнов, и авторы этой статьи решили посмотреть, как вор перемещал Биткойны между своими несколькими адресами. Это одна из первых крупных исследовательских работ, которые сделали анализ графика транзакций.

Вернемся к ситуации с покупкой чайника.

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

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

Адреса изменения. Какой адрес у изменения?

Рис. 6.5. Адреса изменения. Какой адрес у изменения?

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

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

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

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

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

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

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

Рис. 6.6. Открытые расходы и идиомы использования. Пригоршня биткоинов: характеризующие платежи между безымянными людьми. С. Мэйклджон и другие, IMC, 2013

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

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

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

Как это можно сделать? Можно зайти на сайт Mt Gox и посмотреть, какой адрес они предлагают для получения биткойнов. Но это не сработает, потому что они могут предоставлять новый адрес для каждой отдельной транзакции, и если кто-то просто зайдет на сайт, посмотрит адрес и не выполнит транзакцию на самом деле, тогда они просто откажутся от этого адреса. Они не собираются повторно использовать этот адрес для другого клиента. Другими словами, этот адрес никогда не будет использоваться. Его нельзя будет найти в блокчейне.

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

В результате авторы исследовательской работы смогли отметить основные кластеры на графике, показанном на рис. 6.7.

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

Рис. 6.7. Открытые расходы и идиомы использования. Пригоршня биткоинов: характеризующие платежи между безымянными людьми. С. Мэйклджон и другие

Фактически, большой кластер - это был Mt Gox. Чуть поменьше - Satoshi Dice. Но многие другие было бы очень трудно отгадать, и только реально оплатив услуги, авторы смогли идентифицировать большинство этих поставщиков услуг.

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

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

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

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

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

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

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

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

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

Терминологический словарь

CoinJoin - метод анонимизации для транзакций биткойна, предложенный Грегори Максвеллом. Основан на идее "Если Вы хотите сделать платеж, найдите кого-то еще кто хочет и сделайте общий платеж. Тогда не будет возможности связать входы и выходы в одну транзакцию биткойн и таким образом точное направление платежа останется неизвестным третьим лицам".

Mt Gox – (Mount Gox) — японская биржа цифровых валют, осуществлявшая операции между криптовалютой Bitcoin и национальными валютами. Владела более 70% трансакций и была ведущей биржей Биткойн.

Wikileaks (от англ. wiki и leak —"утечка") — международная некоммерческая организация, которая публикует секретную информацию, взятую из анонимных источников или при утечке данной информации.

S – основанная на блокчейне игра со ставками, действующая с 2012 года.

< Лекция 5 || Лекция 6: 12345 || Лекция 7 >
Александр Шабанов
Александр Шабанов
Россия, Москва, МГОУ, 2007
Максим Кучинский
Максим Кучинский
Россия