Bitcoinsulting Image

Bitcoins wirklich sicher speichern

safe
Es gibt verschiedenste Schadsoftware (Trojaner), die auf Computern nach Bitcoins (genauer: den privaten Keys oder Wallet-Dateien) sucht und diese stiehlt. Hierdurch ist es schon zu vielen schmerzlichen Verlusten von Bitcoins gekommen. Besonders gefährdet sind traditionell Windows-Rechner, aber auch andere Betriebssysteme sind nicht grundsätzlich sicher.

Daher stellt sich die Frage, wie man Bitcoins dauerhaft sicher speichern kann, ohne Gefahr zu laufen, dass sie gestohlen werden.

Einen ersten Lösungsansatz geben wir hier, weitere Infos im Folgenden:

1 - Offline Wallets/Cold Wallets/Cold Storage und Paper Wallets

Was hat es mit diesen Schlagwörtern auf sich?

  • Mit "Paper Wallet" ist einfach ein privater Key gemeint, der (sinnvollerweise) auf einem Offline-Computer generiert wurde und auf Papier ausgedruckt wurde. Damit ein solches "Paper Wallet" wirklich auch nach paranoiden Maßstäben sicher ist, muss gewährleistet sein, dass der Computer, welcher den privaten Key erzeugt hat, selbst noch nie im Internet war und nach Generierung des privaten Keys nie mehr online geht (denn es könnte sich ja eine Schadsoftware auf dem Computer befinden, welche den offline generierten Key abfängt und bei nächster Gelegenheit online an den Autor der Schadsoftware weiterleitet).

    Aus ähnlichen Gründen darf auch der Drucker, auf dem man das Paper Wallet ausdruckt, keine Internetverbindung haben, denn auch Drucker wurden schon gehackt und könnten Ihren Ausdruck ins Internet versenden.

  • Ein "Offline Wallet" (synonym "Cold Wallet" oder "Cold Storage") ist ein Überbegriff von "Paper Wallet". Er bezeichnet ganz allgemein einen privaten Keys, der "offline", also ohne Internet-Verbindung, gespeichert ist. Ein Paper Wallet ist somit ein Spezialfall eines Offline Wallets. Jedoch könnte der Offline-Computer, welcher den privaten Key erzeugt, diesen auch in elektronischer Form z.B. auf einem USB-Stick oder auf CD-ROM ablegen, ohne ihn auszudrucken. Auch könnte der private Key mit einem sehr sicheren Passwort geschützt sein, z.B. innerhalb einer AES256-verschlüsselten Zip-Container-Datei oder Truecrypt-Container-Datei.

    Im Prinzip könnte man eine derart geschützte Container-Datei auch wieder (mittels USB Stick oder anderem Speichermedium) zu einem Online-Computer transferieren und von dort zwecks Backup in die Cloud (Online-Speicher) hochladen. Der private Key wäre dann zwar physikalisch wieder "online" (hot), aber solange der Schutz der Containerdatei durch Verschlüsselung und Passwort nicht geknackt werden kann, ist der private Key kryptografisch vom Internet weiterhin zuverlässig abgeschirmt und damit de-facto immer noch ein "Cold Storage" ("kryptografisches Cold Storage" statt "physikalisches Cold Storage"). Wichtig ist hier z.B., dass das Passwort der Containerdatei niemals auf einem Online-Computer eingegeben wird, denn eine Schadsoftware (z.B. ein Keylogger) könnte das Passwort mitlesen.

2 - Software Tools für Offline Wallets

Wir unterscheiden zwei Arten von Software für Cold Storage Zwecke:

  1. Software, die Bitcoin Private Keys (und natürlich die dazugehörigen Bitcoin Adressen) offline generieren kann, so dass man bitcoins, die man später an diese Adressen schickt, sicher sind vor Diebstahl durch Schadsoftware.

  2. Software, die zusätzlich(!) in der Lage ist, Teilbeträge der auf diesen privaten Keys gespeicherten Bitcoins zu überweisen, ohne dass der private Key jemals seine geschützte "Cold Storage" Umgebung verlässt, also niemals "Kontakt" zu einem Online-Computer hat.


Software Programme, die Features der zweiten Kategorie besitzen, sind das Bitcoin Wallet Armory (resourcenhungrig, weil es den Bitcoin-qt Client als Basis benötigt, so dass die gesamte Blockchain auf dem Computer abgespeichert ist), oder Electrum (resourcensparender "Thin Client"). Beide Programme sind für Windows, Linux und MacOS verfügbar.

Für Android und iPhone gibt es seit März 2014 auch eine entsprechende Software-Lösung von dem chinesischen Entwicklerteam "getcai". Die Software heißt Bither (Google Play hier). Hierzu braucht man zwei Smartphones (iPhone, Android, oder gemischt), wobei eines ein "Nur-Offline" Phone ist, auf dem die Offline-Version von Bither installiert wird. Sinnvollerweise bietet sich hier ein altes ausrangiertes Smartphone an, oder z.B. ein sehr preisgünstiges Einsteiger-Android-Phone (Nov. 2014: Z.B. Samsung Galaxy Pocket Neo mit Android 4.x für gut 50 Euro).

Die Arbeitsweise (Workflow) der sehr sicheren Software-Lösungen dieser "zweiten Kategorie" ist überall die selbe, wenn man bitcoins vom Offline-Gerät ausgeben will:

  • Als erstes wird auf dem Online-Gerät die Überweisung vorbereitet, um sie dann auf das Offline-Gerät zu übertragen (mittels Speicherkarte/USB Stick, oder [bei "Bither"] durch gegenseitiges abscannen von QR-Codes)
  • Als nächstes signiert man die Transaktion mit dem Offline-Gerät, auf dem sich der für's Signieren erforderliche private Schlüssel befindet, und überträgt die signierte Transaktion wieder zurück auf das Online-Gerät (erneut mittls Speichermedium oder QR-codes).
  • Schließlich sendet man die signierte Transaktion vom Online-Gerät ins Bitcoin-Netzwerk.

Das folgende Bild zeigt das Prinzip dieses Workflows (draufklicken für Vollbild-Ansicht):

Bei "Bither" gilt das geiche Prinzip wie im Bild gezeigt, nur dass man kein Speichermedium hin- und hertragen muss, sondern die jeweilige Information per QR-Code zwischen den Geräten übertragen wird.

An nächster Stelle ist die Software Mycelium für Android zu nennen. Wenn Mycelium auf einem Gerät installiert wird, das keinerlei Internet-Verbindung hat, kann man hiermit ebenfalls sichere private Keys generieren und daraus z.B. Paper Wallets kreieren. Jedoch ist es mit Mycelium noch nicht möglich, Bitcoins von einem solchen "Paper Wallet" zu senden, ohne dass der private Key kurzfristig Kontakt mit einem "hot" device (einem mit dem Internet verbundenen Android-Gerät) hat. Dieser Kontakt ist zwar sehr kurz, und Mycelium speichert bei diesem Vorgang "spend from cold storage" den privaten Key auch nur kurz im Arbeitsspeicher und niemals im Flash. Dennoch ist theoretisch ein Angriffsszenario denkbar, bei dem in diesem Moment eine Schadsoftware den privaten Key aus dem Arbeitsspeicher ausliest und stiehlt.


Lösungen, die der ersteren Kategorie angehören, sind Tools, die überhaupt keine Bitcoin Client Funktion besitzen sondern sich lediglich darauf beschränken, Bitcoin Keys (private Keys und zugehörige public Keys und Adressen) zu generieren. Hierzu gehört das Tool vanitygen (siehe auch hier oder hier), welches darauf spezialisiert ist, sehr effizient Keys zu generieren, deren Adressen einem bestimmten Muster entsprechen (z.B. Adressen, die mit einer bestimmten Zeichenfolge beginnen). Ein weiteres Tool dieser Art ist bitaddress.org. Dies ist eigentlich eine Web-Seite, jedoch kann man den Quellcode, d.h. die HTML-Datei mit darin enthaltenem Javascript Code, einfach auf einem Offline-Computer speichern, dort im Browser öffnen, und dann Bitcoin-Adressen generieren. Dieses Tool hat sich sogar explizit auf die Fahne geschrieben, Paper Wallets zu generieren.

3 - Offline Wallet ohne Bitcoin Client - manuelle Handhabung

Hier wird ein manueller Weg beschrieben, wie Sie ohne eine spezielle Bitcoin Client Software Bitcoins von einem Offline Wallet aus überweisen können. Diese Methode (ursprüngliche Beschreibung hier) erscheint etwas techniklastig, ist aber für den normalen erfahrenen Computer-Benutzer durchaus machbar.

Vorbereitungen: Sie brauchen...

  • ...einen ONLINE PC mit einem normalen Webbrowser (der PC darf ruhig mit Schadsoftware infiziert sein)

  • ...einen OFFLINE PC mit einem normalen Webbrowser (JavaScript aktiviert), auf dem Sie den Inhalt dieser zip Datei (Quelle hier - ohne Gewähr) an einen Ort Ihrer Wahl extrahiert haben.

  • ...die Adresse und den privaten Key von dem aus Sie einige (milli-/micro-)Bitcoins überweisen möchten, z.B. Ihr Paper Wallet.

Die Schritte:

  1. [ONLINE] Gehen Sie nach http://blockexplorer.com/q/mytransactions/ und vervollständigen Sie das Adress-Feld des Browsers entsprechend dem Schema http://blockexplorer.com/q/mytransactions/1AdresseVonDERichPrivatenKeyHabe, wobei "1AdresseVonDERichPrivatenKeyHabe" die Adresse ist, von der Sie die Bitcoins ausgeben möchten (also z.B. Ihre Paperwallet-Adresse). Wenn alles richtig ist, sollte es keine Error-Ausgabe im Browserfenster geben.

  2. [ONLINE] Kopieren Sie den kompletten angezeigten Text-Inhalt des Browsers, fügen ihn in eine neue Text-Datei ein und speichern diese auf einem USB-Stick.

  3. [OFFLINE] Öffnen Sie die Datei "offlineTransaction.html" in einem JavaScript-fähigen Browser, stecken Sie den USB-Stick ein und copy-pasten Sie den Inhalt der Text-Datei des USB-Sticks in das Feld "Transaction History" des Browsers.

  4. [OFFLINE] Geben Sie nun auch den privaten Key, von welchem Sie überweisen möchten, in das Feld "Private key in base 58" ein. Dies ist der private Key, der zu Ihrer vorhin gewählten Absenderadresse (1AdresseVonDERichPrivatenKeyHabe) korrespondiert. Klicken Sie dann den "Parse" Button.

  5. [OFFLINE] Füllen Sie nun auch noch die drei verbleibenden Felder aus: An welche Adresse möchten Sie überweisen (Target Address, z.B. 1DieZiELadresseMeinerUeberweisung), welchen Bitcoin-Betrag (Amount), und welche Transaktionsgebühr (Fee - z.Z. 0.0001 Bitcoins empfohlen [Okt. 2014]).

  6. [OFFLINE] Klicken Sie auf den "Generate" Button und copy-pasten Sie die signierte Transaktion aus dem untersten Feld in eine neue Text-Datei, die Sie ebenfalls auf dem USB-Stick speichern.

  7. [ONLINE] Stecken Sie den USB-Stick in Ihren Online-Computer und gehen nach http://blockchain.info/pushtx (die Alternative https://coinb.in/send-raw-transaction.html hat bei einem Test nicht funktioniert), fügen Sie den Textstring der signierten Transaktion vom USB-Stick in das große Feld ein und klicken Sie den "Submit" bzw. "Send" oder "Broadcast Transaction" Button.

    Hinweis: Bevor Sie dies tun, möchten Sie die Daten Ihrer signierten Transaktion vielleicht noch einmal überprüfen. Dies können Sie unter http://blockchain.info/decode-tx tun.

Sie haben jetzt eine sichere offline-signierte Überweisung manuell durchgeführt, ohne spezielle Software installiert zu haben.

Um zu überprüfen ob alles geklappt hat gehen Sie z.B. nach https://blockchain.info/address/1AdresseVonDERichPrivatenKeyHabe oder http://blockexplorer.com/b/1AdresseVonDERichPrivatenKeyHabe, wo die Überweisungsdaten zu sehen sein sollten.

4 - Fazit

Es gibt durchaus Möglichkeiten, Bitcoins (genauer: die privaten Keys) extrem sicher aufzubewahren und vor dem Zugriff durch Schadsoftware wie Trojaner sehr wirkungsvoll zu schützen.

Der entscheidende Schritt zur sicheren Aufbewahrung liegt in der Verwendung von "Cold Storage/Offline Wallets" (Spezialfall "Paper Wallets") und reinen Offline Geräten. Jedoch bedeutet diese Vorgehensweise mehr Aufwand mit Hinblick auf Aneignung von Wissen und Handhabung, und auch mit Hinblick auf die Computer-Ausstattung, weil ein separates reines Offline-Gerät (PC, Netbook oder Android Smartphone/Tablet) benötigt wird.

Darum lautet die allgemein empfohlene Praxis, für kleinere Bitcoin-Beträge des "täglichen Gebrauchs" (deren Verlust man notfalls verschmerzen kann) weniger paranoide Sicherheitsstandards walten zu lassen, um sich die Handhabung von Bitcoins nicht unverhältnismäßig zu erschweren. Für größere Bitcoin-Ersparnisse wird dagegen die Verwendung von Offline Wallets empfohlen. Auf diese Guthaben greift man nur selten zu, entsprechend ist auch der Mehraufwand vertretbar.

5 - Links