146 / 736SLIP39

SLIP-39

Wallet-Backup aus mehreren Wiederherstellungsanteilen

Wie genügend Backup-Anteile eine Wallet wiederherstellen und warum das weder eine zerschnittene Seed Phrase noch Multisig ist.

SLIP-39 ist ein Standard für Wallet-Backups aus mehreren Wortlisten, sogenannten Wiederherstellungsanteilen. Man legt vorher fest, wie viele unterschiedliche Anteile für die Wiederherstellung nötig sind. Bei zwei von drei kann beispielsweise einer verloren gehen, ohne dass die Wallet verloren ist. Ein Anteil allein reicht nicht. Der von SatoshiLabs entwickelte Standard nutzt Shamir’s Secret Sharing, ein mathematisches Verfahren zur Aufteilung eines Geheimnisses. Seine Anteile entstehen nicht durch bloßes Umschreiben einer gewöhnlichen Seed Phrase nach BIP 39.

Anna wählt ein Backup nach dem Prinzip zwei von drei. Eine Wallet ist eine Anwendung oder ein Gerät zum Empfangen und Senden von Bitcoin. Die Wallet erzeugt drei verschiedene Anteile; beliebige zwei ermöglichen die Wiederherstellung. Diese Mindestzahl heißt Schwellenwert. Zwei Fotos desselben Anteils zählen weiterhin nur als ein Anteil. Die einfache Anordnung verwendet eine Gruppe. SLIP-39 unterstützt auch komplexere Regeln: etwa 2 von 3 Gruppen mit jeweils 2 von 3 benötigten Anteilen. Zwei Anteile aus A und zwei aus B reichen. Drei aus A und einer aus B reichen nicht, denn nur Gruppe A ist vollständig. Entscheidend ist also die Verteilung, nicht allein die Zahl der Zettel. [1] [6]

Jede Liste enthält andere Daten und die Angaben, die zum richtigen Zusammenfügen nötig sind. SLIP-39 verwendet eine feste Liste mit 1024 englischen Wörtern. Die Backup-Wörter werden nicht übersetzt, auch wenn die Wallet auf Deutsch eingestellt ist. Bei einem Geheimnis mit 128 Bit umfasst ein Anteil 20 Wörter, bei 256 Bit sind es 33. Ein Bit ist eine grundlegende Dateneinheit, kein weiteres aufzuschreibendes Wort. Hinzu kommen Kennungen für Satz, Gruppe und Anteil, die Schwellenwerte und die Verschlüsselungseinstellungen. Die Wiederherstellung prüft deren Übereinstimmung und die Verschiedenheit der Anteile. Beliebige gleich lange Listen lassen sich daher nicht einfach mischen. [1]

Anna kann zusätzlich eine Passphrase verwenden, ein selbst gewähltes Zusatzpasswort. Genügend Anteile ersetzen es nicht, und die richtige Kombination erkennt keinen Tippfehler in der Passphrase: Eine andere Eingabe erzeugt ein anderes Hauptgeheimnis und damit eine andere Wallet. Deshalb vergleicht man das Ergebnis mit bekannten Adressen, statt nur auf die Meldung eines gültigen Backups zu achten. Ohne Passphrase ist die Eingabe leer. SLIP-39 erlaubt die druckbaren ASCII-Zeichen 32–126, also einfache lateinische Zeichen ohne Umlaute oder Akzente einschließlich Leerzeichen. Das ist eine Regel dieses Standards, nicht sämtlicher Wallets. Die Passphrase ist nicht die PIN zum Entsperren des Geräts. [1]

Eine Seed Phrase nach BIP 39 entsteht anders und verwendet eine andere Wortliste. Ihre Wörter auf Zettel zu verteilen macht daraus keine SLIP-39-Anteile. Soll dieselbe Wallet erhalten bleiben, muss eine Umwandlung den Seed bewahren, die geheimen Ausgangsdaten des Schlüsselbaums nach BIP 32, sowie den richtigen Derivation Path, den Pfad zu den verwendeten Schlüsseln. Die ursprüngliche Entropie, also die Zufallsdaten vor der Worterzeugung, nur anders zu codieren reicht nicht. BIP 39 erzeugt aus Wörtern und Passphrase einen Seed mit 512 Bit; dessen direkte Sicherung mit SLIP-39 ergibt Anteile mit 59 Wörtern. Die Umwandlung einer Wallet übernimmt auch nicht automatisch andere Wallets mit anderen Passphrasen. Das konkret unterstützte Verfahren muss vorher geklärt werden. [1] [3] [2]

Ein kompatibles Backup mit dem Merkmal extendable erlaubt eine neue Aufteilung bei unveränderten Wallets. Trezor beschreibt damit den Wechsel von einem einzelnen Anteil zu mehreren. Doch mit neuen Zetteln hat Anna ihr Geheimnis nicht geändert: Eine ausreichende alte Kombination funktioniert weiter. Alte und neue Anteile dürfen nicht gemischt werden. Technisch schließt der Merkmalswert 1 die Satzkennung aus der zusätzlichen Verschlüsselungseingabe namens Salt aus. Dasselbe encrypted master secret (EMS), das verschlüsselte Hauptgeheimnis, lässt sich dadurch ohne Kenntnis der Passphrase mit einer neuen Kennung erneut aufteilen. Ein bereits offengelegtes, nutzbares altes Backup wird dadurch nicht unschädlich. [1] [4]

Ein privater Schlüssel ist ein geheimer Zahlenwert, mit dem die Wallet eine digitale Signatur zur Freigabe einer Ausgabe erstellt. Nach der Wiederherstellung kann Annas Wallet wie gewohnt signieren. Die Besitzer der Anteile müssen nicht jede Zahlung freigeben: SLIP-39 rekonstruiert ein Geheimnis; Multisig verlangt mehrere Signaturen gemäß den Ausgabebedingungen. Drei Anteile in derselben Wohnung kann ein einziger Brand zerstören. Ihre Verteilung soll sowohl den gemeinsamen Verlust als auch das Einsammeln ausreichender Anteile durch einen Angreifer erschweren. Ein komplexeres Schema macht allerdings auch die Wiederherstellung anspruchsvoller. Der Test gehört in ein unterstütztes Verfahren auf einem vertrauenswürdigen Gerät. Die Referenzbibliothek python-shamir-mnemonic dient Entwicklern zur Kompatibilitätsprüfung mit öffentlichen Testbeispielen, nicht zur Verarbeitung deines echten Backups. Sie warnt ausdrücklich, dass sie Geheimnisse nicht ausreichend schützt. [1] [4] [5] [6]

Bei einer BIP-32-Wallet ist das Hauptgeheimnis der Eingangs-Seed, nicht die bereits berechnete erweiterte private Wurzel des Schlüsselbaums. Zuerst wird der Seed verschlüsselt, erst dann das entstandene EMS aufgeteilt. Die Verschlüsselung verwendet vier Runden einer Feistel-Konstruktion, jeweils mit PBKDF2-HMAC-SHA256 und 2500×2^e Wiederholungen. Der gespeicherte Exponent e bestimmt den Rechenaufwand. Das ist eine genau festgelegte Passwortverarbeitung, keine Ergänzung zufälliger Wörter. Die Aufteilung rechnet byteweise in GF(256), einem mathematischen Zahlenraum mit 256 Werten. Im Polynom liegt das Geheimnis bei f(255); ab einem Schwellenwert von 2 enthält f(254) einen Prüfwert, den Digest. [1] [2]

Die letzten drei Wörter eines Anteils bilden die Prüfsumme RS1024. Sie erkennt garantiert Fehler, die höchstens drei Wörter betreffen, ist aber weder die Unterschrift des Backup-Erstellers noch ein Eigentumsnachweis. Der Standard rät von automatischer Korrektur ab: Ein Programm könnte gültige, aber andere Wörter erzeugen. Beim Zusammenfügen hilft ein weiterer 32-Bit-Digest, einen falschen Satz zu erkennen. Daraus folgt auch eine theoretische Einschränkung: Wer einen Anteil weniger als erforderlich besitzt, kann bei einer vollständigen Suche manche möglichen Geheimnisse ausschließen. Die mathematische Aussage, unterhalb der Schwelle werde überhaupt keine Information preisgegeben, gilt deshalb nicht uneingeschränkt. Das bedeutet keinen einfachen Angriff; es erklärt, weshalb das ursprüngliche Geheimnis ausreichend stark sein muss. [1]

Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit Shamir Secret Sharing, BIP 39, Trezor, Multisig, HD Wallet, Seed Phrase. Auf diesen Eintrag verweisen außerdem BIP 39, Trezor, Pavol „Stick“ Rusnák, Shamir Secret Sharing.

DOC · 001SLIP-0039 — Shamir Secret-Sharing for Mnemonic CodesSpezifikation DOC · 002BIP 32 — Hierarchical Deterministic WalletsSpezifikation DOC · 003BIP 39 — Mnemonic code for generating deterministic keysSpezifikation DOC · 004Trezor — Multi-share BackupDokumentation DOC · 005Trezor — python-shamir-mnemonic reference implementationPrimärquelle DOC · 006Bitcoin Developer Guide — WalletsDokumentation
Überarbeitet: Quellenbasiert · Keine Anlageberatung