Технологии криптовалют

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

Показывать лекцию целиком

Эта лекция посвящена вопросам анонимности в системе Биткоин. Существуют разные мнения о том, насколько анонимен биткоин.

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

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

Ранее говорилось о том, что можно создать любое количество открытых ключей (псевдонимов). Но сделает ли это псевдоним анонимным? Анонимность в информатике - это просто не связанная ни с чем псевдонимность.

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

Существует полностью анонимное взаимодействие, при котором можно создавать сообщения вообще без установления авторства - модель, которая используется на форуме 4chan.

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

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

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

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

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

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

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

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

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

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

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

Такая дилемма возникает далеко не первый раз. Для примера рассмотрим Tor. Tor - это сеть связи, которая проводит сообщения между отправителем и получателем через сеть узлов. С помощью шифрования сеть гарантирует, что до тех пор, пока хотя бы некоторые узлы в этой сети правильны (не вредоносны), злоумышленник не сможет связать отправителя с получателем. Очевидно, что это может быть использовано для достижения как честных, так и нечестных целей. Tor используется, прежде всего, обычными людьми, которые хотят защитить себя или сохранить конфиденциальность в Интернете при просмотре веб-сайтов. Он используется журналистами, активистами, диссидентами и т. д. Он также используется правоохранительными органами. Подставные агенты могут посещать веб-сайты и не афишировать, что их IP-адрес принадлежит правоохранительным органам. Всё это положительные стороны использования Tor. Но есть и отрицательные стороны. Так, например, с помощью Tor бот-сеть распространяет вредоносное программное обеспечение. Различить эти ситуации технически почти невозможно. И поэтому Tor столкнулся с той же проблемой, что и биткоин. В целом можно сделать вывод о том, что развитие технологии для мира лучше, чем их отсутствие, и на самом деле одним из основных спонсоров Tor является Государственный департамент США. Tor помогает диссидентам в других странах, которые борются с репрессивными правительствами. Недавно так же появилась новость о том, что ФБР провело успешную операцию с использованием подставного агента против людей, использующих Tor для распространения детской порнографии. Поэтому необходимо помнить, что существует уровень над технологиями, который может быть использован правоохранительными органами, и есть различные способы найти людей, которые используют новые технологии для совершения преступлений.

Следует отметить, что Биткоин не является первой попыткой создания анонимной криптовалюты. Фактически, еще в 1982 году криптограф Дэвид Шаум предложил нечто вроде "слепых подписей", которые помогли ему разработать в дальнейшем анонимные электронные деньги.

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

(рис 6.1) Анонимная электронная валюта на основе слепых подписей

Допустим, что есть банк и протокол анонимных электронных денег на основе слепых подписей (рис 6.1). В своей базе данных банк хранит две таблицы. Первая таблица имеет сопоставление пользователей с балансом, который они имеют на своем банковском счете. Кроме того, у банка есть еще одна таблица с серийными номерами потраченных монет. Предположим, пользователь хочет вывести анонимную монету стандартного наименования. Допустим, номинал монеты - 1 доллар, и все значения относятся к долларам. Таким образом, первое, что банк собирается сделать при получении этого запроса, это вычесть баланс этого пользователя, он снизился с 10 до 9. Следующее, что пользователь и банк собираются сделать вместе, это выполнить двухсторонний протокол. Протокол слепой подписи, в конце которого пользователь выбирает случайный серийный номер монеты. Это серийный номер для анонимной монеты, и пользователь полностью свободен в выборе этого номера. Он сделал это, и затем был выполнен протокол, в конце которого пользователь получил подпись серийного номера, но таким образом, что банк фактически не узнал серийный номер. Банк не знал, какой номер он подписывал. Он просто знал, что был номер, который он подписал.

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

Принимающий пользователь (красная фигура на рис 6.1) должен немедленно звонить в банк и пытаться внести этот электронный ключ. Потому что в этой системе синий пользователь может попытаться произвести двойной расход. Синий пользователь может отправить эту же анонимную монету 100 различным пользователям. Именно поэтому, когда красный пользователь получает монету, она должен немедленно связаться с банком, чтобы проверить, действительно ли это честная сделка. Банк получает сообщение о возврате монеты и отмечает, что теперь он получает окончательный серийный номер в виде обычного текста, а также его собственную подпись. Банк проверяет, что это действительная подпись. И, что важно, что он также проверяет, что серийный номер, который он получил, не входит в список потраченных монет. Вот как он узнает, что это не попытка двойных расходов. Это законные первые расходы на монету, которую банк ранее подписывал. И так как банк не видел серийный номер в первый раз, банк не знает, какой пользователь изначально вывел эту анонимную монету. Вот так достигается анонимность в этом протоколе.

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

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

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

(рис 6.2) Анонимная электронная валюта на основе слепых подписей. Банк не может связать отправителя и получателя.

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

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

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

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

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

4chan -англоязычный анонимный веб-форум.

ECash - The Eastern Caribbean Automated Clearing House, электронная сеть для выполнения электронных транзакций.

PayPal (с англ. "приятель, помогающий расплатиться") — крупнейшая дебетовая электронная платёжная система. Позволяет клиентам оплачивать счета и покупки, отправлять и принимать денежные переводы. С октября 2002 года является подразделением компании eBay.

Reddit (I read it on Reddit) - социальный новостной сайт, на котором зарегистрированные пользователи могут размещать ссылки на какую-либо понравившуюся информацию в интернет.

Tor (сокр. от англ. The Onion Router)— свободное и открытое программное обеспечение для реализации второго поколения так называемой луковой маршрутизации. Это система прокси-серверов, позволяющая устанавливать анонимное сетевое соединение, защищённое от прослушивания. Рассматривается как анонимная сеть виртуальных туннелей, предоставляющая передачу данных в зашифрованном виде. С помощью Tor пользователи могут сохранять анонимность в Интернете при посещении сайтов, ведении блогов, отправке мгновенных и почтовых сообщений. Есть возможность обеспечить анонимное использование Bitcoin при помощи Tor. Бывший разработчик Bitcoin Майк Хирн, до того как ушёл на работу в R3, создал клиентское ПО этой криптовалюты, названный bitcoinj. В отличие от оригинала, он написан на языке Java и сопряжён с сетью Tor, что позволяет обеспечить анонимность лиц, пользующихся кошельками или службами, которые принимают Биткойн.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(рис 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 года.

Микширование (смешивание)

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

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

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

По похожей схеме работают онлайн-кошельки. В них можно сохранить биткоины, пока они не понадобятся. Но обеспечивают ли они при этом анонимность?

В блоге New York Times Bits была запись, в которой сообщалось о предварительной публикации документа двумя израильскими исследователями, описывающего связь между Dread Pirate Roberts, создателем псевдонимов SO Crib, и Сатоши Накамото. Но, как выяснилось позже, это было ошибкой, так как ссылка использовала посредника ModGaks, который является сервисом онлайн-кошелька. Авторам пришлось отказаться от своего исследования, так как они допустили ошибку и не учли наличия посредника в схеме.

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

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

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

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

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

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

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

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

Как работает миксер? Он запрашивает адрес, по которому пользователь хочет получать биткойны, и он дает ему адрес для отправки биткойнов в миксер, а затем они оба выполняют транзакцию. Первый способ увеличения анонимности - использовать серию миксеров вместо одного миксера. Этот принцип был предложен Дж. Бонуа и др., в 2014 г. в статье "Смешанные монеты: Анонимность для Биткоина с учетом микширования". Использование серии маршрутизаторов при межсетевом взаимодействии имеет тот же эффект.

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

(рис 6.8) Серия миксеров

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

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

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

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

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

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

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

Другими словами, миксер должен либо поглотить весь фрагмент с небольшой вероятностью, либо вернуть весь фрагмент. Если миксер хочет взимать плату за микширование в размере 0,1%, тогда один раз из 1000 миксер должен поглотить весь фрагмент и 999 раз из 1000 миксер должен вернуть весь фрагмент, не принимая никакой платы за микширование.

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

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

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

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

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

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

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

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

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

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

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

Микширование - Биткоин миксер (англ. Bitcoin mixer, Bitcoin tumbler, Bitcoin mixing service) — это анонимный сервис, который усложняет или делает практически невозможным отслеживание Биткоин-транзакций до конечного получателя.

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

Децентрализованное микширование

Факт, что экосистема микширования в настоящее время не существует, является причиной, по которой многие люди предлагали децентрализованное микширование. Рассмотрим преимущества децентрализованного микширования.

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

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

Основное предложение о децентрализованном смешивании называется Coinjoin (Объединение монет). Оно было предложено Грегом Максвелом, являющимся одним из разработчиков биткоина.

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

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

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

Давайте рассмотрим одну транзакцию в алгоритмической форме.

(рис 6.9) Алгоритм объединения монет

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

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

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

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

Протокол кажется достаточно простым. Но есть три проблемы.

Первая проблема - как участникам этой группы найти друг друга?

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

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

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

Рассмотрим возможные решения для каждой из этих трех проблем.

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

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

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

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

Благодаря этому, если потенциальный противник хочет взломать каждый Coinjoin, ему придется сделать очень много вычислительной работы. Доказательство сжигания - аналогичная концепция. Она также называется Fidelity Bonds в биткойне. Концепция позволяет необратимо уничтожить некоторые биткойны, отправив их на нерасходуемый адрес.

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

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

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

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

Как можно защититься от этого? Майк Херн предложил решение и назвал его уклонениям от слияния.

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

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

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

Боковой канал - Атаки по сторонним или побочным каналам (side channel attacks, SCA) – это вид криптографических атак, использующих информацию, полученную по сторонним или побочным каналам.

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

Tor и Шелковый путь

В этой лекции при рассмотрении вопросов анонимности в системе Биткоин часто упоминался Tor как анонимная коммуникационная технология. Поговорим о ней более детально.

(рис 6.10) Анонимная коммуникация

Для начала определим, что такое анонимные коммуникации. Есть группа отправителей и группа получателей (рис 6.10). И сообщения направляются от отправителей получателям через анонимную сеть. Предполагается, что в сети есть злоумышленник(и). Он может контролировать некоторые узлы-отправители и некоторые узлы-получатели, связи между узлами. Он также может контролировать некоторые из внутренних узлов анонимной сети И в сети с такими условиями необходимо добиться анонимности, то есть отсутствие связи между отправителем и получателем. Рассмотрим, как Tor ее обеспечивает.

(рис 6.11) Как работает Tor

Алиса хочет поговорить с Бобом, поэтому она предварительно выбирает путь через набор маршрутизаторов (рис 6.11). Число маршрутизаторов зафиксировано в протоколе Tor – их всегда три. Концептуально можно представить, что это будет любое число. И чем больше узлов используется, тем выше анонимность. Узлы, обозначенные плюсом, - это узлы Tor. Алиса выбирает 3 случайных узла, чтобы написать свое сообщение.

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

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

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

(рис 6.12) Многоуровневое шифрование Tor

Это особый способ шифрования, который называется многоуровневым шифрованием (рис 6.12). Алиса и первый маршрутизатор делят симметричный ключ (фиолетовый цвет). Алиса и второй маршрутизатор разделяют другой ключ, который представлен синим цветом, Алиса и маршрутизатор три разделяют ключ, который представлен золотым цветом.

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

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

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

Логично было бы создать еще один слой (протокол HTTPS или безопасный просмотр веб-страниц поверх Tor), чтобы сообщение от маршрутизатора три Бобу было зашифровано. Но сам протокол Tor не гарантирует этого. Нет никакого способа гарантировать это, потому что Боб может быть обычным веб-сервером, который даже не знает о протоколе Tor, и поэтому Tor не может нести за это ответственность

Разберемся, почему не сработал бы один уровень шифрования. Например, если бы Алиса пыталась зашифровать сообщение на всем пути от нее до R3. У многоуровневого шифрования есть очень важное свойство, - то, что R1 знает только IP-адрес Алисы и адрес R2, не знает адрес R3 или Боба. И так же каждый узел знает только адреса узла, который был одним шагом впереди него и одним шагом за ним. И на самом деле, когда сообщение доходит до R2, IP-адрес Алисы больше не присутствует даже в зашифрованном виде.

При этом если любой из узлов, например, R2, был скомпрометирован, тогда он выдал бы адреса R1 и R3, но не Алисы или Боба. Так работает Tor.

"Шелковый путь" - известен как скрытый сервис, продававший несколько лет запрещенные товары, в частности, наркотики. Поэтому серверу "Шелкового пути" необходимо было скрыть свой адрес. Для того, чтобы скрыть свой адрес, сервер соединяется с "местом встречи", которое является одним из маршрутизаторов сети Tor. Затем он публикует сопоставление между своим доменным именем и адресом "места встречи" через службы каталогов, которые предлагает система Tor. И эти доменные имена не являются обычными DNS-именами. Они называются луковыми адресами. При этом адрес очень похож на открытые ключи Биткойн, потому что любой может генерировать их.

И теперь клиенту придется изучить "луковый" адрес сайта, который он хочет посетить. Когда шелковый путь существовал, невозможно было просто набрать silkroad.com, потому что Шелковый путь не был доступен через обычную сеть. Вместо этого приходилось каким-то образом искать этот широко известный адрес. Это был не адрес Шелкового пути, это был луковый адрес Duck Duck Go. Это поисковая система, которая обеспечивает конфиденциальность и анонимность. Там можно было найти аналогичный адрес, принадлежащий Шелковому пути, и поместить его в браузер с поддержкой Tor. Потом клиент автоматически находит сопоставление для адреса места встречи, подключается к этой точке и через эту точку имеет анонимное и зашифрованное соединение с конечным сервером, без необходимости публикации на сервере фактического IP-адреса. Но для того, чтобы Шелковый путь функционировал, нужно было решить еще много проблем. У покупателей должна была быть уверенность в том, что после оплаты Шелковый путь доставит им товар. Поэтому поддерживалась система репутации поставщиков. Для решения проблемы анонимной доставки покупателям советовалось предоставить анонимный PO Box.

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

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

Луковая маршрутизация (Onion routing) — это технология анонимного обмена информацией через компьютерную сеть. Сообщения неоднократно шифруются и потом отсылаются через несколько сетевых узлов, называемых луковыми маршрутизаторами. Каждый маршрутизатор удаляет слой шифрования, чтобы открыть трассировочные инструкции и отослать сообщения на следующий маршрутизатор, где все повторяется. Таким образом, промежуточные узлы не знают источник, пункт назначения и содержание сообщения.

Фонд Электронных Рубежей (Electronic Frontier Foundation, EFF) — основанная в июле 1990 в США некоммерческая правозащитная организация с целью защиты заложенных в Конституции и Декларации независимости прав в связи с появлением новых технологий связи.

DNS (Domain Name System — система доменных имён) — компьютерная распределённая система для получения информации о доменах.

Вернуться к учебному плану