Warum ein „richtiges“ Passwort für den Vorverkauf nicht funktioniert
Tausende Besitzer von Ethereum-Token aus dem Vorverkauf von 2014 geben das Passwort ein, von dem sie überzeugt sind – doch die Wallet lässt sich nicht öffnen. Das Passwort ist in der Regel richtig, die Bytes jedoch nicht. Dies ist eine Übersicht darüber, wie es dazu kommt, zusammengestellt auf der Grundlage des ursprünglichen Vorverkaufscodes und der eigenen Untersuchungen der Ethereum Foundation.
Dies ist eine Anleitung zur Wiederherstellung des Zugriffs auf Ihre eigene Presale-Wallet. Jeder der folgenden Einträge beschreibt, wie ein korrekt eingegebenes Passwort durch Software zwischen der Tastatur und der Schlüsselableitungsfunktion verändert worden sein könnte. Nichts davon schwächt oder untergräbt die zugrunde liegende Kryptografie, die weiterhin sicher ist – die Wiederherstellung funktioniert nur, wenn Sie das tatsächlich verwendete Passwort fehlerfrei reproduzieren.
So verschlüsselt der Vorverkauf Ihr Passwort
Ausgehend von der kanonischen Referenzimplementierung von pyethsaletool ist der Ablauf kurz: Ihr Passwort wird mit PBKDF2-HMAC-SHA256 über 2.000 Runden (auf 16 Byte gekürzt) gestreckt, um einen Schlüssel zu erzeugen; dieser Schlüssel entschlüsselt den „encseed“ mit AES; das Ergebnis wird zu einem privaten Schlüssel gehasht und dessen Adresse wird mit der „ethaddr“ in der Datei verglichen. Nur ein korrektes Passwort liefert eine übereinstimmende Adresse. Dies entspricht dem Hashcat-Modus 16300.
Drei Mythen, die es zu widerlegen gilt, da sie auf Wiederherstellungsseiten immer wieder aufgegriffen werden: Beim Vorverkauf wird kein Scrypt verwendet (das ist der spätere V3-Keystore, Modus 15700); die Iterationsanzahl ist bewusst niedrig gehalten (2.000), wodurch das Durchsuchen von Kandidaten überschaubar bleibt; und das Passwort wird nicht mit einem Zufallswert gesalzen – das Passwort salzt sich selbst. Dieses letzte Detail ist der Grund dafür, dass eine winzige Änderung in der Eingabe zu einem völlig anderen Ergebnis führt.
Die eigentliche Ursache: „create“ vs. „decrypt“
Die eine Idee, die hinter fast jedem Fehler steckt. Die Wallet wurde mit JavaScript aus dem Jahr 2014 erstellt (UTF-16-Zeichenketten, Byte-Verarbeitung im CryptoJS-Stil) und wird heute von moderner Software entschlüsselt (in der Regel UTF-8). Bei der Schlüsselableitung werden die Bytes des Passworts wortwörtlich gehasht. Wenn Ihr Passwort also Nicht-ASCII-Zeichen enthält, können sich die 2014 gespeicherten Bytes von den Bytes unterscheiden, die ein modernes Tool erzeugt – und das richtige Passwort wird als falsch gemeldet. Reine ASCII-Passwörter sind davon nicht betroffen; sie sind in allen Kodierungen identisch.
Fehler bei der Kodierung und Normalisierung
- Unicode-Normalisierung (NFC vs. NFD) – die Hauptursache. Dasselbe Zeichen kann entweder aus einem Codepunkt bestehen (NFC: é = U+00E9) oder aus einem Buchstaben plus einem Kombinationszeichen (NFD: e + U+0301). macOS übergibt Anwendungen in vielen Kontexten NFD-Text; Linux und Windows verwenden NFC. Wenn das Zeichen auf die eine Weise erstellt und auf die andere Weise erneut eingegeben wird, kommt es zu Fehlern. Das Testen aller vier Formen (NFC, NFD, NFKC, NFKD) löst einen Großteil der Fälle.
- UTF-8 vs. Latin-1 vs. UTF-16-Byte-Abzweigungen. Die Verarbeitung eines Umlauts durch den Browser hat möglicherweise Latin-1-Low-Bytes oder rohe UTF-16-Einheiten erzeugt, nicht das UTF-8, von dem ein modernes Tool ausgeht.
- Doppelte Kodierung / Mojibake (z. B. „ä“ wird zu „ä“ verzerrt) aufgrund eines fehlerhaft dekodierten „Erstellen-und-Speichern“-Pfads.
- Transliteration. Ein Benutzer hat ein nationales Zeichen auf eine bestimmte Weise eingegeben, erinnert sich aber an eine andere Schreibweise: Deutsch ä↔ae, ß↔ss; Schwedisch å↔aa; Norwegisch ø↔o/oe; Spanisch ñ↔n und so weiter.
- Homoglyphen-Ersetzung. Bei aktivem kyrillischem oder griechischem Layout hat ein Zeichen, das auf dem Bildschirm wie ein lateinisches Zeichen aussieht (kyrillisches „а“ für „a“), einen völlig anderen Codepunkt.
Eigenheiten bei der Eingabe unter macOS
- Intelligente Anführungszeichen und intelligente Bindestriche. macOS ersetzt automatisch gerade Anführungszeichen „“ durch geschwungene Anführungszeichen „‘“ und Bindestriche „–“ durch „—“. Das Passwort sieht zwar gleich aus, die Bytes unterscheiden sich jedoch.
- „Hängenbleibender Akzent“ bei Dead-Key-Zeichen. Unter macOS erzeugt ein Dead-Key-Zeichen für Akut, Umlaut oder Gravis, wenn ihm ein Nicht-Basisbuchstabe folgt, das reine diakritische Zeichen plus den Buchstaben – ein gespeichertes „café“ könnte beispielsweise als „caf´e“ gespeichert worden sein.
- Das Akzentmenü durch Gedrückthalten sowie die Ergonomie der Feststelltaste. Die Akzentauswahl und eine aktivierte Feststelltaste (bei einigen Macs ohne erkennbare LED) führen zu Groß-/Kleinschreibungs- und Akzentvarianten, die der Benutzer nie beabsichtigt hat.
Tastaturlayout und Ländereinstellung
- Neuzuordnung der gesamten Tastaturbelegung – der eindeutigste einzelne Mechanismus, der in der eigenen Untersuchung der Stiftung nachgewiesen wurde. War die Eingabesprache des Betriebssystems zum Zeitpunkt der Eingabe oder Übertragung nicht Englisch, ordnete das System die Tasten neu zu, sodass die Zeichen, die im Eingabefeld erschienen, nicht mit denen auf den Tastenkappen übereinstimmten.
- QWERTZ-y/z-Vertauschung und andere Tastenbelegungsänderungen zwischen der Erstellung und dem erneuten Aufruf.
- Das Problem mit Nicht-ASCII-Zeichen in der Geth-Konsole. Wenn eine Presale-Wallet später in Geth importiert wurde, wurden in der Konsole bei einigen Sprachumgebungen Zeichen oberhalb des Code-Punkts 127 stillschweigend entfernt – ein Passwort mit Sonderzeichen konnte dadurch verkürzt oder geleert werden. (Ein pfadspezifischer Fehler, kein Fehler im Zusammenhang mit dem Browser von 2014.)
Eingabe-, Hardware- und Dateifehler
- Das „Zappeln“ in der Entropie-Phase. Im Vorverkauf wurden Entropie-Startwerte anhand der Mausbewegungen erfasst, und das Passwortfeld war während dieses Schritts nicht immer deaktiviert – ein versehentlicher Tastenanschlag beim Herumbewegen der Maus konnte dazu führen, dass ein Zeichen hinzugefügt wurde, das der Nutzer nie beabsichtigt hatte und an das er sich nicht erinnern kann. Dies ist ein spezifisches Problem der Benutzererfahrung im Vorverkauf.
- Leerzeichen und Zeilenumbrüche aus dem eingefügten Text (ein führendes oder abschließendes Leerzeichen oder ein \n/\r\n, das beim Einfügen in das Feld erfasst wurde).
- Klemmende oder springende Tasten, die zu einer unbeabsichtigten doppelten Zeichenausgabe führen.
- Kürzung nach der Validierung / leeres Passwort – das Feld, das bearbeitet wurde, nachdem es die Formularprüfung bestanden hatte.
- Unterschiede bei der Neuverschlüsselung. Beim Importieren der Wallet in MyEtherWallet, Mist oder Geth wurde diese mit neuen Schlüsseln neu verschlüsselt – eine Kopie lässt sich möglicherweise öffnen, während eine andere fehlschlägt, und eine beschädigte Kopie kann nach dem erneuten Import dauerhaft nicht mehr geöffnet werden. Bewahren Sie jede Kopie auf und testen Sie sie.
- Unvollständiger Download / Dateiintegrität. Ein unterbrochener Download über eine langsame Verbindung könnte dazu führen, dass die verschlüsselte Datei unvollständig ist; in diesem Fall lässt sie sich mit keinem Passwort entschlüsseln. Überprüfen Sie die Datei, bevor Sie Zeit und Mühe investieren.
Was das für die Erholung bedeutet
Das praktische Ergebnis ist ermutigend: Wenn man sich an sein Passwort erinnert, besteht die Wiederherstellung einer Presale-Wallet im Wesentlichen darin, diese Transformationen einer bekannten Zeichenfolge durchzugehen – und nicht darin, Millionen von Passwörtern zu erraten. Eine sinnvolle Reihenfolge:
- Suchen Sie alle Kopien der JSON-Datei – der Vorverkauf hat sie Ihnen per E-Mail zugeschickt; durchsuchen Sie alte E-Mails, Laufwerke, Cloud-Backups und alte Computer. Neu verschlüsselte Kopien weichen voneinander ab, daher bedeuten mehr Kopien auch mehr Chancen.
- Überprüfe jede Datei (gültiges JSON, sinnvolle „encseed “-Länge), bevor du Zeit dafür aufwendest.
- Überprüfen Sie Ihren Passwort-Manager auf Einträge aus dem Jahr 2014, die sich auf den Ethereum-Crowdsale beziehen – und sehen Sie sich auch den Passwortverlauf an, da der gespeicherte Wert möglicherweise später geändert wurde.
- Probieren Sie Ihren besten Kandidaten mit den oben genannten Varianten für Zeichenkodierung und Tastatureinstellungen aus, entsprechend dem Betriebssystem und der Tastatur, die Sie damals verwendet haben.
Wenn die Datei selbst verloren gegangen ist, kann niemand mehr helfen – aber wenn Sie sie noch haben, stehen die Chancen weitaus besser, als die meisten Besitzer glauben. Das ist unser Fachgebiet; lesen Sie dazu unseren Leitfaden zur Wiederherstellung von Ethereum-Presale-Token.
Quellen
Dieser Katalog basiert auf Primärquellen und nicht auf Meinungen: der kanonischen Referenzimplementierung ethereum/pyethsaletool und dem Presale-Frontend (ethereum/www); der Untersuchung der Ethereum Foundation zum Thema „falsches Passwort“ (dem Thread zu Mist-Issue #3513 und den damit verbundenen Berichten); go-ethereum-Issues zur Kodierung und zur Verarbeitung von Konsoleneingaben; die Hashcat- Implementierung im Modus 16300; sowie „ethereum2john“ von John the Ripper. Die oben genannten Verhaltensweisen sind dort sowie in den Berichten der ausgesperrten Teilnehmer dokumentiert.
Häufig gestellte Fragen
Warum funktioniert mein korrektes Passwort für den Ethereum-Vorverkauf nicht?
Fast immer liegt es daran, dass sich die Bytes geändert haben, nicht das Passwort. Die Wallet wurde 2014 mit Browser-JavaScript verschlüsselt und wird heute mit moderner Software entschlüsselt; jedes Nicht-ASCII-Zeichen (ein Umlaut, ein Akzent) kann als andere Bytes gespeichert werden, als sie ein modernes Tool erzeugt. Das Passwort ist korrekt; die Kodierung unterscheidet sich. Passwörter, die ausschließlich aus ASCII-Zeichen bestehen, sind davon nicht betroffen.
Was ist der häufigste Grund dafür, dass ein Passwort im Vorverkauf nicht akzeptiert wird?
Unicode-Normalisierung: Dasselbe sichtbare Zeichen kann entweder aus einem Codepunkt (NFC) oder aus einem Buchstaben plus einem Kombinationszeichen (NFD) bestehen. macOS übergibt Anwendungen häufig NFD-Text, während Linux und Windows NFC verwenden. Daher führt ein Passwort, das auf einem System erstellt und auf einem anderen erneut eingegeben wird, zu unterschiedlichen Hash-Werten. Das Testen aller Normalisierungsformen löst viele dieser Fälle.
Wird durch die Wiederherstellung eines Passworts aus dem Vorverkauf die Kryptografie von Ethereum untergraben?
Nein. Diese Techniken simulieren, wie Ihr selbst eingegebenes Passwort möglicherweise durch Software zwischen der Tastatur und der Schlüsselableitungsfunktion verändert wurde. Die Wiederherstellung gelingt nur, wenn eine Transformation genau das von Ihnen verwendete Passwort reproduziert. Die zugrunde liegenden Verfahren AES und PBKDF2 bleiben sicher und werden niemals geknackt.
Was braucht man, um ein Presale-Wallet wiederherzustellen?
Die JSON-Datei aus dem Vorverkauf (mit dem Feld „encseed“ und Ihrer „ethaddr“) sowie die Erinnerung an das Passwort. Wenn Sie einen aussichtsreichen Kandidaten haben, besteht die Wiederherstellung größtenteils darin, die Kodierungen und Eingabe-Quirk-Transformationen dieser einen Zeichenfolge durchzugehen, anstatt zu raten. Ist die Datei selbst verloren gegangen, ist eine Wiederherstellung nicht möglich.
Ein Vorverkaufspasswort, das sich nicht entschlüsseln lässt?
Senden Sie uns die JSON-Datei aus dem Vorverkauf und Ihre besten Erinnerungen an das Passwort – insbesondere das Betriebssystem, die Sprache und die Tastatur, die Sie 2014 verwendet haben. Wir liefern Ihnen innerhalb von 24 Stunden eine ehrliche Einschätzung, und Sie zahlen nur im Erfolgsfall.