Что такое пылевая атака или dust attack на криптовалюты?

381
Просмотры
dust attack

В этой статье рассмотрим понятие «пыли» в криптовалютах. С ней также связаны термины dust или dusting attack. Разберемся, в чем опасность пылевых транзакций и как кошельки борются с этими атаками.

Что такое «пыль» в криптовалютах

Пыль — это мелкие транзакции, которые злоумышленник использует для спама в сети. С их помощью он может сделать две вещи:

  • занять место в блоке и загрузить сеть,
  • направить транзакции на определенные адреса и по UTXO деанонимизировать пользователя, через дальнейший путь переводов.

Самая маленькая единица BTC — 1 сатоши. Пылью считаются транзакции до 100-200 сатоши.

Первый вариант пылевой атаки

Раньше в сетях криптовалют, которыми активно пользовались для платежей (в первую очередь биткоин), была конкуренция за место в блоке. Это выливалось в более высокие комиссии. Наиболее заметно это было в конце 2017 года, когда на BTC ждал самый большой ажиотаж за всю его историю.

Ныне не существующий CoinWallet или F2Pool начали заполнять блоки мелкими транзакциями. Их мотивация до конца неизвестна, но в это же время было обсуждение форков и увеличения размера блока с 1 до 2 Мб.

Сама по себе пылевая атака и спам-транзакция не может считаться полноценной атакой, поскольку любой может отправлять столько, сколько хочет. Они платят комиссию и имеют на это право. Но получается так, что спам в сети доставляет неудобство всем остальным. Участники должны платить более высокие комиссии, чтобы обойти пыль в очереди. В противном случае транзакции застрянут на неопределенный срок.

Это был дешевый и эффективный метод напакостить сети. Но работало это до введения некоторых решений по масштабированию, типа пакетной обработки и SegWit, внедрения Lightning Network и других уровней сети. На данный момент выгоднее отправлять в сеть только крупные суммы, чтобы компенсировать высокие сборы.

После пылевых атак в кошельках добавилась новая функция — возможность корректировать ставку на комиссии.

Деанонимизация через UTXO

Для лучшего понимания механики этой атаки нужно знать про UTXO. Об этом у нас есть отдельная статья.

Сумма на кошельке состоит из входов. Точно так же, как обычные купюры и монеты в кошельке. Например, 1455 рублей может быть представлено как 1000 рублей, 2 по 200 рублей, 5 монет по 10 рублей и одна пятирублевая монета. Всего 9 «предметов». BTC на счете хранятся точно так же, в зависимости от того, как сумма формировалась и какая «сдача» приходила.

Злоумышленники используют то, что входы не смешиваются. Они присылают немного пыли и ждут, когда она смешается с другими UTXO. Это позволяет обнаружить, какие адреса принадлежат жертве. Если нужно отследить адреса крупной компании или важного кита, аналитика того стоит. Знания могут использоваться для предсказаний и торговли информацией, фишинговых атак или вымогательства.

Изначально решение проблемы представил Питер Тодд, Dust-B-Gone.

Нужно отправить пыль, чтобы она собралась в одну транзакцию с флагом NONE | ANYONECANPAY.

Это означает, что любой другой может добавить входные данные к транзакции, а выходные неопределенные. Затем транзакция отправляется на сервер Питера Тодда, где скрипт собирает ее и другие переводы вместе. Периодически получается разовая транзакция, которая уничтожает пыль. Поскольку мелкие переводы множества людей сливаются, никто не может сказать, где она и откуда и, следовательно, какие монеты связаны с адресом. Это своеобразный миксер.

Постепенно обновления внедрили кошельки. У Samourai Wallet появилась функция контроля монет, где можно отмечать неизвестные транзакции флажком «Не тратить».

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

Это не страшная атака, но может добавить некоторые неприятности. Разработчики Bitcoin Core считают за пыль транзакцию, меньше технического значения. Размер входа — 546 сатоши и 294 сатоши для SegWit. Транзакция меньше этого значения будет отклонена нодами. В больших масштабах проводить пылевые атаки дорого.