Hacker knacken Bitcoin-Adresse – und demonstrieren damit, wie extrem sicher Bitcoi …
Der Hacker- und Lightning-Entwickler John Cantrell hat eine Bitcoin-Adresse mit einem Bitcoin geknackt. Befürchtungen, dass Bitcoins damit unsicher sind, sind unnötig. Ganz im Gegenteil. Weil Cantrell eine entscheidende Ahnung hatte.
Es begann damit, dass John Cantrell an einem Wettbewerb teilnahm, den Alistair Milne auf Twitter gepostet hatte:
Die privaten Schlüssel für die 1BTC-Brieftasche unter: 3HX5tttedDehKWTTGpxaPAbo157fnjn89s wurden in den nächsten 30 Tagen aus einem 12-Wort-Mnemonensamen generiert
wird die Wörter (oder einen Hinweis auf ein Wort) auf meinen verschiedenen Social-Media-Seiten veröffentlichen
– Alistair Milne (@alistairmilne) 28. Mai 2020 [19659007] Milne hat eine -Adresse mit veröffentlicht ein Bitcoin drauf. Er sagte, er habe die Adresse mit einer 12-Wörter-Mnemonik generiert und angekündigt, die Wörter in den nächsten 30 Tagen zu veröffentlichen.
Cantrell ist am besten als Lightning-Entwickler bekannt. Zum Beispiel entwickelte er Juggernaut ein Tool zum Senden verschlüsselter Nachrichten im Lightning-Netzwerk. Der Lightning-Knoten wird zum Chat-Server. Als er von der Konkurrenz hörte, beschloss er, die Bitcoin mitzunehmen. Also fing er an zu rechnen.
In einem Blogpost erzählt er, wie er es geschafft hat, die Adresse zu knacken.
Mathematik- und Grafikkarten
Wenn die Mnemonik mit BIP39 erstellt wurde, besteht sie aus zwölf von 2048 möglichen Wörtern. „Das heißt, wenn wir alle möglichen Phrasen durchlaufen würden, müssten wir von 0 bis 2 ^ 128−1 zählen. Jede Zahl wäre eine einzelne Mnemonik, die in eine Adresse übersetzt würde. "Das" ^ "steht für" hoch ". Die Zahl 2 ^ 128-1 ist verwirrend, weil ein Nicht-Mathematiker kaum sagen kann, ob es groß, sehr groß oder extrem groß ist.
Man könnte an das Arabische denken Legende vom Schachbrett Ein König erfüllt den Wunsch eines Dieners, der möchte, dass sein König ein Reiskorn auf ein Schachbrettfeld legt und dann die Anzahl der Körner in jedem Feld verdoppelt. Ein Schachbrett hat also 64 Felder Die Formel für die Anzahl der Reiskörner, die bis zum letzten Quadrat gehen, wäre 2 ^ 64-1. Das sind mehr als 9 Billionen Reiskörner. Die Gesamtmenge auf dem Schachbrett würde 18 Billionen Reiskörner betragen, was laut Wikipedia ist mehr als tausendmal so viel Reis wie die gesamte Erde, die 2017 produziert wurde.
Und diese Zahl ist nur ein Bruchteil der Anzahl der Möglichkeiten für einen Samen. Mit jeder weiteren Zahl verdoppelt sich die Gesamtzahl ungefähr. 2 ^ 128 wäre diese Nummer:
340.282.366.920.938.463.463.374.607.431.768.211.456
If Ich habe richtig gezählt, das wären 340 Billionen. Ich habe keine Ahnung, ob es ein echtes Äquivalent gibt. Auf jeden Fall ist es für die Computer, die wir heute verwenden, unendlich zu viel.
Aber zum Glück für Cantrell hat Milne im Laufe der Zeit immer mehr Wörter in der Samenphrase veröffentlicht. "Jedes Wort, das wir kennen, reduziert die Möglichkeiten, die wir prüfen müssen, um 2 ^ 11 oder 2048". Die Schwelle, an der es für Cantrell realistisch war, betrug acht Wörter. „Mit acht Wörtern wie 8 * 11 oder 88 Bit der 128 Bit, die wir herausfinden wollen. Das heißt, es gibt nur 2 ^ (128-88) oder 2 ^ 40 mögliche Mnemoniken, die wir überprüfen müssen. "Das sind ungefähr 1,1 Billionen Optionen. Wir haben also eine Zahl, die deutlich kleiner ist als die am Ende des berühmten Schachbretts.
Also versuchte Cantrell es. Er schrieb ein Skript in Rust, um die Hashes und Ellipsentrainer zu berechnen Kurven beteiligt. Aber mit der CPU seines Laptops konnte er nur ungefähr 1.250 Seeds pro Sekunde berechnen, was 25 Jahre gedauert hätte, um alle Kombinationen durchzugehen. Also mietete er einen CPU-Server mit 32 Kernen. Das brachte ihn auf 8.000 Samen pro Sekunde. Aber das war noch lange nicht genug.
Der nächste Schritt war der Wechsel von der CPU zu einer GPU. CPUs, die Kernrechner aller Computer, sind nicht sehr schnell, aber sie können alles. GPUs Cantrell ist viel schneller, kann aber nur für Aufgaben verwendet werden, die parallelisiert werden können – beispielsweise für die Verarbeitung von Seeds. So lernte Cantrell das Programmieren für GPUs. Nachdem er ein Skript dafür geschrieben hatte, konnte er rechnen 12 Milliarden Samen pro Tag mit einer nVidia 2080Ti-Grafikkarte. Das war g gut, aber es würde immer noch 83 Tage dauern. Er hat eine Bibliothek umgeschrieben, um die Berechnung zu beschleunigen, aber das hat den Zeitraum nur um drei Tage verkürzt. Um den Schlüssel innerhalb von 24 Stunden zu finden, musste er mit 80 Grafikkarten arbeiten.
Er konnte diese GPU-Farm über einen digitalen Marktplatz mieten. Er führte sein Programm aus und wartete gespannt, ob es funktionierte und ob seine Berechnungen korrekt waren. Und ja, zumindest grob. Nach ungefähr 30 Stunden fand er den Schlüssel zu der genannten Adresse. Er überwies das Bitcoin und fügte eine hohe Transaktionsgebühr hinzu, um sicherzustellen, dass niemand sonst, der den Schlüssel gefunden haben könnte, ihn überbot.
Auswirkungen auf die Sicherheit
Eine oberflächliche Lektüre des Hacks könnte Sie denken lassen, Bitcoin wäre nicht sicher. Tatsächlich zeigt der Fall, dass ein Samen unglaublich sicher ist. Wenn es so viel Mühe kostet, den Samen zu vervollständigen, wenn Sie acht Wörter haben, wird es fast unmöglich, einen Samen in einem angemessenen Zeitraum und zu angemessenen Kosten zu knacken, selbst wenn Sie 5 oder 6 Wörter haben. Für einen vollständigen Samen befinden Sie sich in einem Zahlenbereich, in dem Sie wahrscheinlich Sterne verbrennen müssten.
Cantrell hatte vor allem einen entscheidenden Vorteil: Er wusste, um welche Adresse es sich handelte. Daher konnte er sein Skript überprüfen lassen, um festzustellen, ob diese Adresse von einem Startwert abgeleitet wurde. Aber was ist, wenn Sie die Adresse nicht kennen? In diesem Fall müssen Sie einen Bitcoin-Knoten fragen, ob die Adressen gutgeschrieben sind, und zwar für jede der eine Billion Adressen. Die API des Bitcoin-Knotens würde eine solche Last nicht durchlaufen. Sie könnten möglicherweise die Blockchain in eine andere Datenbank übertragen und dann danach fragen. Dies würde aber auch enorme Ressourcen erfordern, da sich die Datenbank auf demselben System wie die GPU befinden müsste. Selbst eine Abfrage in einem lokalen Netzwerk würde die Leistung wahrscheinlich ernsthaft beeinträchtigen.
Dies hat nun einige interessante Konsequenzen für die Speicherung von Bitcoins:
1. Ist es nicht so dumm, 4 oder 5 oder vielleicht sogar 6 Wörter in der Cloud zu speichern? Solange die Adresse nicht bekannt ist, weiß ein Hacker nicht, ob es sich lohnt, tagelang 100 Grafikkarten zu betreiben. Daraus könnten neue Sicherheitskonzepte generiert werden, beispielsweise indem die Speicherung von 6 Wörtern in der Cloud dupliziert und der Rest gespeichert oder in verschlüsselter Form gespeichert wird. Eine solche Hybridmethode könnte Brainwallets wieder attraktiv machen.
2. Wenn Sie einen Startwert haben und einige Wörter nicht lesen können, sich aber mindestens acht Wörter sicher sind: Sie können die Skripte verwenden, die Cantrell am Ende seines Beitrags verknüpft. Wenn Sie 80 GPUs nicht koordinieren oder die Skripte 80 Tage lang nicht auf Ihrem System ausführen können – je nach Inhalt der Brieftasche – kann es sich lohnen, einen Experten zu beauftragen.
Prima dieser Inhalt kam von
[ENGLISH]