Ist es möglich, während einer Netzwerkaufspaltung einen Double-Spending-Angriff in Ripple auszuführen?

Aus der Spezifikation (Hervorhebung hinzugefügt):

Bei einer Nettoaufteilung kann ein Ledger von der Minderheit des Netzwerks geschlossen werden, dieses Ledger kann in Zukunft verworfen werden .

Bedeutet dies, dass es möglich wäre, zweimal auszugeben, einmal auf jeder Seite der Teilung?

Selbst wenn die Transaktion später lediglich abgelehnt wird, können Sie einen Händler dazu verleiten, Ihre Zahlung zu akzeptieren, dann die Lieferung entgegenzunehmen und dann das Netzwerk die Transaktion ablehnen zu lassen, sobald die Aufteilung behoben ist. Ist das richtig? Wie würde die Minderheit der Knoten wissen, dass sie vom Rest des Netzwerks getrennt sind?

Antworten (1)

Ripple sollte gegen diesen Angriff immun sein, da eine Transaktion nicht als validiert gilt, bis eine überwältigende Mehrheit der Validierer (die Ihnen wichtig sind) eine Quittung unterzeichnet hat, die besagt, dass sie sie verarbeitet haben (indem sie ein Ledger validieren, das sie entweder in diesem Ledger oder in enthält eines seiner vorherigen Hauptbücher). Wenn sich das Netzwerk aufgeteilt hätte, könnten Sie von einer überwältigenden Mehrheit der Prüfer keine Quittungen erhalten.

Ripple-Server haben ein internes „Tor“. Sie verfolgen weiterhin das Netzwerk, versuchen einen Konsens zu erreichen, unterzeichnen Validierungen und so weiter. Aber sie melden Transaktionen erst dann als bestätigt, wenn sie dieses interne Tor passieren. Um das Gate zu passieren, muss ein Hauptbuch über ausreichende Validierungen aus vertrauenswürdigen Quellen verfügen. Sobald ein Ledger diese Schwelle erreicht, wird das Gate bis knapp hinter dieses Ledger vorgerückt und alles bis zu diesem neuen Punkt gilt als vollständig validiert.

Alles nach dem Tor ist im Fluss, vorbehaltlich des Konsenses mit anderen Validierern. Alles hinter dem Tor ist für immer verpflichtet. Die überwältigende Mehrheit der Validierer hat sich dazu verpflichtet.

Wenn Sie bei einem Split auf der Minderheitsseite stehen (oder bei einem schlechten Split sogar auf der leichten Mehrheitsseite), passieren keine Transaktionen das Tor. Das Netzwerk wird unbrauchbar sein, aber niemand wird sich auf eine Transaktion verlassen, die rückgängig gemacht wird, wenn eine Aufteilung aufgelöst wird.

Als Gegenleistung für die Immunität gegen diesen Angriff und als Gegenleistung für die schnellen Bestätigungen von Ripple, ohne dass ein Arbeitsnachweis erforderlich ist, wird ein Preis gezahlt. Man kann sich Situationen vorstellen, in denen Transaktionen das Gate möglicherweise nicht passieren, obwohl es keine Netzwerkaufteilung gibt. Wenn zum Beispiel eine große Anzahl von Validierern plötzlich alle gleichzeitig aufhören zu validieren, könnten Sie denken, dass Sie von ihnen getrennt sind, und es könnte ein manueller Eingriff erforderlich sein, damit alle Transaktionen das Gate passieren können.

Aber da es sehr einfach ist, ein Knoten zu werden (benötigt nur eine IP und einen Computer), wäre eine große Einheit mit genügend Interesse nicht bereit, diese Art von Angriffen durchzuführen, indem sie sich eine Zeit lang als ehrlich tarnt (um Vertrauen zu gewinnen) und dann mit diesen doppelten Ausgaben angreifen? Auch hier braucht es nur IPs, keine Proof-of-Works.
@LucaMatteis Nein, aus zwei Gründen. Erstens reichen IPs nicht aus. Sie müssen die Leute tatsächlich dazu bringen, Ihnen zu vertrauen, und Absprachen sind das einzige, was sie bei der Auswahl vertrauenswürdiger Endpunkte vermeiden möchten. Zweitens können Sie nicht doppelt ausgeben. Sie können nur den Konsens brechen. Sobald sich das Tor bewegt, ist alles dahinter für immer verpflichtet. Sie können nur verhindern, dass sich das Tor bewegt.
Wenn Sie die Mehrheit sind, was spielt es für eine Rolle? Sie können das Hauptbuch kontrollieren und so viel ausgeben, wie Sie wollen. Der Kunde, gegen den Sie doppelt ausgeben, wird es bemerken, weil seine Transaktion verschwindet. Aber für den Rest des Netzwerks sind Ihre Knoten so vertrauenswürdig wie zuvor. Außerdem müssen Sie bei Ripple davon ausgehen, dass gutes Verhalten in der Vergangenheit zukünftiges gutes Verhalten impliziert, was eine unzuverlässige Annahme ist.
@LucaMatteis Du kannst nicht doppelt ausgeben. Sie können nichts vor dem Gate ändern und bis eine Transaktion hinter dem Gate ist, wird sich niemand auf ihre Ergebnisse verlassen. Ich bin mir nicht sicher, was Sie mit "Kunde, gegen den Sie doppelt ausgeben" meinen. (Und auf jeden Fall erfordert jedes bekannte Währungssystem diese Annahme. Woher wissen Sie, dass eine Demokratie die Gesetze nicht auf eine Weise ändert, die jeden Wert zerstört, den Sie besitzen?)
Wem gehört dieses Tor? Sie sagen, dass alle Transaktionen von diesem zentralen Tor genehmigt werden müssen, um einen Konsens zu erzielen?
@LucaMatteis Jeder Server hat sein eigenes Gate. Lesen Sie den zweiten Absatz meiner Antwort.
Aber mein Punkt ist: Was ist, wenn die Mehrheit der Server unehrlich ist? Dann könnten sie schlimme Dinge tun, oder?
@LucaMatteis Für sich selbst, sicher. Aber wen kümmert es, wenn unehrliche Menschen sich selbst schlechte Dinge antun? Für alle anderen können die bösen Jungs ihr Tor nicht rückwärts gehen lassen, also gibt es keine doppelten Ausgaben. Sie können jedoch verhindern, dass das Tor vorrückt. Es ist also ein DoS-Angriff möglich.
Aber könnten sich die Unehrlichen nicht ehrlich verhalten und andere würden denken, sie seien genau wie andere normale ehrliche Diener. Aber hinter den Kulissen würden sie bestimmten Personen schlimme Dinge antun (wie einige Transaktionen ungültig machen oder etwas anderes). Wäre das möglich?
@LucaMatteis Nein. Vorschläge und Validierungen werden immer signiert und geflutet. Sie konnten nicht davonkommen, zwei verschiedene Versionen zu senden. Server bewegen ihr Gate basierend auf einer Supermajority, und Sie können nicht zwei verschiedene Supermajorities erstellen. (Du kannst keine erstellen, wenn du genug Vertrauen kontrollierst, aber dann wirst du dieses Vertrauen schnell verlieren.)