Раздел навигации

Подробно об анонимизации криптоплатежей

  • Автор темы blacktrader
  • Дата начала
blacktrader

blacktrader

Модератор
Регистрация
14 Ноя 2018
Сообщения
7,531
В рамках данного анализа мы постараемся ответить на вопрос о том, какие криптовалюты имеют свойство анонимности и, каким методом они достигают этого свойства. Цель анализа — понимание того, какие методы анонимизации существуют на рынке криптоактивов и понять принцип их работы.



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

  • Untraceability — непрослеживаемость, подразумевает невозможность отнести группу действий к некоторому пользователю в сети;
  • Anonymity, или анонимность, связана с невозможностью достоверно установить личность пользователя в этой сети.
CoinJoin — метод запутывания графа.
Описание

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

Разглашаемые данные.

  • Адрес отправителя;
  • Адрес получателя;
  • Хеш транзакции.
Время создания блока / Размер блока / Размер транзакции / TPS

  • 10 минут BTC / 2:30 минуты Dash
  • 0.94 МБ BTC / 1 МБ Dash
  • 250 КБайт BTC / 226 Кбайт Dash
  • 7 BTC / 28 Dash.
Как достигается анонимность.

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


Cверху — обычная транзакция, снизу — CoinJoin
Вывод.

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

Chaumain Coinjoin — перемешивание адресов используя стороннего оператора.
Описание.

Это является модифицированной версией CoinJoin, только, в данном случае, мы передаем нашу транзакцию централизованному оператору, который перешивает входы и выходы. Но, если мы передаем нашу транзакцию централизованному лицу, мы можем потерять наши деньги, если оператор подменит данные в транзакции и направит средства на свой кошелек. Чтобы избежать этого, отправитель «ослепляет» транзакцию и при ее получении оператором, он получает подтверждение того, что транзакция валидна (UTXO выходы не отрицательны) и он может начать перемешивать ее с другими входами — выходами.

Разглашаемые данные.

  • Хеш транзакции;
Как достигается анонимность.

Алгоритм отправки транзакции и процесс ее валидации происходит следующим образом:

1. Отправитель заранее проверяет свои UTXO выходы и ослепляет данные транзакции до передачи их оператору;

2. Оператор проверяет вход и сумму платежа, подписывает выходной адрес и возвращает подпись отправителю;

3. Когда оператор подписывает транзакцию, он не видит адрес получателя;

4. Далее отправитель убирает ослепление с выходного адреса, анонимно переподключается к оператору и передает ему подписанный выходной адрес;

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

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

7. Готовую транзакцию можно распространять в сеть для подтверждения.

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

Вывод.

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

CoinShuffle — децентрализованное перемешивание адресов.
Описание.

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

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

Разглашаемые данные.

  • Хеш транзакции;
  • Сумма перевода.
Как достигается анонимность.

Представьте небольшую группу пользователей: хитрая Алиса, мудрый Боб, бородатый Чарли и оранжевый Дэйв. У каждого из них есть одна непотраченная монета в блокчейне Биткоина на адресах A, B, C и D соответственно. Каждый хочет потратить монету и скрыть при этом историю ее происхождения. С этой целью каждый участник группы узнает адрес, на который должна быть отправлена монета A, B, C или D соответственно, но не разглашает этот адрес остальным участникам.

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

Участники перемешиваются и образуют очередь. Алиса будет первой, потому что она хитрая, Боб второй, потому что он мудрый, и т. д. Теперь Алиса берет А’ и шифрует направленно на Дэйва, используя открытый ключ Дейва соответственно. Получившийся шифротекст Алиса снова шифрует, причем направленно на Чарли. Этот шифротекст снова шифруется, но уже направленно на Боба. Результат шифрования Алиса передает Бобу. Боб расшифровывает своим личным ключом полученное сообщение. Затем берет B’ и шифрует направленно на Дейва, потом на Чарли и добавляет в список. Этот список он перемешивает случайным образом и передает Чарли. Чарли в свою очередь расшифровывает элементы списка своим личным ключом, добавляет C’, зашифрованный направленно на Дейва, в список и перемешивает все элементы списка случайным образом. Список передается Дейву, который его расшифровывает, получает открытые данные адресов для отправки монет, добавляет адрес D’, перемешивает случайным образом и на основании этих адресов, известных входов транзакции и сумм формирует общую транзакцию.

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

Вывод.

Очевидно, что существует большая сложность off-chain взаимодействия для формирования транзакции, т.е. необходимо организовать формирование групп и взаимодействие участников между собой. Но более весомый недостаток состоит в том, что CoinJoin в чистом виде не скрывает суммы переводов. Как результат, он уязвим к CoinJoin Sudoku analysis, который основан на сопоставлении сумм на выходах транзакций и позволяет распутать историю происхождения монет после многократного ее запутывания. Да, с этой проблемой можно бороться, например, использовать для выходных значений транзакций только определенные суммы (0.1 ВТС, 1 ВТС, 10 ВТС и т.п.), но это создает дополнительные сложности и ограничения.

Confidential Transaction (CT) — скрытие отправляемых биткойнов.

Описание.

Данный способ проведения анонимных платежей достигается через «ослепление» транзакции, при переводе средств данные о отправителе / получателе / сумме — зашифрованы при помощи секретного ключа, который известен только отправляющим сторонам, если информацию о переводе необходимо сообщить третьему лицу, они предоставляют секретный ключ, который был сформирован из алгоритма SHA-256.

Разглашаемые данные.

  • Хеш транзакции;
  • Адрес отправителя (необходим секретный ключ);
  • Адрес получателя (необходим секретный ключ);
  • Сумма перевода (необходим секретный ключ).
Как достигается анонимность.

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


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

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

Mixing — перемешивание транзакций.
Описание.

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

Разглашаемые данные.

  • Адрес отправителя;
  • Адрес получателя;
  • Хеш-транзакции.
Как достигается анонимность

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

Простым описанием работы миксера будет следующее:

1. Пользователь отправляет транзакцию;

2. Транзакция пользователя формируется в общий пул с 999 другими;

3. Миксер начинает менять входы-выходы транзакций, смешивая ликвидность;

4. Пользователи отправляют не свои деньги, а чужие, смешанные;

5. Транзакция приходит к получателю.


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


Синий цвет — обычные транзакции. Желтый — работа миксера. 11.6% всех транзакций проходят через миксер.

Повышенный объем синего цвета — включение миксинга. (Определяется использованием резкого использования огромного количества адресов).
Вывод.

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

RingCT (Ring Confidential Transcations) — кольцевая подпись транзакций.
Описание.

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

Разглашаемые данные.

  • Входы адресов, участвующих в кольцевой подписи (например, 5);
  • Одноразовая подпись отправителя;
  • Хеш транзакции.
Время создания блока / Размер блока / Размер транзакции / TPS

  • 120 секунд;
  • Динамический;
  • 13 Кб;
  • 1.700.
Как достигается анонимность.


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

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

Вывод:

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

zk-SNARK — доказательство нулевого знания.
Описание.

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

Разглашаемые данные.

  • Хеш транзакции;
Как достигается анонимность.

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

Вывод.

zk-SNARK не только позволяет проводить анонимные транзакции, но также увеличивает масштабируемость блокчейнов, т.к zero-knowledge хранит только хеш транзакции, по сравнению с биткойном, который хранит: адрес отправителя / получателя / сумму отправки / подпись, что ведет к большому росту хранимых данных в блокчейне. zk-SNARK позволяет уменьшить размер блокчейн с 40 ГБ до 40 МБ.

Mimnewimble — скрытие отправляемых биткойнов.
Описание.

Цель технологии — скрыть все данные об входах / выходах, предоставив только хеш транзакции, путем подписания транзакций «слепой подписью».

Разглашаемые данные.

  • Хеш транзакции;
Как достигается анонимность.

Главное требование к участникам Mimblewimble — транзакции — доказать, что не было создано никаких новых монет. Для этого создается уравнение баланса, демонстрирующее, что сумма выходов минус входы равна нулю. Причем при добавлении «ослепляющих факторов» уравнение остается верным. Николсон приводит в пример уравнение транзакции: 17 + 12 = 29, где 17 и 12 — выходы, а 29 — вход, затем добавляется произвольный «ослепляющий фактор», в данном случае — число 11, получаем: 17*11 + 12*11 = 29*11, или 187 + 132 = 319. Уравнение баланса все еще доказывает, что новые монеты не создавались, но, не зная «секретного числа» 11, нельзя получить изначальные детали транзакции.

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

Вывод.

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

Stealth Adress — адрес-невидимка.
Описание.

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

Протокол Диффи-Хеллмана позволяет сторонам по публичному каналу обменяться данными для получения, т.е. shared secret, или “общего ключа”. Общий ключ таким образом остается секретным при сторонах, а затем может быть использован для установления полноценного секретного соединения на основе классического симметричного шифрования или как-либо еще. Надежность протокола Диффи-Хеллмана основана на том факте, что как обычно, у атакующего не хватит компьютерных мощностей на поиск секретной составляющей, даже подслушав публичные ключи. Хорошую иллюстрацию дает соответствующая страница Википедии: здесь Алиса и Боб путем обмена публичной информацией об одной составляющей случайно выбранного ими цвета, в результате слияния цветов получили один на всех разделяемый секрет (“общий ключ”) с условием, что атакующий не может произвести обратную операцию.


Протокол Диффи-Хеллмана
Разглашаемые данные.

  • Хеш-транзакции;
  • Общий ключ.
Как достигается анонимность.

Транзакция с использованием адреса-невидимки происходит по следующему алгоритму:

1. Получатель создает пару ключей: приватный (Q) и публичный (A). Публичный (A) ключ он публикует у себя на сайте, для сбора пожертвований. В дальнейшем, этот публичный адрес не будет фигурировать в блокчейне. Этот адрес хранится только на сайте получателя.

2. Отправитель создает пару ключей: приватный (B) и публичный (E). Полученный публичный (E) ключ отправляется получателю в поле метаданных платежа;

3. Используя публичный ключ получателя (A) и свой приватный ключ (B), отправитель может получить — общий ключ (С). Получатель проделывает те же самые действия, что и отправитель со своим приватным ключом и публичным ключом отправителя, получая тот же самый адрес платежа (С). Это адрес платежа, известен только двум сторонам (отправитель-получатель).

4. Получатель слушает или сканирует блокчейн на предмет stealth-платежей и к каждому из них применяет преобразованные данные из пункта 3. Если на основе метаданных какой-либо транзакции и собственного приватного ключа (Q), получателю удалось найти адрес, и она совпал с адресом транзакции (С), то получатель может быть уверен, что платеж совершен.

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

Вывод.

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

Bulletproofs — перемешивание адресов используя оператора.
Описание.

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

Разглашаемые данные.

  • Хеш-транзакции;
Как достигается анонимность.

Анонимная транзакция, которая применяет метод «bulletproofs» работает по принципу zero-knowledge proof, а конкретнее мы имеем следующий алгоритм:

1. Подписи корректны, транзакция получена от валидного узла;

2. UTXO не отрицателен, нет двойной траты;

3. Сумма входов не превышает сумму выходов, т.е у пользователя есть монеты.

Главным преимуществом Bulletproofs является:

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

Размер доказательства: Bulletproofs vs SNARKs vs old CT Range Proff
Вывод. Bulletproofs позволяет валидировать транзакции с минимальным количеством информации, что позволяет уменьшить размер с 160 ГБ до 16 ГБ. Они более эффективны, чем zk-SNARK & zk-STARK.


Таблица сравнения методов по достижению анонимности
 
Последнее редактирование:
Сверху