|
Полезные статьи. Разработка. Безопасность Полезные статьи о криптовалюте. Терминология блокчеин. |
Опции темы |
22.12.2019, 20:10 | #1 |
Регистрация: 01.01.2018
Сообщений: 168
|
Что такое CoinJoin и как с его помощью обеспечить анонимность биткоина
Что такое CoinJoin и как с его помощью обеспечить анонимность биткоина.
CoinJoin — это протокол, который усиливает конфиденциальность транзакций биткоина. С его помощью несколько сторон могут отправлять средства в рамках одной транзакции без риска кражи. Был впервые предложен в 2013 году. Суть протокола Протокол CoinJoin позволяет нескольким клиентам Bitcoin, после согласования друг с другом, создавать совместно подписанную транзакцию: она будет содержать средства из кошельков этих клиентов. Это действие позволяет смешивать балансы в один общий. Это позволяет получить анонимность, но не отправлять свои деньги в другие сервисы, то есть снизить риск кражи. Анонимность достигается путем тщательного выбора входных и/или выходных значений. Исследователи-криптографы предложили различные дополнения к концепции протокола:
Причина создания BTC продвигается как инструмент, который противопоставляется банковской системе. И многие заблуждаются касательно его анонимности. Кажется, что раз при создании кошелька не нужен паспорт, а генерировать открытые ключи можно столько, сколько надо (чего не сделаешь с картами), это хороший инструмент для сохранения своей конфиденциальности. В действительности же биткоин псевдоанонимен: отследить транзакцию и связать с реальным лицом можно через повторное использование адреса, анализ сети, отслеживание платежей, мониторинга узлов и множества других механизмов. Также все переводы с адреса биткоина отражаются в публичной книге: сколько вы получили и сколько потратили. При этом в случае с традиционными банками получается большая конфиденциальность по умолчанию. Никто посторонний не может взять ваш счет и по нему узнать всю историю операций без каких-либо ухищрений. Никто не посмотрит, куда вы тратите деньги, какие сайты спонсируете и сколько переводите на другие счета (ну, если мы не говорим об уполномоченных органах, которые имеют доступ к вашим переводам). И открытость в биткоине может стать серьезным практическим недостатком как для физических лиц, так и для бизнеса. То есть, зная два адреса, пытливый ум может сделать далеко идущие выводы: например, если с кошелька одной компании был перевод на кошелек другой. Все, с кем торгует компания, в той или иной мере теряют конфиденциальность. Решение Тогда автор выдвинул предложение CoinJoin, которое заключает в себе особое выполнение транзакции. Протокол не вносит никаких изменений в сам биткоин. Пассивный наблюдатель не различит транзакцию, которая отправлена несколькими людьми, многокомпонентную транзакцию, и обычную. Это дает стимул для экосистемы распространять протокол и делает транзакции, которые не выполнены с CoinJoin, неразличимыми, когда это возможно. Исходный протокол CoinJoin не предлагает некоторых решений по дизайну, таких как введение правил, какие суммы могут быть объединены, как происходит самонастройка и как участники обмениваются информацией перед подписанием транзакции. Такую схему с выводами и вводами приводит Максвелл. Самый простой пример. Есть два участника CoinJoin, каждый вводит 1 BTC и получают выход в 1 BTC. Для простоты предположим, что комиссия за транзакцию не взимается. Операция использует один или несколько входов и создает один или несколько выходов с заданными значениями. Каждый вход представляет собой результат прошлой транзакции. Для каждого входа есть отдельная подпись (scriptsig), которая создается в соответствии с правилами, указанными в прошлом выходе (scriptpubkey). Системе биткоина нужно убедиться, что подписи правильны, что входы существуют, а сумма выходных значений меньше или равна сумме входных значений (любой избыток становится комиссией майнерам). Нет требования, чтобы деньги на выходе использовались одинаково: не требуется переводить BTC по одному и тому же адресу. Подписи, по одной на вход, внутри транзакции полностью независимы друг от друга. Это означает, что пользователи могут договориться о наборе входных данных, а также о количестве выходов для оплаты. Транзакция недействительна и не будет приниматься сетью до тех пор, пока не будут предоставлены все подписи. Большинство транзакций в сети биткоина все-таки проводятся с комиссией майнерам. В этом случае ее оплата может решаться такими способами:
Существует несколько реализаций анонимных транзакций биктоина, вдохновленных CoinJoin: SharedCoin, Dark Wallet, DarkSend в Altcoin Dash и JoinMarket. Также есть CoinShuffle, это расширение для протокола CoinJoin. Он основан на протоколе анонимной групповой связи Dissent. Это исправляет один недостаток предыдущего протокола — момент, когда стороны должны договориться: где и как, нужна третья сторона. В данном случае пиры соединяются напрямую, а используя эфемерное шифрование открытого ключа и случайную перетасовку, участники «ослеплены». В случае DDOS-атаки протокол может идентифицировать злоумышленников и удалять их. Протокол не берет плату за микширование, но требует дополнительного времени на выполнение. CoinShuffle был предложен группой из Cluster of Excellence Multimodal Computing and Interaction (MMCI) в Университете Саарланда. Авторами статьи названы Тим Раффинг, Педро Морено-Санчес и Аникет Кейт. Первоначальная версия была опубликована на 19-м Европейском симпозиуме по исследованиям в области компьютерной безопасности (ESORICS’14). У Алисы есть 1BTC на адресе, который мы сократим как «1AliceIn …». Личный ключ, который она использует для подписания транзакций, чтобы тратить с этого адреса, — skINAlice. Соответствующим ключом проверки, открытым ключом для этого адреса является vkINAlice. «IN» указывает, что это адрес ввода для транзакции, а выходные адреса обозначаются «OUT». Алиса, Боб и Чарли договорились об уникальном идентификаторе сеанса τ (скажем, τ = 42), и они обменялись открытыми друг с другом. Затем:
|