Общеизвестно, что анонимность 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)
В этом примере Алиса (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)
Во втором примере Алиса купила 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 тривиально, поскольку в них присутствуют уникальные значения.
Например:
В этой транзакции 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). Когда пользователь начинает новую сессию смешивания он должен отправить полностью завершенную и подписанную транзакцию, на ту мастерноду, на которой он собирается перемешивать средства. После начала смешивания пользователь обязан выполнить весь процесс, корректно отвечая на запросы мастерноды, и завершить сессию смешивания. В противном случае мастернода выполнит обеспечительную транзакцию. Такой подход можно сравнить с депозитом по аренде, который возвращается арендатору по завершению договора только в том случае, если он действовал в полном соответствии с условиям данного договора.
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)
В этом примере Алиса (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)
Во втором примере Алиса купила 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 тривиально, поскольку в них присутствуют уникальные значения.
Например:
В этой транзакции 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). Когда пользователь начинает новую сессию смешивания он должен отправить полностью завершенную и подписанную транзакцию, на ту мастерноду, на которой он собирается перемешивать средства. После начала смешивания пользователь обязан выполнить весь процесс, корректно отвечая на запросы мастерноды, и завершить сессию смешивания. В противном случае мастернода выполнит обеспечительную транзакцию. Такой подход можно сравнить с депозитом по аренде, который возвращается арендатору по завершению договора только в том случае, если он действовал в полном соответствии с условиям данного договора.