Wie führt man einen Double-Spend-Angriff auf Websites durch, die Transaktionen mit 0 Bestätigungen akzeptieren?

Um einen Finney-Angriff oder einen 51%-Angriff durchzuführen, brauche ich viel Rechenleistung, aber in diesem Fall (eine Website, die Transaktionen mit 0 Bestätigungen akzeptiert) scheint es mir, dass ich nur zwei Transaktionen fast gleichzeitig ausführen muss. Je nachdem, was der Miner in den nächsten Block aufnehmen möchte, könnte ich Glück haben.

Geht das so einfach oder habe ich etwas vergessen?

Antworten (2)

Wenn Sie versuchen, eine 0-Bestätigung für doppelte Ausgaben durchzuführen, ist es irrelevant, welche Transaktionen (falls vorhanden) im nächsten Block enthalten sind. Ihr Ziel ist es, einfach beide Transaktionen abzuschließen, bevor einer der Händler eine Benachrichtigung über die andere erhält.

Das "Problem" besteht darin, dass das Netzwerk Transaktionen ziemlich schnell von einem Knoten zum nächsten weiterleitet. Es ist unwahrscheinlich, dass Sie beide Transaktionen abschließen, bevor der Händler beide Hälften der doppelten Ausgaben sieht, es sei denn, Sie haben eine Ineffizienz im Netzwerk, einen Engpass oder eine aktive Verschlechterung der Netzwerkleistung festgestellt.

Eine wirksame Gegenmaßnahme wäre, wenn der Händler zwischen dem Zeitpunkt, an dem er Ihre 0-Bestätigungs-Transaktion erkennt, und dem Zeitpunkt, an dem er Ihnen Zugriff auf den gekauften Artikel oder die Dienstleistung gewährt, eine kurze Verzögerung einführt. Angenommen, Sie führen eine perfekt getimte Doppelausgabe durch. Der Händler sieht seine Transaktion und wartet 60 Sekunden. 60 Sekunden sind eine lange Zeit für Transaktionen, um das Netzwerk nicht zu verbreiten. Wenn der Händler zu irgendeinem Zeitpunkt in diesen 60 Sekunden die "andere" Transaktion sieht, sind Sie fehlgeschlagen. Im Gegensatz zu anderen Betrugsformen verlieren Sie das Geld, da Ihre doppelten Ausgaben unwiderruflich sind. Es wird nur Glück sein, welcher Händler bezahlt wird.

Auch viele Transaktionen sind nicht irreversibel. Software, die über einen Lizenzschlüssel verfügt, kann der Lizenzschlüssel entzogen werden. Viele Geschenkkarten können als gestohlen gemeldet werden, um das Guthaben einzufrieren. Jede abonnementbasierte Website würde Ihnen höchstens ein paar Sekunden Service gewähren, bevor Sie die Verbindung unterbrechen. Produkte, die eine physische Lieferung erfordern, werden nie schnell genug versandt, um doppelte Ausgaben zu tätigen.

Das Risiko einer 0-Bestätigung mit doppelter Geschwindigkeit ist gering, aber die Sicherheit kann verbessert werden, indem ultraschnelle "Superknoten" mit niedriger Latenz entwickelt werden. Ein Dienstanbieter könnte ein Netzwerk von Bitcoin-Knoten auf der ganzen Welt mit Verbindungen mit geringer Latenz zwischen ihnen aufbauen. Jeder dieser Knoten würde eine modifizierte Version von Bitcoin ausführen, um die Anzahl der Verbindungen zu maximieren und Tausende oder sogar Zehntausende von Verbindungen zu Peers herzustellen. Egal, woher die beiden Hälften der doppelten Ausgaben stammen, es wären nur wenige Sprünge zu einem Superknoten.

Wenn ein Händler nur Transaktionen aus dem Supernode-Netzwerk akzeptiert, können Sie die doppelten Ausgaben nicht abschließen. Entweder hat das Netzwerk beide Transaktionen gesehen und die doppelte Ausgabe wurde erkannt oder nicht, in diesem Fall gewährt einer der Händler keinen Zugriff auf den gekauften Artikel.

Es würde nicht wirklich viel Arbeit erfordern, nur verlangen. Kartieren Sie das bestehende Bitcoin-Netzwerk und finden Sie Standorte für Server in verschiedenen Teilen des Netzes (z. B. Server in Hongkong, Großbritannien, US-Ostküste, US-Westküste, Deutschland, Brasilien). Richten Sie diese Knoten ein, um eine große Anzahl von Verbindungen zu Peers im Netzwerk herzustellen, und leiten Sie diese Transaktionen dann schnell aneinander weiter. Es gibt heute nicht genügend Nachfrage, um die Kosten zu rechtfertigen, aber eines Tages könnten diese Knoten das Äquivalent zum Internet-Backbone für das Bitcon-Netzwerk sein.
Nun, ich denke, man könnte im Grunde alles mit minimalem Aufwand auf Amazon EC2 einrichten. Teuer, aber schnell aufgebaut.

Was Sie vergessen, ist, dass Händler, die Transaktionen ohne Bestätigungen akzeptieren, sich bereits mit bekannten Methoden gegen diesen Angriff wehren würden. Die primäre Verteidigung besteht darin, das Bitcoin-Netzwerk an mehreren Punkten so nah wie möglich an den größten Mining-Pools zu überwachen. Der Händler betrachtet eine Transaktion nur dann als gültig, wenn er sie an der überwiegenden Mehrheit seiner Prüfpunkte sieht. Und wenn sie an irgendeinem Prüfpunkt eine widersprüchliche Transaktion sehen, lehnen sie die Transaktion natürlich ab (bis/es sei denn, sie erhält Bestätigungen).

Deshalb war der Finney-Angriff so ein Schock. Es wurde allgemein angenommen, dass dies eine ausreichende Verteidigung sei. Meiner Meinung nach ist es immer noch ausreichend für Transaktionen mit geringem Wert, sagen wir weniger als 250 $ oder gleichwertig. Zumindest ist das meine Meinung, bis wir tatsächlich einen erfolgreichen Double-Spend-Angriff gegen einen Händler mit angemessenen Abwehrmaßnahmen sehen.

Wie kommst du auf die 250-Dollar-Zahl? Ich wollte eine Frage zur Berechnung stellen und habe Ihre Antwort gefunden.
Es kann jetzt höher sein. Die Zahl basiert auf dem Risiko, das ein Angreifer eingeht – dem Risiko, den abgebauten Block zu verlieren. Seien Sie gewarnt, die primäre Verteidigung reicht nicht aus, Sie brauchen auch andere. Beispielsweise muss die Transaktionsgebühr angemessen sein.
Tragen Sie mit mir. Wie riskiert ein Double Spend Angreifer, nicht ein 51% Angreifer, einen Block zu verlieren? Er ist nicht unbedingt ein Bergmann. Ich kann die gleichen Münzen an 10 Adressen senden und ich besitze 9 davon, nur 1 ist ein Händler, den ich zu betrügen versuche. Besteht nicht eine 90%ige Chance, dass ich die Coins am Ende noch besitze? Wenn der Händler eine irreversible Ware mit 0 Bestätigungen verkauft, ist er in Schwierigkeiten. Oder ist er? Kläre mich auf :)
@AntonAnsgar Das wird nicht funktionieren, denn sobald der Händler eine widersprüchliche Transaktion sieht, gibt er die Ware nicht aus. Sie können nicht 90 % der Miner dazu bringen, die Transaktion zu sehen und sie trotzdem vor dem Händler zu verbergen. Der Angreifer muss also seinen eigenen Block mit der widersprüchlichen Transaktion abbauen, ihn halten, bis der Händler die Waren freigibt, und dann den Block mit der widersprüchlichen Transaktion freigeben. (Wir gehen davon aus, dass der Händler alle angemessenen Abwehrmaßnahmen gegen doppelte Ausgaben ergreift , außer auf eine Bestätigung zu warten.)
Alle angemessenen Abwehrmaßnahmen umfassen die Verbindung mit genügend Knoten und eine ausreichende Verzögerung vor der Annahme der Zahlung, sodass die Wahrscheinlichkeit, dass die widersprüchlichen Überweisungen nicht angezeigt werden, vernachlässigbar wird. Wie in der ersten Antwort vorgeschlagen. Ich muss mehr darüber lernen, wie man einen abgebauten Block hält, um den Block-Mining-Teil Ihrer Antwort zu verstehen, aber ich glaube, ich bekomme den 0-Bestätigungsteil für doppelte Ausgaben. Vielen Dank.
@AntonAnsgar Geben Sie „ Finney Attack “ in Ihre bevorzugte Suchmaschine ein.