Суть двойного расходования средств заключается в осуществлении повторных транзакций одного и того же цифрового актива. Это становится возможным, если возникает несоответствие между доступной суммой цифровых денег и записью их расходов в блокчейне. В связи с тем, что проведение транзакций в блокчейн-сети занимает определенное время, у мошенников появляется шанс потратить одну и ту же сумму в разных направлениях.
Возможность повторного расходования все еще остается осуществимой в блокчейне, несмотря на многообразие средств защиты. Можно выделить несколько видов атак, результатом которых станет реализация двойного расходования активов.
Finney attack или атака Финни
Этот тип атаки осуществим только в том случае, если продавец принимает непроверенные транзакции или проводит проверку с задержкой хотя бы несколько секунд. Теоретически атака возможна, если атакующий занимается майнингом и контролирует содержимое блоков.
Процесс реализации Finney attack выглядит так:
- Хакер вносит транзакцию в блок, но не проводит ее.
- Найдя добытый блок, хакер перенаправляет те же монеты в еще один платеж.
- Эту транзакцию отменит другой майнер, но не сразу.
Запрашивая не менее шести подтверждений, получатель сможет избежать осуществления Finney attack.
Race attack или гоночная атака
Тип атаки «гонки» также осуществим лишь в случае приема неподтвержденных транзакций. Используя два разных устройства, хакер отправляет одну и ту же монету двум разным получателям. Если один из получателей без ожидания подтверждения блока принимает ее, то позже в процессе майнинга она будет отклонена. Для того чтобы «гоночная атака» не имела возможности быть проведенной, получателю необходимо дождаться хотя бы одного подтверждения.
Следует отметить, что для осуществления атаки Race злоумышленники зачастую используют прямое соединение с узлом жертвы. Отключение входящих подключений к узлам сможет обезопасить получателя и не позволит хакеру осуществить транзакцию напрямую.
Vector76 attack или атака одного подтверждения
Суть атаки Vector76 состоит в том, что отменена может быть даже та транзакция, которая была подтверждена один раз. Основные шаги в осуществлении такого типа атаки следующие:
- Майнер-злоумышленник создает два узла. Первый может быть подключен к обменнику или бирже, а второй — к одноранговым узлам блокчейн-сети.
- Далее хакер формирует два перевода с различными ценовыми значениями.
- Дополнительно добытый блок и транзакцию с большей ценностью хакер отправляет напрямую на биржу или обменник.
- После подтверждения предыдущей транзакции, хакер отправляет вторую транзакцию с меньшим значением в блокчейн-сеть, таким образом отклоняя первый платеж.
- Первая крупная транзакция депонируется обратно на счет хакера.
От этой атаки можно защититься, отключив входящие соединения и подключаясь только к хорошо связанным узлам (well-connected nodes).
Brute force attack или атака грубой силы
Если принимающая сторона проводит транзакции только после нескольких подтверждений, то, располагая высокой мощностью оборудования, злоумышленник может осуществить атаку «грубой силы». Он отправляет платеж, не прекращая проверку блоков, в которые будет включен перевод.
В то время как принимающая сторона проверяет перевод — хакер разветвляет цепь. Чем больше подтверждений найдет злоумышленник, тем вероятнее он сможет вернуть свои монеты обратно. К примеру, в случае p2p торговли злоумышленник таким образом завладеет средствами жертвы, лишь имитируя транзакцию со своей стороны.
Дело в том, что если хакер обладает высокой мощностью оборудования и имеет возможность идентифицировать все подтверждения в сети, то у него будет возможность их отменить. На практике атака «грубой силы» довольно маловероятна, ведь даже имея 10% мощности всей сети, ее успешность составит всего 0,01%.
Majority attack или атака 51%
Захват системы большинством (majority attack) или атака 51% является одним из наиболее известных приемов для осуществления двойных трат.
Распоряжаясь более 51% от вычислительной мощности всей сети, злоумышленник или группа хакеров могут начать генерировать блоки самостоятельно, вносить изменения в новые блоки, отклонять или подтверждать транзакции. Таким образом они по сути получают контроль над блокчейн-сетью, так что могут легко производить повторные траты средств.
Атака 51% была не раз осуществлена на блокчейне. Вот некоторые из успешных примеров:
- Криптопроекты на базе Ethereum Krypton (KR) и Shift (SHIFT) в 2016 году были атакованы. В результате хакерам удалось украсть 2200 монет через биржу Bittrex.
- В 2018 году анонимными злоумышленниками благодаря ошибке в коде была осуществлена атака большинства на криптопроект Verge (XVG). Общая сумма потерь составила порядка $800 тыс.
- Альткоин Bitcoin Gold (BTG) подвергся атаке большинства в 2018 году. Хакерам удалось вывести более $18 млн в криптовалюте через несколько популярных бирж.
- В середине 2018 года злоумышленникам удалось вывести через биржи токены на сумму более $2,5 млн благодаря атаке 51% на криптовалюты MonaCoin (MONA), ZenCash (ZEN) и Litecoin Cash (LCC).
- Проект Aurum Coin (AU) в конце 2018 года потерял более $500 тыс. в криптовалюте из-за атаки 51%.
- В 2019 году двумя крупными майнинговыми пулами была проведена атака 51% на сеть альткоина Bitcoin Cash (BCH).
Для защиты проекта от такого вида атаки следует повышать его популярность среди пользователей. Чем больше пользователей в сети, тем ниже вероятность осуществления majority attack. Еще одним решением для защиты считается переход на алгоритм PoS. Атака 51% на крупные проекты, работающие на алгоритме Proof-of-Stake — слишком затратна, хотя и остается теоретически выполнимой.
Решение проблемы Double-Spending
Блокчейн-сети обладают некоторыми характеристиками, которые позволяют снизить риск атак двойного расходования:
- Большое количество подтверждений. Чем больше подтверждений требуется для проведения транзакции, тем больше блоков будет добавлено. Соответственно и транзакция станет более безопасна.
- Открытость блокчейна. Реестр открытых сетей содержит записи о транзакциях с отметками времени. Добавление нового блока происходит вместе с внесением его в общую цепочку, одинаковую для всех узлов блокчейна. Таким образом майнеры посчитают действительной лишь первую транзакцию в открытом блокчейне.
Итак, самым распространенным методом двойных трат является создание эффекта отсутствия транзакций в цепочке блоков. Такая возможность зачастую возникает в результате целенаправленного нарушения работы блокчейн-сети или возникновения ошибки в коде проекта. Текущее развитие блокчейн-технологий и систем защиты от взломов минимизирует риск реализации Double-spending, но не исключает его полностью, особенно в небольших проектах.