Umschreiben der gesamten Blockchain: Ist es möglich, Blockzeitstempel einer privat geminten Kette zu fälschen?

Laut fork.lol und Pieters bitcoin.sipa würde es derzeit ~200 Tage dauern, bis ein Angreifer mit 100 % der aktuellen Hashpower die gesamte BTC-Blockchain umgeschrieben hätte. Meine Frage bezieht sich darauf, wie ein solcher Angriff tatsächlich ablaufen könnte:

Nehmen wir an, dass 100 % der Hashpower in den Händen eines Angreifers ist und die BTC-Kette aufgehört hat, sich weiterzuentwickeln. Der Angreifer richtet 100 % der Hashpower auf das Mining auf dem Genesis-Block aus, sodass er die ersten 2016-Blöcke SUPER schnell generiert, und dann erhöht sich die Schwierigkeit um den Faktor 4. Dies wird fortgesetzt, bis die Schwierigkeit das aktuelle Niveau erreicht, und nach ~200 Tagen wird die Kette des Angreifers eine höhere kumulative Schwierigkeit haben, obwohl sie eine viel geringere Blockhöhe hat.

Aber ich denke nicht, dass das sehr interessant ist, der Rest des Netzwerks wird erkennen, dass es ein Problem gibt, lange bevor 200 Tage vergangen sind, und wahrscheinlich eine Lösung codieren, damit die Dinge reibungslos laufen.

Wie ist also ein verdeckterer Angriff möglich? Könnte ein Angreifer mit einer bescheidenen Menge an Hashpower eine private Kette abbauen und die Zeitstempel fälschen, um die Schwierigkeit niedriger zu halten, als sie sein sollte? Ermöglichen Sie also die Erstellung einer „Replik“-Kette mit einigen geänderten TXs zum Vorteil der Angreifer?

Dies könnte erfolgen, während die ehrliche Kette noch in Betrieb ist, und der Angreifer würde die ehrliche Kette langsam einholen. Je weiter der Angreifer es schafft, desto mehr Hash-Power muss er dem Angriff widmen, um allen ehrlichen Minern davonzulaufen. Aber wenn eine bescheidene Menge an Hashpower einen guten Teil der frühen Geschichte privat umschreiben kann, scheint es, als wäre das aktuelle 200-Tage-Fenster tatsächlich eine leichte Überschätzung.

Hinweis: In diesem Szenario würde die Gesamtzeit für die Durchführung des Angriffs mehr als 200 Tage betragen, aber ein Teil dieser Zeit würde für privates Mining mit einem Teil der Hash-Leistung aufgewendet, die vom Netzwerk „nicht übersehen“ wird. Der Rest des Netzwerks kann also möglicherweise nur bemerken, dass ein Angriff innerhalb des 200-Tage-Fensters stattfindet.

Ich sehe dies nicht als wirkliche Bedrohung, ich bin mehr daran interessiert zu verstehen, was tatsächlich möglich ist, insbesondere im Hinblick auf das Spoofing von Zeitstempeln auf einer privaten Kette, um die Schwierigkeitsziele niedrig zu halten.

Deine genaue Frage ist mir etwas unklar. Ja, ein Angreifer kann eine Private Chain mit einem niedrigeren Schwierigkeitsgrad minen. Aber dann würde es niemand akzeptieren, weil es einen niedrigeren Schwierigkeitsgrad hat.
Zur Klarstellung: Funktioniert das Spoofing von Zeitstempeln auf diese Weise, und wenn ja, um wie viel können sie dadurch den „Arbeitsnachweis“ verringern, der zum Neuschreiben der gesamten Kette erforderlich ist? (vorausgesetzt, ein Angreifer hat Zugriff auf einen Großteil der Hashpower)
Warten auf die Antwort von Pieter Wuille .......
Ich denke, Sie sind vielleicht verwirrt darüber, wie Bitcoin die „beste“ Kette berechnet. Die „beste“ Kette enthält die meiste Arbeit und ist nicht unbedingt die längste. Wenn Sie mit dem Zeitstempel herumspielen, um Ihren Schwierigkeitsgrad zu verringern, haben Sie Ihre Kette effektiv "kürzer" gemacht. Siehe: bitcoin.stackexchange.com/questions/29742/…
@kaykurokawa Ich verstehe den Unterschied zwischen "Blockhöhe" und "die meiste Arbeit". Ich glaube, Sie haben meine Frage leicht missverstanden. Um es anders zu formulieren: Wenn ein Angreifer mit einem modernen ASIC die gesamte Kette neu schreiben wollte, aber bei derselben Blockhöhe/kumulativen Schwierigkeit wie die aktuelle Kette landen würde, könnte Zeitstempel-Spoofing einer priv-geminten Kette es ihm ermöglichen, dies schnell zu tun? Z.B. Block 150k in der ehrlichen Kette hat einen Schwierigkeitsgrad von 52, Block 150k in der Angriffskette hat ebenfalls einen Schwierigkeitsgrad von 52, obwohl der Angreifer eine Hashpower von „1000 Schwierigkeitsgraden“ haben sollte. Die Zahlen sind offensichtlich erfunden, sollten aber den Punkt vermitteln
Ich glaube, das ist der Grund, warum wir Checkpoints im Quellcode haben, damit ein Benutzer, der IBD durchführt, möglicherweise nicht leicht dazu verleitet wird, eine Alt-Chain mit der gleichen Menge an geleisteter Arbeit zu überprüfen, während sich der Blockverlauf noch in Low-Diff befand. Bei relativ höheren Diff-Blöcken ist dies kein Problem, da es nicht trivial ist, diese Blöcke zu fälschen

Antworten (1)

Ja, ein Angreifer könnte die Zeitstempel auf dem Block fälschen und einen verdeckten alternativen Verlauf erstellen. Dies macht jedoch bei diesem Angriff keinen großen Unterschied. Der Grund dafür ist, dass der Angreifer, wenn er sich entscheidet, Zeitstempel zu manipulieren, um die Schwierigkeit zu erhöhen, am Ende weniger Blöcke mit hohem Schwierigkeitsgrad produziert. Wenn sie sich dagegen dafür entscheiden, Zeitstempel zu manipulieren, um die Schwierigkeit zu verringern, werden sie am Ende mehr Blöcke mit niedrigem Schwierigkeitsgrad produzieren. In jedem Fall wird die kumulative Schwierigkeit in der gegnerischen Kette dieselbe sein (sowohl in Erwartung als auch aufgrund einer Chernoff-Grenze mit hoher Wahrscheinlichkeit, es sei denn, sie erhöhen die Schwierigkeit enorm).

Ich habe Zweifel an Ihrer Behauptung, dass das Netzwerk erkennen wird, dass es ein Problem gibt. Die Kette des Angreifers bleibt privat, bis er die aktuelle ehrliche Kette in kumulativer Schwierigkeit übertroffen hat. Während des verdeckten Bergbaus wissen die ehrlichen Parteien nicht, dass ein Angriff stattfindet (und die ehrliche Kette kann weiter wachsen, vorausgesetzt, es gibt eine ehrliche Macht, die nicht der Mehrheit entspricht). Der Angriff wird erst sichtbar, wenn der Angreifer die Kette aufdeckt, wenn die ehrlichen Parteien sofort darauf umschalten. An diesem Punkt kann der Angreifer einen großen Double-Spending-Angriff durchführen und weggehen, bevor die ehrlichen Parteien einen Patch anwenden.

Eine Sache, die der Angreifer beachten muss, ist, dass die aktuelle Blockchain manchmal mit Checkpoints versehen ist. Wenn ein Client also einen Checkpoint hat, kann der Angreifer die Kette nur bis zu diesem Checkpoint neu organisieren. Darüber hinaus müssen die Blockzeitstempel, insbesondere in der Nähe der Gegenwart, mit der aktuellen Zeit der Verifier-Computer übereinstimmen, da dies von einigen Clients zumindest ungefähr überprüft wird. Abgesehen davon könnte dieser Angriff funktionieren.