Um einen Private Key zu generieren, bräuchte es keinen Computer oder Internetzugang, sondern lediglich eine Münze (Kopf = 0, Zahl = 1). Die Münze wird 256x geworfen und jeweils aufgeschrieben, ob das Resultat Kopf (0) oder Zahl (1) ist. Somit erhält man eine 256 Ziffern lange Zahl, den Private Key. Diese binäre Darstellung kann offline in die hexadezimale umgeformt werden. Aus dem Private Key lässt sich der Public Key und die Bitcoin Adresse ableiten. Ohne dass diese ans Internet gemeldet wird, können nun Einzahlungen getätigt werden. Die Blockchain akzeptiert alle Zahlungen, die an eine gültige Bitcoin Adresse überwiesen werden. Sämtliche Private Keys - und damit auch Bitcoin Adressen - sind sozusagen bereits vorhanden und durch den Münzwurf wird lediglich zufällig einer davon gewählt. Da es aber mehr Private Keys als Atome im sichtbaren Universum gibt, ist es praktisch unmöglich, dass zweimal der gleiche ausgewählt wird. Würde dies trotzdem mal geschehen, hätten zwei Personen Zugriff auf dasselbe Konto. Einzahlungen können zwar getätigt werden, ohne mit dem Internet verbunden zu sein. Jedoch keine Auszahlungen. Dafür wird ein Wallet benötigt. Ein Wallet ist eine App und Datenbank. Darin werden die Private Keys gespeichert, die zum Auslösen einer Überweisung benötigt werden. Im Wallet ist auch die Blockchain (oder Teile davon) gespeichert. Daraus kann die Wallet Software Kontostände berechnen. Die Bestände der einzelnen Bitcoin Adressen können dann zu einem Wallet Kontostand zusammengefasst werden. Es gibt unterschiedliche Wallets:
Offline Wallet, Cold Storage Diese bieten die höchste Sicherheit. Zwei Computer Wallet Hierbei wird das Offline Wallet auf einem Computer erstellt, der danach keine Verbindung mehr zum Internet hat. Die einzige Funktion besteht darin, eine online erstellte Transaktion offline mit der digitalen Signatur zu versehen. Diese beweist den Besitz des Private Keys, ohne dass dieser preisgegeben wird. Die signierte Transaktion kann dann vom Online-Wallet ausgeführt und durch die Miners bestätigt werden. Der online-offline Transfer kann über einen USB-Stick oder QR-Code geschehen. Wichtig ist, dass vom Offline-Wallet eine Sicherungskopie erstellt wird. Papier Wallet Dieses kann zum Beispiel bei bitaddress.org kreiert werden. Dabei sollte der Computer offline sein. Um die Sicherheit zusätzlich zu erhöhen, können mehrere Adressen generiert und zusätzlich ein Passwort für die Verschlüsselung (BIP0038) angegeben werden. In der Grafik ist ein verschlüsselter Private Key dargestellt, daher die Farbe blau und das Kürzel 6P. Wiederum auf bitaddress.org kann der Private Key entschlüsselt werden. Ausgedruckt kann das Papier Wallet dann in einen Safe gelegt werden. Falls der Safe bei einer Bank liegt, würde ich keine Verschlüsselung vornehmen. Sie könnten das Passwort verlieren, womit Ihre Bitcoins verloren wären! Der Private Key könnte auch direkt durch Münzwurf auf Papier aufgeschrieben werden. Um langfristig Bitcoins zu halten, ist dies eine sehr sichere Variante. Sobald diese aber ausgegeben werden sollen, kommt man an einem digitalen Wallet nicht vorbei. Um nur den Kontostand abzurufen, importieren Sie nur die Bitcoin Adresse (siehe unten Load & Verify). Sollen Zahlungen getätigt werden, muss aber auch der Private Key ins Wallet transferiert werden (Spend). Der Import kann von Hand oder über den QR-Code erfolgen. Hardware Wallet Dieses bieten den besten Kompromiss aus sehr hoher Sicherheit und einfacher Handhabung. Es ist sozusagen ein grosser USB-Stick, der nur dafür entworfen wurde, ein Wallet zu sein. Keine Software kann auf ihm installiert werden (nicht einmal ein Zufallsgenerator), was ihn sehr sicher macht. Ein verloren gegangenes Gerät kann ersetzt und das Wallet wiederhergestellt werden. Dazu braucht es den Seed (Keim), ein Passwort bestehend aus 12-24 Wörtern, das an einem sicheren Ort aufbewahrt werden muss. Es ist heute üblich, längere Passwörter zu wählen, die einfach zu merken sind, als kürzere mit Sonderzeichen. Beispiel: Trezor Obiger TREZOR speichert nur die Private Keys und signiert Transaktionen. Kein Private Key wird an den Computer gesendet. Bei einer Transaktion wird das Template von der Bitcoin Software an den TREZOR geschickt. Dieser zeigt auf dem Bildschirm die Empfänger Bitcoin Adresse und den Betrag an. Durch drücken der ok Taste, wird die Transaktion bestätigt und TREZOR schickt die signierte Transaktion zurück an den Computer. Selbst wenn letzterer durch einen Virus befallen ist, hat dies keinen Einfluss auf die Sicherheit der Transaktion. Der TREZOR selber ist durch einen PIN gesichert. Die PIN Tastatur auf dem Computer sieht so aus: Die Anordnung der Tastatur wird auf dem TREZOR angezeigt: Nun kann der PIN auf dem Computer eingegeben werden. Ohne TREZOR nützt der PIN nichts, da die Anordnung der Tastatur nicht bekannt ist. Bei jeder PIN Fehleingabe wird die Zeit, die abgewartet werden muss, exponentiell erhöht; nach dem 20-ten Versuch sind dies bereits 2 Tage. Da der PIN praktisch nicht geknackt werden kann, nützt auch der TREZOR alleine nichts. Online Wallet Dieses befindet sich im Browser auf dem eigenen Computer. Installation und Sicherungskopien geschehen automatisch. Sicherheit ist nun zentral. Der Anbieter muss vertrauenswürdig und technisch auf dem neuesten Stand sein. Der Private Key wird verschlüsselt im Wallet gespeichert und nur zum Signieren von Transaktionen kurze Zeit entschlüsselt. Zusammen mit dem sogenannten Chain Code oder Seed (=Keim) können viele Bitcoin Adressen generiert werden (der technische Teil befindet sich hier im hinteren Teil). Sicherheitshalber besteht der Chain Code meistens aus 12-24 Wörtern und ist daher sehr schwierig zu knacken. Er entspricht häufig dem Passwort für den Wallet Zugriff. Ein Hacker oder Virus könnte über elektronisches Beobachten der Tastatur in den Besitz des Chain Codes gelangen, warten bis der Private Key entschlüsselt wird und die Bitcoins stehlen. Deshalb empfiehlt sich, zusätzlich die 2-Faktor-Authentifizierung (2FA) zu benutzen, welche die Sicherheit signifikant erhöht. Eine Drittpartei, sozusagen ein Treuhänder, generiert dabei über Google Authenticator einen zufälligen 2FA Code, der auf dem Handy abrufbar ist. Zum Auslösen von Transaktionen werden 2 von 3 digitalen Unterschriften gebraucht.
Eine signierte Transaktion wird zusammen mit dem 2FA Code, jedoch ohne Private Key, an die Drittpartei geschickt, dort überprüft und ans Internet weitergeleitet. Falls das Handy verloren geht, kann das 2FA Passwort auf einem neuen manuell eingegeben werden. Light Wallet Ein Wallet, das die ganze Blockchain herunterlädt, betätigt sich als sogenannte "Full Node". Pro Block werden sowohl Kopfzeile wie auch Merkle Tree und Transaktionen benötigt. Dafür wird Speicherkapazität von bereits 85 GB benötigt und der ganze Download kann mehrere Tage in Anspruch nehmen. Für normale Computer kann das Anhängen von neuen Blöcken länger brauchen als deren Entstehungen, womit die lokale Blockchain laufend im Rückstand ist. Spätestens über ein Handy ist dieser Vorgang sowieso nicht mehr möglich. Transaktionen benötigen 99.9% des Speicherbedarfs. Meistens genügt die abgespeckte (light) Version, die etwa 1000x weniger Speicherplatz benötigt. Ein Light Wallet lädt keine Transaktionen (Tx1, Tx2...), sondern nur die Kopfzeilen der Blockchain (blau) herunter. Falls nun jemand eine Zahlung tätigen möchte, muss das Light Wallet erstmals prüfen, wie hoch der Kontostand der tangierten Bitcoin Adresse ist. Da es selbst keine Transaktionsliste führt, muss es die UTXO von den Full Nodes anfordern, die die ganze Blockchain herunterladen und überwachen. Wie kann das Light Wallet aber wissen, dass die Daten nicht manipuliert sind? Dazu muss der Miner auch den Merkle Tree Weg von der Transaktion bis zum Root-Hash mitliefern.
Beispiel: Das Light Wallet erhält Tx3 von einem Miner. Damit das Light Wallet sich vergewissern kann, dass die Daten stimmen, muss er auch Hash4 und Hash12 mitliefern. Wieso? Die TransaktionsID von Tx3 entspricht bereits Hash3. Damit kann über Hash4 Hash 34 und in einem weiteren Schritt über Hash12 die Root-Hash berechnet werden. Nur wenn die Daten stimmen, wird der berechnete Root-Hash mit dem vom Light Wallet gespeicherten Root-Hash übereinstimmen. Falls der Kontostand genügt, kann das Light Wallet nun die Transaktion auslösen, sagen wir Tx5. Wie gezeigt wurde, sollten bei grösseren Beträgen mehrere Blöcke abgewartet werden, bevor das Settlement abgeschlossen wird. Dazu muss das Light Wallet etwas später Tx5 und zugehörige Hashes anfordern, um zum Root-Hash zu gelangen. Damit weiss das Light Wallet, in welchen Block Tx5 aufgenommen wurde. Nachdem die Blockzugehörigkeit geklärt ist, wartet das Wallet mit dem Settlement der Zahlung noch ab, bis die nachfolgenden 5 Blöcke bestätigt wurden und die Transaktion nicht mehr rückgängig gemacht werden kann. Bleibt zu sagen, dass natürlich auch Drittfirmen eine Kombination dieser Wallets anbieten. Dabei ist die Vertrauenswürdigkeit entscheidend. Einen guten Ruf hat die US Firma Coinbase, die eine Banklizenz besitzt und Bitcoin Einlagen teilweise gegen Diebstahl versichert. https://bitcoin.org https://bitcointrezor.com/ |