Forschung . Überblick
Schwache Zufälligkeit bei Krypto-Wallets
In den letzten zehn Jahren der Wallet-Software taucht immer wieder derselbe Fehler auf: Die Kryptografie war zwar solide, die ihr zugrunde liegende Zufallsgenerierung jedoch nicht. Dies ist ein Überblick über diese Art von Fehlern – und darüber, warum Vorhersehbarkeit für die Besitzer einen Weg zur Wiederherstellung darstellt.
Die meisten katastrophalen Verluste von Wallets sind nicht auf eine geknackte Verschlüsselung zurückzuführen – sondern auf eine fehlerhafte Zufallsgenerierung. Die Sicherheit eines Wallets beruht vollständig auf unvorhersehbaren Zahlen, und wenn sich diese Zahlen als vorhersehbar erweisen, bricht das gesamte System zusammen, ganz gleich, wie stark die Algorithmen auch sein mögen. Diese Seite fasst die wichtigsten Fälle zusammen, die wir untersuchen – zu jedem gibt es eine eigene detaillierte Seite – und erläutert das gemeinsame Muster sowie dessen Bedeutung für die Wiederherstellung.
Zufälligkeit ist die Grundlage einer Wallet
Jede Wallet beginnt mit einem Geheimnis: einem privaten Schlüssel oder einem Seed, der idealerweise aus einem Raum ausgewählt wird, der so riesig ist, dass niemand ihn jemals erraten oder abtasten könnte. Diese Unvorhersehbarkeit beruht vollständig auf Zufälligkeit. Wenn die zur Erstellung Ihrer Schlüssel verwendete Zufälligkeit wirklich unvorhersehbar war, ist Ihre Wallet selbst gegen unbegrenzte Rechenleistung sicher. Wäre dies nicht der Fall – wenn die „Zufallszahlen“ aus einer vorhersehbaren Quelle wie einer Uhr oder einem fehlerhaften Generator stammten –, würde sich der riesige Raum auf einen kleinen, durchsuchbaren Raum verkleinern, und selbst die stärkste Verschlüsselung der Welt könnte sie nicht mehr schützen.
Zwei Fälle, in denen der Zufallscharakter versagt
Eine schwache Zufälligkeit schadet einer Wallet an zwei verschiedenen Stellen. Der erste ist die Schlüsselgenerierung: Wenn der Seed oder der private Schlüssel aus vorhersehbarer Entropie erzeugt wurde, kann ein Angreifer den exakten Schlüssel nachbilden. Der zweite ist die Signierung: Jede Transaktionssignatur benötigt einen neuen Zufallswert (den ECDSA-Nonce), und wenn dieser Wert vorhersehbar ist oder sich wiederholt, lässt sich der private Schlüssel direkt aus den öffentlichen Transaktionen in der Blockchain berechnen. Beides ist fatal, und für jede Kategorie gibt es verschiedene Fälle aus der Praxis.
Randstorm – vorhersehbare Schlüssel für Browser-Wallets
Randstorm betraf Millionen von Wallets, die zwischen etwa 2011 und 2015 im Browser mithilfe der BitcoinJS-Bibliothek erstellt wurden, deren „SecureRandom“-Routine weit weniger Entropie sammelte als angenommen. Die Folge war, dass Schlüssel aus einem stark reduzierten Raum generiert wurden. Hierbei handelt es sich um einen Fehler bei der Schlüsselgenerierung, von dem eine große Anzahl früherer Wallets betroffen ist. Einzelheiten finden Sie in unserer Randstorm-Studie.
MilkSad – ein Samen aus der Uhr oder noch schlimmer
MilkSad (CVE-2023-39910) betraf Wallets, deren Seed über den Befehl „bx seed“ von libbitcoin-explorer generiert wurde, der einen Mersenne Twister mit der 32-Bit-Systemzeit als Seed verwendete. Damit bleiben nur etwa vier Milliarden mögliche Seeds übrig – und in der Regel sogar weitaus weniger, da der Erstellungszeitpunkt oft bekannt ist. Ein weiterer Fehler bei der Schlüsselgenerierung in einem weit verbreiteten Tool. Lesen Sie dazu unsere MilkSad-Studie.
Android SecureRandom – Schlüssel werden beim Signieren preisgegeben
Die SecureRandom-Sicherheitslücke in Android aus dem Jahr 2013 ist ein classic Fall classic . Der Zufallsgenerator von Android konnte wiederholte Werte zurückgeben, was dazu führte, dass Bitcoin-Wallets denselben ECDSA-Nonce für mehrere Signaturen wiederverwendeten – wodurch jeder den privaten Schlüssel anhand von zwei öffentlichen Transaktionen berechnen konnte. Die Gelder wurden direkt aus der Blockchain abgezogen. Lesen Sie dazu unsere Untersuchung zu Android SecureRandom.
Trust Wallet – eine moderne Neuauflage
Schwache Zufälligkeit ist nicht nur ein altbekanntes Problem. Im Jahr 2023 stellte sich heraus, dass die Browser-Erweiterung „Trust Wallet“ Mnemonics mithilfe eines vorhersehbaren Pseudozufallsgenerators erzeugte, sodass die in dem betroffenen Fenster erstellten Schlüssel aufgezählt werden konnten – derselbe Fehler bei der Schlüsselerzeugung wie bei Randstorm und MilkSad, ein Jahrzehnt später. Dies macht deutlich, dass diese Art von Fehler immer dann wieder auftritt, wenn ein Entwickler auf eine bequeme, aber nicht kryptografische Zufallsquelle zurückgreift.
Der PRNG-Aspekt beim Vorverkauf 2014
Unsere eigenen Untersuchungen erweitern dieses Muster auf den Ethereum-Presale-Generator von 2014, der für Teile seines Prozesses auf die Funktion `Math.random()` des Browsers zurückgriff. In Firefox könnte ein spezifischer Entropieeinbruch die unbekannte Zufälligkeit auf einen begrenzten Zeitstempel reduzieren – ein potenzieller Weg zur Wiederherstellung für eine Untergruppe dieser sehr wertvollen Wallets. Siehe unsere Untersuchung zu PRNGs im Presale.
Das Prinzip: solide Kryptografie, vorhersehbarer Startwert
In jedem einzelnen dieser Fälle war die Kryptografie an sich einwandfrei. AES, ECDSA und die Hash-Verfahren waren nie die Schwachstelle; die Schwachstelle war immer die Eingabe – ein Zufallswert, der sich als vorhersehbar erwies, weil er von einer Uhr, einem fehlerhaften Plattformgenerator, einer Browser-Eigenart oder einer nicht-kryptografischen Funktion stammte, die an einer Stelle verwendet wurde, an der eigentlich eine kryptografische erforderlich gewesen wäre. Das Erkennen dieses Musters ermöglicht es uns, eine „sichere“ Wallet zu betrachten und die richtige Frage zu stellen: nicht „Ist die Verschlüsselung stark?“, sondern „Woher stammt die Zufälligkeit tatsächlich?“
Warum Vorhersehbarkeit ein zweischneidiges Schwert ist
Hier kommt der für einen Besitzer entscheidende Punkt. Genau jene Vorhersehbarkeit, die es einem Angreifer ermöglicht, einen Schlüssel neu zu generieren oder aus einer Signatur abzuleiten, ist es auch, die es uns ermöglicht, eine Wallet für ihren rechtmäßigen Besitzer wiederherzustellen. Wenn Ihre Wallet mit schwacher Zufälligkeit erstellt wurde und Sie den Zugriff darauf verloren haben, ist der begrenzte Suchraum, der sie gefährdet, der Grund dafür, dass sie rekonstruiert werden kann – indem der abzählbare Seed-Raum durchforstet wird oder indem der Schlüssel aus Ihren eigenen öffentlichen Transaktionen abgeleitet wird. Wir tun dies ausschließlich im Rahmen der Wiederherstellung für Eigentümer – für Wallets, deren Besitz ein Nutzer nachweisen kann –, um Gelder zurückzugeben, die er andernfalls verloren hätte.
Wie Sie feststellen können, ob Sie möglicherweise betroffen sind
Sie könnten gefährdet sein, wenn Ihre Wallet: im Zeitraum 2011–2015 in einem Browser erstellt wurde (Randstorm); mit dem „bx“-Seed von libbitcoin oder einem darauf aufbauenden Tool generiert wurde (MilkSad); in einer frühen Android-Bitcoin-Wallet um das Jahr 2013 herum erstellt wurde (SecureRandom); im betroffenen Fenster der Trust-Wallet-Erweiterung erstellt wurde; oder eine Ethereum-Presale-Wallet aus dem Jahr 2014 ist. Das Beunruhigende daran ist, dass die Wallet völlig normal aussieht – die Schwachstelle ist unsichtbar, bis jemand den Adressraum durchforstet. Wenn eine dieser Beschreibungen auf eine Ihrer Wallets zutrifft, in der sich noch Guthaben befindet, betrachten Sie diese als gefährdet und transferieren Sie das Guthaben; falls Sie den Zugriff verloren haben, könnte dieselbe Schwachstelle der Weg zurück sein.
So sieht gute Zufälligkeit aus
Die Sicherheitsempfehlung ist eindeutig: Schlüssel und Seeds müssen aus einer geeigneten kryptografischen Zufallsquelle stammen, und bei der Signierung muss jedes Mal ein eindeutiger, unvorhersehbarer Nonce verwendet werden (moderne Wallets verwenden deterministische Nonces gemäß RFC 6979, um das Risiko einer Wiederverwendung vollständig auszuschließen). Generieren Sie Seeds mit vertrauenswürdiger, aktueller Software oder einer seriösen Hardware-Wallet; seien Sie vorsichtig bei alten browserbasierten Generatoren und nicht mehr gepflegten Tools; und falls eine Wallet mit einem der oben genannten Mittel erstellt wurde, wechseln Sie zu einer neu generierten. Gute Zufälligkeit ist unsichtbar, wenn sie funktioniert, und katastrophal, wenn sie versagt – weshalb sie diese große Aufmerksamkeit verdient.
Unsere Forschung
Die Wiederherstellung von Kryptowährungen mit schwacher Zufälligkeit ist ein zentraler Schwerpunkt der Arbeit von KeychainX, da ein großer Teil der „verlorenen“ frühen Kryptowährungen in Wirklichkeit Kryptowährungen mit schwacher Zufälligkeit sind, die darauf warten, für ihre Besitzer rekonstruiert zu werden. Jeder der oben genannten Fälle hat eine eigene detaillierte Seite, und diese Übersicht fasst sie als eine Familie zusammen. Wir aktualisieren und pflegen diese Übersicht, sobald neue Fälle bekannt werden – das Phänomen wird nicht verschwinden, da die Versuchung, auf bequeme Zufallsgeneratoren zurückzugreifen, mit jeder neuen Generation von Wallet-Software wiederkehrt.
Häufig gestellte Fragen
Was versteht man unter „schwacher Zufälligkeit“ bei einer Krypto-Wallet?
Dies ist der Fall, wenn die Zufallszahlen, die zur Erstellung von Schlüsseln oder zur Signierung von Transaktionen verwendet werden, aus einer vorhersehbaren Quelle stammen – einer Uhr, einem fehlerhaften Generator oder einer nicht-kryptografischen Funktion –, wodurch der riesige Schlüsselraum auf einen kleinen, durchsuchbaren Raum reduziert wird. Die Verschlüsselung selbst bleibt sicher; die Schwachstelle liegt in der Eingabe.
Welche Schwachstellen gehören zu dieser Familie?
Randstorm (Browser-Wallets 2011–2015), MilkSad (libbitcoin bx Seed, CVE-2023-39910), die SecureRandom-Sicherheitslücke bei Android aus dem Jahr 2013, das Problem mit der Trust-Wallet-Erweiterung aus dem Jahr 2023 und die PRNG-Sicherheitslücke beim Ethereum-Vorverkauf aus dem Jahr 2014.
Bedeutet „schwache Zufälligkeit“, dass mein Geld weg ist?
Das bedeutet, dass die Wallet gefährdet ist – potenziell kann jeder den Schlüssel neu generieren. Für den rechtmäßigen Eigentümer bedeutet dies jedoch auch, dass eine Wiederherstellung oft möglich ist, denn gerade der begrenzte Suchraum, der die Wallet gefährdet, ermöglicht es, sie zu rekonstruieren.
Woran erkenne ich, ob meine Wallet schwache Zufallszahlen verwendet hat?
Prüfen Sie, wie und wann sie erstellt wurde: Browser-Wallets aus den Jahren 2011–2015, von bx seed generierte Seeds, frühe Android-Wallets, das betroffene Trust-Wallet-Fenster oder Wallets aus dem Vorverkauf von 2014 stellen die Hauptrisikoprofile dar. Die Wallet selbst sieht normal aus, daher ist die Entstehungsgeschichte der entscheidende Hinweis.
Kann man eine Wallet wiederherstellen, die von schwacher Zufälligkeit betroffen ist?
Meistens für den Eigentümer. Mit Angaben dazu, wie und wann die Wallet erstellt wurde (sowie einer bekannten Adresse), durchsuchen wir den reduzierten Seed-Raum oder leiten den Schlüssel aus Ihren öffentlichen Transaktionen ab. Erfolgshonorar, keine Vorauszahlung.
Eine Wallet mit schwacher Zufälligkeit?
Wenn Ihr Wallet einem dieser Profile entspricht und Sie den Zugriff darauf verloren haben, ist oft genau diese Schwachstelle der Weg zurück ins Wallet. Teilen Sie uns mit, wie und wann der Zugriff erlangt wurde – ehrliche Einschätzung innerhalb von 24 Stunden.