• Forum has been upgraded, all links, images, etc are as they were. Please see Official Announcements for more information

Анализ безопасности CoinShuffle и Darkwallet

UdjinM6

Official Dash Dev
Dash Core Group
Общеизвестно, что анонимность Bitcoin довольно легко нарушить и потому были запущено много проектов с целью обеспечить анонимность в области цифровых валют и защитить потребителей и бизнесы.

Darkcoin - первая цифровая валюта, созданная с упором на обеспечение приватности. С момента основания в 2014 Darkcoin использует свою технологию анонимизации - Darksend, которая позволяет безопасно отправлять средства пользователей через блокчейн и использовать их в повседневной жизни без риска отслеживания этих средств в будущем. Darksend использует сеть известную как сеть мастернод (masternode network) для выполнения перемешивания средств. Используя эту технологию, пользователям становиться доступен высокий уровень анонимности. Darksend - распределенная, не требующая участия третьих лиц и практически бесплатная технология.

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

CoinShuffle и Darkwallet - новые технологии, пытающиеся обеспечить анонимность в сети Bitcoin. CoinShuffle создана исследователями из Саарского университета (Saarland University) Тимом Раффингом (Tim Ruffing), Педро Морено-Санчезом (Pedro Moreno-Sanchez) и Эникет Кэйт (Aniket Kate). Результаты их работы доступны по адресу http://crypsys.mmci.uni-saarland.de/projects/CoinShuffle/coinshuffle.pdf.

DarkWallet изначально создан в 2013 Амиром Тааки (Amir Taaki) и Коди Вилсоном (Cody Wilson), но за прошедшее время технология была доработана также группой разработчиков-волонтеров.

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

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

Цитата из их работы:

“В CoinShuffle поддерживается работа со сдачей: Участники могут анонсировать дополнительный адрес для сдачи на фазе 1, если у них нет адреса, содержащего точную сумму B ν. На фазе 5 каждый участник добавляет все адреса для сдачи в качестве выходов транзакции перемешивания, перед тем как она будет окончательно подписана. CoinShuffle при этом сохраняет несвязность между входными адресами и (обычными) адресами выходов честных участников.”

С некорректной работой со сдачей связано две проблемы. Марио Мюллер (Mario Müller, пользователь Aswan на форуме DarkcoinTalk) изначально обнаружил их в технологии Darksend. На данный момент в Darksend эти проблемы устранены и Darksend больше не подвержен такого рода атакам.

1. Уязвимость CoinShuffle: Связь через оплату сдачей (Forward Change Linking)

ZF12PbKo8vzj8ih1KN-erH_sDD7Yo5F4pGfYsKuhhgw35zKynzEgru0nvHr4tDg2WvvbiGtBYnBWGiGDhRVYUNoBuFqbFwAJ0e258vbnjyL7Pe8Xf-1gD-zWrf6PR-7TvQ



В этом примере Алиса (Alice) анонимизирует 1.2BTC, которые отправляются на 2 адреса: 1BTC и 0.2BTC. Затем она тратит .7BTC с адреса, на котором было 1BTC, и получает сдачу в размере 0.3BTC. Эти 0.3BTC, будучи отправлены на идентифицируемы адрес, подтверждают, что именно Алиса потратила 0.7BTC в предыдущей транзакции.

Таким образом, чтобы определить отправителя анонимной транзакции нужно начать с “Coinbase” и пройти по назад по блокчейну до "Алиса анонимно отправила 0.7BTC" (“Alice sends 0.7BTC anonymously”). Так сервис Coinbase теперь знает, что его пользователь недавно что-то анонимно купил, а это значит анонимность покупки Алисы полностью нарушена.

2. Уязвимость CoinShuffle: Связь нескольких сдач (Through Change Linking)

7ufB4-1EDn2S-6C3XDO9z8pZk8_Bb7bEV02QWEw44HY3tMhnLj5oGPz00qIjSx86p68E21Adv1SGAMIAH5kCtFixTodsn5DaC0sB62MniP-SgsQ73l2fjwBiQzAy5GE7Pw


Во втором примере Алиса купила 1.2 BTC на Coinbase, но анонимизировала из них только 1BTC. В последствии она анонимно потратила 1BTC и получила сдачу 0.3BTC, которую потом объединила с предыдущей сдачей 0.2BTC.

Объединяя сдачу от анонимной транзакции (0.3BTC) и сдачу от CoinShuffle, вся история транзакций до и после становиться полностью связанной, что опять же полностью разрушает анонимность.

Решение:

Проблемы описанные выше могут быть решены, но это требует использования номиналов. Также как, например, доллар может быть представлен номиналами по $1, $5, $10 и $20, так и Darksend использует 0.1DRK, 1DRK, 10DRK и 100DRK. В процессе перемешивания, пользователи могут отправлять и получать только такие суммы на каждый из своих адресов. Впоследствии именно эти суммы объединяются для проведения оплаты, что приводит таким образом к небольшой переплате.

Например, если пользователь хочет анонимно заплатить 1.17DRK, то он использует следующий набор - 1DRK + 0.1DRK + 0.1DRK. Результатом такой транзакии будет оплата получателю ровно 1.17DRK, а оставшиеся 0.03DRK уйдут на оплату майнерам, что позволяет полностью исключить отслеживание сдачи.

3. Уязвимость DarkWallet: Уникально определяемые суммы (Uniquely identifiable amounts)

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


c6TjIg5ppkApRaOpYbtc1XsexJb_7fSc_YWe9vEFDb0SCof2tykaj0yABG6c_ExjwrOlUodRCCPiONKcw1SRdFBTi_UW-opEpuyOxuwuYM7fvyGq2ZEiJyUEV2_dWpoO4A


Например:

В этой транзакции 0.05BTC прошли через миксер. Чтобы определить источник нужно просто пробовать складывать значения справа пока результат не совпадет со значениями слева.

0.05+0.0499+0.0001(fee) = 0.10BTC.
0.0499+0.05940182+0.0001(fee) = 0.10940182BTC.

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

Транзакции из примера:
https://blockchain.info/tx/4eb3b2f9fe597d0aef6e43b58bbaa7b8fb727e645fa89f922952f3e57ee6d603
https://blockchain.info/tx/1694122b34c8543d01ad422ce600d59f8d8fde495ac9ddd894edc7139aed7617

Решение:

На данный момент решения этой проблемы не существует.

4. Уязвимость CoinShuffle и DarkWallet: DOS-атака

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

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

Решение:

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

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


http://explorer.darkcoin.io/tx/14be41bfbcda630615be6a7e7df5d2391f60c570bc2280763e22349f689f6474 (анонимно отправлено 3.2DRK)
http://explorer.darkcoin.io/tx/1d7072ab9448d8b59b453fcb53f49f3601f4418e21adc00b03a9bf46cbad7955
http://explorer.darkcoin.io/tx/d71ba5edd833e0a13cc3f4f828e7ae8bdebb7b8eeabc3a780099695d0bde9525
http://explorer.darkcoin.io/tx/327c39874c5e6bb981001b5ac4e14a59549007d202bc42bf404b9232944c1255
http://explorer.darkcoin.io/tx/05be05e35917043ec128fffac6d1c18832f62ed93616cfc805cca1de18b152f7
http://explorer.darkcoin.io/tx/fd946e98a4e4168ba426e69d0a7d2c8a871973c013698900aa4a3c9e23722d5d
http://explorer.darkcoin.io/tx/de8be67ed9a45ded8c179d5cb9e4ca5dc958a57804645cc83ad30a57229bfe05
http://explorer.darkcoin.io/tx/5ce1b10d8d39ee12fada352f646a0bc7fd10e5c68be3657b7e1f25daa96445ec
http://explorer.darkcoin.io/tx/d438fbdc1cd08a9335d0d85705cca1b4b16ae02ccf4c912202288750fa3d3a06
http://explorer.darkcoin.io/tx/12d0d2f81eabc990556126e8e86abd7f6587ce9a252e697d49babe02e1e0784d
http://explorer.darkcoin.io/tx/faa07d6d48cbaabc6cf7f6167cd851b722d8b5d56ed5b45be4c221cd54a4dc7f
http://explorer.darkcoin.io/tx/278ac690ed283b2f8c6d27173fb45d777198b612b3a67484724fea5c340b1b35
http://explorer.darkcoin.io/tx/0c1c8796010c466d340c209bf3804d14f8ded70e523fa92baa25d938491625d7
http://explorer.darkcoin.io/tx/990e5d83a66fa189241af04492496f7d1d2ea7ebb958cc7e3a75185525b94116
http://explorer.darkcoin.io/tx/01edb919d043e7f34a54e58714cd0e4796a7752132d7d7498938b6b9c2ec4595
http://explorer.darkcoin.io/tx/6b32a47efebf9c2d8ed4fd97f6f3787cb01b47100a51fc38cd63457ffe254a05
http://explorer.darkcoin.io/tx/0c16df3800da43b22cfb1caeeedb6ac77e919a8609d0a863337a992f7c9757a6
http://explorer.darkcoin.io/tx/e5a084b5ca7d0f98b80f142fc4a216b5f210e29d5a1c143ac376416240d09074
http://explorer.darkcoin.io/tx/bd2f5435ef5a3ba2ff9c873606745d2ced11854977119a017dbe6ad150cfafde
http://explorer.darkcoin.io/tx/a8452f95817a42531f42440dc5ff489eda0fcf76c3219847cb6bb4e99c0e5d88
http://explorer.darkcoin.io/tx/54e885792b0d7e07604ed3d2915f6b86499b932ebc2c888125ab68b48720abd4
http://explorer.darkcoin.io/tx/26906bef4c41e02565561a54dcdaf9e242d3830921b0ba4d5e5bfa085579a0de
http://explorer.darkcoin.io/tx/1777adc8c015d8282c562d9401902330e9db1ffb18c830222d51c4f7e7c4388b
http://explorer.darkcoin.io/tx/2edccdb8e9544d6d096b0369c02db7b4c8d3350465ca5b7b772609746a27b15c
http://explorer.darkcoin.io/tx/15383602cf81ed5e3ddfac17211b5078cbbd1dcec882c4ec8d0a8ce7e6902496
http://explorer.darkcoin.io/tx/37ec592c7b609e837a6265d7ba28e944e43319a072528e3e6c9e6d39a67a569d
http://explorer.darkcoin.io/tx/995c8ad4347d7157683a3ac40625d366e1f5f8773e5dc8ac2c3a8148aa4cd423
http://explorer.darkcoin.io/tx/b8d1475ca6d43934f4d6ce3d4b2cc7e2a01782c506a4e73e036ed4f83c3cdcf7
http://explorer.darkcoin.io/tx/32ee32b2c2458100a64ee04679c3961f7b714ba3a58e5c425c9ec9d5c4c5b670
http://explorer.darkcoin.io/tx/4162c8bf1704a2eb3d1e8a4e81dfcae144d231c52e33f992814c0a1d381c3eb7
http://explorer.darkcoin.io/tx/59f9bfb8d822b8044e143a8a2c32e753aaa50cc34e179579314a0ca85f200faa
http://explorer.darkcoin.io/tx/57a403abac5e3c244b2206101d4419bf21ede3aee79a69a49eb9bf91dfc4d2ea
http://explorer.darkcoin.io/tx/e00181d3a04aca647501cea5970b84e932838a71e4bbd4e1ed4a0c850d81d26c
http://explorer.darkcoin.io/tx/92c4774c1459b71a111ed9dc04eac80a287040797a179c2618590455a3475114
http://explorer.darkcoin.io/tx/bbba3c932ce873be4d7fcc99832f289e24e94e85dd4fe267d5f9a9daed055228
http://explorer.darkcoin.io/tx/c802ef9a3c7bf82fa95a6bd9afd05eb8ce656e6a292246c2600ae47298d9aefc
http://explorer.darkcoin.io/tx/741b07d77cc42c586228a4704bb9c25e2552277399f443c79e08c1af41004e04
http://explorer.darkcoin.io/tx/fd2f659f41239383bd3ff48062adfee3735c5c35155d2bee045cb044f4f4218e (источник)

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

Заключение:

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

Оригинал: https://darkcointalk.org/threads/security-advisory-for-coinshuffle-and-darkwallet.3736/
 
Back
Top