Double-spending

Материал из Bitcoin Wiki
Перейти к: навигация, поиск

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

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

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

Типы атак[править]

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%. В силу того, что злоумышленник может генерировать блоки чаще, чем оставшаяся часть сети – он может создавать свою собственную цепь блоков, пока она не станет длиннее, чем «честная» часть сети.

См. также[править]