Author

Topic: Wallet Backup zeitunabhängig? (Read 1406 times)

legendary
Activity: 2912
Merit: 1309
July 16, 2014, 11:42:43 AM
#15
Ich verweise drauf, das es NICHTS nützt nur ein Backup zu machen ohne das Orginal dann zu löschen.
aber was nutzt mir dann das Backup?
Wenn ich eine Wallet auf einer Festplatte habe, mit der ich regelmäsig arbeite, zahlungen annehme und tätige.
Die will ich schützen falls die Festplatte kaputt geht und lege diese daher als Kopie auch noch auf einem USB Stick ab.

warum soll ich dann die auf der Festplatte löschen? Das gibt doch keinen Sinn. Dann kann ich ja nicht mehr damit arbeiten..
hero member
Activity: 707
Merit: 500
July 16, 2014, 10:27:32 AM
#14
Du weist nicht mal ansatzweise wovon du redest. Wir reden von der Generierung von private Adressen. Da hat Hash nichts zu suchen.
Denk nochmal drüber nach um was es hier gerade eigentlich geht. Und schmeiss nicht mit irgendwelchen Begriffen um dich die du nichtmal ansatzweise verstehst.

Willst du nur provozieren?
Ich rede von Hierarchisch-Deterministischen Wallets.
Du hast behauptet, das wäre quatsch, und Gründe aufgezählt, warum das deiner Meinung nach so ist.
Ich habe dir sogar nochmal den Link zum BIP gepostet, damit wir die gleiche technische Grundlage haben...
https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki

Hast du das gelesen?
Falls nein, warum rede ich eigentlich mit dir?
Falls ja, hast du den Part übersehen, an dem Hashes benutzt werden, um neue private keys abzuleiten?
Falls nicht, fronti war so freundlich...
legendary
Activity: 2912
Merit: 1309
July 16, 2014, 09:23:58 AM
#13
Du weist nicht mal ansatzweise wovon du redest. Wir reden von der Generierung von private Adressen. Da hat Hash nichts zu suchen.

Denk nochmal drüber nach um was es hier gerade eigentlich geht. Und schmeiss nicht mit irgendwelchen Begriffen um dich die du nichtmal ansatzweise verstehst.

warum nicht? so werden die Privaten Adressen generiert (wenn man das Master seed zeugs benutzt, von dem trasla ja redet)


Code:
The function CKDpriv((kpar, cpar), i) → (ki, ci) computes a child extended private key from the parent extended private key:

    Check whether i ≥ 231 (whether the child is a hardened key).
        If so (hardened child): let I = HMAC-SHA512(Key = cpar, Data = 0x00 || ser256(kpar) || ser32(i)). (Note: The 0x00 pads the private key to make it 33 bytes long.)
        If not (normal child): let I = HMAC-SHA512(Key = cpar, Data = serP(point(kpar)) || ser32(i)).

was ist da also falsch dran?
legendary
Activity: 1882
Merit: 1108
July 16, 2014, 09:06:50 AM
#12
Du weist nicht mal ansatzweise wovon du redest. Wir reden von der Generierung von private Adressen. Da hat Hash nichts zu suchen.

Denk nochmal drüber nach um was es hier gerade eigentlich geht. Und schmeiss nicht mit irgendwelchen Begriffen um dich die du nichtmal ansatzweise verstehst.
hero member
Activity: 707
Merit: 500
July 14, 2014, 03:34:58 AM
#11
Nochmal:

Backups sind dafür da, um sich selbst gegen den Verlust des Keys abzusichern.
Ich lege das Backup in den Safe, behalte aber den Key, weil ich ihn ja benutzen will.

Paperwallets hingegen drucke ich garnicht erst aus bestehenden Keys, sondern generiere neue Adressen, die ich direkt drucke und garnicht überhaupt erst irgendwo speichere.

Deshalb steht in den Anleitungen nichts über das Löschen des Keys nach dem Druck, weil ich es im Fall Backup nicht will, und im Fall Paperwallet nicht brauche.



Was dein zurück rechnen angeht:
Wie du selber korrekt erwähnt hast, ist Hashing ein Fall, bei dem ich leicht vorwärts und fast garnicht rückwärts rechnen kann.
Deswegen wird beim Ableiten von Keys auch nicht der Algorithmus +3 verwendet, sondern HMAC-SHA512.
legendary
Activity: 1882
Merit: 1108
July 14, 2014, 12:26:17 AM
#10
Ich verweise drauf, das es NICHTS nützt nur ein Backup zu machen ohne das Orginal dann zu löschen.

Ich sehe das viele Menschen gedanklich zugrunde legen, wie sie es vom Geldschein gewohnt sind. Leg ich den Geldschein in den Tresor, ist er Sicher. Lege ich die Bitcoin adresse in den tresor, muss ich zusätzlich das Orginal löschen um den selben Effekt zu erreichen. Obwohl man den Coin nicht kopieren kann, kann man die auf ihn verweisende Adresse kopieren. Und dann ist jede diese Kopien in der Lage den Coin zu übertragen, immer nach dem Motto wer zuerst kommt hat den Coin.

Dieser Aspekt geht in den meisten Anweisungen welche ich so lese unter. Da steht immer nur: mach dir Kopie und leg an sicheren ort. Mach dir Ausdruck und legs an sicheren Ort. Nur wo steht: lösche das orginal nachdem du die Backup oder Papierwallet gemacht hast.

Es mag Programme geben die sowas automatisch machen, allerdings wäre das ziemlich gewagt. Mir ist schon öfters passiert, das ein Druck nicht beim Drucker angekommen ist. Wenn der Druck einer Paperwallet automatisch zur Löschung der Adresse führt und der Druck geht schief ist die Kohle flöten. Hier muss zumindest eine gut funktionierende Sicherheistabfrage her.

Vieleicht kennt jemand ein programm das solche ausgereiften features zu Verfügung stellt, dann bewerbt es hier doch mal.

Und was abgeleitete Schlüssel und Sicherheit angeht: wenn ich eine 1024Bit RSA-Verschlüsselung habe und diesen Schlüsselraum nicht vollständig zufällig benutze sondern von einem Startwert ausgehende etwas berechne, reichen mir 2 Adressen direkt aufeinanderfolgend um zurück zu rechnen. Und zwar in sehr kurzer Zeit. Hier darf man von Stunden oder weniger ausgehen, je nach Komplexität des Algorythmus. Sind sie nicht aufeinanderfolgend, muss ich etwas mehr rechnen. Aber auch hier dürfte es eher Tage dauernd als Jahre. Wenn natürlich 10.000 neue Adressen berechnet worden sind zwischen den zweien die ich kenne, könnte es Monate dauern.

Das Gegenstück, eine absolut zufällig Adresse ist mit heutiger Rechenleistung nicht knackbar bevor die Sonne explodiert und uns auslöscht(von RSA 1024 ausgehend). Das sind gewaltige Unterschiede in der Sicherheit. Beschäftige dich einfach mal mit Kryptografie, dann verstehst du es.

ich kann dir aber auch mal ein einfaches Beispiel zeigen, das es verdeutlicht.
Nimm die Zahlen 0-9, das sind 10 mögliche Kombinationen.
Ich wählet zufällig eine, du benutzt eine Startseed und den Algorythmus +3(also Startwert +3 = nächste Zahl, Zahlenkreis)

deine erste Adresse sei die 4
meine erste Adresse ist auch die 4

dann kommen wir zur reihe:
deine :  meine
7 :2
0 :6
3 :6
6 :3
9 :4
2 :0
5 :9
8 :1
1 :7
4 :8

Ich kann sobald ich zwei Adressen habe auf den Seed zurück rechen. Eventuell benötige ich eine 3. Adresse zur Kontrolle Im Worstcase erhalte ich bei 3 Adressen mehrer Möglichkeiten die passen können. Aber es sind weniger als 10 Möglichkeiten.

Zu meiner nächsten Zahl existieren aber grundsätzlich immer 10 möglichkeiten.

Diese Reduzierung des Schlüsselraums von einem Startwert ausgehend und rückrechenbar als Sicherheitsfeature gegen verlorene Adressen reduziert den Schlüsselraum. Ich kenne das verfahren natürlich nicht, aber im Fehlerfall sind Hacker und User am selben Punkt mit dem zurück rechnen. Wenn du es in absehbarer Zeit schaffst, schafft es der Hacker in der selben Zeit.

Die einzige mögliche Variante wäre ein Algorythmus, der es erlaubt vorwärts vom Seed ausgehend extrem schnell zu rechnen, rückwärts aber nicht. Der mir bekannte Algorythmus der diese Anforderung genügt wäre Hash, der aber nur auf einzelne Zahlen funktioniert und nicht als Reihe. In einer Reihe die aufeinander aufbaut ist er eben leicht knackbar. Hier kommen sogenannte Plaintext Attack Mechanismen zum tragen. Ich weis welches Ergebniss ich erreichen muss, also kann ich alle Möglichkeiten ausschliessen die nicht in diese Richtung führen.

Ich habe nun versucht, es so unmathematisch als möglich zu erklären. Manchmal meint man das etwas die Sicherheit nicht berührt oder sogar erhöht was am ende genau dazu führt das es geknackt werden kann.

Siehe Enigma
http://de.wikipedia.org/wiki/Enigma_%28Maschine%29#Kryptographische_Schw.C3.A4chen
Man wollte nicht das ein U im Klartext zu einem U im Geheimtext wird und baute einen Mechanismus ein, der das verhindert. Das war eine Schwäche, keine zusätzliche Stärke. Und das aus A ein C wird und aus C ein A wird ist ebenfalls eine Schwäche. Manche Schwächen erkennt man erst wenn man versucht sich selbst zu hacken. Das haben die deutschen Erfinder nie getan.
hero member
Activity: 707
Merit: 500
July 11, 2014, 04:39:01 AM
#9
Öhm,...
Du möchtest mir gerade sagen, dass deine Sorge ist, dass von einem geleakten private key auf die Masterseed zurück gerechnet werden kann?
Und auch die Behauptung "unmöglich, die Adresse gegen Diebstahl zu sichern" durchschaue ich nicht ganz.
Also "die Adresse" verwirrt mich schon, welche? Mit HD generiere ich automatisch eine neue Adresse für jeden Empfang und für jeden Change.

Hier nochmal zum Nachlesen, wie HD funktioniert.


Es ist übrigens grundsätzlich zu unterscheiden zwischen Backup (um Verlust der Keys zu verhindern) und Cold STorage (um Diebstahl der Keys zu verhindern).
Und ja, meine Paper Wallets würde ich nicht erzeugen, indem ich von der Masterseed abgeleitete Adressen ausdrucke, das ginge völlig am Punkt vorbei.
Dafür nehm ich Mycelium Entropy, und hab ADressen auf Papier, die niemals irgendwo online waren.

legendary
Activity: 1882
Merit: 1108
July 11, 2014, 01:50:06 AM
#8
Vieleicht solltet ihr euch von der Vorstellung trennen, das ihr die Bitcoins speichert bzw im Backup hinterlegt.

Weder ist das Physikalisch richtig noch programmtechnisch. Die Bitcoins sind kein wirkliches Objekt, sie sind nur ein Vektor. Stellt euch vor ihr habt diese Zahlenmalrätzel. Die wo man bei 1 anfängt und dann Strich zu 2 macht und dann 3...etc. Wer welche Bitcoin hat weis man erst wenn man der Linie von 1 bis zum jetzigen Ende folgt(chain=Kette).

Wenn du nun den geheimen Teil der Adresse exportierts und verwahrst sind deine Coins natürlich nicht sicher. Weil die Adresse ja nun 2x gespeichert ist...im Backup UND weiterhin im Client. Zusätzlich muss man die Adresse also auch im Client löschen. Den NUR diese Adresse ermöglicht es die Coins weiter zu geben. Wird sie kopiert müssen beide Teile gesichert werden.

Wenn man gelöscht hat und in 5 Jahren die Adresse importiert aus der Paperwallet oder dem USB-Stick, muss natürlich in der Blockchain nachgeschaut werden ob die Coins noch dort sind oder schon weiter getragen wurden. Je nach Client dauert das mehr oder weniger lang. Beim orginalclient hat man ja die ganze Blockchain lokal gespeichert, da dauert es genau so lange wie der PC benötigt die Blockchain zu durchsuchen. Thinclients welche nicht mehr die ganze Blockchain haben, müssen dann irgendwo nachfragen um die Info zu bekommen.

Was man aus seinem Kopf verbannen muss: es ist nicht möglich die Bitcoins physikalisch oder auch nur Programmtechnisch zu erkennen. Ich benötige immer die Blockchain um den Weg von ihrer Entstehenung bis zum letzten Besitzer zu verfolgen. Es ist keinesfalls möglich an einer Adresse direkt zu erkennen ob da Bitcoins drauf sind oder nicht. Wenn das angezeigt wird, dann hat der Client diese Information zusätzlich dort hin gespeichert. Sie ist nicht im Protokoll selbst enthalten. Man MUSS sich das immer vor Augen halten, weil man sonst fast zwangsläufig falsche Schlussfolgerungen zieht.

So wie 90% der Menschen vergessen dazu zu sagen, das eine Paperwallet nur was bringt wenn man dann auch die Adresse im Client bzw in der wallet löscht. Sonst ist die Adresse 2x notiert und es reicht wenn ich sie an einer der zwei Stellen klaue bzw kopiere.

@ trasla

Dir ist aber klar, das ein Masterseed unmöglich macht, die Adresse zu sichern gegen Diebstahl. Ein solches Verfahren reduziert den Schlüsselraum so, das er relativ leicht knackbar ist. Vorallem, wenn man dann noch einen Schlüssel bekommt, lässt sich leicht auf den Master-seed zurück rechnen. Sowas ist eine Sackgasse. Um ein solches Verfahren sicher hinzubekommen müsste man den Schlüsselraum um mindestens den Betrag erweitern, der durch dieses verfahren reduziert wird. Das wäre aber eine Protokolländerung der alle zustimmen müssen. Und es bleibt das Problem, das man jetzt immer leichter zurück rechnen kann. Wenn du dir eine Paperwallet machst, die Adresse dann im Client löscht ist dein Geld eben nicht sicher, weil du den Masterseed nicht löschen kannst und immer im Client sichtbar hast. Und aus dem lässt sich dann deine Paperwalletadresse wieder berechnen. Ein Client der "zufällig" Adressen generiert tut sich ja schon schwer diesen Zufall ordentlich zu erzeugen. So kann man zumindest theoretisch zurück rechnen. So wie die Androidlücke, die immer den selben Startwert benutzt hat und daher je nach Laufzeit nur einen kleinen Teil aus dem gesamten Schlüsselraum benutzt hat.

Das blöde an Einfach ist die Anfälligkeit gegen Angriffe. Windows war von anfang an Einfach, deswegen ist man ganz einfach an die Festplattenfreigabe gekommen. Linux war von anfang an NICHT einfach, daher galt es als wessentlich sicherer. Je einfacher man Linux gemacht hatte, desdo unsicherer wurde es. Vieleicht nicht in dem Mass wie es mal Windows war, aber Einfach hat noch nie der Sicherheit gedient. Sicher wird etwas, wenn es komplex ist.
hero member
Activity: 707
Merit: 500
July 08, 2014, 04:12:05 AM
#7
Zum Glück wird das ganze sich vereinfachen, sobald HD Wallets überall im Einsatz sind.
Da werden aus einer Master-Seed alle Adressen abgeleitet, das heißt, dein Backup funktioniert für jede Adresse, egal ob für expliziten Empfang oder Wechselgeld, die deine Wallet erzeugt. Das einzige, was nicht vom Backup abgedeckt ist, sind dann Schlüssel, die du expliziert importierst nach dem Backup - aber da sollte man sowieso einfach aus Prinzip die BTC gleich auf ne neue Adresse verschieben. Wenn dann die Wallet verloren geht, kann man aus der Master-Seed im Backup alle ADressen ableiten - auch wenn das dann ggf nen Moment dauert, die Coins sind nicht verloren.
full member
Activity: 224
Merit: 100
July 08, 2014, 12:43:00 AM
#6
Na ganz einfach: Einzahlungen auf Adressen, deren Schlüssel du nicht besitzt, sind weg.
Ob es nun "deine" oder "meine" Adresse ist, weiß das Programm doch nicht.
"Hab ich einen Schlüssel dazu" ist, was zählt.

- Wenn du einen neuen Empfänger anlegst, kann es sein, das dein Keypool leer ist und das Programm ihn wieder nachfüllt, wobei die Keys natürlich nicht im Backup sind. Bedeutet: Alle Eingänge dort = weg.
- Wenn du einen neuen Empfänger anlegst, aber im Keypool ist noch Platz, so wird diese Adresse im Backup enthalten sein, wenn auch ohne Namen. Bedeutet: Guthaben da, aber von wem bloß....
- Wenn du etwas sendest, wird der nächstbeste/passende Scheck einer vorherigen Einzahlung geteilt, ein Teil geht zum Empfänger, ein Teil als Wechselgeld wieder zurück. Je nach Programm, Version und Einstellungen kann das Wechselgeld auf der gleichen Adresse wieder ankommen (gut), auf einer einstellbaren (fast gut) und auf einer versteckten, unbekannten aus deinem Pool (Mist).

So oder so, wenn du auf Nummer sicher gehen willst, solltest du auf einer Backupwallet nur noch auf schon bekannte Adressen empfangen.
newbie
Activity: 1
Merit: 0
July 07, 2014, 11:34:07 PM
#5

Das einzige was man beachten sollte: Addressen, die man zum Zeitpunkt des Walletbackups noch nicht erstellt hatte sind auch nicht in dem Backup drin.

Hi,

jetzt muß ich aber noch mal nachfragen, weil das ja gerade der interessante Punkt ist: Wenn ich nachdem ich das wallet.dat-Backup erstellt habe, in meinem Client neue Empfangsadressen anlege, wie verhält sich dann meine Balance, wenn ich das alte Backup wieder einspiele, bzw. auf einem anderen Computer in einen neuen Client hochlade?

Analog dazu: Wie läuft das mit Ausgaben? Was ich bisher verstanden habe ist, daß wenn ich etwas ausgebe, die restlichen Coins (change) aus meinem Public/Privat-Keypair einem neuen Private Key zugeordnet werden, richtig? Wie funktioniert das dann mit der alten wallet.dat?

Ich habe im Forum schon ein bißchen quergelesen, aber eine eindeutige, bzw. mir einleuchtende Erklärung habe ich immer noch nicht gefunden.
legendary
Activity: 1100
Merit: 1058
June 27, 2014, 01:40:25 AM
#4
Vor allem, weil das auch für auszahlungen wichtig sein kann, denn da könnte es u.U. neue wechselgeldadressen geben!
Du bist also nur safe, wenn du auf der gesicherten Wallet seit dem letzten Backup nur eingenommen hast.
newbie
Activity: 28
Merit: 0
June 26, 2014, 04:47:07 PM
#3
Das einzige was man beachten sollte: Addressen, die man zum Zeitpunkt des Walletbackups noch nicht erstellt hatte sind auch nicht in dem Backup drin.

Vielen Dank für die Aufklärung. Vor allem der Teil ist wirklich beachtenswert! Grin
full member
Activity: 224
Merit: 100
June 26, 2014, 04:27:56 PM
#2
Ja alle Transaktionen die nach dem Backup stattfinden werden bei einem Import des Backups zu einem späteren Zeitpunkt auch berücksichtigt. Das ist so, weil die Transaktionen ja in der Blockchain gespeichert sind und nicht lokal auf clients/wallets.

Das einzige was man beachten sollte: Addressen, die man zum Zeitpunkt des Walletbackups noch nicht erstellt hatte sind auch nicht in dem Backup drin.
newbie
Activity: 28
Merit: 0
June 26, 2014, 03:14:18 PM
#1
Hallo Leute,
dank eurer Hilfe bin ich inzwischen bis auf eine letzte Info für meine Verhältnisse hinreichend vertraut mit Bitcoins; abgesehen von einer einer letzten Sache, bei der Ihr mir sicherlich auch noch weiterhelfen könnt. Sagen wir mal ich habe mit Multibit ein Backup gemacht und die exportierten Schlüssel auch mit Passwort geschützt und den ganzen Brombores auf einen Stick gezogen, den ich dann ins Schließfach meiner Bank gelegt hab. Fünf Jahre später importiere ich den Schlüssel wieder. Sehe ich das richtig, dass dennoch alle Transaktionen auch der letzten 5 Jahre berücksichtigt werden und man also nur ein Backup direkt zu Beginn machen muss oder muss man nach jeder eingehenden Transaktion die man gesichert haben will ein Backup machen?
Jump to: