Forschung. Original
Die Schwachstelle bei PRNG und IV im Vorverkauf
Teil unserer Forschung zum Thema „schwache Zufälligkeit“: Siehe die Übersicht „Schwache Zufälligkeit in Krypto-Wallets“.
Der Wallet-Generator für den Vorverkauf 2014 stützte sich an Stellen, an denen dies nicht hätte geschehen dürfen, auf die Funktion „Math.random“ des Browsers. Unsere Untersuchung befasst sich mit der Frage, ob diese Vorhersehbarkeit einen Weg zur Wiederherstellung von ansonsten gesperrten Vorverkaufs-Wallets eröffnet.
Dies ist eine eigene Untersuchung von KeychainX, die wir eher als offene Recherche denn als fertigen Exploit präsentieren. Der Wallet-Generator für den Ethereum-Vorverkauf 2014 nutzte die Zufallsfunktion des Browsers – Math.random() – als Teil der Generierung von Verschlüsselungsparametern. Wenn die Zufallswerte vorhersehbar sind, ist möglicherweise eine Wiederherstellung möglich. Hier sind unsere Ergebnisse.
Hintergrund: Wie die Presale-Wallet entstanden ist
Eine Presale-Wallet ist ein JSON-Keystore, der Ihren privaten Schlüssel mithilfe von PBKDF2 und AES mit Ihrem Passwort verschlüsselt. Für die Verschlüsselung sind ein Initialisierungsvektor (IV) und weitere wallet-spezifische Werte erforderlich, die bei der Erstellung im Browser generiert wurden. Ein ordnungsgemäß zufälliger IV ist an sich kein Geheimnis – doch die Art und Weise, wie der Generator Zufälligkeit generiert hat, birgt eine interessante Schwachstelle, da Teile davon auf `Math.random() ` statt auf einer kryptografischen Quelle beruhten.
Warum „Math.random“ unzuverlässig ist!
Math.random() ist ein Pseudozufallsgenerator, dessen Startwert aus einem begrenzten, oft zeitabhängigen Zustand abgeleitet wird – er war nie für kryptografische Zwecke gedacht. Wenn ein Wert, der eigentlich unvorhersehbar sein sollte, stattdessen von Math.random() auf der Grundlage eines begrenzten Startwerts erzeugt wird, ist der Raum der möglichen Werte klein genug, um ihn vollständig abzuzählen. Das gleiche Prinzip steckt hinter Randstorm und MilkSad: Der Algorithmus ist in Ordnung, aber der Startwert ist vorhersehbar.
Der „undefinedundefined“-Zusammenbruch bei Firefox
Unsere wichtigste Erkenntnis betrifft eine browserspezifische Eigenart. Der Generator bezog Mausbewegungskoordinaten als Entropiequelle mit ein, doch in Firefox wurden diese Koordinaten unter bestimmten Bedingungen als die wörtliche Zeichenfolge „undefinedundefined“ zurückgegeben – was keine echte Entropie beitrug. In diesem Fall konzentrierte sich die unbekannte Zufälligkeit auf die verbleibende Quelle: einen Zeitstempel im Millisekundenbereich. Und dieser Zeitstempel ist begrenzt, da eine Presale-Wallet in einem Zeitfenster um den Zeitpunkt herum erstellt wurde, zu dem die Einzahlungstransaktion in die Bitcoin-Blockchain gelangte.
Was das für die Erholung bedeutet
Dies bedeutet eine drastische Verkleinerung des Suchraums für betroffene Wallets. Sollte die Entropie tatsächlich auf einen Millisekunden-Zeitstempel schrumpfen, der durch die Einzahlungszeiten in der Blockchain begrenzt ist, lässt sich der Kandidatenraum vollständig abtasten, und eine strukturierte Suche – eine Beam-Suche über das plausible Zeitfenster zur Rekonstruktion des Generatorzustands – könnte die zur Entschlüsselung erforderlichen Werte reproduzieren. Wir haben diese Methodik skizziert; sie ist für eine bestimmte Untergruppe von mit Firefox erstellten Wallets vielversprechend, stellt jedoch keinen universellen „Skelettschlüssel“ für den Vorverkauf dar. Die meisten Wiederherstellungen im Vorverkauf hängen nach wie vor mit den Problemen bei der Passwortverschlüsselung zusammen, die wir separat dokumentieren.
Warum dies für verlorene Kryptowährungen von Bedeutung ist
Die Wallets aus dem Vorverkauf von 2014 gehören zu den wertvollsten ruhenden Vermögenswerten im gesamten Kryptomarkt, und ein erheblicher Anteil davon ist gesperrt, da ihre Besitzer sie nicht mehr entschlüsseln können. Jede glaubwürdige Methode, die den Suchraum selbst für nur einen Teil davon eingrenzt, ist es wert, verfolgt zu werden, da bei jedem Wallet so viel auf dem Spiel steht. Deshalb nehmen wir den PRNG-Ansatz trotz seiner begrenzten Anwendbarkeit ernst: Für die spezifischen Wallets, bei denen es zu einem Entropie-Kollaps kam, ist der Unterschied zwischen einer unbegrenzten und einer begrenzten Suche der Unterschied zwischen Hoffnungslosigkeit und Wiederherstellbarkeit. Forschung, die die Menge der wiederherstellbaren Wallets auch nur geringfügig erweitert, hat hier einen überragenden Wert.
Die Methodik im Detail
Konkret handelt es sich bei diesem Ansatz um eine begrenzte Rekonstruktion. Zunächst wird anhand der On-Chain-Historie der Wallet das Finanzierungsfenster ermittelt, das den Erstellungszeitpunkt einschließt. Anschließend wird für jede in Frage kommende Millisekunde in diesem Fenster der Generatorzustand rekonstruiert, der sich bei der kollabierten Entropie ergeben hätte, und daraus die Verschlüsselungsparameter abgeleitet, die dabei entstanden wären. Drittens werden diese Parameter anhand des verschlüsselten Keystores überprüft, wobei Kandidaten je nach interner Konsistenz der Ableitung zugelassen oder ausgeschlossen werden. Eine Beam-Suche behält die vielversprechendsten Kandidatenzustände im Rennen, anstatt blind jede Möglichkeit auszuschöpfen. Es handelt sich um eine sorgfältige, Wallet-spezifische Vorgehensweise – keinen Batch-Angriff –, die angemessen ist, da sie nur dort angewendet wird, wo die spezifischen Bedingungen erfüllt sind.
Ein ehrlicher Status
Wir stellen dies als laufendes Forschungsprojekt vor. Die Bedingungen müssen stimmen – der jeweilige Browser, der jeweilige Entropie-Kollaps und ein klar begrenzter Finanzierungszeitraum –, und jede potenzielle Wallet muss individuell geprüft werden. Wir veröffentlichen dies, weil es sich um einen authentischen, bislang kaum untersuchten Ansatz in Bezug auf einige der wertvollsten ruhenden Wallets handelt, die es gibt, und weil Transparenz hinsichtlich einer vielversprechenden, aber noch unvollendeten Methode für die Besitzer nützlicher ist als übertriebene Versprechungen oder Schweigen.
Für welche Geldbörsen dies gelten könnte
Um den Anwendungsbereich genau zu definieren: Die wahrscheinlichsten Kandidaten sind Presale-Wallets, die in Firefox während des Zeitfensters erstellt wurden, in dem die Entropiequelle für die Mauskoordinaten versagte und in dem eine Einzahlungstransaktion eine enge zeitliche Begrenzung für den Erstellungszeitpunkt liefert. Wallets, die in anderen Browsern erstellt wurden oder bei denen die Entropiequelle wie vorgesehen funktionierte, weisen diesen Zusammenbruch nicht auf und werden auf diesem Weg nicht berücksichtigt. Aus diesem Grund bewerten wir jedes Wallet einzeln, anstatt eine pauschale Lösung zu versprechen: Dasselbe Presale-JSON-Datenformat lässt sich möglicherweise über den Kodierungsweg, über diesen PRNG-Weg oder über keinen der beiden Wege wiederherstellen, und nur eine Überprüfung des jeweiligen Wallets und seines On-Chain-Kontexts gibt Aufschluss darüber, welcher Weg der richtige ist.
Unsere Dokumentation
Diese Analyse stammt von KeychainX und wurde im Rahmen der Untersuchung inaktiver Presale-Wallets (siehe unsere Studie zu inaktiven Presale-ETH-Wallets ) sowie unserer umfassenderen Arbeit zum Thema „schwache Zufälligkeit“ in Zusammenarbeit mit Randstorm und MilkSad entwickelt. Wir datieren sie hier, um die Ergebnisse festzuhalten, und freuen uns über die Zusammenarbeit mit Forschern, die denselben Generator untersuchen.
Häufig gestellte Fragen
Ist das eine Möglichkeit, ein beliebiges Vorverkaufs-Wallet zu öffnen?
Nein. Es handelt sich um einen vielversprechenden Forschungsansatz für eine bestimmte Untergruppe von Wallets – nämlich solche, die in Firefox erstellt wurden, bei denen die Entropie zusammengebrochen ist –, nicht um eine allgemeingültige Methode. Die meisten Wiederherstellungen nach dem Vorverkauf sind stattdessen auf Probleme bei der Passwortverschlüsselung zurückzuführen.
Was ist der Befund „undefiniert-undefiniert“?
In Firefox könnte die Entropiequelle für Mauskoordinaten des Generators die Zeichenfolge „undefinedundefined“ zurückgeben, wodurch keine Zufälligkeit entsteht – was die unbekannte Entropie auf einen begrenzten Zeitstempel im Millisekundenbereich reduziert.
Warum ist der Zeitpunkt der Finanzierung von Bedeutung?
Etwa zu dem Zeitpunkt, als die Bitcoin-Einzahlungstransaktion stattfand, wurde eine Presale-Wallet erstellt, sodass der Zeitrahmen innerhalb der Blockchain das Zeitfenster eingrenzt, auf das sich die Entropie reduzieren könnte – wodurch der Bereich abzählbar wird.
Ist diese Forschungsarbeit abgeschlossen?
Nein – wir stellen es als offene Untersuchung mit einer festgelegten Methodik dar (eine Beam-Suche über das Zeitfenster), die auf eine Teilmenge von Wallets anwendbar ist und von Fall zu Fall bewertet wird.
Können Sie mein Presale-Wallet bewerten?
Ja. Wir prüfen, ob für Ihre jeweilige Wallet die Passwortverschlüsselungsmethode oder die PRNG-Methode (oder keine von beiden) zum Einsatz kommt.
Haben Sie ein hartnäckiges Wallet für den Vorverkauf?
Wir prüfen, ob bei Ihrer speziellen Wallet ein Verschlüsselungsproblem vorliegt oder dieser PRNG-Aspekt eine Rolle spielt. Teilen Sie uns mit, welche Wallet Sie nutzen – Sie erhalten innerhalb von 24 Stunden eine ehrliche Einschätzung.