Inhalt
Letzte Woche stieß ich auf BIP-39 und lernte seine Rolle bei der Sicherung von Web3-Wallets kennen. Neugierig entschied ich mich, eine Demo auszuprobieren, um zu sehen, wie es tatsächlich funktioniert. Eine Web3-Wallet, die software- oder hardwarebasiert und selbstverwaltet sein kann, hilft Nutzern, ihre Blockchain-Gelder im Blick zu behalten. Diese Wallets werden durch private Schlüssel gesteuert, die niemals geteilt werden sollten. Aber wie genau wird dieser private Schlüssel erstellt? Und wenn man sein Konto wiederherstellen möchte, muss man dann diesen langen, komplizierten privaten Schlüssel auswendig kennen? Die kurze Antwort lautet nein.\n\nAnstatt diesen unhandlichen privaten Schlüssel auswendig lernen oder speichern zu müssen, verwenden Wallets etwas, das Seed-Phrase genannt wird – normalerweise eine Folge von 12 oder 24 Wörtern. Diese mnemonische Phrase erhält man bei der Einrichtung der Wallet und wird dringend davor gewarnt, sie mit jemandem zu teilen. Aber woher stammt diese Phrase? Ist sie nur eine zufällige Ansammlung von Wörtern? Um das besser zu verstehen, zerlegen wir den Prozess.\n\nFür eine 12-Wort-Seed-Phrase generiert die Wallet zunächst eine Entropie, eine große pseudorandomisierte Zahl. Diese Entropie wird mit einem kryptographisch sicheren Pseudozufallszahlengenerator (CSPRNG) erzeugt. Für meine Demo verwendete ich einen weniger sicheren Generator, aber normalerweise beträgt die Entropiegröße 128 Bit für 12-Wort-Phrasen. Dann wird die Entropie mit dem SHA-256-Algorithmus gehasht. Aus dem Hash werden die letzten vier Bits als Prüfsumme entnommen, die an die ursprüngliche Entropie angehängt werden, sodass insgesamt 132 Bits entstehen.\n\nDiese Prüfsumme wirkt wie ein Sicherheitsnetz bei der Wiederherstellung – sie stellt sicher, dass man beim erneuten Eingeben der Seed-Phrase weniger wahrscheinlich Fehler macht, ohne es zu merken. Nach der Bildung dieser 132-Bit-Zahl wird sie in 12 Gruppen zu je 11 Bits aufgeteilt. Jede 11-Bit-Gruppe wird in eine Dezimalzahl zwischen 0 und 2047 umgewandelt. Diese Zahlen entsprechen Wörtern aus der BIP-39-Standardwortliste, die genau 2048 einzigartige Wörter enthält. Die scheinbar zufällige Wortliste, die man erhält, wird also systematisch aus dieser Bit-Ebene-Codierung abgeleitet.\n\nSobald man die 12-Wort-Seed-Phrase hat, wird sie durch eine spezielle Funktion geleitet, um einen Master-Seed zu erzeugen. Dieser Master-Seed dient als einzige Quelle zur deterministischen Erzeugung unendlich vieler privater Schlüssel und Adressen. Die Wahrscheinlichkeit, dass zwei Wallets dieselbe Seed-Phrase generieren, ist astronomisch gering – es gibt 2^128 mögliche Kombinationen! Diese enorme Zahl macht Brute-Force-Angriffe praktisch unmöglich, da es rechnerisch verrückt wäre, jede Kombination auszuprobieren.\n\nWenn man eine Wallet wiederherstellen möchte, gibt man einfach die 12 Wörter in der richtigen Reihenfolge ein. Die Wallet-Software sucht den Dezimalindex jedes Wortes in der BIP-39-Wortliste und wandelt diese zurück in 12 Gruppen von 11-Bit-Binärzahlen um. Das Zusammenfügen ergibt die 132-Bit-Zahl. Die letzten 4 Bits (Prüfsumme) werden von den ersten 128 Bits (Entropie) getrennt. Die Entropie wird erneut gehasht und die Prüfsumme mit der ursprünglichen verglichen. Stimmen sie überein, weiß die Wallet, dass die Seed-Phrase gültig ist, und erstellt dann den Master-Seed und die entsprechenden privaten Schlüssel neu.\n\nDieses ganze System mag komplex erscheinen, ist aber im Grunde nur Mathematik, Code und solide Kryptographie. Es sorgt dafür, dass deine Web3-Wallets sicher bleiben und gleichzeitig eine einfache Wiederherstellung durch benutzerfreundliche Seed-Phrasen anstelle von schwer merkbaren privaten Schlüsseln ermöglichen.