Forschung . Anfälligkeit
Die SecureRandom -Sicherheitslücke in Android aus dem Jahr 2013
Teil unserer Forschung zum Thema „schwache Zufälligkeit“: Siehe die Übersicht „Schwache Zufälligkeit in Krypto-Wallets“.
Im Jahr 2013 war der Zufallszahlengenerator von Android nicht so zufällig, wie er hätte sein sollen – und Bitcoin-Wallets, die sich darauf verließen, gaben ihre privaten Schlüssel über genau die Transaktionen preis, die sie signierten.
Dies ist ein wegweisendes Beispiel für einen Fehler in der Zufallsgenerierung auf Plattformebene mit direkten finanziellen Folgen. Im August 2013 führte eine Schwachstelle in der SecureRandom-Implementierung von Android dazu, dass Werte, die eigentlich als unvorhersehbar galten, doch vorhersehbar waren, wodurch Bitcoin-Wallets auf betroffenen Geräten ihre Schlüssel offenlegten. Auf dieser Seite wird dokumentiert, was genau passiert ist und warum dies für ältere Android-Wallets nach wie vor von Bedeutung ist.
Warum Signaturen Zufälligkeit benötigen
Jedes Mal, wenn eine Bitcoin-Wallet eine Zahlung tätigt, signiert sie die Transaktion mit ECDSA, und jede Signatur erfordert eine neue, unvorhersehbare Zufallszahl – den „Nonce“ oder k-Wert. Die Sicherheit von ECDSA hängt vollständig davon ab, dass diese Zahl für jede Signatur einzigartig und geheim ist. Wird derselbe k-Wert für zwei Signaturen wiederverwendet, ermöglicht es die Mathematik jedem, den privaten Schlüssel aus den beiden öffentlichen Signaturen zu berechnen. Dies ist eines der deutlichsten Beispiele für das Prinzip „kleiner Fehler, totaler Verlust“ in der Kryptografie.
Die SecureRandom-Sicherheitslücke
Android-Apps bezogen diese Zufallswerte aus der Systemfunktion „SecureRandom“. Im Jahr 2013 stellte sich heraus, dass die Android-Implementierung unter bestimmten Bedingungen nicht ordnungsgemäß initialisiert war – sie konnte vorhersehbare oder sich wiederholende Ergebnisse liefern. Für Bitcoin-Wallets bedeutete dies, dass sich der kritische k-Wert in Signaturen manchmal wiederholte. Zwei Transaktionen aus derselben Wallet, bei denen ein k-Wert wiederverwendet wurde, lieferten einem Beobachter alle notwendigen Informationen, um den privaten Schlüssel direkt aus der öffentlichen Blockchain abzuleiten.
Die Auswirkungen
Da Bitcoin-Transaktionen öffentlich einsehbar sind, konnten Angreifer die Blockchain nach den verräterischen wiederholten Nonces durchsuchen und die offengelegten Wallets plündern. Eine Reihe von Android-Bitcoin-Wallets war betroffen, und Gelder wurden gestohlen, bevor das Ökosystem reagieren konnte. In der offiziellen Stellungnahme wurden betroffene Nutzer aufgefordert, neue Schlüssel zu generieren und ihre Coins zu verschieben, und die Wallet-Apps veröffentlichten Korrekturen – doch jede Transaktion, die bereits mit einem wiederholten Nonce signiert worden war, hatte ihren Schlüssel dauerhaft offengelegt.
Ein betroffenes Wallet erkennen
Der Fingerabdruck befindet sich in der Blockchain: zwei oder mehr Signaturen von derselben Adresse, die denselben Nonce-Wert aufweisen. Ein classic ist eine alte Android-Bitcoin-Wallet aus dem Jahr 2013, mit der mehrere Transaktionen signiert wurden. Selbst eine Wallet, die offensichtlich nie leergeräumt wurde, könnte eine anfällige Transaktion signiert haben, und falls sich darin noch Guthaben befindet, könnte dieses für jeden zugänglich sein, der das Muster erkennt – weshalb eine Überprüfung sinnvoll ist, anstatt einfach von Sicherheit auszugehen.
Was das für die Erholung bedeutet
Für einen Besitzer hat dieser Fehler Vor- und Nachteile. Wenn Ihre eigene alte Android-Wallet ihren Schlüssel durch einen wiederholten Nonce preisgegeben hat, lässt sich der private Schlüssel aus Ihren eigenen öffentlichen Transaktionen ableiten – was bei Nachweis des Eigentums ein legitimer Weg ist, um Gelder wiederzuerlangen, auf die Sie sonst keinen Zugriff mehr haben. Wir betrachten dies streng genommen als Wiederherstellung für den Besitzer: die Rekonstruktion eines Schlüssels anhand der Signaturen einer Wallet, die nachweislich dem Kunden gehört, um Gelder zu transferieren, auf die er keinen Zugriff mehr hat.
Die allgemeine Lehre
Der „Android SecureRandom“-Vorfall ist ein klassisches Beispiel dafür, dass eine Wallet nur so sicher ist wie die ihr zugrunde liegende Zufallsgenerierung. Er gehört zur gleichen Kategorie wie Randstorm und MilkSad: Solide Kryptografie, die durch eine vorhersehbare oder fehlerhafte Zufallsquelle untergraben wird. Der Unterschied besteht hier darin, dass durch den Fehler Schlüssel bei der Signierung und nicht bei der Schlüsselgenerierung offengelegt wurden – doch das Prinzip und die Wiederherstellungslogik für die Besitzer sind dieselben.
Wenn Sie eine Android-Wallet aus dem Jahr 2013 hätten
Wenn Sie um das Jahr 2013 herum Bitcoin in einer Android-Wallet aufbewahrt haben und noch über Teile des Schlüsselmaterials oder der Transaktionshistorie verfügen, sollten Sie davon ausgehen, dass die Wallet möglicherweise kompromittiert wurde: Alle verbleibenden Guthaben sollten in eine Wallet übertragen werden, die auf solider Zufallsgenerierung basiert. Falls Sie den Zugriff auf eine solche Wallet verloren haben, könnte die Nonce-Sicherheitslücke für Sie als Eigentümer tatsächlich den Weg zurück in die Wallet ebnen – es lohnt sich, dies zu prüfen, bevor Sie die Guthaben abschreiben.
Warum es auch Jahre später noch von Bedeutung ist
Es ist verlockend, eine Sicherheitslücke aus dem Jahr 2013 als längst vergangene Geschichte abzutun, doch die Beständigkeit von Bitcoin ändert dies. Jede jemals gesendete anfällige Signatur befindet sich nach wie vor unverändert in der Blockchain; daher ist ein Schlüssel, der vor einem Jahrzehnt durch einen sich wiederholenden Nonce offengelegt wurde, für immer offengelegt – die Blockchain vergisst nicht. Das bedeutet, dass alte Android-Wallets aus dieser Zeit auch heute noch ein aktuelles Thema sind: Alle, die noch ein Guthaben enthalten, sind für jeden zugänglich, der nach dem Muster sucht, und alle, deren Besitzer den Zugriff verloren hat, können potenziell über genau dieselbe Schwachstelle wiederhergestellt werden. Eine Schwachstelle in permanenten, öffentlichen Daten verjährt nie vollständig, und genau deshalb gehört sie in einen Verweis wie diesen und nicht in eine Fußnote zu 2013.
Unsere Dokumentation
KeychainX dokumentiert dies im Rahmen unserer Forschung zum Thema „schwache Zufälligkeit“ gemeinsam mit Randstorm und MilkSad. Die ursprünglichen Sicherheitshinweise der Bitcoin-Community aus dem Jahr 2013 enthalten alle relevanten Informationen; unser Schwerpunkt liegt auf der Wiederherstellung betroffener Wallets für ihre rechtmäßigen Besitzer. Wenn Sie eine alte Android-Bitcoin-Wallet besitzen, auf die Sie keinen Zugriff mehr haben, lohnt es sich, einen Blick darauf zu werfen.
Häufig gestellte Fragen
Wie kann ich feststellen, ob bei meinen Signaturen ein Nonce wiederverwendet wurde?
In der Blockchain zeigt sich dies als zwei Signaturen von einer Adresse, die denselben Nonce-Wert aufweisen. Im Rahmen einer Überprüfung können wir den Transaktionsverlauf einer Adresse auf dieses Muster hin untersuchen.
Was war die „SecureRandom“-Sicherheitslücke in Android aus dem Jahr 2013?
Eine Schwachstelle in der SecureRandom-Funktion von Android, die vorhersehbare oder sich wiederholende Ergebnisse lieferte. Bitcoin-Wallets, die diese Funktion nutzten, konnten den ECDSA-Nonce über mehrere Signaturen hinweg wiederverwenden, wodurch jeder den privaten Schlüssel aus öffentlichen Transaktionen ableiten konnte.
Wie wurden die Gelder gestohlen?
Die Angreifer durchsuchten die Blockchain nach Signaturen, bei denen derselbe Nonce-Wert wiederverwendet wurde, berechneten daraus die privaten Schlüssel und leerten anschließend die Wallets – und das alles anhand öffentlich zugänglicher Daten.
Könnte meine alte Android-Wallet davon betroffen sein?
Wenn es aus dem Jahr 2013 stammt und mehrere Transaktionen signiert hat, ist dies möglicherweise der Fall. Das Risiko zeigt sich in Form von wiederholten Signatur-Nonces in der Blockchain. Alle verbleibenden Guthaben sollten transferiert werden.
Kann mir das dabei helfen, meine eigene Wallet wiederherzustellen?
Sollte Ihre eigene Wallet ihren Schlüssel durch einen wiederholten Nonce preisgegeben haben, lässt sich der Schlüssel aus Ihren öffentlichen Transaktionen ableiten – ein legitimer Weg zur Wiederherstellung für Sie als nachgewiesener Eigentümer.
Wie viel kostet die Wiederherstellung?
Erfolgsabhängig: Ein Prozentsatz des wiedererlangten Wertes, jedoch nur, wenn wir die Geldbörse wiederfinden – und keine Vorauszahlung.
Eine alte Android-Bitcoin-Wallet, auf die Sie nicht zugreifen können?
Eine Android-Wallet aus dem Jahr 2013 lässt sich möglicherweise über die Nonce-Sicherheitslücke wiederherstellen – für Sie als Eigentümer. Teilen Sie uns mit, was Sie haben, und wir erstellen Ihnen innerhalb von 24 Stunden eine ehrliche Einschätzung.