Исследователи решили доказать, что несмотря на нетрадиционную модель транзакций в блокчейне, конфиденциальность сети Mimblewimble может быть нарушена. Чтобы проверить эту теорию, один из экспертов Dragonfly Research – Иван Богатый – смог узнать адреса отправителей и получателей транзакций, совершаемых с криптовалютой Grin, в режиме реального времени. Это возможно сделать с помощью «узлов-шпионов», передающих транзакции других пользователей.
По словам Ивана Богатого, его проверка не позволила определить точную сумму транзакций, так как Mimblewimble скрывает эти суммы, используя криптографию на основе эллиптических кривых. Однако тестирование позволило выявить отправителей и получателей платежей, найти взаимосвязи в цепочках транзакций и восстановить поток платежей.
Представим ситуацию, что правительство знает адрес кошелька, который принадлежит какому-либо политическому диссиденту, и вы перечисляете на этот адрес небольшую сумму денег. Затем, при переводе средств с Mimblewimble на местную биржу, эта биржа выдаст ваши данные правительству. Учитывая, что биржа сможет увидеть весь цикл транзакций и при необходимости передать эту информацию правительству, можно легко вычислить, что криптовалюту отправили именно вы.
В отличие от Mimblewimble, в Zcash такие атаки невозможны, так как каждая «скрытая» транзакция обладает большим набором функций анонимности, благодаря которому одну транзакцию невозможно отличить от другой. В Mimblewimble набор средств анонимнизации более ограничен. При этом специалисты Dragonfly Research заявляют, что проведенная ими работа не станет приговором для протокола Mimblewimble, поскольку его модель анонимизации транзакций выигрывает в сравнении с открытыми блокчейнами, однако проигрывает Zcash и Monero.
Иван Богатый рассказал, как ему удалось раскрыть адреса отправителей и получателей транзакций. Несмотря на зашифрованную сумму платежа, в блокчейне на основе Mimblewimble остается граф транзакций, взаимосвязанных между собой. Чтобы решить эту проблему, сеть Mimblewimble «сжимает» транзакции в один блок, который представляет собой одну большую супер-транзакцию, при этом подробные данные о каждой транзакции не раскрываются. После такого «смешивания» невозможно определить, кто кому перевел монеты.
Проблема заключается в том, что в идеальной ситуации все транзакции должны осуществляться одновременно. Если учесть, что они проводятся из разных мест и распространяются без ограничений, то какой-либо узел сможет проанализировать все транзакции, прежде чем они будут объединены в один блок, можно легко выйти на отправителя и получателя в первоначальных транзакциях.
Кроме того, для обеспечения конфиденциальности и сокрытия информации об отправителе, Grin использует протокол Dandelion. Если провести аналогию с игрой «глухой телефон», в блокчейне Биткоина отправитель оповещает о транзакции сразу всех. Что касается протокола Dandelion, отправитель транзакции «передает ее по секрету» от одного узла к другому, по цепочке. Когда транзакция доходит до получателя, он также публично сообщает о ней, но при этом он не связан с отправителем, поэтому сложно определить, откуда началась цепочка. Такая защита прекрасно работает для сокрытия IP-адреса участников транзакции и борьбы с «узлами-разведчиками». Когда транзакция начинается в цепочке Dandelion, она быстро смешивается с другими, и если получатель успеет сообщить о совершенной транзакции, узел-разведчик не сможет их распутать. Как заявляет пользователь, эту защиту тоже можно взломать.
Каждый узел Grin по умолчанию соединен с 8 другими узлами. Чтобы обеспечить нужное количество узлов, можно подключить узел-разведчик к любому другому узлу в сети, и если узел-разведчик останется в ней надолго, другие узлы будут подключаться к нему, в некоторых случаях делая его супер-узлом. Супер-узел с большой вероятностью сможет отследить любые транзакции в Dandelion, если он увидит их по-отдельности, прежде чем они смешаются, а затем легко отделит их друг от друга.
Как утверждает Иван Богатый, он смог отследить 96 % всех транзакций, подсоединившись лишь к 200 узлам из 3000, присутствовавших в сети Grin. Если потратить больше ресурсов, можно подсоединиться ко всем 3000 узлам, чтобы «распутать» практически все транзакции. Причем это можно сделать не только с помощью одного супер-узла, но и используя большое количество отдельных узлов с уникальными IP-адресами.
Несмотря на возможность обнаружения связанных между собой транзакций, Mimblewimble обладает уникальными характеристиками, эффективно скрывая сумму транзакций. Поэтому, чтобы обеспечить более высокий уровень конфиденциальности, можно совмещать Mimblewimble с другим протоколом, скрывающим граф с транзакциями.
Напомним, что в январе на базе протокола Mimblewimble была официально запущена сеть Grin, а в прошлом месяце технологию MimbleWimble планировали внедрить разработчики Litecoin.