Уязвимость позволяющая деанонимизировать входные и выходные данные пользователей в раунде смешивания Wasabi раскрыта
Путем "пометки" каждого пользователя уникальным идентификатором таким образом, злонамеренный координатор может видеть, какие выходы принадлежат каким пользователям, сводя на нет все преимущества конфиденциальности, которые они могли получить от смешивания
GingerWallet, форк WasabiWallet, поддерживаемый бывшими сотрудниками zkSNACKs после закрытия координатора Wasabi CoinJoin, получил отчет об уязвимости от разработчика drkgry. Эта уязвимость позволила бы полностью деанонимизировать входные и выходные данные пользователей в раунде смешивания, предоставив злонамеренному координатору возможность полностью аннулировать любые преимущества конфиденциальности, полученные при смешивании, выполняя активное нападение.
Wasabi 2.0 представляла собой полную переработку того, как Wasabi координировал смешивание монет, переходя от фреймворка ZeroLink с фиксированными суммами микширования к протоколу Wabisabi, позволяющему динамические суммы смешивания нескольких номиналов. Этот процесс включал переход от однородных зашифрованных токенов к регистрационным выходам для получения ваших монет обратно к динамической системе учетных данных под названием Keyed Verification Anonymous Credentials (KVACs). Это позволило пользователям регистрировать зашифрованные суммы, которые предотвращали кражу монет других пользователей без раскрытия серверу незашифрованных сумм, которые могли быть связаны и предотвращать связывание владения отдельных входов.
Когда пользователи начинают участвовать в раунде, они запрашивают у сервера координатора информацию о раунде. Это возвращает значение в параметрах RoundCreated, называемое maxAmountCredentialValue. Это максимальная стоимость учетной записи, которую сервер может выдать. Каждое выдача учетной записи идентифицируется на основе значения, установленного здесь.
Для экономии полосы пропускания несколько предложенных методов для клиентов для взаимной проверки этой информации никогда не были реализованы. Это позволяет злонамеренному координатору выдавать каждому пользователю при регистрации их входов уникальное значение maxAmountCredentialValue. В последующих сообщениях координатору, включая регистрацию вывода, координатор мог определить, с каким пользователем он общается, основываясь на этом значении.
Путем "пометки" каждого пользователя уникальным идентификатором таким образом, злонамеренный координатор может видеть, какие выходы принадлежат каким пользователям, сводя на нет все преимущества конфиденциальности, которые они могли получить от смешивания.
По моим сведениям, drkgry обнаружил это независимо и довел до сведения в доброй вере, но члены команды, присутствовавшие в zkSNACKs во время проектирования Wabisabi, были полностью осведомлены об этой проблеме.
"Второе назначение хэша раунда - защитить клиентов от атак с тегами со стороны сервера; параметры выдачи учетных записей должны быть идентичными для всех учетных записей и другая информация о раунде должна быть одинаковой для всех клиентов (например, чтобы убедиться, что сервер не пытается повлиять на клиентов, чтобы создать какое-либо заметное смещение в регистрации)."
Это было поднято в 2021 году Ювалом Когманом, также известным как nothingmuch, в 2021 году. Ювал был разработчиком, который разработал то, что стало протоколом Wabisabi, и одним из дизайнеров, фактически определивших полный протокол вместе с Иштваном Андрашем Серисом.
Одна последняя заметка заключается в том, что уязвимость тега действительно не решается без предложения от Ювала, а также полной собственности доказательств, связанных с фактическими UTXO, как предложено в его оригинальном запросе на вытягивание, обсуждающем атаки тегов. Все данные, отправляемые клиентам, не связаны с конкретным идентификатором раунда, поэтому злонамеренный координатор все еще способен провести подобную атаку, предоставляя пользователям уникальные идентификаторы раундов и просто копируя необходимые данные и повторно присваивая каждый уникальный идентификатор пользователю перед отправкой любых сообщений.
Это не единственная нерешенная уязвимость в текущей реализации Wasabi 2.0, созданной остальной командой, которая пошла на компромиссы во время этапа реализации.