Author

Topic: Paper-Wallet (Read 885 times)

legendary
Activity: 1882
Merit: 1108
September 04, 2013, 08:39:24 AM
#6
Ok, ich kenn leider nicht genau alle Details, aber da es eine Private/Public key Struktur ist, bleiben nicht viele Lösungen. Ich weis nicht ob man den Privatekey löschen kann aber den dazugehörigen Publickey im Client drin lassen kann. Und auch nicht ob man wirklich noch sehen kann, das etwas geschickt wurde. Aber das könnte aufgrund der Blockchain sein, da diese ja nicht zum Grundschema von RSA gehört.

Ums kurz zu machen: gehen wird es auf jeden Fall, aber die dazu nötige Software ist noch nicht ganz DAU-gerecht. Man muss noch zuviel technische Details einzeln ausführen, statt einfach sagen zu können: Paperwallet bitte und dann druckt der Drucker los und alles ist gesichert. Und am besten das ganze noch als RFC publizieren um die verschiedenen Tools kompatibel zueinander zu machen.
hero member
Activity: 707
Merit: 500
September 04, 2013, 08:24:40 AM
#5
Deine Beschreibung hört sich an, als wolltest du mit einer Pistole hinter deinem Rücken zwischen die Füße durch zielen um dir ein drittest Nasenloch zu bohren.

PrivateKeys werden im Bitcoinclient dutzendfach oder tausenfach erzeugt. Zu jedem diese Privatekeys gibt einen Publickey(und das ist dann deine Zahlungsadresse).

Den Privatekey kann man ausdrucken, man muss dazu nichts kompliziertes einsetzen. Es ist nur so, das er als Textdatei nichts taugt. Ascii-codes umfassen nicht den kompletten 8 Bit Bereich, in der regel fallen schon 7 Bit darzustellen schwer. 7 Bit sind 128 verschiedene Zeichen. Bei 26 Buchstaben groß, Klein und 10 Zahlen sind wir nur bei 62 Zeichen. Der rest sind sogenannte Sonderzeichen. Und selbst die reichen nicht für die volle Summe.

Man hat nun zwei Möglichkeiten

1: Hex-darstellung, man druckt die Bytes in ihre hexadezimalen Darstellung aus. Dazu benutzt man ein auf 16 Ziffern basierendes Zahlensystem.

2: man setzt die bytes in Ascii-codes um. Aber da Ascii nicht komplett alles abdeckt wird man aus 100 bytes ca 150 Zeichen erhalten die man fehlerlos wieder auf die 100 bytes zurück rechnen kann.

So oder so, am Ende hat man ein Stück Papier das man wenn nötig eintippen kann um einen Privatekey draus zu erzeugen. Jetzt löscht du deine Wallet datei. Aber du kannst nun zwar Zahlungen drauf legen, aber das nicht sehen. Du müsstest dazu einen Client laufen lassen der diesen Privatekey benutzt. Aber genau das willst du ja nicht. Aber man könnte alle Zahlungen auf eine andere Adresse gehen lassen und sobald sie da ist, weiter an die "geheime" schicken, so weis man das das Geld angekommen ist, aber auch gleich weiter auf eine sichere Adresse geschoben wurde.

Das dazu nötige Programm zur Keyerzeugung ist der Client, nichts anderes. Man benötigt lediglich seperate Software(oder ein Modul das im Client drin ist) um aus der Bitfolge ein ausdruckbares Papier zu machen. zB ist ein byte 0000 1101 nicht druckbar. Den dez13 ist ein Zeilenvorschub und der Drucker würde eine Zeile weiter gehen statt ein Zeichen zu drucken. Alle zeichen bis 31 sind Steuerzeichen und nicht druckbar. Deswegen kann man nicht einfach den key direkt an den Drucker schicken, byte für byte. Und nur dafür braucht man zusätzliche Software.

ich weis nicht, ob hier Normung besteht, sprich ob alle programme das problem auf die selbe Art lösen. Tun sie das nämlich nicht, kann man ein paperwallet nur mit dem Programm restoren, mit dem man es erzeugt hat. Da ich es praktisch noch nie gemacht habe, weis ich das nicht genau.

Also, Zahlungen kann man immer sehen, dafür muss kein Client mit dem private key laufen.
Außer, dass einige Clients erlauben, die Adressen als "Watch only" ohne private key anzulegen, kann ich ja jederzeit auch auf blockchain.info den Stand der Adresse anschauen Smiley
Und stimmt, ich könnte natürlich den normalen Client installieren und nutzen. Das ist vielleicht einfach ein bisschen overhead gegenüber nem kleinen tool, das einfach nur die keys generiert.
Schließlich müsste ich ja auch wenn ich den normalen client nehme, sicherstellen, dass der key nicht mitgelesen / übermittelt wird und nach dem Löschen der wallet.dat wirklich weg.

Und das restoren dürfte Client-übergreifend kein Problem sein, entweder kann der Client direkt private keys importieren, oder ich füg das halt von Hand in der wallet dazu oder so.
legendary
Activity: 1882
Merit: 1108
September 04, 2013, 04:42:04 AM
#4
Deine Beschreibung hört sich an, als wolltest du mit einer Pistole hinter deinem Rücken zwischen die Füße durch zielen um dir ein drittest Nasenloch zu bohren.

PrivateKeys werden im Bitcoinclient dutzendfach oder tausenfach erzeugt. Zu jedem diese Privatekeys gibt einen Publickey(und das ist dann deine Zahlungsadresse).

Den Privatekey kann man ausdrucken, man muss dazu nichts kompliziertes einsetzen. Es ist nur so, das er als Textdatei nichts taugt. Ascii-codes umfassen nicht den kompletten 8 Bit Bereich, in der regel fallen schon 7 Bit darzustellen schwer. 7 Bit sind 128 verschiedene Zeichen. Bei 26 Buchstaben groß, Klein und 10 Zahlen sind wir nur bei 62 Zeichen. Der rest sind sogenannte Sonderzeichen. Und selbst die reichen nicht für die volle Summe.

Man hat nun zwei Möglichkeiten

1: Hex-darstellung, man druckt die Bytes in ihre hexadezimalen Darstellung aus. Dazu benutzt man ein auf 16 Ziffern basierendes Zahlensystem.

2: man setzt die bytes in Ascii-codes um. Aber da Ascii nicht komplett alles abdeckt wird man aus 100 bytes ca 150 Zeichen erhalten die man fehlerlos wieder auf die 100 bytes zurück rechnen kann.

So oder so, am Ende hat man ein Stück Papier das man wenn nötig eintippen kann um einen Privatekey draus zu erzeugen. Jetzt löscht du deine Wallet datei. Aber du kannst nun zwar Zahlungen drauf legen, aber das nicht sehen. Du müsstest dazu einen Client laufen lassen der diesen Privatekey benutzt. Aber genau das willst du ja nicht. Aber man könnte alle Zahlungen auf eine andere Adresse gehen lassen und sobald sie da ist, weiter an die "geheime" schicken, so weis man das das Geld angekommen ist, aber auch gleich weiter auf eine sichere Adresse geschoben wurde.

Das dazu nötige Programm zur Keyerzeugung ist der Client, nichts anderes. Man benötigt lediglich seperate Software(oder ein Modul das im Client drin ist) um aus der Bitfolge ein ausdruckbares Papier zu machen. zB ist ein byte 0000 1101 nicht druckbar. Den dez13 ist ein Zeilenvorschub und der Drucker würde eine Zeile weiter gehen statt ein Zeichen zu drucken. Alle zeichen bis 31 sind Steuerzeichen und nicht druckbar. Deswegen kann man nicht einfach den key direkt an den Drucker schicken, byte für byte. Und nur dafür braucht man zusätzliche Software.

ich weis nicht, ob hier Normung besteht, sprich ob alle programme das problem auf die selbe Art lösen. Tun sie das nämlich nicht, kann man ein paperwallet nur mit dem Programm restoren, mit dem man es erzeugt hat. Da ich es praktisch noch nie gemacht habe, weis ich das nicht genau.
legendary
Activity: 2912
Merit: 1309
September 03, 2013, 08:19:07 AM
#3
Stevep hat einen Drucker gebaut, der ganz Ohne einen Anschluss an den Rechner oder ähnliches funktioniert. Also komplet offline:

https://bitcointalksearch.org/topic/m.2944548

legendary
Activity: 2702
Merit: 1261
September 03, 2013, 07:25:11 AM
#2
Richtig.

Ich habe schon https://github.com/scintill/bitaddress.org benutzt da man damit einen zusätzlich gesicherten Private Key nach der Methode aus BIP0038 bekommt. Dann kann man sich je nach Sicherheitsbedürfnis den Tresor sparen, braucht aber eine zusätzliche Passphrase für den Import in eine Hot Wallet.
hero member
Activity: 707
Merit: 500
September 03, 2013, 06:37:06 AM
#1
Moin!

Ich wollte mal kurz nachfragen, ob ich nach Lektüre richtig verstanden habe, wie das läuft.
Also, normalerweise ist der private key, den ich brauche, um Transaktionen zu signieren, in meiner wallet.dat gespeichert. Jeder, der an den key kommt, kann zu jedem beliebigen Zeitpunkt in der Zukunft die entsprechende Adresse leer räumen. Der hauptsächliche Trick daran, meinen key auszudrucken, ist also eigentlich nicht, ein Backup auf Papier zu machen, sondern ihn _nur_ auf Papier zu haben, damit es schlicht keine Möglichkeit gibt, durch Infiltration meines Computers, Diebstahl meines Smartphones etc an den key zu kommen.
Und deshalb sollte der nach Möglichkeit auch niemals elektronisch zugreifbar existiert haben, weil wenn ihn schon jemand, ist eh alles verloren.

Ich würde mir jetzt also irgendwas suchen, das Key-Paare generieren kann.
Ich muss mich dann entweder selber durch Einsicht des javascript-Codes oder so davon überzeugen, dass das sauber läuft, oder einer Empfehlung vertrauen. Dabei geht es nicht darum, ob das Programm meinen generierten key speichern oder verschicken will, weil das kann ich ja unterbinden, indem ich das ganze offline mache und danach die Platte einschmelze, sondern es geht darum, ob da irgendwelche vorausgewählten oder rekonstruierbaren Zufallszahlen gewählt werden, so dass jemand meinen private key später selber auch generieren kann.

Dann lad ich mir das Programm, ziehe das Netzwerk-Kabel, steck den Drucker an den Rechner, generiere Keys, drucke sie aus, und je nach Grad meines Sicherheits-Fanatismus lösche ich die Caches, formatiere die Platte, oder Schmelze den Rechner gleich ganz ein. Anschließend notiere ich die public keys, das kann auch ruhig an einem öffentlichen Ort gespeichert werden, und tue den Zettel mit den private keys ins Bank-Schließfach oder den feuerfesten Tresor zu Hause oder so.

Ich zahle fröhlich BTC auf die neuen Adressen ein, und niemand, nichtmal ich selbst, kann das Zeug ausgeben, ohne den private key aus dem Tresor zu haben.

Habe ich das soweit richtig verstanden?
Gibt es Empfehlungen zu Generator-Software...?

Danke schon mal!
Jump to: