новости

Нужно ли CoinJoins равный объем торговли, чтобы получить конфиденциальность? Часть I: CashFusion


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

Но есть решения для восстановления конфиденциальности, такие как CoinJoin. Некоторые из самых популярных гибридных решений, доступных сегодня, используют эту технику, в том числе кошелек Wasabi [с использованием ZeroLink] и кошелек Samourai [с использованием Whirlpool]. В обоих случаях пользователи разрезают свои токены на равные количества, чтобы смешать их друг с другом. Использование равных количеств считается ключевым шагом для эффективного смешивания.

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

Если это правда …

монета

Давайте начнем с нуля. [В качестве альтернативы, если вы знаете, что такое CoinJoin, пропустите этот раздел.]

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

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

Самое раннее возможное решение этой проблемы, предложенное основным спонсором Биткойн Грегори Максвеллом в 2013 году, называется CoinJoin. Идея CoinJoin проста: объединить несколько независимых транзакций в одну большую транзакцию. Таким образом, если две транзакции имеют два входа и два выхода, они объединяются в одну транзакцию с четырьмя входами и четырьмя выходами. Это, по крайней мере, нарушает предположение о том, что все входные адреса принадлежат одному и тому же человеку, и может также помочь сломать след токенов.

Почему равны

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

Например, давайте сделаем две транзакции: одну от Алисы до Кэрол, а другую от Боба до DAIfu. Алиса владеет двумя токенами на 2,3 и 1,4 биткойны и хочет заплатить Кэрроллу 3,2 биткойна. Бобу принадлежит 3 и 2 биткойн-куска, и он хочет заплатить мужу DAI 4 биткойна.

Упрощенно, эти транзакции заключаются в следующем:

2,3 + 1,4 = 3,2 + 0,5

и

3 + 2 = 4 +1

[Выходы 0,5 BTC и 1 BTC изменились.]

В совокупности транзакция CoinJoin выглядит следующим образом:

3 + 2,3 + 2 + 1,4 = 4 + 3,2 + 1 + 0,5

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

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

Если фиксированная сумма установлена ​​в 1 BTC, то Алиса, Боб, Кэрол и Дейв CoinJoin выглядят так:

3 + 2,3 + 2 + 1,4 = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0,5 + 0,2

Это большое улучшение, потому что любой блок из 1 можно объединить в одну из двух исходных транзакций. Неясно, какой из 1 BTC принадлежит Алисе, Бобу, Кэрол или мужу DAI, или даже какой паре.

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

Слияние денег

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

Чтобы понять этот потенциал, давайте посмотрим на другой набор транзакций. Предположим, Алиса хочет заплатить токены Кэрол 4. У нее есть два UTXO на 2 и 3 токена. В то же время Боб хочет заплатить мужу DAI 9 токенов, у него есть два UTXO на 7 и 8 токенов.

Упрощенно, эти транзакции заключаются в следующем:

3 + 2 = 4 +1

и

8 + 7 = 9 + 6

В совокупности транзакция CoinJoin выглядит следующим образом:

8 + 7 + 3 + 2 = 9 + 6 + 4 + 1

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

Например:

8 + 2 = 9 + 1

и

7 + 3 = 6 + 4

Либо:

8 + 2 = 6 + 4

и

7 + 3 = 9 +1

Либо:

7 + 2 = 9

и

8 + 3 = 6 + 4 + 1

Либо:

7 = 6 + 1

и

8 + 3 + 2 = 9 + 4

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

CashFusion основан на теории, выведенной из области комбинаторных наук.Даже если будет использована реалистичная сумма, достаточно большая транзакция CoinJoin часто [если не всегда] дает несколько разных решений. И, поскольку включено больше входов и выходов, из него может быть получено больше потенциальных конфигураций. [Если сумма находится в том же диапазоне [например, 1 BCH], это должно быть особенно актуально, и пользователям CashFusion рекомендуется делать это по соображениям конфиденциальности.]

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

Чтобы увеличить этот потенциал, CashFusion включает в себя дополнительную хитрость, которая усложняет объединение исходной конфигурации: он позволяет пользователям разделить свои выходные данные случайным образом на несколько меньших выходных данных. Так, например, Алиса может отправлять 3 вывода токенов и 1 вывод токена в Кэрол вместо оплаты выводов токена Алисы 4. Боб может заплатить Дэйву 5, 3 и 1 токен вместо одного выхода из 9 токенов.

В то же время пользователям предлагается предоставить некоторые данные из предыдущих миксов. Это позволяет им объединять меньшие блоки в большие блоки, что неочевидно в блокчейне. [Например, вход, предоставленный Алисой, равен 2 + 2 + 1; вход, предоставленный Бобом, равен 6 + 5 + 4.] На самом деле, объединение меньших входов в более крупные выходы было первоначальной идеей и было названием протокола. Происхождение: CashFusion.

Но верно ли предположение?

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

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

Само описание CashFusion включает в себя самодовольную «математику» Лундеберга, и он также выпустил более продвинутую версию этого на Reddit. Эти оценки показывают, что даже если есть только 10 участников, и каждый участник предоставляет 10 входных данных для объединения в один выход [всего 100 входных данных и 10 выходных данных], среднее число возможных распределений также будет составлять от 10 млрд до 500 В течение десяти тысяч. [Это число с 20 нулями, что равно 10 ^ 20.] Даже вычисление только всех этих возможностей займет много времени — не имеет значения, что исходная транзакция была правильно восстановлена.

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

Но другие не так убеждены. Критика этого предложения заключается в том, что даже если [приблизительно] число 10 ^ 20 будет сохранено, не каждый выход CashFusion CoinJoin одинаково вероятен из каждого входа. Другими словами, в то время как некоторые люди могут получить большую конфиденциальность, другие могут получить меньшую конфиденциальность из той же комбинации. Для любого отдельного пользователя трудно сказать, получили ли они большую частную жизнь. [Этот обзор и другие могут быть найдены в недавней ветке электронной почты bitcoin-dev.]

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

Тем не менее, даже если CashFusion никогда полностью не заменит равный микс, это может помочь решить проблему неравных изменений, как предполагалось изначально …

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

Спасибо Марку Лундебергу за информацию и отзывы.

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

Источник: Составлено из BITCOINMAGAZINE на 0x. Авторское право принадлежит автору и не может быть воспроизведено без разрешения Нажмите, чтобы продолжить чтение