Zum Inhalt springen

Bitcoin und deren Adressen. Ich verstehe es nicht...


Empfohlene Beiträge

Hallo, ich hab vor einem Jahr einen kleinen Betrag in Bitcoin und Ethereum investiert. Nicht weil ich damals an den Bitcoin glaubte, sondern eher weil ich denke man muss immer praktische Erfahrungen haben um überhaupt mitzureden. Also hab ich damals rund 2.200€ investiert, heute bekanntlich nur noch die Hälfte wert. Aber das ist nicht schlimm... Nun will ich wieder einsteigen und diesmal regelmäßig sparen.

 

Eigentlich dachte ich immer, dass ich den Bitcoin technisch irgendwie verstanden habe.

 

Nun habe ich verstanden, dass eigentlich nicht mal der private Key auf dem Ledger gespeichert wird, sondern ein Seed aus dem beliebig viele valide private Keys erzeugt werden können. Zu diesen private Keys gehören gemäß asymmetrischer Verschlüsselung ein öffentlicher Schlüssel, mit dem ich verschlüsseln aber nicht mehr entschlüsseln kann. Dieser öffentliche Schlüssel ist (mit kleineren Einschränkungen) meine Bitcoin-Adresse auf die mir überwiesen wird.

 

So weit so gut. Hab ich verstanden.

 

Nun ist mir aber eines völlig unklar: Wenn ich aus diesem Seed unendlich viele private Keys erzeugen kann, wie kann ich dann nach einem neuen Aufsetzen mit den 24 Words des Ledgers wissen, welche private Keys erzeugt wurden? Der Seed enthält ja nur die Information, wie ich private Keys erzeuge. Aber eben nicht die private Keys zu den Bitcoin-Adressen selbst? Also wie schließt der Ledger nach Neuinstallation darauf zurück, welche private Keys und damit welche Bitcoin-Adresse zu dem Seed gehört? Im Seed selbst kann diese Information nicht gespeichert werden, schließlich wird er am Anfang gebildet und verändert sich über die Nutzungsdauer nicht. Oder sind das überhaupt nicht unendlich viele, sondern pro Seed nur beispielsweise 1.000 Stück, die dann schnell durchgeprüft werden? Aber dann müsste sich der Seed abnutzen, was schließlich auch nicht sein kann.

 

Darüber hinaus bietet mir die Ledger Live Desktop-Anwendung an, dass er mir eine Adresse erzeugt, was mich völlig durcheinander bringt. Wie will er ohne meinen Seed einen neuen private Key und damit eine neue Adresse erzeugen, die zu mir gehört? Oder nimmt der einfach eine "alte" Adresse an die bereits eine Zahlung ging für die erneute Transaktion und man nimmt es in Kauf, dass eben die Anonymität etwas leidet?

 

Spätestens da bin ich dann ausgestiegen, da ich es mir nicht mehr logisch herleiten kann und ich auch sonst keine Antwort darauf gefunden habe.

 

Wo ist mein Private Key gespeichert? - Hardware-Wallets.DE

Bitcoin Wallet private keys & Seeds (bitcoin-uni.de)

 

Ich hab mich nun durchgebissen. Und ich verstehe es noch immer nicht. Das nervt mich! Denn ich möchte verstehen, was ich nutze.

 

Ich würde mich sehr freuen, wenn ihr den Knoten in meinem Hirn lösen könntet. Denn es fühlt sich so an, als fehlt mir nur eine entscheidende Info, die ich lediglich nicht finde.

 

Viele Grüße und herzlichen Dank

Philharmonie

Bearbeitet von Philharmonie
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden schrieb Philharmonie:

Nun habe ich verstanden, dass eigentlich nicht mal der private Key auf dem Ledger gespeichert wird, sondern ein Seed aus dem beliebig viele valide private Keys erzeugt werden können.

Richtig 🙂

vor 2 Stunden schrieb Philharmonie:

Nun ist mir aber eines völlig unklar: Wenn ich aus diesem Seed unendlich viele private Keys erzeugen kann, wie kann ich dann nach einem neuen Aufsetzen mit den 24 Words des Ledgers wissen, welche private Keys erzeugt wurden?

Die sind über den "Derivation Path" quasi durchnummeriert.

Siehe learnmeabitcoin.com

vor 2 Stunden schrieb Philharmonie:

sondern pro Seed nur beispielsweise 1.000 Stück, die dann schnell durchgeprüft werden?

Es werden nacheinander die Adressen auf Transaktionen überprüft. Wenn eine Reihe von Adressen ohne Transaktionen gefunden werden (100?), wird nicht weiter gesucht.

vor 2 Stunden schrieb Philharmonie:

Oder sind das überhaupt nicht unendlich viele

Es sind nicht "unendlich" viele, denn irgendwann ist die Anzahl so groß, dass sie nicht mehr verarbeitet werden kann. Das dürfte ein unsigned Big Integer sein - also max 18446744073709551615 Adressen. :D 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden schrieb Philharmonie:

Darüber hinaus bietet mir die Ledger Live Desktop-Anwendung an, dass er mir eine Adresse erzeugt, was mich völlig durcheinander bringt. Wie will er ohne meinen Seed einen neuen private Key und damit eine neue Adresse erzeugen, die zu mir gehört? Oder nimmt der einfach eine "alte" Adresse an die bereits eine Zahlung ging für die erneute Transaktion und man nimmt es in Kauf, dass eben die Anonymität etwas leidet?

Das geht über den "xpub"-Key.

Schau hier: https://learnmeabitcoin.com/technical/extended-keys

Ledger Live muss also nur den öffentlichen "extended public key" kennen und kann dir die dazugehörigen Adressen ermitteln und auch das Guthaben aus der Blockchain auslesen.

Ohne den Ledger ist nur der öffentliche Schlüssel ermittelbar. Ledger Live hat keine Kenntnis über die PrivateKeys, die bleiben auf dem Ledger.

Das ist halt das Tolle an der Kryptographie 🙂 

Bearbeitet von Jokin
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Stunde schrieb Jokin:

Es sind nicht "unendlich" viele, denn irgendwann ist die Anzahl so groß, dass sie nicht mehr verarbeitet werden kann. Das dürfte ein unsigned Big Integer sein - also max 18446744073709551615 Adressen. :D 

Die Ableitung nach BIP-32 bei einem frei wähltbaren Derivation Path beliebiger Tiefe liefert jeweils 2³¹ hardened Keys und 2³¹ non-hardened Keys, das sind etwa 2,1475 Milliarden Keys jeweils. Wenn ich mich nicht falsch erinnere, kann jeder Teil des Derivation Paths Werte bis 2³¹ (vielleicht sogar 2³²) annehmen. Die Tiefe eines Derivation Paths ist wohl im Prinzip nicht begrenzt (bin mir nicht sicher), aber "normale" Wallets werden sehr wahrscheinlich eh nur ziemlich endliche Tiefen erlauben. Dadurch ergeben sich definitiv nicht unendlich viele Keys, aber trotzdem mehr als genug und man je brauchen wird.

Bei der Child Key Derivation Function kommt SHA512 zum Einsatz, wobei die 512 Hashbits in je 256 Keybits und 256 Chaincodebits gesplittet werden (genaue Details kann man in BIP-32 nachlesen). Die Zahl der Keys ist letztlich sehr wahrscheinlich durch diesen Split sowieso auf 2²⁵⁶ begrenzt. Wir haben vermutlich in der ganzen Milchstraße nicht mal annähernd soviele Atome, wie diese Zahl groß ist.

Bearbeitet von Cricktor
  • Thanks 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 30 Minuten schrieb Cricktor:

Bei der Child Key Derivation Function kommt SHA512 zum Einsatz, wobei die 512 Hashbits in je 256 Keybits und 256 Chaincodebits gesplittet werden (genaue Details kann man in BIP-32 nachlesen). Die Zahl der Keys ist letztlich sehr wahrscheinlich durch diesen Split sowieso auf 2²⁵⁶ begrenzt. Wir haben vermutlich in der ganzen Milchstraße nicht mal annähernd soviele Atome, wie diese Zahl groß ist.

Ja, diese Kryptographie ist schon faszinierend.

Und obwohl ich beruflich damit zu tun habe haben mich doch einige Dinge beim Bitcoin etwas erstaunt.

Der schützenswerte Private Key hat 256 Bit was 10^77 Möglichkeiten ergibt. Je nach praktischer Darstellung gehen davon noch ein paar Größenordnungen weg. Aber das spielt ja keine Rolle.

Aber dann gibt es über die verschiedenen Keys noch verschiedene Derivation Paths und man würde eigentlich erwarten daß es noch viel mehr Adressen geben würde. Aber letztlich gehen doch nur 160 Bit da ein und es gibt nur 10^48 Adressen.

Aber gut, die Adrese braucht keinen Schutz und diese Anzahl reicht vermutlich bis in alle Ewigkeit.

Wobei gewisse Leute ja auch mal dachten daß niemand jemals mehr als 640 kB RAM brauchen würde.      :)

  • Love it 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Herzlichen Dank für eure Infos. Das hat mir gefehlt. Manches hab ich zwar nicht verstanden, was hier geschrieben wurde, die Erkenntnis dass die erzeugbaren Adressen aber quasi durchnummeriert sind, hat mir ein Licht aufgehen lassen. Danke! Ebenso der xpub-Key. Den kannte ich nicht. Die dahinter liegenden genauen Prozeduren sind mir aber zu hoch. Ich kann mittlerweile eine RSA-Verschlüsselung "per Hand" nachrechnen (natürlich nur mit kleinen Primzahlen...). Aber manches hier geschriebene verstehe ich nicht und brauche ich auch nicht verstehen. Ich hab die grundlegende Mechanik dahinter verstanden. Das reicht mir schon. 🙂 Herzlichen Dank dafür!

Bearbeitet von Philharmonie
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 17 Stunden schrieb Mick75:

Aber dann gibt es über die verschiedenen Keys noch verschiedene Derivation Paths und man würde eigentlich erwarten daß es noch viel mehr Adressen geben würde. Aber letztlich gehen doch nur 160 Bit da ein und es gibt nur 10^48 Adressen.

Man kann davon ausgehen, daß die Korrelation Private Key --> Public Key eindeutig ist, d.h. zu jedem Private Key gibt es auch einen eindeutigen Public Key. Der Umfang beider Schlüsselräume ist im Prinzip gleich groß (Zuordnungskollisionen sind nicht wirklich zu erwarten, aber das kann ich nicht beweisen).

Bei der Transformation Public Key --> Public Address kommt die Einweg-Hashfunktion RIPMD160 am Ende zum Einsatz, die ein 160 Bit langes Ergebnis liefert. Das bedeutet aber, daß 2⁹⁶ Public Keys, somit auch 2⁹⁶ Private Keys, dieselbe Public Address ergeben. Das ist aber immer noch kein Problem, da es extrem ... extrem schwierig/aufwendig/unwahrscheinlich ist, passende Kollisionen zu finden.

Darüber hinaus gibt es in der Bitcoin-Blockchain selbst keinerlei Public Addresses: die werden nicht in der Blockchain gespeichert. Eine Public Address ist nur so etwas wie ein Rezept, eine Anweisung, wie eine Wallet das Locking-Script für einen UTXO konstruieren muss, das festlegt, was also wie präsentiert werden muss, damit man einen UTXO ausgeben, also bewegen, darf.

vor 12 Stunden schrieb Jokin:

Das liegt z.B. an der Prüfsumme und weitere Bits, die nötig sind um bestimmte Adressformatierunen zu erhalten?

Meines Wissens nein, das hat nichts mit Prüfsumme usw. zu tun. Das hier ist der Grund (im Link ausführlicher dargestellt, als ich es ausgeführt habe) für die reduzierte Anzahl an Adressen:
https://learnmeabitcoin.com/technical/public-key-hash

 

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

vor 22 Stunden schrieb Philharmonie:

Zu diesen private Keys gehören gemäß asymmetrischer Verschlüsselung ein öffentlicher Schlüssel, mit dem ich verschlüsseln aber nicht mehr entschlüsseln kann. Dieser öffentliche Schlüssel ist (mit kleineren Einschränkungen) meine Bitcoin-Adresse auf die mir überwiesen wird.

Bei der Blockchain geht es eher um das Signieren und nicht um das Verschlüsseln einer Nachricht. Mit deinem Private Key signierst du eine Transaktion. Die Transaktion bleibt unverschlüsselt und kann von jedem eingesehen werden.

Dein Public Key wird ebenfalls mit an die Transaktion gehängt. Ohne den Public Key können alle anderen nicht überprüfen ob deine Signatur korrekt ist. Daher kommt dann auch die Regel, dass man jede Adresse nach Möglichkeit nur einmal benutzen soll. Bei Bitcoin wird selbst für das Wechselgeld eine neue Adresse generiert damit es auf einer Adresse lagert zu der der Public Key noch nicht bekannt gegeben wurde. Theoretisch wäre es ja denkbar, dass eines Tages jemand einen Weg findet aus dem Public Key den Private Key zu errechnen. Das ist zwar unwahrscheinlich aber es kann sicher nicht schaden eine Adresse nach Veröffentlichung des Public Keys vorsichtshalber kein zweites mal zu nutzen.

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 18 Stunden schrieb Cricktor:

Die Zahl der Keys ist letztlich sehr wahrscheinlich durch diesen Split sowieso auf 2²⁵⁶ begrenzt. Wir haben vermutlich in der ganzen Milchstraße nicht mal annähernd soviele Atome, wie diese Zahl groß ist.

aber so was von nicht mal annähernd. 

2²⁵⁶ ist ca    1,15 * 10 hoch 77.

Die Anzahl der Atome in Universum wird auf ca. 10 hoch 84 geschätzt, also nicht einmal Zehnmillionen mal mehr.

Und da es mehr als 50 Milliarden Galaxien gibt .... 😁

Belassen wir es doch bei: Sollte knapp reichen. 🤣

  • Haha 1
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.