ru
Назад к списку

Обзор Tornado Cash

source-logo  freedmanclub.com 15 Апрель 2022 06:27, UTC

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

Многие пользователи не хотят такой открытости информации об их активах. Анонимность и конфиденциальность – одни из основных запросов криптоинвесторов. Предпринималось множество попыток для обеспечения полной анонимности транзакций с криптовалютой. Многие из них, как, например, использование централизованного биржевого кошелька или кастодиальной службы микширования, несут в себе высокие риски, связанные с контрагентом и гарантом операции. И такие службы не гарантируют 100% анонимность.

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

Но сегодня мы рассмотрим один из самых популярных сервисов анонимизации транзакций: Tornado Cash .

Определение Tornado Cash

Tornado Cash — это решение для обеспечения конфиденциальности и анонимности транзакций с Ethereum и ERC20, основанное на протоколе zkSNARK.

zkSNARK – это протокол шифрования, который основан на идее о доказательстве с нулевым разглашением (доказательстве нулевого знания) и ее применении в технологии блокчейн. Нулевое знание исходит из принципа того, что прувер (тот, кто доказывает) может доказать верификатору, что он обладает знанием, не сообщая при этом, что скрывается под этим «знанием». Как пример: прувер говорит: «У меня есть пароль, но я не скажу какой», а система отвечает: «Верю».

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

Таким образом, Tornado Cash действует как прокси, гарантируя, что транзакция является 100% анонимной с доказательствами zkSnarks.

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

Когда пользователь решает вывести свои средства, он предоставляет хэш как доказательство того, что он владеет ключом неизрасходованного обязательства из списка депозитов смарт-контракта. Технология zkSnark позволяет это сделать, не раскрывая, какой именно депозит соответствует этому ключу. Смарт-контракт проверяет подтверждение и переводит внесенные средства на адрес, указанный для вывода. Сторонний наблюдатель не может определить, с какого депозита произошел этот вывод.

Упрощенно схема выглядит так – пользователь отправляет свои средства в общий портфель. В этот портфель поступают средства и других пользователей, также в нем находятся средства самого сервиса Tornado Cash. Затем, через некоторое время пользователь решает вывести свои средства из общего портфеля на свой новый адрес криптокошелька. Система выводит ему необходимую сумму из общего портфеля. Таким образом теряется связь между адресом криптокошелька, откуда средства поступили в общий портфель, и адресом криптокошелька, куда средства были направлены. 

Набор анонимности

Набор анонимности — это в основном измерение анонимности. Этот индикатор показывает, сколько еще депозитов ждут вывода. Другими словами, из скольки депозитов пользователь может получить свои ETH.

Для вывода средств из Tornado Cash существует два способа:

  1. Вывод напрямую на криптокошелек (Metamask, Trustwallet и т. д.).
  2. Использование ретранслятора

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

Второй способ с использованием ретранслятора (Relayer) обеспечивает полную анонимность. Все, что нужно сделать пользователю, это сгенерировать новый адрес Ethereum, а zkSnark proof и Relayer сделают все остальное. За это возьмется комиссия с выводимых ETH.

Громкие процессы, где было зафиксировано использование Tornado Cash

В последнее время зафиксировано максимальное количество мспользования миксера Tornado Cash. Это связано с увеличенным объемом ограничений и отслеживания объемов перемещаемых криптовалют.

Так, известно, что:

  1. 28 000 ETH, связанных со взломом моста Ronin, были переведены в Tornado Cash.
  2. северокорейская хакерская группа Lazarus с кражей более 600 миллионов долларов в криптовалюте из Axie Infinity также использовала Tornado Cash.

Советы для того, чтобы оставаться полностью анонимным

Даже используя Relayer пользователю необходимо позаботиться о соблюдении общей анонимности в Интернете, используя vpn, прокси, Tor, чтобы скрыть IP-адрес, с которого он действует. Также необходимо использовать функцию вкладки инкогнито в браузере.

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

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

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

Автор: Эльвир, аналитик Freedman Сlub Crypto News

freedmanclub.com