Double-spending

Двойная трата или Double-spending называется удачное использование одних и тех же средств дважды. Bitcoin защищен от double-spending атаки тем, что верифицирует каждую транзакцию, которая добавляется в цепочку блоков, на предмет того, что средства, содержащиеся в транзакции, не были потрачены ранее.

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

Bitcoin имеет уязвимость к двойной трате на начальном этапе нахождения транзакции в сети. Чем больше у транзакции подтверждений, тем меньше риск того, что она будет использована в мошеннических целях.

Типы атак

Race attack

Магазины и сервисы, которые принимают платеж, если у транзакции 0 подтверждений, могут быть подвержены так называемой “Race attack”. Например, создаются 2 транзакции на одни и те же средства, затем они направляются в различные магазины/сервисы – в данном случае лишь один из магазинов получит средства – тот, чья транзакция первой окажется в block chain.

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

Finney attack

Еще один тип атаки, которому подвержены магазины или сервисы, которые принимают транзакции с 0 подтверждений. “Finney attack” — это атака, которая требует участие майнера, для включения повторных транзакций в блок. Риск этой атаки не может быть исключен, какие бы средства защиты ни использовал магазин или сервис, но она требует участия майнера и удачного стечения обстоятельств. Она стоит больших средств и не является тривиальной задачей. Так же как и с предыдущим способом атаки, магазин или сервис должны в серьез рассмотреть свою политику на предмет транзакций с 0 подтверждений.

Vector76 attack

Так же носит название «атака с одним подтверждением» – это комбинация 2х предыдущих атак, что дает злоумышленнику возможность дважды потратить средства из транзакции, у которой есть одно подтверждение.

Brute force attack

Эта атака возможна даже в том случае, если магазин или сервис ждут несколько подтверждений транзакции, но требует достаточно высокую производительность оборудования (hashrate) атакующего.

Злоумышленник отправляет магазину транзакцию, которой оплачивает товар/услугу, продолжая в этот момент майнить ответвление цепи блоков (block chain fork), в которую включена эта транзакция. После N подтверждений магазин высылает товар. Если злоумышленник нашел больше, чем N блоков к этому моменту, он ломает свою ветвь цепи блоков и получает назад свои средства, если же злоумышленнику это не удалось — атака считается неудачной, и средства отправляются в магазин, как и положено.

Успех этой атаки напрямую зависит от скорости (hashrate) атакующего и количества подтверждений, которых ждет магазин/сервис. Например, если у атакующего находится 10% вычислительной мощности (hashrate) сети Bitcoin, а магазин, для успешного проведения транзакции, ждет 6 подтверждений — вероятность успеха такой атаки составит 0.1%.

>50% attack”

Если злоумышленник контролирует более 50% мощности сети Bitcoin, вероятность успеха предыдущей атаки становится 100%. В силу того, что злоумышленник может генерировать блоки чаще, чем оставшаяся часть сети – он может создавать свою собственную цепь блоков, пока она не станет длиннее, чем «честная» часть сети.

См. также