Основы анонимности
Эта лекция посвящена вопросам анонимности в системе Биткоин. Существуют разные мнения о том, насколько анонимен биткоин.
Буквально "анонимный" означает "без имени". Исходя из этого определения свойство анонимности можно интерпретировать двумя способами. Первый - в системе не используются настоящие имена (реальные личности). Второй - в системе вообще не используются какие-либо имена.
Известно, что адреса биткойн представляют собой хэши открытых ключей, а не имена реальных личностей. Тогда в соответствии с первым способом интерпретации термина "анонимность" Биткоин полностью анонимен. Но в то же время есть хэши открытого ключа, которые выступают в качестве псевдоидентификаторов. И поэтому, в соответствии со вторым способом, термин анонимность здесь не подходит. Ученые называют это использованием псевдонима. Между анонимностью и использованием псевдонима есть четкая разница.
Ранее говорилось о том, что можно создать любое количество открытых ключей (псевдонимов). Но сделает ли это псевдоним анонимным? Анонимность в информатике - это просто не связанная ни с чем псевдонимность.
Несвязанность заключается в том, что пользователь постоянно взаимодействует с системой, и эти взаимодействия не связаны друг с другом с точки зрения какого-либо оппонента. То есть нужно говорить о конкретном оппоненте, чтобы анонимность имела смысл. Различие между полной анонимностью и использованием псевдонима- то, что можно узнать из контекста, то есть из разных взаимодействий пользователя с системой. Хороший пример - это онлайн-форумы. Различие между простым псевдонимным взаимодействием и анонимным взаимодействием можно увидеть на разных форумах. Reddit - хороший пример форума, на котором пользователь выбирает долгосрочный псевдоним и использует его в течение определенного периода времени. Он мог бы создавать разные псевдонимы, но практически невозможно создать новый псевдоним каждый раз, когда он хочет опубликовать комментарий, так как это не имеет смысла. Таким образом, Reddit предлагает взаимодействие через использование постоянных псевдонимов.
Существует полностью анонимное взаимодействие, при котором можно создавать сообщения вообще без установления авторства - модель, которая используется на форуме 4chan.
Итак, анонимность в программировании - это псевдонимность плюс несвязанность. Разные действия пользователя должны быть не связаны друг с другом.
Биткойн - это больше псевдонимная модель, чем анонимная. Почему просто использования псевдонимности недостаточно для приватности? Если в системе используется псевдоанонимность, разве может кто-то соотнести псевдоанонимный профиль с реальной личностью? Фактически псевдоним недостаточно защищен, потому что для него очень легко в какой-то момент установить обратную связь с реальной личностью, которой он принадлежит. Тогда все прошлые, настоящие и будущие сделки будут связаны с этой личностью. Есть несколько случаев, когда это может произойти. Например, существует множество сервисов, таких как торговля Биткойнами онлайн, услуги кошелька, биржи и другие, которые захотят получить связь с реальной личностью, чтобы предложить ей сотрудничество.
Рассмотрим следующую аналогию. Боб пришел в кафе и заплатил за свой кофе биткоинами. Продавец в магазине знает, кто является покупателем, даже несмотря на то, что он может не знать настоящего имени Боба. Получается, некие идентификационные данные становятся привязаны к одной из транзакций в биткоине. И если эта транзакция Биткойн затем привязывается ко всем транзакциям Боба, это полностью нарушает анонимность Боба. Таким образом, использование псевдонимов крайне незащищено. Его можно легко скомпрометировать различными способами, а также, даже если прямой связи не произойдет, связанные профили могут быть лишены анонимности из-за боковых каналов. Что имеется ввиду? Возможно, кто-то смотрит на профиль транзакций Боба с использованием псевдонима и обнаруживает, что он подключается к сети в определенное время суток. В этом случае можно сопоставить время дня, когда Боб активен в сети со временем дня, когда его учетная запись Twitter публикует твиты. Благодаря этому можно найти связь между Твиттером Боба и транзакциями в Биткойн. Известно, что подобные атаки происходят регулярно, именно поэтому понятие псевдонимов считается довольно хрупким. Поэтому для реальной анонимности требуется больше несвязности. Попробуем определить более конкретно, что означает несвязность в контексте Биткойна. Во-первых, должно быть сложно связать разные адреса одного и того же пользователя. Во-вторых, должно быть сложно связать разные транзакции одного и того же пользователя. В-третьих, должно быть сложно связать отправителя платежа с его получателем. Это может показаться недостижимым, так как платеж представляет собой транзакцию в блокчейне с входами и выходами. Но если рассматривать платеж не как прямую транзакцию между получателем и отправителем, то получатель и отправитель могут быть непосредственно не связаны в блокчейне.
Предположим, Боб платит за продукт определенное количество биткойнов и отправляет платеж по правилам в виде транзакции. Глядя на цепочку блоков, можно связать отправителя и получателя. В частности, биткойны покинули некоторый адрес в определенном количестве, но появились в том же количестве по другому адресу. Эти два количества могут немного отличаться из-за транзакционных сборов и т. д., но они примерно равны. Они также появились примерно в тот же период времени, потому что не может быть слишком большой задержки между отправкой и получением платежа.
Поэтому несвязность между получателем и отправителем может быть достигнута не для всех транзакций, а для некоторых подмножеств транзакций, которые похожи друг на друга. Это называется максимизацией конфигурации анонимности. Конфигурация анонимности - это набор адресов или транзакций, которые необходимо скрыть. Если Боб уверен, что его оппонент получает тысячи транзакций, похожих на транзакцию Боба и не может точно сказать, какие из этих транзакций пришли от Боба, можно считать, что анонимность на хорошем уровне. Вычисление степени анонимности – непростой процесс. Сначала необходимо точно определить модель оппонента, что он знает и что не знает. Для этого нет общей формулы, ситуация требует тщательного анализа протокола и системы в каждом конкретном случае.
Необходимо отметить, что в Биткойн часто проводится интуитивный анализ услуг анонимности, например, услуги микширования, которая будет рассмотрена позже в этой лекции. Для оценки анонимности придумывают способы такие, как анализ заражения. Это интуитивно понятный способ отслеживания потока между конкретным адресом отправки и адресом приема. Несмотря на простоту, анализ заражения не является подходящим методом для расчета анонимности. Причина в том, что он предполагает определенный тип атаки, которую может совершить противник. Это довольно простая атака, непосредственно направленная на определение количества потоков между отправляющим и принимающим адресами. Поэтому если противник окажется умнее, он может реализовать другой вид атаки, и тогда расчет анонимности методом анализа заражений окажется неверным. Расчет степени анонимности должен выполняться с точки зрения конкретной конфигурации анонимности, а в некоторых случаях с учетом распределения вероятностей для этой конфигурации анонимности. И это требует тщательного анализа протокола обмена данными в системе.
Почему люди хотят анонимности? Денежные операции на основе блокчейн полностью, публично и постоянно отслеживаются, поскольку по всем транзакциям ведется учет. Фактически это значит, что если чьи-то идентификационные данные когда–то были связаны с транзакцией биткоинов, его уровень конфиденциальности намного ниже, чем в традиционной банковской системе.
Анонимность в системе биткоин позволяет обеспечить уровень конфиденциальности криптовалюты на уровне традиционной банковской системы и даже выше. Следует признать и проблемы, которые вытекают из анонимности, такие как отмывание денег и другие нелегальные операции.
Несмотря на то, что в системе Биткоин блоки недостаточно анонимны и можно отслеживать потоки, настоящая сложность для тех, кто отмывает деньги, заключается в переводе биткоинов в валюту, то есть обналичивание. Плюсом является то, что все попытки повысить анонимность внутри системы Биткоин никак не упрощают процесс обналичивания, то есть не способствуют нелегальной деятельности.
Поэтому рекомендовано, чтобы исследователи и разработчики Биткойн координировали усилия по борьбе с отмыванием денег с правоохранительными органами так, чтобы технический аспект анонимности Биткойн был относительно отделен от правоохранительных и правовых аспектов.
Логично спросить, можно ли разработать технологию, чтобы допускалось только "хорошее" использование анонимности Биткойн, и было как-то запрещено "плохое" использование? Это довольно распространенная задача для информационной безопасности. Но у нее нет решения. Потому что разделение на "хорошие" и "плохие" способы использования анонимности является моральным, с технологической точки зрения они абсолютно идентичны. Поэтому есть рекомендация отделить технические свойства анонимности системы от юридических принципов.
Такая дилемма возникает далеко не первый раз. Для примера рассмотрим Tor. Tor - это сеть связи, которая проводит сообщения между отправителем и получателем через сеть узлов. С помощью шифрования сеть гарантирует, что до тех пор, пока хотя бы некоторые узлы в этой сети правильны (не вредоносны), злоумышленник не сможет связать отправителя с получателем. Очевидно, что это может быть использовано для достижения как честных, так и нечестных целей. Tor используется, прежде всего, обычными людьми, которые хотят защитить себя или сохранить конфиденциальность в Интернете при просмотре веб-сайтов. Он используется журналистами, активистами, диссидентами и т. д. Он также используется правоохранительными органами. Подставные агенты могут посещать веб-сайты и не афишировать, что их IP-адрес принадлежит правоохранительным органам. Всё это положительные стороны использования Tor. Но есть и отрицательные стороны. Так, например, с помощью Tor бот-сеть распространяет вредоносное программное обеспечение. Различить эти ситуации технически почти невозможно. И поэтому Tor столкнулся с той же проблемой, что и биткоин. В целом можно сделать вывод о том, что развитие технологии для мира лучше, чем их отсутствие, и на самом деле одним из основных спонсоров Tor является Государственный департамент США. Tor помогает диссидентам в других странах, которые борются с репрессивными правительствами. Недавно так же появилась новость о том, что ФБР провело успешную операцию с использованием подставного агента против людей, использующих Tor для распространения детской порнографии. Поэтому необходимо помнить, что существует уровень над технологиями, который может быть использован правоохранительными органами, и есть различные способы найти людей, которые используют новые технологии для совершения преступлений.
Следует отметить, что Биткоин не является первой попыткой создания анонимной криптовалюты. Фактически, еще в 1982 году криптограф Дэвид Шаум предложил нечто вроде "слепых подписей", которые помогли ему разработать в дальнейшем анонимные электронные деньги.
Слепые подписи - это двухсторонний протокол. Две стороны общаются друг с другом, и в конце взаимодействия одна сторона производит цифровую подпись некоторого входа, не зная, что это за вход.
Допустим, что есть банк и протокол анонимных электронных денег на основе слепых подписей ( рис. 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, что позволяет обеспечить анонимность лиц, пользующихся кошельками или службами, которые принимают Биткойн.