Posts Tagged ‘Trezor’

BitCoins sicher speichern

Flattr this

Motivation

Wer wie ich eine Weile mit BitCoins herumgespielt und alles mögliche ausprobiert hat fängt an die Art des Bezahlens zu mögen. Doch bisher ging es nur um Spielgeld. Hier mal 10 € und dort mal 20 € und monatlich an der Börse evtl. 50 € in BitCoins getauscht. Jetzt aber, wenn man richtig einsteigt, seine Geschäfte gefunden hat bei denen man bezahlen kann dann häufen sich die BitCoins langsam im Wallet z.B. um auf einen neuen Laptop zu sparen. Dabei stellt man sich unweigerlich die Frage – wie sicher bin ich aktuell eigentlich schon unterwegs? Am Ende wird man feststellen: „Ich brauche ein sicheres Wallet“. Dieser Artikel beschreibt meine ausprobierten Lösungen dazu. 

Sicherheitsaspekte

Wie sicher bin ich also unterwegs.  Gehen wir das doch mal durch. Die BitCoins kaufe ich auf http://www.bitcoin.de. Dort melde ich mich über 2 Phasen Authentication an. Zunächst Nutzername/Passwort und dann die Zahl (timepad)  aus dem google Authenticator. Um Transaktionen sehr schnell durchführen zu können habe ich ein physisches Konto bei der Fidor Bank und habe BitCoin.de mit Fidor über ein entsprechendes API im Portal verbunden. Technisch kümmern sich da Bank und Börse drum, ich muss nix tun außer Geld auf dem Fidor Konto zur Verwendung auf bitcoin.de freischalten. Mir stellt sich der Vorgang wie beim Reservieren von Beträgen auf einer Kreditkarte dar. Anschließend kaufe ich die BitCoins auf bitcoin.de. Minuten später liegen diese auf bitcoin.de. Letzteres ist eine Online-Börse mit Servern in Deutschland und hohen Sicherheitsauflagen aber dennoch technisch gesehen das Gleiche wie Mt. Gox und kann damit also jederzeit vom Netz genommen werden ohne einen BitCoin auszuzahlen. Daher sollten die erworbenen BitCoins in einem eigenen sicheren Wallet abgelegt werden.

Die Börse ist Ihr Bankautomat

Ab jetzt geht es also nur noch um die Sicherheit des Wallets selber. Der komplette Workflow bislang kann als sicher angesehen werden, da die Unternehmen in der Regel ihr Bestes geben aber vor allem da es sich bei diesem Workflow um den temporären Transfer kleiner Beträge handelt. Selbst wenn hier etwas schiefgeht ist nicht das ganze Geld verloren sondern nur das gerade erworbene – von daher ist es natürlich sinnvoll nicht gleich große Mengen von BitCoins an der Börse zu erwerben sondern lieber mehrmals kleine Beträge zu kaufen. Welches Risiko man bei der Höhe der Geldbeträge eingeht hängt von einem selbst ab. Vergleichbar ist die Situation mit dem Abheben am Bankautomaten. Heben Sie vor dem Einkauf 100 € ab oder das gesamte Budget für den Monat? Und falls Sie ein Haus kaufen wollen – holen Sie das Geld vom Bankautomaten und bringen es persönlich zum Verkäufer oder organisieren Sie die Übergabe bargeldlos? Also genauso ist es beim Kauf von BitCoins an einer OnlineBörse. Die Börse ist Ihr Bankautomat und Sie werden und sollten dort keine riesigen Summen kaufen – zumindest nicht auf ein Mal und nicht bevor die zuvor gekauften Coins in Ihrem sicheren Wallet gelandet sind.

Clientarten und ihre Wallets

Jede BitCoin App mit der sich Überweisungen und Käufe tätigen lassen bringt bisher auch ein eigenes Wallet mit.

bitcoin core

Nun meine erste BitCoin Anwendung auf dem Computer war bitcoin core, heruntergeladen von bitcoin.org. Das Wallet der Anwendung lässt sich an einen sicheren Ort wegspeichern und mit einer Passphrase schützen. Gut das genügt generell, dennoch sah ich folgende Probleme. Die Anwendung arbeitet als Full Node Client. Das bedeutet das die komplette Blockchain erstmal heruntergeladen wird und das sind inzwischen mehr als 17 GByte! Das dauert teilweise einige Tage – vorher ist das Wallet nicht sicher einsatzbereit. Möglicherweise wird auch der Platz auf dem Rechner dann etwas knapp. Wie auch immer jedenfalls wenn die Anwendung einige Tage oder gar Wochen nicht gestartet wird, muss diese beim ersten Start die fehlenden Deltas der Blockchain herunterladen – das dauert schon wieder. Da ist mal nix mit ein Jahr nicht nutzen und dann mal eben schnell überweisen. Full Node Clients sind für das Netzwerk notwendig aber für den Nutzer nur hinderlich. Von daher ist es mir egal wie sicher es wirklich ist es wird gekickt. Auch ist ein Punkt zu beachten. Falls das Backup vom Wallet mal zerstört, gelöscht oder anderweitig verloren geht und das Original evtl. auch ist kein Recovering möglich – alles ist futsch. Den gleichen Effekt hat auch eine vergessene Passphrase – niemand wird das Wallet wieder öffnen können.

SPV Clients

Mein nächster BitCoin Client war das bitcoin Wallet von Andreas Schildbach auf Android. Hierbei handelt es sich um einen SPV (Simplified Payment Verification) Client. Dieser saugt nun nicht mehr die komplette Blockchain aus dem Netz sondern bedient sich der Header aus der Blockchain. Er filtert aus allen Headern der Chain die heraus welche die eigenen Walletadressen betreffen (Bloom Filter). Dies kann er nur tun indem er Kontakt zu Full Node Clients aufnimmt, weshalb diese im Netz möglichst zahlreich vertreten sein sollen. Auch dieser Client kann sein Wallet mit einer Passphrase schützen und exportieren. Als Exportort kann man dropbox wählen besser wäre aber irgendwas mit Verschlüsselung wie wuala (war sehr gut und vermutlich deshalb abgeschaltet) oder Tresorit (geht so als temporäre Lösung). Was bleibt ist genau diese fade Nachgeschmack: „Jetzt liegt mein ganzes Geld im Wallet und das Wallet auf Wuala, Tresorit oder dropbox und was wenn die mal crashen oder gehackt werden?“. Also war das wohl noch nicht die angestrebte Lösung. Außerdem ist Recovering des Wallets glaube auch hier noch nicht möglich.

Serverabhängige Clients

Also suchte ich weiter. Der nächste Client war Elektrum. Dieser Client ist auf eine Serverfarm im Internet angewiesen. Diese Server stellen die Full Node Clients bereit und der Client kann effizient auf deren Informationen zugreifen. Somit muss auch Elektrum die Blockchain nicht erst herunterladen. Daher ist der Client sofort einsatzbereit und natürlich lässt sich das Wallet per Passphrase schützen und es lässt sich auch ein Backup exportieren. Allerdings ist man darauf festgelegt den dedizierten Servern zu trauen. Da diese Open Source sind ist die Hürde schnell genommen. Was jetzt als enormer Pluspunkt hinzukommt ist das Recovering. Jedes Wallet gibt nach seiner Erstellung einen sogenannten Seed von sich Preis. Das ist eine Folge von z.B. 24 Wörtern. Diese Wörter sollte man aufschreiben und an einem sicheren Ort hinterlegen. Nun benötigt man eigentlich kein Backup mehr, denn das Wallet kann jederzeit aus dem Seed wiederhergestellt werden. Nach der Wiederherstellung sind auch alle BitCoins noch da selbst wenn das Wallet einem jetzt ganz andere Adressen als Empfangsadressen anzeigt. Das liegt ein bisl an der Magic von Public Key Verfahren und deren Verknüpfung mit den BitCoin Adressen und deren Beschreibung in der Blockchain. Den Teil dürfen wir einfach mal als technisch sicher annehmen, da genau das den Kern der BitCoin Verwaltung darstellt und dieser genügend öffentlich diskutiert wurde (Wer Details sucht befasse sich mit dem Problem „Die Byzantinischen Generäle“). Also was haben wir jetzt noch an Sicherheitsbedenken? Ein Backup brauchen wir nicht, nur die 24 Wörten müssen in einen physischen Safe gelegt werden, auf jedem Gerät auf dem ich Elektrum installieren kann ist es mir möglich mit diesen Wörtern mein aktuelles Wallet (wieder)herzustellen. Das Wallet selber kann und sollte ich mit einer Passphrase schützen. Einzig wenn die Serverfarm ausfällt oder behördlich abgeschaltet wird sitze ich dumm da, da mein Wallet evtl. nicht mehr funktioniert. Selbst wenn es noch funktioniert kann ich ohne Serverfarm keine Transaktionen mehr durchführen und die BitCoins können mein Wallet nicht mehr verlassen.

Hardwarewallets

Die Hardwarewallets (Trezor) welche ich bislang kenne sind komplett vom Client getrennt. Das heißt sie sind nur noch Wallets und man kann sie über beliebige Clients ansprechen welche natürlich das Protokoll verstehen müssen. Das Hardwarewallet generiert bei Inbetriebnahme einen Seed und damit auch diverse private Schlüssel für die zukünftigen BitCoin Empfangsadressen. Den Seed schreiben wir wieder auf und legen ihn im physischen Safe ab. Dann vergeben wir noch eine PIN welche später zur Bestätigung von Transaktionen benötigt wird.Die privaten Schlüssel werden das Hardwarewallet nie verlassen. Transaktionen die zu bestätigen sind werden vom Client z.B. Elektrum (ja das kann auch mit Hardwarewallets) oder Mycelium an das Hardwarewallet als unsignierte Transaktion gesendet. Das Hardwarewallet signiert die Transaktion und gibt sie an den Client zurück. Dies ist möglich da das Wallet selbst über eine CPU verfügt. Zur Bestätigung der Tranaktion ist natürlich Ihre PIN einzugeben. Diese PIN Eingabe ist bei Tresor richtig gut gelöst. Auf dem PC erscheint das Eingabefeld welches aussieht wie ein Telefonziffern Feld bei dem alle Ziffern durch Sterne ersetzt wurden. Auf dem Display des Hardwarewallets erscheint das gleiche Eingabefeld aber mit Ziffern. Sie müssen nun auf dem PC die richtigen Sterne drücken um ihre PIN einzugeben. Bei der nächsten Transaktion befinden sich die Ziffern natürlich an ganz anderen Stellen so das Keylogger und Capture Replay Tools keine Chance haben die PIN zu erraten oder erneut einzugeben. Mit dieser Kombination sind wir nun wie ich denke recht sicher unterwegs. Persönlich habe ich noch eine kleine zusätzliche Sicherung eingebaut um a die Bequemlichkeit zu erhöhen und b meine stets nach weiterer Sicherheit lechsende Magengrube zu befrieden. Ich habe mir noch ein 2. Hardwarewallet gekauft (Ledger) und nutze diese für die täglichen Transaktionen wie eine Geldbörse. Die monatlich gekauften BitCoins werden stets an das 1. Hardwarewallet gesendet. Der Vorteil diese muss nicht mal am Computer angeschlossen werden um diese zu empfangen. Erst wenn ich BitCoins ausgeben will schließe ich mein Trezor (1. Wallet) an den PC an und überweise einen kleinen Betrag für den heutigen Tag oder die aktuelle Woche z.B. 0,3 BTC auf mein Ledger (2.) Wallet. Mein Trezor geht danach wieder in den Safe und Ledger kommt in die Hosentasche. Klar ist hoffentlich das ich Ledger nie verlieren sollte. Aber auch in dem Fall gibt es Abhilfe welche in der Praxis aber evtl. so lange dauert das die Wallet bereits geknackt und geleert wurde. Aber auch dann ist nur ein kleiner Betrag verloren der Rest liegt immer noch schön auf meinem 1. Wallet auf Trezor.

Cold Wallets

Die einzigen Gefahren die ich jetzt noch sehe sind Schadprogramme wie Keylogger welche versuchen die PIN Eingaben mit zu schreiben, Trojaner und andere Programme welche versuchen an Kopien meiner Client Wallets zu kommen. Wenn es einem Angreifer gelingen sollte meinen Rechner so zu infiltrieren, dass er anschließend meine Client Wallet (Hot Wallet) und die eingegebene PIN bekommt dann kann er meine BitCoins aus der HotWallet ausgeben. Dies kann aus meiner Sicht nie passieren wenn gerade ein Hardwarewallet genutzt wird. Allerdings sonst schon. Daher kann man auch eine Wallet auf einem Rechner erstellen der niemals online geht (Cold Wallet). Von dieser lässt sich dann eine Watch-Only Wallet exportieren und auf dem Internetrechner im Hot-Walletbereich nutzen. Zum Signieren von Transaktionen ist jedoch der export einer unsignierten Transaktion z.B. per USB an die Cold Wallet notwendig, diese signiert dann offline und mit die signierte Transaktion geht per USB Stick wieder urück zur HotWallet welche diese dann im Netz bekannt gibt und diese in die Blockchain einarbeiten lässt.

Prinzipiell sind Cold Wallets der sicherste Weg seine BitCoins zu speichern aber eben auch der Umständlichste. Daher ist er bei größeren Beträgen auf jeden Fall zu gehen aber wer keine Ersparnisse in BTCs ablegt wird ihn vermutlich nie gehen müssen. Bitte auch beachten das es noch die Möglichkeit gibt Paper Wallets anzulegen. Letzlich muss das jeder für sich selbst entscheiden. Ich bleibe erstmal bei meiner Kombination aus Hardwarewallets.

Allen die bis jetzt noch Angst vorm BitCoin hatten weil sie nicht verstehen konnten wie das System funktioniert und denen daher auch die Sicherheit fehlte – all denen hoffe ich geholfen zu haben die Sicherheitsaspekte etwas besser zu verstehen. Abschließend noch ein paar Regeln die immer gelten sollten:

  • Jedes Wallet ist mit einer Passphrase oder zumindest mit einer PIN zu schützen, niemals das Öffnen einer Wallet ohne Sicherheitscode erlauben.
  • Tranaktionen müssen immer per PIN bestätigt werden, niemals Transaktionen ohne PIN Eingabe zulassen.
  • Ein Seed muss aufgeschrieben und an sicherem Ort verwahrt werden.

 

Nützliche Literatur