Ijoma Mangold sagt in dem Interview mit Roman, dass Bitcoin Adressen einfach zufällig aus einem enorm großen Zahlenraum generiert werden. So ist keine zentrale Instanz nötig, die eine Kontonummer vergibt.
Das hat in mir die Frage ausgelöst, ob es passieren kann, dass zwei Personen zufällig die selbe Adresse erzeugen? Lautet die Antwort, ja, aber es ist extrem unwahrscheinlich? Angenommen, es passiert trotztdem, dann würden sich zwei Personen ein Konto teilen, oder?
Grüße, Gerry
Mathematisch nicht unmöglich, aber praktisch dann doch nahezu unmöglich. Der Zahlenraum ist einfach unvorstellbar groß. Es gibt ~2^256 Private Keys, als Dezimalzahl ist das
115792089237316195423570985008687907853269984665640564039457584007913129639936, also ~1,15792*10^77
Wenn du Englisch verstehst, empfehle ich zur „Vorstellung“, wie groß 2^256 ist, das Youtube-Video vom Kanal 3Blue1Brown
Man schätzt, es gibt größenordnungsmäßig in etwa so viele Atome im ganzen Universum wie es Bitcoin Private Keys gibt. Nun stell dir vor zwei Menschen wählen zufällig dasselbe Atom, wenn sie die Auswahl und Möglichkeit hätten von allen im Universum sich eins auszusuchen.
Öffentliche Adressen ist dann nochmal eine andere Sache, davon gibt es 2^96 mal weniger als es Private Keys gibt, nämlich nur 2^160. Beides sollte man nicht miteinander verwechseln. Aber auch 2^160 ist immer noch unvorstellbar groß und nicht wirklich ein Problem für eine Kollision.
Wenn sich 2 Personen zufällig den gleichen Schlüssel generieren, zahlt der eine Bitcoins ein und der andere räumt das Konto leer und kommt vor Lachen nicht in den Schlaf.
Es ist allerdings deutlich wahrscheinlicher mit einem Lottoschein (6er+Superzahl) in der Hand beim abholen des Geldes vom Blitz getroffen zu werden. 3mal!
Das mit dem Lottogewinn und dem Blitz aber an mindestens drei aufeinanderfolgenden Wochen.
Okay, ich bin überzeugt. 2^256 ist gigantisch und auch 2^160. Wenn ich mich jetzt nochmal dazu äußere, geht es mir nicht darum, dass ich mir Sorgen machen würde, dass zwei Personen dieselbe Adressen teilen, sondern um die Sache zu verstehen.
Das es „nur“ 2^160 Bitcoin Adressen, also deutlich weniger als private Keys, fand ich überraschend.
Jemand hat z.B. über seine Bitbox genau einen private Key, erzeugt aber immer wieder mal neue Adressen. Wenn Bitcoin ganz normal im Alltag etabliert sein wird, dann erzeugen 8 Milliarden private Key Besitzer in ihrem Leben Tausende Adressen. Bei der gigantischen Zahl (2^160) ist das vermutlich immer noch unkritisch. Die Wahrscheinlichkeit dass es einmal vorkommt, dass eine Adresse doppelt vergeben wird, wäre dann grob 1:2^145.
Nein, du hast einen Seed.
Zu jeder Adresse hast du (im Normalfall) einen private key.
100%ig sattelfest bin ich in der verwendeten Mathematik auch nicht bzw. vergesse Details, die ich mal wusste, aber längere Zeit nicht gebraucht habe. (Man wird nicht jünger…)
Wie genau alles funktioniert, kann man sich ganz prima auf https://learnmeabitcoin.com ansehen und ausprobieren. Z.B. What are Keys & Addresses in Bitcoin? und folgende Seiten
Später kann man dort gerne noch einen Deepdive in die technischen Details machen, z.B. ECDSA | How To Create Public Keys and Signatures in Bitcoin
Aus einem Private Key (256 Bits) wird mit Elliptic Curve Magic ein Public Key (512 Bits uncompressed, +8Bits „04h“ am Anfang, um einen unkomprimierten Public Key zu markieren). Hier dürfte ziemlich sicher gelten, daß alle 2^256 Private Keys auch einen eindeutigen eigenen Public Key ergeben (1:1 Relation, Kollisionen sehr unwahrscheinlich, kann ich aber nicht beweisen).
Die öffentliche Adresse, das was wir lapidar eine Bitcoin-Adresse nennen, ist ein zweimal gehashter Public Key, etwas salopp: PublicAddress=RIPEMD160(SHA256(PublicKey))
SHA256 macht aus dem längeren Public Key wieder „nur“ 256 Bits und davon macht die Hashfunktion RIPEMD160 wiederum 160 Bits als Ergebnis. Mathematisch müssen 2^96 SHA256(PublicKey) Hashes denselben RIPEMD160-Hash erzeugen (256-160=96 für die Exponenten).
Deine Wahrscheinlichkeit kann ich jetzt nicht so ganz nachvollziehen, aber ist nicht so wichtig. Es bleibt sehr sehr … sehr unwahrscheinlich, egal wieviele Milliarden Menschen Adressen generieren (sooo viele Adressen verbraucht man ja nicht, wenn man mal ehrlich ist).
Dann ist folgende Aussage von Cricktor falsch gewesen, oder?
@sutterseba meinte sicherlich „Zu jeder deiner Adressen hast du (im Normalfall) einen Private Key.“
Ich füge da noch hinzu, daß du keinen der anderen (2^96)-1 Private Keys jemals in deiner Lebenszeit (oder möglicherweise der des Universums) finden wirst, die dieselbe Public Address ergäben. Existieren sie müssen, finden sie du nicht wirst, junger Padawan.
Nein, die ist schon richtig!
Trotzdem hast du immer Schlüsselpaare. Deine Adresse ist z.B. bei P2PKH und P2WPKH einfach ein Hash des Public Keys.
Du hast halt wie oben schon erwähnt wurde mehrere theoretisch gültige Private Keys pro Adresse durch die unterschiedlich großen Schlüsselräume. (pigeonhole principle).
Mann schätzt die Atome im Universum auf 10hoch 80. Der Adressraum von Bitcoin ist 10hoch77. Das ist so unfassbar mindblowing…
Und selbst, wenn der Adressraum nur auf die Anzahl der Atome in unserer Galaxie beschränkt wäre, wäre das immernoch so eine unfassbar hohe Zahl. Das kann defakto nicht passieren.
Aber weil ich bin wie ich bin, habe ich mir obwohl ich weiß wie unwahrscheinlich das ist, einen Nachmittag lang 24 Wörter generieren lassen und habe die in einer Softwarewallet wiederhergestellt… natürlich ohne Erfolg…
Nein, der Adressraum ist ungefähr 1048. Es gibt wie @Cricktor oben geschrieben hat „nur“ 2160 Adressen, nicht 2256.
Aus diesem Grund gibt es etwa 294 unterschiedliche private Schlüssel für jede Adresse.
Ändert aber an der Aussage nichts.
Hm, ok. Die Zahlen habe ich aus diesem Buch, lese ich gerade fertig: Bitcoin & Blockchain, Autor: Andreas M. Antonopoulus.
Aber ändert in der Tat nichts.
Die Zahl ist auch richtig wenn es um private/öffentliche Schlüssel geht.
Interessanter Ansatz. Daran hatte ich noch gar nicht gedacht. Könnte ein Angreifer hier nicht ansetzen und das ganze nicht bloß einmal probieren, sondern mit ordentlich Rechenpower millionenfach ausprobieren?
Die Antwort kann ich mir schon denken. Nein, es ist zu unwahrscheinlich, eine Adresse zu treffen.
Das ist auch sicher richtig, denn ansonsten wäre das ja schon passiert und Bitcoin würde nicht mehr als sicher gelten.
Trotzdem habe ich immer diesen Werbespruch im Ohr: Lotto - es trifft mehr als man denkt.
Die Miner probieren ja auch die ganze Zeit aus - sie suchen zwar nach etwas anderem, aber theoretisch könnten sie ja auch nach einem Seed suchen und prüfen, ob dort Sats hinterlegt sind. Wie hoch ist denn die Anzahl Versuche, die alle Miner an einem Tag durchführen? Weiß hier jemand, wie hoch diese Zahl in etwa sein wird?
Vermutlich kommt dann raus, dass die Zahl der Versuche zwar gigantisch ist, aber immer noch klein im Vergleich zu den 10^48 Adressen.
Anzumerken wäre noch, dass das Wort „unwahrscheinlich“ in einem solchen Kontext sehr irreführend ist. Obwohl es genau genommen nicht unmöglich ist, sollte man dennoch lieber von „unmöglich“ sprechen (im allgemeinen Sprachgebrauch).
Ich hatte dazu hier mal etwas geschrieben: Brute Forcing die 24 Seed Wörter? - #5 von skyrmion
Alle Private Keys von Bitcoin und Copy-Cats sind auf folgender Website aufgelistet: https://allprivatekeys.com, viel Spaß beim Suchen… (nicht ganz ernst gemeint, aber isso!)
Disclaimer: man kauft da natürlich z.B. keine (meist gefakte) wallet.dat oder gibt irgendeinen seiner Private Keys ein oder wasauchimmer Hinrissiges einem noch einfällt.