Wie OneKey-Wallets deine Recovery Phrase erzeugen – und woher die Zufälligkeit kommt

Schlüssel-Ergebnisse
- Die Sicherheit einer Wallet steht und fällt mit der Entropie: den unvorhersehbaren Zufallsbits, aus denen sie entsteht. Eine Recovery Phrase ist nur deren lesbare Kodierung.
- Ist die Entropie im Moment der Erstellung vorhersehbar, kann nichts danach – weder PIN, Aufbewahrung noch Ableitung – den Schaden mehr rückgängig machen.
- Nicht jedes OneKey-Modell bezieht seine Zufälligkeit aus derselben Quelle: Pro, Classic 1S und Classic 1S Pure nutzen die THD89-SE-TRNG, Classic die ATECC608A-SE-TRNG und Mini die STM32-MCU-TRNG.
- Das diskutierte ColdCard-Problem geht auf eine fehlkonfigurierte Yasmarang-PRNG in
libnguzurück – OneKeys relevante Firmware-Pfade nutzen wederlibngunoch Coinkite, Coldcard oder CKCC. - SHA-256 berechnet bei BIP39 nur die Prüfsumme; kein Hashing, keine PIN und kein Secure-Element-Speicher kann aus vorhersehbaren Eingaben echte Zufälligkeit machen.
Dieser Artikel erklärt Schritt für Schritt, wie jedes OneKey-Modell beim Anlegen einer neuen Wallet die Entropie und die Recovery Phrase erzeugt – und warum die jüngsten Bedenken rund um bestimmte Software-RNG-Implementierungen die Wallet-Erstellungspfade von OneKey nicht betreffen.
Wallet-Sicherheit beginnt mit Zufälligkeit, die niemand vorhersehen kann
Die Sicherheit einer Wallet beginnt bei einer einzigen Sache: der Entropie – den unvorhersehbaren Zufallsbits, aus denen sie entsteht. Eine Recovery Phrase ist nichts weiter als eine für Menschen lesbare Kodierung dieser Entropie. Ist die Entropie im Moment der Erstellung vorhersehbar, kann nichts, was du danach hinzufügst – weder eine PIN noch der Aufbewahrungsort deiner Phrase noch die Art, wie Adressen abgeleitet werden – den Schaden mehr rückgängig machen.
Nicht alle OneKey-Modelle beziehen ihre Zufälligkeit aus derselben Quelle. Hier steht genau, woher die Entropie hinter deiner Recovery Phrase auf jedem Gerät stammt.
Das Problem, das zuletzt durch die Nachrichten ging, geht auf eine fehlkonfigurierte Yasmarang-PRNG in libngu zurück, bei der bestimmte Builds am Ende die TRNG des Chips umgingen. Die relevanten Firmware-Pfade von OneKey nutzen weder libngu noch Coinkite, Coldcard oder eine CKCC-Abhängigkeit, und mehrere Audit-Runden bestätigen, dass sie tatsächlich die Hardware- bzw. Secure-Element-TRNG aufrufen. Im Folgenden gehen wir Gerät für Gerät die tatsächliche Hardware-Zufallsschnittstelle durch, die jedes Modell verwendet.
Was ist Entropie, und warum kommt eine Wallet ohne sie nicht aus?
Stell dir Entropie als eine messbare Menge an Unvorhersehbarkeit vor, üblicherweise in Bit gezählt. 128 Bit Entropie bedeuten 2^128 mögliche Ausgangswerte; solange kein anderer Fehler vorliegt, bleibt einem Angreifer nichts als Raten. Deine privaten Schlüssel, deine Adressen und deine Fähigkeit zu signieren werden allesamt deterministisch aus diesem einen Ausgangsgeheimnis abgeleitet.
Die Sicherheit einer Recovery Phrase rührt also nicht daher, dass ein Dutzend englischer Wörter „nach viel aussieht“. Sie rührt daher, wie unvorhersehbar die rohe Entropie dahinter ist:
- 128 Bit Entropie → 12 BIP39-Wörter;
- 192 Bit Entropie → 18 BIP39-Wörter;
- 256 Bit Entropie → 24 BIP39-Wörter.
Schwache Zufälligkeit erlaubt es einem Angreifer, die Eingaben aus dem Moment der Wallet-Erstellung zu reproduzieren und auf genau dieselbe Phrase und denselben privaten Schlüssel zu kommen. Keine noch so große Menge an SHA-256, PIN-Schutz oder Secure-Element-Speicher kann aus einer vorhersehbaren Eingabe echte, unvorhersehbare Entropie machen.
Von der Zufallszahl zur Recovery Phrase: wie die Rechnung tatsächlich funktioniert
Die Details unterscheiden sich je nach Modell, aber jede BIP39-Wallet folgt demselben Rechenmodell:
Hardware-Echtzufallszahlengenerator (TRNG)
↓
128 / 192 / 256 bit Entropie (ENT) ziehen
↓
Die ersten ENT / 32 bit von SHA-256(ENT) als Prüfsumme (CS) nehmen
↓
ENT || CS in 11-bit-Gruppen aufteilen, jede auf eines von 2048 BIP39-Wörtern abbilden
↓
12 / 18 / 24 Wörter → seed → private Schlüssel, Adressen und Signaturschlüssel
Eine 12-Wort-Phrase verwendet zum Beispiel 128 Bit Entropie plus eine 4-Bit-Prüfsumme – insgesamt 132 Bit, die sich sauber in 12 Gruppen zu je 11 Bit teilen lassen. Jede Gruppe ist ein Index in die BIP39-Wortliste.
Der SHA-256-Schritt berechnet hier nur die BIP39-Prüfsumme; er ist kein Zufallszahlengenerator. Die Zufälligkeit der Phrase beruht weiterhin vollständig auf der rohen Entropie, die im Moment der Erstellung erfasst wurde.
Warum bleibt OneKeys Implementierung also vom ColdCard-Problem unberührt? Im Folgenden schlüsseln wir Gerät für Gerät auf, wie die anfängliche Zufallszahl jedes Modells entsteht und ob sie jemals in den betroffenen Code-Pfad gerät.
OneKey Pro
OneKey Pro
Ist es betroffen?
Nein – nicht vom ColdCard-Problem mit libngu / Yasmarang. Der aktuelle Build des Pro aktiviert THD89 standardmäßig. Wenn du auf dem Gerät eine Wallet anlegst, liefert die THD89-TRNG die zufällige Eingabe, und die Firmware übernimmt die anschließende BIP39- oder SLIP39-Kodierung.
Wie es erzeugt wird
THD89 TRNG → Entropie zur Wallet-Initialisierung → Firmware kodiert BIP39 oder SLIP39.
Das random.bytes() des Pro nutzt standardmäßig source=1, was im Standard-Build USE_THD89=1 die Funktion se_random_encrypted() aufruft.
Hinweise zur Zufälligkeit
- Der Standard-Build des Pro aktiviert THD89, und die Zufallsbytes stammen aus
se_random_encrypted()– nicht aus dem Yasmarang- oderlibngu-Software-PRNG-Pfad. - Laut OneKey Help Center gründet die TRNG im heutigen EAL6+ Secure Element ihre Zufälligkeit auf physikalischen Prozessen wie elektronischem Rauschen.
OneKey Classic 1S
OneKey Classic 1S
Ist es betroffen?
Nein – nicht vom ColdCard-Problem mit libngu / Yasmarang. Der aktuelle, öffentlich einsehbare On-Device-Erstellungsablauf des Classic 1S bezieht seine Entropie aus der THD89-Secure-Element-TRNG, und die Zeichenkette der BIP39-Phrase wird von der MCU-Firmware kodiert.
Wie es erzeugt wird
THD89 TRNG → 128 / 192 / 256 Bit Entropie → MCU kodiert die BIP39-Phrase.
Hinweise zur Zufälligkeit
- Zu sagen „die Phrase wird von THD89 erzeugt“ ist nicht ganz korrekt: THD89 liefert die zufällige Eingabe, während die BIP39-Wortkodierung in der MCU-Firmware geschieht.
- Die Firmware ruft die
se_random_encrypted()-Schnittstelle von THD89 auf und verwendet weder Yasmarang nochlibngu. Laut OneKey Help Center erzeugt die TRNG im heutigen EAL6+ Secure Element ihre Zufälligkeit aus physikalischen Prozessen wie elektronischem Rauschen.
OneKey Classic 1S Pure
OneKey Classic 1S Pure
Ist es betroffen?
Nein – nicht vom ColdCard-Problem mit libngu / Yasmarang. Der öffentliche Code gibt dem Classic 1S Pure keinen eigenen Zweig zur Entropie-Erzeugung; er teilt sich dieselbe firmware-classic1s-Codebasis mit dem Classic 1S. Wenn du also eine Wallet anlegst, stammt auch die Entropie des Pure aus der THD89-TRNG und wird von der MCU in eine BIP39-Phrase kodiert.
Verifizierter Ablauf
THD89 TRNG → 128 / 192 / 256 Bit Entropie → MCU kodiert die BIP39-Phrase.
Dass der Pure ein akkuloses Produkt ist, ändert nichts an diesem öffentlichen Erstellungspfad.
Hinweise zur Zufälligkeit
- Nimm nicht an, dass der Pure einen anderen Entropie-Mechanismus hätte, nur weil er als eigenes Modell verkauft wird.
- Genau wie beim Classic 1S ruft der öffentliche Erstellungscode die THD89-Zufallsschnittstelle auf und verwendet weder Yasmarang noch
libngu.
OneKey Classic
OneKey Classic
Ist es betroffen?
Nein – nicht vom ColdCard-Problem mit libngu / Yasmarang. Auf dem Classic-Firmware-Pfad mit aktiviertem Secure Element liefert das SE das Zufallsmaterial, das zur Wallet-Erstellung dient, und die MCU macht daraus eine BIP39-Phrase.
Wie es erzeugt wird
SE liefert Zufallsmaterial → die ersten 32 Byte werden als Entropie genommen → MCU kodiert die BIP39-Phrase.
Hinweise zur Zufälligkeit
- Dieser Pfad bezieht sein Zufallsmaterial über die Initialisierungs- und Export-Schnittstellen des SE und ruft weder die Yasmarang- noch die
libngu-RNG-Implementierung auf – er gerät also nie in den hier diskutierten betroffenen Code-Pfad. - Der öffentliche Code kann Chip-Modell und Zertifizierung des SE nicht für jede einzelne Charge des Classic eindeutig festlegen. Wenn du den Classic öffentlich beschreibst, richte dich nach der Chip-Dokumentation der jeweiligen Charge, statt die Zertifizierung eines anderen Modells auf den Classic zu übertragen.
OneKey Mini
OneKey Mini
Ist es betroffen?
Nein – nicht vom ColdCard-Problem mit libngu / Yasmarang. Der On-Device-Erstellungsablauf des Mini zieht seine Entropie aus dem Hardware-Zufallszahlengenerator der STM32-MCU, und die MCU kodiert sie anschließend in eine BIP39-Phrase.
Wie es erzeugt wird
STM32 MCU TRNG → 128 / 192 / 256 Bit Entropie → MCU kodiert die BIP39-Phrase.
In der älteren Firmware des Mini liest random32() die STM32-RNG-Peripherie direkt aus und weist aufeinanderfolgende, identische Ausgaben zurück. Genau diese Zufälligkeit nutzt der On-Device-Erstellungsablauf, um die Phrase zu erzeugen.
Hinweise zur Zufälligkeit
- Die MCU liest die STM32-Hardware-RNG-Peripherie direkt aus, und die Firmware weist zudem aufeinanderfolgende, identische Ausgaben zurück. Dieser Pfad verwendet weder Yasmarang noch
libngu.
Sicherheitshinweise für Nutzer
- Ganz gleich, woher die Entropie stammt: Sobald eine Recovery Phrase durchsickert, kann jeder die Wallet wiederherstellen. Sie offline und fehlerfrei zu sichern, liegt immer in deiner eigenen Verantwortung.
- Geht eine Recovery Phrase verloren, kann kein Gerät, keine App und kein Hersteller sie für dich wiederherstellen.
Weiterführende Lektüre und Quellen
- OneKey Help Center: Wie erzeugt eine OneKey-Hardware-Wallet eine Recovery Phrase und garantiert deren Zufälligkeit?
- OneKey Pro:
reset_device - OneKey Pro: Implementierung der Zufallsquelle
- OneKey Pro: Build-Konfiguration, die THD89 standardmäßig aktiviert
- Classic 1S:
reset.c - Classic 1S:
config.c - OneKey Classic / Mini:
reset.c - Historischer Commit: Mini mit Microchip ATECC608






