Was ist ein Finney-Angriff?

Was ist ein Finney-Angriff? Extrapunkte für die Erläuterung des Zwecks, der Voraussetzungen dafür, wie der Angriff durchgeführt werden kann und der Herkunft des Namens "Finney-Angriff".

Antworten (2)

Der Finney-Angriff ist nach Hal Finney benannt , der ihn in diesem Kommentar vorgeschlagen hat . (Hal ist zufällig der erste Empfänger einer Bitcoin-Transaktion und die erste Person, die die Veröffentlichung des Bitcoin-Quellcodes kommentiert.)

Es handelt sich um einen Double-Spending- Angriff mit den folgenden Merkmalen:

  • Es funktioniert nur, wenn der Händler unbestätigte Transaktionen akzeptiert.

  • Es funktioniert jedoch immer noch, wenn der Händler einige Sekunden wartet, um zu überprüfen, ob alle im Netzwerk damit einverstanden sind, dass er bezahlt wurde.

  • Es erfordert, dass der Angreifer den Inhalt seiner Blöcke abbaut und kontrolliert; er kann dies jedoch theoretisch mit jeder Hashrate tun, insbesondere mit deutlich weniger als 50 % der Netzwerk-Hashrate.

Es geht wie folgt vor:

  1. Der Angreifer baut Blöcke normal ab; In den Block, den er zu finden versucht, fügt er eine Transaktion ein, die einige seiner Münzen an sich selbst zurücksendet, ohne diese Transaktion zu übertragen.

  2. Wenn er einen Block findet, sendet er ihn nicht; Stattdessen schickt er dieselben Münzen für Waren oder Dienstleistungen an einen Händler.

  3. Nachdem die Händler die Zahlung akzeptiert und den Dienst unwiderruflich erbracht haben, sendet der Angreifer seinen Block; Die in diesem Block enthaltene Transaktion, die die Münzen an sich selbst sendet, überschreibt die unbestätigte Zahlung an den Händler.

Wenn die Zeit vom Finden des Blocks bis zum Senden der Zahlung durch den Angreifer und Akzeptieren durch den Händler t beträgt und die durchschnittliche Zeit zum Finden eines Blocks T beträgt, besteht eine Wahrscheinlichkeit von t/T, dass in diesem Netzwerk ein weiterer Block gefunden wird Zeit; In diesem Fall schlägt der Angriff fehl und der Angreifer verliert die Blockbelohnung von B.

Dies bedeutet, dass die durchschnittlichen Kosten für den Angriffsversuch etwa (t/T) * B betragen; als Faustregel sollte der Händler mindestens t=V*T/B warten (V ist der Wert der Transaktion), um sicherzustellen, dass der Versuch, diesen Angriff gegen ihn durchzuführen, nicht rentabel ist; Dies reicht jedoch möglicherweise nicht aus, da ein flinker Angreifer denselben Block für mehrere Angriffe verwenden und möglicherweise den gesamten Wert gewinnen kann.

Je niedriger die Hashrate des Angreifers ist, desto weniger Möglichkeiten hat er, den Angriff auszuführen. Wenn der Angriff darauf abzielt, ein illiquides Gut zu erhalten, ist es schwierig, die Notwendigkeit dieses Guts mit dem Finden einer Blockade zusammenfallen zu lassen. Wenn der Angriff darauf abzielt, etwas Flüssiges zu erhalten (z. B. Bitcoins gegen anderes Geld einzutauschen), ist eine Gelegenheit immer vorhanden, aber der Händler wird wahrscheinlich einige Bestätigungen benötigen. Dies erschwert die Anwendung des Angriffs in der Praxis.

Der Finney-Angriff ist eine Variation eines Double-Spend-Angriffs. Der Angreifer erstellt zwei Transaktionen – eine, die dem Opfer gutgeschrieben wird, und eine, die sich selbst gutschreibt. Sie behalten die erste Transaktion vorerst und versuchen, die zweite in einen Block zu minen. Wenn sie erfolgreich sind (dies kann eine Weile dauern), tätigen sie schnell einen Kauf mit der ersten Transaktion, erhalten die gekauften Waren und geben dann den vorab geschürften Block frei. Auf diese Weise wird die erste Transaktion ungültig, selbst wenn sie durch das gesamte Netzwerk verbreitet wird.

Diese Variante des Double-Spend-Angriffs ist schwieriger auszuführen (einen Block selbst zu minen war schon lange nicht mehr einfach), aber bis zur vollständigen Ausführung nicht nachweisbar. Die einzige Möglichkeit, sich gegen einen solchen Angriff zu schützen, besteht darin, mindestens eine Transaktionsbestätigung zu verlangen, bevor gekaufte Waren ausgegeben werden, und mehr Bestätigungen für Transaktionen mit höherem Wert.

Wenn man bedenkt, dass das Bitcoin-Netzwerk mittlerweile so riesig ist, ist der Finney-Angriff rein theoretisch? Gibt es frühere Aufzeichnungen über den mutmaßlichen oder stattfindenden Finney-Angriff?
@Pacerier Soweit ich mich erinnere, habe ich gehört, dass ein Mining-Pool dies regelmäßig gegen Gaming-Websites wie SatoshiDice einsetzt. Im Wesentlichen erstellen Sie einen Block mit einer Transaktion, die sich selbst gutschreibt. Sie senden eine widersprüchliche Transaktion an SD, die Ihnen mehr als die Blockbelohnung einbringen kann. Wenn Sie verlieren, heben Sie die Sperre auf und erhalten Ihr Geld zurück. Wenn Sie gewinnen, verwerfen Sie den Block und behalten die Gewinne.
Wow, also könnte SatoshiDice durch wiederholte Taten bankrott gehen?
@Pacerier Ja, es sei denn, sie wechseln dazu, nur Wetten mit 1+ Bestätigungen zu verarbeiten.
Es scheint seltsam, dass noch niemand SatoshiDice angegriffen hat. Es scheint ein wirklich leckeres Ziel zu sein.
@ Pacerier vielleicht hat jemand, aber vielleicht verdienen sie genug Geld, um sich nicht darum zu kümmern. Schlägt mich.
Können Sie mir erklären, warum die erste Transaktion ungültig wird? Zum Beispiel haben Sie 10 Münzen. Sie bewegen 3 Münzen zu sich selbst und kaufen andere 3 Münzen. Ich sehe hier keinen Konflikt. Danke.
@hqt Wenn Sie 3 Münzen an sich selbst senden und genau dieselben 3 Münzen an jemand anderen verkaufen, wird nur eine dieser Transaktionen durchgeführt. Sie zielen darauf ab, einen Konflikt zu erzeugen und ihn in eine Blockade zu bringen.
@ThePiachu, also ist der entscheidende Punkt exactly that same 3 coins(sieht aus, als hätte jede Münze etwas Ähnliches wie eine ID). Können wir diese Aktion kontrollieren? Danke
@hqt Informieren Sie sich über Bitcoin-Transaktionen, TxIDs usw. Sie müssen zuerst verstehen, wie diese funktionieren, um zu verstehen, warum Finney Attack funktioniert.
@ThePiachu "Wenn Sie gewinnen, verwerfen Sie den Block und behalten die Gewinne." Warum können wir nicht einmal beides behalten, es sei denn, wir erhalten erst Gewinngeld, nachdem die Transaktion bestätigt wurde andere Sache auch, habe ich recht?
@SurajJain Der Block, den Sie abbauen, hat die Transaktion nicht. Es soll rückgängig machen, was Sie getan haben, falls Sie verlieren. Ansonsten ist es kein Finney-Angriff
@ThePiachu Ich meinte, wenn ich gewinne und mir Geld gutgeschrieben wurde, warum dann den Block verwerfen, der die Transaktion für mich enthält, da ich auf diese Weise auch mein Geld zurückbekomme, das ich für Wetten verwendet habe, ich meine, warum nicht würfeln, selbst nachdem ich gewonnen habe, werde beides behalten
@SurajJain Sie erstellen einen Block OHNE die Transaktion. Wenn Sie VERLIEREN, geben Sie Ihren Block frei und stornieren somit die Wette. Wenn Sie GEWINNEN, verwerfen Sie den Block und behalten die Gewinne.
Würden sie nach dem Gewinn die zu bestätigende Transaktion überprüfen, bevor sie den Preis angeben?
Ich dachte, wir würden sofort einen Gewinnpreis erzielen und dann würden wir diesen Block freigeben, damit wir auch das Geld behalten können, das wir für die Wette ausgegeben haben.