Zum Inhalt springen

(offline) paper wallet - Denkfehler?


music

Empfohlene Beiträge

Hallo zusammen!

Bitte helft mir kurz bezüglich folgender Unklarheit:

 

Wie bekommt das blockchain system mit, dass eine offline erstellt BTC-Adresse auch wirklich existiert bzw. sofort funktioniert?

Ist jede BTC Adresse schon vorher verfügbar?

Was ich dabei nicht begreifen kann: Es kann doch nicht alle Varianten hinsichtlich BTC adressen im Vorfeld geben?

Wenn ich zB bei einer funktonierenden BTC adresse - eine oder zwei zahlen austausche- und im Anschluss versuche die öffentlich Details/Kontostand  einzusehen und somit die existenz überprüfe, gibt es diese gar nicht.

Hätte die abgeänderte BTC Adresse, nicht aus einem offline Generator entspringen können?

 

Falls nein, warum nicht? :)

Danke im Voraus!
Beste Grüße

Bearbeitet von music
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 5 Stunden schrieb music:

Wie bekommt das blockchain system mit, dass eine offline erstellt BTC-Adresse auch wirklich existiert bzw. sofort funktioniert?

Gar nicht.

vor 5 Stunden schrieb music:

Ist jede BTC Adresse schon vorher verfügbar?

Ja.

vor 5 Stunden schrieb music:

Was ich dabei nicht begreifen kann: Es kann doch nicht alle Varianten hinsichtlich BTC adressen im Vorfeld geben?

Doch.

vor 5 Stunden schrieb music:

Wenn ich zB bei einer funktonierenden BTC adresse - eine oder zwei zahlen austausche- und im Anschluss versuche die öffentlich Details/Kontostand  einzusehen und somit die existenz überprüfe, gibt es diese gar nicht.

Wenn du zwei Zeichen änderst, ist die Adresse höchst Wahrscheinlich ungültig.

vor 5 Stunden schrieb music:

Hätte die abgeänderte BTC Adresse, nicht aus einem offline Generator entspringen können?

 

Falls nein, warum nicht? :)

Nein,

weil der Offlinegenerator die Regeln zu Generierung meistens beachtet.

  • Thanks 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 6 Stunden schrieb music:

Wie bekommt das blockchain system mit, dass eine offline erstellt BTC-Adresse auch wirklich existiert bzw. sofort funktioniert?

Vereinfache Dir das einfach mal etwas.

Stell Dir vor, Du könntest an eine natürliche Zahl einen Geldbetrag senden.

Woher weiß das Zahlensystem, dass eine beliebige Zahl existiert?

-> das Zahlensystem muss das nicht wissen, weil es ja eine "beliebige" Zahl ist, es existieren schließlich alle natürliche Zahlen. Egal ob mit einer Stelle oder mit 10 hoch 2382834 Stellen. Es existieren alle Zahlen.

Exakt so ist das mit den Bitcoin-Adressen. Sie sind halt da. Allerdings nicht unendlich viele, aber dennoch unglaublich viele Adressen (schau hier: https://www.blockchaincenter.net/wie-viele-bitcoin-adressen-gibt-es/)

vor 7 Stunden schrieb music:

Ist jede BTC Adresse schon vorher verfügbar?

 

Ja, so wie jede natürliche Zahl auch schon "vorher verfügbar" ist.

vor 7 Stunden schrieb music:

Was ich dabei nicht begreifen kann: Es kann doch nicht alle Varianten hinsichtlich BTC adressen im Vorfeld geben?

Doch, Du kannst - es gibt ja auch alle "Varianten" der natürlichen Zahlen bereits im "Vorfeld."

vor 7 Stunden schrieb music:

Wenn ich zB bei einer funktonierenden BTC adresse - eine oder zwei zahlen austausche- und im Anschluss versuche die öffentlich Details/Kontostand  einzusehen und somit die existenz überprüfe, gibt es diese gar nicht.

Nun stell Dir vor, dass als Bitcoin-Adresse nicht sämtliche natürliche Zahlen möglich sind, sondern nur die Zahlen, die durch 27 teilbar sind.

Jetzt ist klar, wieso eine Zahl bei der Du 2 Ziffern getauscht hast keine Adresse mehr ist an die Du Geld senden kannst.

Nun stell Dir vor, dass die Zahlen nicht beliebig lang sein können, denn Computerrechenleistung ist auch begrenzt, daher gibt es ganz bestimmte Regeln wie so eine Bitcoin-Adresse sein muss. (siehe auch obigen Link)

vor 7 Stunden schrieb music:

Hätte die abgeänderte BTC Adresse, nicht aus einem offline Generator entspringen können?

 

Falls nein, warum nicht? :)

Nein, denn der Offline-Generator kennt das Regelwerk wie Bitcoin-Adressen aufgebaut sein müssen und da reicht es nicht einfach nur zwei Stellen zu vertauschen.

 

  • Thanks 1
  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 7 Stunden schrieb music:

Hallo zusammen!

Bitte helft mir kurz bezüglich folgender Unklarheit:

 

Wie bekommt das blockchain system mit, dass eine offline erstellt BTC-Adresse auch wirklich existiert bzw. sofort funktioniert?

Ist jede BTC Adresse schon vorher verfügbar?

Was ich dabei nicht begreifen kann: Es kann doch nicht alle Varianten hinsichtlich BTC adressen im Vorfeld geben?

Wenn ich zB bei einer funktonierenden BTC adresse - eine oder zwei zahlen austausche- und im Anschluss versuche die öffentlich Details/Kontostand  einzusehen und somit die existenz überprüfe, gibt es diese gar nicht.

Hätte die abgeänderte BTC Adresse, nicht aus einem offline Generator entspringen können?

 

Falls nein, warum nicht? :)

Danke im Voraus!
Beste Grüße

Das wird mathematisch gemacht. Also ist es automatisch richtig. 1+1 ergibt ja auch nicht erst dann 2 wenn du es ausrechnest sondern schon lang vorher. Weil es auf Mathematik basiert, auf festen Regeln die immer gültig sind. Fas sind die Algorithmen.

Es gibt eine Liste mit Wörtern die nach bestimmten Regeln kombiniert werden können. Daraus entsteht ein sogenannter Seed.

Aus so einem Seed werden nach bestimmten Regeln eine unglaublich grosse Anzahl Privatekeys erstellt.

Und aus diesen wiederum eine noch viel grössere Menge Adressen.

Die möglichen Privatekeys sind auch alle bekannt, auch die Seeds. Nur ist die Anzahl so gross das man sie nicht durchsuchen könnte.

Die Anzahl der Keys ist eine Zahl mit weit über 500 Stellen. Die Anzahl der Adressen ist noch um ein vielfaches höher

Deswegen schrieb @MixMax das eine per Hand veränderte Adresse WARSCHEINLICH ungültig ist. Denn die Auswahl ist ja gross. Mit ein paar Jahrhunderten Zeit könnte man zufällig mal eine gültige Adresse hinbekommen.

Aber die würde natürlich nichts nützen. Um von der Adresse Coins zu bewegen müsste man ebenfalls den Privatekey zusammenbekommen der zu der Adresse gehört. Oder umgekehrt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 43 Minuten schrieb battlecore:

Aus so einem Seed werden nach bestimmten Regeln eine unglaublich grosse Anzahl Privatekeys erstellt.

Und aus diesen wiederum eine noch viel grössere Menge Adressen.

Nein, aus einem Privatekey lässt sich nur eine einzige Bitcoin-Adresse generieren.

vor 44 Minuten schrieb battlecore:

Die Anzahl der Keys ist eine Zahl mit weit über 500 Stellen. Die Anzahl der Adressen ist noch um ein vielfaches höher

 Nein, so extrem viele sind es nicht: https://www.blockchaincenter.net/wie-viele-bitcoin-adressen-gibt-es/

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Stunde schrieb Jokin:

Nein, aus einem Privatekey lässt sich nur eine einzige Bitcoin-Adresse generieren.

Na jetzt versuch mal zu erklären wie ein HD Wallet verschiedenen Bitcoin Adressen generieren kann obwohl es nur einen Privatekey hat :D 

Link zu diesem Kommentar
Auf anderen Seiten teilen

 

Gerade eben schrieb Jokin:

Du verwechselst den Seed mit dem PrivateKey.

Der Seed ist ein PrivateKey. Ein HD Wallet speichert auf deiner Festplatte ein Private Root Key ab. Die Ein und Ausgabe des Private Keys als Seed ist optional und soll nur den Umgang für uns Menschen vereinfachen.

Man kann sogar aus einem Seed mit nur 3 Wörtern, einem Private Key mit nur wenigen Stellen, sehr viele Bitcoin Adressen generieren. Sinnvoll ist das natürlich nicht aber es ist möglich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Überzeigt euch selbst:
 

'use strict';

const hdkeylib = require('ethereumjs-wallet/hdkey');
const hdkey = hdkeylib.fromMasterSeed("crane tackle asset glory aware bid biology private marine type eyebrow cute")

console.log(JSON.stringify(hdkey))

Die Ausgabe enthält einen Private Key und einen Public Key. Das sieht dann so aus:

{"_hdkey":{"xpriv":"xprv9s21ZrQH143K4TDen8i1QfzZxYU5TCsKsqDsWYAB4omw6be7qQZabrCGg7DfEmqz7a5pw86Z3J1wbeyX7KM1TMBHWHBYutheHrDNBV2XWAZ",
"xpub":"xpub661MyMwAqRbcGwJ7tAF1mowJWaJZrfbBF49UJvZnd9JuyPyGNwsq9eWkXNqnJu6zZPgWqjd5gqYoWoG7B9hX7Vz9kcXoR7RvgwSPW31oaxD"}}

Ich könnte sogar hin gehen und meinem Trading Bot den Public Root Key verpassen. Nach jedem Trade soll er den Gewinn auf eine neu generierte Adresse auszahlen. Mit dem Public Root Key kann er die Adressen generieren aber nicht den dazugehörigen Private Key. Mit dem Private Root Key bzw dem Seed kann ich dagegen später die passenden Private Keys der jeweiligen Adressen generieren.

Wir können das Script noch etwas weiter treiben und den Derivation Path mit ins Spiel bringen. Ich kann von diesem Root Private Key mehrere nennen wir sie mal Accounts ableiten. Jeder dieser Accounts hat jeweils einen Private und einen Public Key. Erst von diesen Accounts werden dann die Private Keys und Adressen generiert.

Edit: Ja das ist jetzt Ethereum und nicht Bitcoin. Ich bin einfach nur zu Faul das Script auf Bitcoin um zu stellen. Das ist normalerweise auch nicht notwendig weil Bitcoin von Hause aus mit einem Seed umgehen kann. Die Komplexität um von einem Private Root Key zu den jeweiligen Adressen zu kommen, wird von Bitcoin einfach gekapselt. Nur weil Bitcoin keinen Public Root Key anzeigt, heißt das aber nicht, dass er nicht vorhanden ist. Ich meine sogar beim Trezor wird der Public Root Key angezeigt.

Bearbeitet von skunk
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 29 Minuten schrieb skunk:

Der Seed ist ein PrivateKey.

Root-PrivateKey

Wir sprechen hier aber von "PrivateKey" in der allgemein üblichen Bedeutung.

Ich denke, wir sollten Anfänger nicht mit derartigen Spitzfindigkeiten verwirren - das nützt keinem etwas.

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Minuten schrieb Jokin:

Root-PrivateKey

Technisch gibt es diese Unterscheidung nicht. Das sind erneut Begrifflichkeiten mit denen wir menschen den verschiedenen Private Keys unterschiedliche Bedeutungen zuweisen.

vor 2 Minuten schrieb Jokin:

Ich denke, wir sollten Anfänger nicht mit derartigen Spitzfindigkeiten verwirren - das nützt keinem etwas.

Ansichtssache. Ich persönlich fand es sehr nützlich zu verstehen was ein Seed überhaupt ist und welche Möglichkeiten er mir bietet. Davon unabhängig hast du doch angefangen der anfangs sehr vereinfachten aber durchaus richtigen Definition eines Seeds zu widersprechen. Wer ist denn da Spitzfindig? Ich erkläre lediglich warum die anfangs vereinfachte Definition trotzdem richtig ist und gehe dabei immer weiter ins Detail da es offensichtlich selbst unter uns Profis Uneinigkeit gibt :)  

Bearbeitet von skunk
Link zu diesem Kommentar
Auf anderen Seiten teilen

Eine Sache vielleicht noch um es Anfängerfreundlich zu halten. Wer einen seed offline generiert sollte mindestens 12 Wörter nehmen und eher Richtung 24 Wörter gehen. Wie beschrieben ist ein Seed am Ende nur ein Private Key. Je weniger Wörter um so einfacher hat es ein Angreifer den Seed zu erraten. Wenn ich das noch richtig im Kopf habe, dann entspricht ein Seed mit 12 Wörtern der Länge eines Bitcoin Private Keys. Das Risiko ist jetzt einfach, dass ein potentieller Angreifer anstelle Bitcoin Private Keys durch zu raten einfach Seeds durch probiert. Daher gilt die Regel, dass der Seed länger sein muss als die Private Keys, die man davon ableiten möchte. Also vorzugsweise die vollen 24 Wörter nutzen. Alles mit mehr als 12 sollte ebenfalls sicher genug sein. Auf keinen Fall mit weniger als 12 Wörtern arbeiten außer ihr wollt das Geld direkt an mich spenden :) (zu Testzwecken wenn kein Geld im Spiel ist, gehen auch 3 Wörter)

Bearbeitet von skunk
  • Thanks 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 58 Minuten schrieb skunk:

Wenn ich das noch richtig im Kopf habe, dann entspricht ein Seed mit 12 Wörtern der Länge eines Bitcoin Private Keys.

ein 12 Word seed hat "nur" 128 Bit Länge (Entropie). Beim Bitcoin ist die Länge der Adresse bekanntlich 160 Bit...

Die Länge ist also sogar kürzer als die Länge der Bitcoin Adressen.

Es gibt also weniger 12 Word seeds als mögliche Bitcoin Adressen. So hast du natürlich völlig recht, 24 Wörter zu nutzen. Auch spielt der einmalig etwas höhere Aufwand keine echte Rolle...

Bearbeitet von fjvbit
  • Thanks 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Wochen später...

Man kann es nicht oft genug wiederholen, auf die Sicherheit des Seed zu achten.

24 Wörter ist klar, wurde oben schon diskutiert. 

Aber auch solche Ideen, den Seed einfach zu teilen, getrennt bei Freunden zu lagern und alles ist okay, wie z.B. @Jokin mal geschrieben hat, ist mit entsprechender Vorsicht zu begegnen. 

Wenn man schon paar Worte hat, fällt das raten leichter. Es muss nur die richtige Summe locken.

Dann wird aus zig Jahre auf den eigen Notebook ausprobieren, schnell mit angemieteter Rechner-Power Stunden!

 https://bitcoin-2go.de/bitcoin-adresse-gehacked-ist-btc-dadurch-in-gefahr/

Also, auch bei der Sicherheit nicht übermütig werden.

Noch ein Wort. Auch die "Empfehlungen" ein Wort weg zu lassen, "verdrehen" oder sonst wie, mag den "kleinen Bruder" bremsen. Nicht aber ein wild entschlossenen Profi! Für den interessierten Laien ist dieses Tool auch ganz hilfreich. 😉

Axiom

Bearbeitet von Axiom0815
  • Thanks 2
  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich nehme auch zur "Sicherheit" die vollen 24 Wörter. 

Im Falle das es irgendwann mal jemand schafft einen Seed zu "erraten", müsste man dann noch das Pech haben, das genau der erratene Seed, der eigene ist.....

Somit sollte jedem klar werden, das dieses System extrem sicher ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 5 Monate später...
Am 3.6.2020 um 12:32 schrieb skunk:

'use strict'; const hdkeylib = require('ethereumjs-wallet/hdkey'); const hdkey = hdkeylib.fromMasterSeed("crane tackle asset glory aware bid biology private marine type eyebrow cute") console.log(JSON.stringify(hdkey))

Fun fact: Dieser Code ist fehlerhaft und würde bei gleichen Seed nicht die Adressen generieren, die MyEtherWallet und Co generieren würden. Mir war dieser Fehler in meinem Script bekannt allerdings was es für meine Zwecke nicht relevant. Heute habe ich amüsiert fest gestellt, dass die Glamjet Wallet exakt den gleichen Fehler hat. Um auf diese Unstimmigkeit hinzuweisen habe ich kurzerhand mein Script ein wenig angepasst. Bitte ersetzt oben stehenden Code mit:


hdkeylib.fromMasterSeed(bip39.mnemonicToSeed(seed));

Damit sind die generieren Adressen dann identisch mit MyEtherWallet und Co. Bei Problemen einfach fragen.

Bearbeitet von skunk
Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...

Wichtige Information

Wir haben Cookies auf Deinem Gerät platziert. Das hilft uns diese Webseite zu verbessern. Du kannst die Cookie-Einstellungen anpassen, andernfalls gehen wir davon aus, dass Du damit einverstanden bist, weiterzumachen.