Что такое атака Финни?

Что такое атака Финни? Дополнительные баллы для объяснения его цели, предпосылки для ее возможного, как можно совершить атаку и происхождение имени «атака Финни».

29 голосов | спросил Dr.Haribo 3 +04002012-10-03T13:03:21+04:00312012bEurope/MoscowWed, 03 Oct 2012 13:03:21 +0400 2012, 13:03:21

2 ответа


36

Атака Финни названа в честь Hal Finney , который предложил ее в этот комментарий . (Hal является первым получателем транзакции Bitcoin, а первый - комментарием о выпуске исходного кода Bitcoin.)

Это двойное расходование со следующими функциями:

  • Он работает только в том случае, если продавец принимает неподтвержденные транзакции.

  • Он все равно работает, однако, если продавец ждет несколько секунд до убедитесь, что все в сети согласны с тем, что он был оплачен.

  • Это требует от злоумышленника добычи и контроля содержимого его блоки; однако он может теоретически сделать это с любым хэшхетом, в частности значительно менее 50% хэшета сети.

Это происходит следующим образом:

  1. Злоумышленники мины обычно блокируются; в блоке, который он пытается найти, он включает транзакцию, которая возвращает некоторые из его монет обратно себе, без трансляции этой транзакции.

  2. Когда он находит блок, он не передает его; вместо этого он отправляет одни и те же монеты торговцу для некоторых товаров или услуг.

  3. После того, как торговцы принимают платеж и необратимо предоставляют услугу, злоумышленник транслирует свой блок; транзакция, которая отправляет монеты себе, включенную в этот блок, переопределит неподтвержденный платеж торговцу.

Если время от нахождения блока до тех пор, пока злоумышленник не отправит платеж, и продавец не примет его, а среднее время нахождения блока - T, существует вероятность того, что t /T будет обнаружен другой блок на сеть в это время; в этом случае атака не удастся, и , злоумышленник потеряет награду блока B.

Это означает, что средняя стоимость попытки атаки равна (t /T) * B; как правило, купец должен ждать по крайней мере t = V * T /B (V - значение транзакции), чтобы убедиться, что попытка выполнить эту атаку против него не выгодна; этого может быть недостаточно, поскольку проворный злоумышленник может использовать один и тот же блок для нескольких атак, потенциально получая общую сумму своего значения.

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

ответил Meni Rosenfeld 4 +04002012-10-04T15:11:47+04:00312012bEurope/MoscowThu, 04 Oct 2012 15:11:47 +0400 2012, 15:11:47
12

атака Finney - это вариант атаки с двойным траттингом. Злоумышленник создает две транзакции: один зачисляет жертву и один кредит. Они сохраняют первую транзакцию на данный момент и приступают к тому, чтобы попытаться запустить вторую в блок. Когда они преуспеют (это может занять некоторое время), они быстро совершают покупку с помощью первой транзакции, приобретают приобретенные товары и затем освобождают предварительно запрограммированный блок. Таким образом, первая транзакция станет недействительной, даже если она распространяется по всей сети.

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

ответил ThePiachu 3 +04002012-10-03T13:14:02+04:00312012bEurope/MoscowWed, 03 Oct 2012 13:14:02 +0400 2012, 13:14:02

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132