Heute lernen wir, wie man den SeedSigner benutzt. Den Zusammenbau und die Auswahl der Bauteile findet ihr im Detail u. A. hier. Als bereits zusammengebautes und fertig nutzbares Gerät kann man ihn auch hier erwerben.
Verwendung der SeedSigner Bitcoin Hardware Wallet
Wie benutzt man den SeedSigner?
Einschalten
Zuerst müssen wir den SeedSigner an eine Stromquelle anschließen.
Die eigentliche Idee hinter SeedSigner ist, dass wir ein Air-Gapped-Device zum Signieren von Transaktionen verwenden, was bedeutet, dass das Gerät, welches die Signaturen enthält, von jeglicher Internet- oder Bluetoothverbindung isoliert ist.
Wir wollen beim Erstellen und Hantieren mit Bitcoin Adressen, Signaturen, Transaktionen und Keys möglichst keine Einflussnahme von außen ermöglichen.
Der Raspberry Pi Zero im SeedSigner hat zwei Anschlüsse, und der linke erlaubt ausschließlich die Stromversorgung, also ist es tatsächlich absolut sicher, ihn sogar an den USB-Anschluss Ihres Computers anzuschließen, wenn das einfacher ist. USB-Battery-Packs oder gar 9-Volt Block-Adapter sind hier eine sichere Alternative für Paranoiker.
Nach dem Einstecken benötigt das Gerät etwa 45 Sekunden zum Hochfahren. Dann zeigt sich auf dem Display der Startscreen.
Erzeugung von Seeds in Seedsigner
Wir haben grundsätzlich zwei Möglichkeiten, einen BIP39-Seed zu erzeugen:
- Würfel
- Bild/Foto
Beide Methoden sind gute & etablierte Entropiequellen (Bitcoin-Adressen sind nur große zufällige Zahlen), da sie nicht von spezieller Hardware abhängig sind.
Die meisten Geräte, welche wir sonst zur Erstellung von Bitcoin Private-Keys und Adressen verwenden, nutzen spezielle Hardware, die als Entropiequelle hergenommen werden, aber die meisten davon können nicht wirklich von jedem verifiziert werden.
Eine gute Entropie (aus kryptografischer Sicht) bedeutet, dass niemand sonst reproduzieren kann, was wir geschaffen haben, und ein Foto sowie ein wiederholter Satz von 99 Würfeln sind dafür sehr gut geeignet.
Wir werden hier den Bildmodus verwenden, da er recht einfach zu bewerkstelligen ist und weniger Zeit in Anspruch nimmt:
Gehe im Menü auf „Seed Tools“ und dann auf „Generate Seed With Image“. Halte die Kamera auf irgendetwas und drücke den Joystick. Wenn wir mit dem Bild zufrieden sind, klicken wir dann auf „Accept“.
Seed-Backup generieren
Schreibe dir nun, die auf dem SeedSigner Display angezeigten, 24 Wörter auf.
Nach dem Notieren der 24 Seed-Wörter, gelangen wir zum QR-Code dieser Seed-Wörter. Der QR-Code kodiert die 24 Wörter in einer kompakten Form, die z. B. für Computer leicht zu lesen ist.
Ein QR-Code ist eine ideale Möglichkeit, Informationen zwischen 2 Geräten zu übertragen.
Durch die Nutzung des SeedSigners, des darin verbauten Raspberry Pi Zero (ohne Bluetooth & Wifi) mit der Kamera und den QR-Codes können wir sicherstellen, dass nur die von uns bestimmten Informationen zwischen 2 Geräten ausgetauscht wird und garantiert keine dritte Partei Zugriff auf diese Daten hat.
Auch den QR-Code zeichnen wir uns auf ein Blatt Papier oder einem der von SeedSigner mitgelieferten Karten-Templates.
Wenn wir jetzt auf den Joystick drücken, gelangen wir in den Zoom-Modus des QR-Codes. Hier können wir via Joystick navigieren, und die X- und Y-Koordinaten helfen uns dabei, den Code auf Papier zu übertragen. Hier empfiehlt es sich sehr genau zu arbeiten.
Wir beginnen an der Position A1 (das ist die obere linke Ecke) und arbeiten uns bis unten rechts durch. Ein Bleistift wird hier tatsächlich empfohlen, da Graphit resistenter gegen ultraviolette Strahlung, Feuchtigkeit und andere Chemikalien ist und somit besser für langfristige Aufbewahrungslösungen geeignet ist.
Wenn wir fertig sind, klicken wir auf „Save Seed“. Das Gerät fragt uns nun in welchem Slot und wir wählen in unserem Beispiel dafür den Slot 1.
Da der gespeicherte Seed eh nicht persistent ist, (d. h. SeedSigner speichert nach dem Ausschalten keine Informationen auf dem Gerät) müssen wir den Seed jedes Mal neu importieren, wenn wir eine Transaktion signieren möchten. In diesem Artikel und Vorgang sparen wir uns dies, da wir den SeedSigner mit Strom versorgt belassen.
Wir haben den Seed vorübergehend in Slot 1 gespeichert, dieser wird sicher wieder gelöscht, sobald das Gerät vom Strom getrennt und neu gestartet wird.
Deshalb gehört zu jedem Signieren einer Transaktion üblicherweise stets, den gespeicherten QR-Code vom Papier im ersten Schritt erneut in den SeedSigner zu importieren. Wir sparen uns dies wie gesagt in dieser Anleitung (unten bei Bitcoin versenden), da wir den SeedSigner für alle Prozesse in diesem Artikel aus Bequemlichkeit am Strom belassen.
Die xPub/zPub exportieren
Als Nächstes müssen wir die xPub/zPub auf unseren Computer importieren. Damit haben wir Zugriff auf alle Adressen, um in Zukunft Bitcoin zu erhalten und den Besitz zu überprüfen, ohne jedesmal das Gerät anzuschließen.
Wir können vorab alle Adressen generieren, die wir in Zukunft benötigen, um Bitcoin zu empfangen, während der Seed auf unserem eben angelegten und sicher verwahrten Papier gesichert bleibt.
Wir werden die Wallet in diesem Beispiel für die Verwendung mit „Single-Signature“ einrichten, also eine ganz normale Wallet ohne z. B. Multi-Signature Funktion.
Dafür gehen wir im Menü des SeedSigners auf „Seed Tools“ und dann auf „xPub from Seed“ – dort fragt uns das Gerät, ob wir einen bereits gespeicherten Seed wählen wollen, worauf wir „Yes“ antworten – dann dürfen wir den Speicher-Slot auswählen, in unserem Fall war dies Slot 1.
Nun zeigt uns der Screen erneute unsere 24 Wörter, welche wir mit dem Backup auf dem Papier abgleichen und im Anschluss den Wallet-Typ „Single Sig“, dann „Native SegWit“, dann „Sparrow Wallet“ (oder Bluewallet oder Specter) wählen. Jetzt wird uns nach dem Master-Fingerprint, dem Derivation Path und dem zPub auch der generierte QR-Code angezeigt, welchen wir in Sparrow, oder der von euch verwendeten Wallet, auf unserem PC importieren müssen.
Im Beispiel von Sparrow wählen wir den Offline Mode, (in Sparrow – „connected to public server, demonstration only“ + „Offline Mode“) und kreieren eine neue Wallet in Sparrow via File – New wallet – Single Sig – Native SegWit – Airgapped Hardware Wallet. Dort wählen wir den Seedsigner, lassen Sparrow auf die Computer-Kamera zugeifen und via unserem, auf dem Seedsigner gezeigten, QR-Code unseren xPub/zPub importieren.
Mit einem Klick auf „Advanced“ können wir hier der Wallet auch ein Passwort vergeben.
Nach dem Importieren des xPub/zPub in die Sparrow Wallet könne wir nun Bitcoin empfangen.
Ein Klick auf „Recieve“ in der Sparrow Wallet gibt uns unten rechts die Möglichkeit zwischen unseren verfügbaren Empfangsadressen zu wählen. Welche wir wählen ist an dieser Stelle egal, die gängige Bitcoin-Sicherheitsregel lautet, keine Adresse mehrfach zu verwenden.
Wir können eine neue Adresse erhalten, indem wir in Sparrow auf „Get next Address“ klicken oder eine Adresse auf der Registerkarte „Adressen“ auswählen. Der importierte xPub/zPub ermöglicht es dem Computer, alle Adressen zu berechnen, die zu dem spezifischen BIP39-Seed (unserer neuen, eben auf dem SeedSigner erstellten, Wallet) gehören.
So benötigen wir keinen Zugriff auf den SeedSigner, um eine neue Empfangs-Adresse in Sparrow zu erhalten.
An diese Adresse können wir jetzt selbst Bitcoin senden oder von jemand anderen Bitcoin dorthin senden lassen.
In Sparrow darauf achten, dass die Transaktionen natürlich erst gezeigt werden, wenn man online geht, die Sparrow Wallet sich mit einem (möglichst eigenen) Node verbindet und so die Transaktions-Details aus der Bitcoin-Blockchain abbilden kann.
Bitcoin ausgeben/versenden
Jetzt werden wir den SeedSigner für das verwenden, wofür er eigentlich primär geschaffen wurde, nämlich zum Signieren via QR-Code.
In diesem Beispiel versenden wir aus der Sparrow Wallet heraus.
In unserer Sparrow Wallet fügen wir eine beliebige Bitcoin Zieladresse und den Betrag ein, stellen die Gebühr ein, wie wir es in jeder „normalen“ Bitcoin-Wallet tun würden, und erstellen dann die Transaktion.
Bei Bitcoin sind die Erstellung der Transaktion und das Signieren übrigens immer 2 getrennte Schritte. Normalerweise abstrahieren Wallets dies aber (zeigen uns also beim Versenden diese beiden Schritte als einen Schritt an, nicht als zwei getrennte Vorgänge), da sie der Benutzerfreundlichkeit Vorrang geben.
Hier in Sparrow sehen wir nun, nach dem Erstellen der Transaktion, den Button „Finalize Transaction for Signing“. Darauf klicken wir und wählen „Show QR“.
Auf dem Seedsigner klicken wir auf „Scan QR“ und scannen mit der SeedSigner Kamera den in Sparrow gezeigten moving QR-Code. Ich wähle einen Transfer ohne Seedphrase und bekomme im nächsten Screen meine 24 Wörter angezeigt, welche ich wieder mit dem Papier-Backup abgleiche. Im Anschluss bekomme ich auf dem SeedSigner die TX-Details angezeigt inkl. Anzahl der Sats und der Transaktionsgebühr.
Ein Klick nach rechts auf dem SeedSigner signiert die Transaktion und zeigt uns einen neuen bewegten QR-Code auf dem SeedSigner an.
Diesen Scannen wir nun auf dem PC in Sparrow, indem wir dort den gezeigten QR-Code schließen, auf „Scan QR“ klicken und mit der PC Kamera den auf dem SeedSigner gezeigten QR-Code scannen. Ein Klick auf „Broadcast Transaction“ im Anschluss versendet die Bitcoin verbindlich.
Wenn wir versuchen würden, die Transaktion zu übertragen, ohne sie via SeedSigner zu signieren, werden die Full-Nodes keine gültige Signatur finden und die Transaktion nicht zulassen. Wir leiten also die unsignierte Transaktion an den SeedSigner, damit er sie signieren kann. Dies machen wir anhand des zu der Transaktion gehörenden animierten QR-Codes („Show QR“ in Sparrow Wallet).
Animierte QR-Codes enthalten mehr Informationen als normale QR-Codes.
Um eine Signatur zu erstellen, müssen wir die privaten Schlüssel verwenden, die wir auf dem Papier in Form eines QR-Codes, der die BIP39-Wörter darstellt, gesichert haben. Bei jedem neuen Start des Seedsigners importieren wir diese zuerst (via QR-Code vom Papier oder dem Menüpunkt: Seed Tools > Temp Seed Storage), was ich mir hier sparen konnte, da ich den SeedSigner, nach Erstellung der Wallet und Speichern des Seeds in Slot 1 des SeedSignerns, am Strom und somit im aktiven Zustand belassen habe.
Grundsätzlich ist es so:
1) Zunächst importieren wir den Seed (24 Wörter/Private Key) in den SeedSigner und verwenden dabei den QR-Code, den wir auf Papier gespeichert haben. Dabei überprüfen wir genau, ob die 24 Wörter übereinstimmen.
2) Beim Versenden von Bitcoin in z. B. Sparrow -Wallet werden wir aufgefordert, den PSBT QR zu scannen (PSBT steht für „partially-signed Bitcoin transaction“, was der animierte QR-Code darstellt, welchen wir nach Klick auf „Show QR“ in Sparrow Wallet sehen). Nun richten wir die SeedSigner Kamera auf den PC-Bildschirm.
3) Nach der SeedSigner Bestätigung hat dieser die Transaktion signiert (und damit seinen Zweck erfüllt), damit wir die signierte Transaktion an den Computer & Sparrow zurückgeben können, um sie an das Bitcoin-Netzwerk zu übertragen.
Hier verwenden wir wieder einen animierten QR-Code, aber dieses Mal scannen wir ihn mit der Kamera des Computers vom Screen des SeedSigner (nach Klick auf „Scan QR“ in Sparrow Wallet öffnet sich die Computer-Kamera). Nachdem dies geschehen ist, klicken wir auf „Broadcast Transaction“ und können direkt danach sehen, dass die Transaktion im Block-Explorer angezeigt wird.
Klingt, wenn man es noch nie selbst erledigt hat, zwar alles etwas kompliziert, ist aber tatsächlich das, was Bitcoin ausmacht und sollte daher auch von jedem der sich mit Bitcoin befassen möchte, einmal durchgespielt werden, um Transaktionen und Signaturen im Bitcoin-Universum zu verstehen.
Wer zusätzlich noch wissen möchte, wie man seine 24 Wörter zusätzlich auf dem Papier ganz einfach sicher verschlüsselt, liest sich dafür diesen Artikel durch.