Ist es möglich, die Erstellung von Bitcoin-Adressen brutal zu erzwingen, um Geld zu stehlen?

Bitcoin-Benutzer generieren häufig neue Adressen für jede von ihnen getätigte Transaktion, was die Anzahl der Bitcoin-Adressen, die zum Empfangen von Geld verwendet werden, erheblich erhöht.

Wäre es für jemanden möglich (und profitabel), Kollisionen im Bitcoin-Adressraum zu finden, um Geld zu stehlen?

Um Ihnen eine Vorstellung von den Zahlen zu geben: Es gibt 1.921.075 verschiedene Adressen in der Blockchain. Das sind weniger als 0,0000000000000000000000000000000000001 % aller Adressen, die generiert werden können.
@Artefact2 Ja, es gibt derzeit 2 Millionen verschiedene Adressen. Wenn wir wollen, dass BitCoin auf 7b, 8b, 9b oder 10b Menschen skaliert, die jeweils 10.000 verschiedene Adressen pro Tag generieren, sind das 100 Billionen Adressen, die täglich erstellt werden.
@Pacerier Warum sollte jeder Benutzer 10.000 verschiedene Adressen pro Tag benötigen?
@ Murch, 10.000 sind möglicherweise eine starke Unterschätzung . Auf jeden Fall ist jetzt nicht der beste Zeitpunkt, um diese Frage zu beantworten, aus demselben Grund war vor 4 Jahrzehnten nicht der beste Zeitpunkt, um zu antworten: „Warum werden uns die IP-Adressen ausgehen?“
@ Pacerier: Das ist eine interessante Aussage, aber ich interessiere mich mehr dafür, warum Sie das erwarten, als was die genaue Zahl am Ende sein könnte. ;) Ich habe hier eine neue Frage dafür eröffnet: Warum brauchen wir jemals durchschnittlich 10.000 neue Adressen pro Tag?
James D'Angelo hat ein Video erstellt, um die Größe des privaten Schlüsselraums von Bitcoin zu visualisieren: Bitcoin 101 - Quindemillions & The Amazing Math of Bitcoin's Private Keys
Ein Typ hat eine Website erstellt, die zufällige private Schlüssel generiert. Sie müssen bitcoindoubler.cf besuchen

Antworten (11)

Es mag "theoretisch" möglich sein, aber in der Realität ist es unwahrscheinlich, dass es erreicht wird - wie beim Zählen der Anzahl von Atomen in einem Bürogebäude unwahrscheinlich.

Bitcoin-Adressen sind eigentlich der 256-Bit- SHA - Hash eines öffentlichen ECDSA - Schlüssels, sodass jede Schwachstelle in diesen Algorithmen eine Schwachstelle in Bitcoin selbst darstellen würde. Realistisch gesehen erfordert das Brechen dieser Verschlüsselungsstufe jedoch eine enorme Rechenleistung. Zufälligerweise erfordert es genau die gleiche Art von Rechenleistung, die das Bitcoin-Mining erfordert, und in fast jedem Szenario wäre es massiv profitabler, zu minen als zu hacken.

Bearbeiten: Es ist eigentlich RIPEMD-160 (SHA-256 (öffentlicher Schlüssel)) im Gegensatz zu nur SHA-256 (öffentlicher Schlüssel), wie ich ursprünglich erwähnt habe, also ist es ein 160-Bit-Hash eines 256-Bit-Hashs eines öffentlichen Schlüssels. Obwohl der Zielschlüsselraum (160 Bit) dank dieses letzten Schritts kleiner ist, ist es auch eine zusätzliche Berechnung, die ein angehender Hacker durchführen muss. Während die zusätzliche Rechenkomplexität das Entfernen von 96-Bit-Schlüsselraum nicht einmal annähernd aufhebt, sollte beachtet werden, dass das Auffinden einer Kollision in einem 160-Bit-Schlüsselraum immer noch unglaublich schwierig und zeitaufwändig ist. Noch wichtiger ist, dass es schwieriger und zeitaufwändiger ist, als es tatsächlich wäre, die gleiche Anzahl von Münzen zu schürfen,

Die Adressspezifikation befindet sich unter en.bitcoin.it/wiki/Protocol_specification#Addresses , falls jemand meine Änderungen überprüfen möchte :)
Überprüfe und reposte, was du findest, diese Seite ist besser als das Wiki, lass uns die Informationen hier statt dort platzieren.
Abgewertet, weil diese Verwendung von "möglich" anders ist, als jeder Leser vermuten würde.
Änderte meinen Eröffnungssatz, um anzuzeigen, dass "möglich" nur im strengsten wissenschaftlichen Sinne des Wortes gemeint ist.
@DavidPerry Der RIPEMD-Hash des öffentlichen Schlüssels bietet keine Sicherheit. Ich würde Ihre Antwort aktualisieren (Sie müssen keinen Bearbeitungsabsatz hinterlassen). Der öffentliche Schlüssel ist der SHA256 des privaten Schlüssels. Wenn ein Angreifer kompromittiert, dass er die Adresse (RIPEMD-Hash) aus dem öffentlichen Schlüssel trivial generieren kann, als wäre es sein eigener Schlüssel.
@theUnhandledException Wenn wir versuchen würden, eine Adresskollision zu erstellen, wären alle Schritte erforderlich, da es mehrere öffentliche Schlüssel geben könnte, die in dieselbe Adresse RIPEMD würden - wenn die Adresse das einzige Datenbit ist, das einem Angreifer zur Verfügung steht, das RIPEMD- 160-Hash wäre ein notwendiger Schritt, da sie den öffentlichen Schlüssel nicht aus der Adresse ableiten können.
@DavidPerry. Das RIPEMD hat einen kleineren Adressraum als der öffentliche Schlüssel (2^160 gegenüber 2^256). Es dauert etwas länger für jeden Versuch (privater Schlüssel -> öffentlich -> Adresse) im Vergleich zu (privat -> öffentlich), aber die Chancen, bei jedem Versuch eine Kollision zu finden, sind 79228162514264300000000000000x wahrscheinlicher (8E28). Dies ist jetzt etwas akademisch, da 2 ^ 160 und 2 ^ 256 beide außerhalb unserer Rechenfähigkeit für Brute Force liegen, aber das Hashing des öffentlichen SHA-256-Schlüssels an die RIPEMD-160-Adresse verringert die Sicherheit. Stellen Sie sich als Beispiel vor, der öffentliche Schlüssel hat 256 Bit, aber die Adresse war 8 Bit. Wäre es schwierig, eine Kollision zu finden?
Was ich sagen will ist, dass wir, um den Inhalt von Adresse x ausgeben zu können, privkey y und pubkey z kennen müssen. Was ich sagen will, ist, dass x = RIPEMD160(z) und dass es ohne Berechnung von RIPEMD160(z) keine Möglichkeit gibt, festzustellen, ob ein gegebener Pubkey x mit unserer Zieladresse übereinstimmt. Da alles in der Blockchain in Bezug auf x und nicht auf y oder z gespeichert ist, müssen wir RIPEMD160(z) für jeden Wert von z berechnen, um seinen Kontostand zu überprüfen oder ihn mit einer bekannten Adresse zu vergleichen, von der wir stehlen wollen. Wir müssten RIPEMD160(SHA256(z)) für jeden Wert von z berechnen, wodurch die für BF benötigte Leistung erhöht wird.
@DavidPerry Ich denke, du verfehlst den Punkt. Sie müssen den privaten Schlüssel nicht finden. Sie müssen nur einen privaten Schlüssel finden, der einem öffentlichen Schlüssel mit dem richtigen 160-Bit-Hash entspricht. Das ist 2^(256-160) Mal einfacher, als einen privaten Schlüssel zu finden, der dem richtigen öffentlichen Schlüssel entspricht. Und während das Hinzufügen des zusätzlichen Hash-Schritts dazu führt, dass die Dinge vielleicht doppelt so lange dauern, überschwemmt der Faktor 2 ^ 106, der die Schwierigkeit verringert, das.
@DavidPerry Ihr Fehler ist in "um den Inhalt der Adresse x ausgeben zu können, müssen wir privkey y und pubkey z kennen". Um den Inhalt einer Adresse auszugeben, müssen Sie nur den scriptPubKey erfüllen, der normalerweise lautet: "OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG" - dh. Stellen Sie sicher, dass der in den Eingabe-Hashes angegebene Hash die gleichen 160 Bit wie <pubKeyHash> hat, und überprüfen Sie dann, ob die angegebene Signatur durch den angegebenen Hash erzeugt wurde. Es wird zu keinem Zeitpunkt überprüft, ob der "richtige" Pubkey verwendet wurde, da wir nicht einmal wissen, was der "richtige" Pubkey ist, sondern nur seinen 160-Bit-Hash.
Heilige Scheiße, die Leute streiten immer noch über diese Frage? Nekromantie, Leute, das ist eine schlechte Sache. Ich gebe den Punkt zu, nur um nicht mehr über eine 7 Monate alte Antwort streiten zu müssen. Auch weil du Recht hast. Es ist sowieso immer noch viel profitabler zu schürfen als nach Schlüsselpaaren zu suchen, und solange das stimmt, können wir das System wahrscheinlich als sicher betrachten. Ähnlich wie es nicht unmöglich ist, eine Bank auszurauben, aber es ist normalerweise (langfristig) sicherer und rentabler, einen legalen Job zu bekommen.
@DavidPerry Du hast gesagt, dass es profitabler ist, zu minen als zu hacken. Aber ist das in Zukunft wahrscheinlich, wenn alle Coins bereits geschürft sind und der einzige „Gewinn“ Transaktionsgebühren sind?
@Pacerier Obwohl es schwierig ist, Vorhersagen über zukünftige Variablen zu treffen (Anzahl der Schlüssel, die ein Gleichgewicht halten usw.), ist die Wahrscheinlichkeit, einen Privkey zu finden, der Geld enthält, unverschämt gering. Multiplizieren Sie die Wahrscheinlichkeit, einen solchen Schlüssel zu finden (effektiv null), mit dem durchschnittlichen Kontostand (unmöglich zu erraten) und solange dieser Betrag geringer ist als der Wert einer entsprechenden Mining-Zeit, sollten wir alle sicher sein – im Grunde so lange Quantencomputing bleibt im Labor stecken.
@DavidPerry Ic. Aber Quantencomputing wird nicht im Labor stecken bleiben, oder? Computer blieben nicht allzu lange in Labors stecken.
@Pacerier nur zu Ihrer Information, der Wert der Bemühungen eines Tages, Privkeys zu generieren, ist n u a, wobei n die Anzahl der generierten Schlüssel ist, u der Prozentsatz aller tatsächlich verwendeten Schlüssel ist und a der durchschnittliche Kontostand eines bestimmten Kontos ist. Im Moment n~=2.030.400.000.000 für eine gute Radeon-Karte, u~=3,28*e-43 und a~=19,22 BTC, was bedeutet, dass ein ganzer Tag Cracken auf einer Radeon 5xxx-Karte ~1,28e-29 BTC oder 1,28 wert ist e-21 eines Satoshi - die Sicherheit liegt in der schieren Größe von 2^160, keine Menge der verwendeten Adressen wird wahrscheinlich jemals einen signifikanten Prozentsatz einer so großen Zahl darstellen.
@Pacerier Wenn Quantencomputer jemals das Labor verlassen und erschwinglich werden, ist Bitcoin nicht die einzige verschlüsselungsabhängige Technologie, die in Schwierigkeiten steckt. Selbst dann werden neue Kryptos auftauchen, die gegen Shors Algorithmus resistent sind, und Bitcoin kann von ECC zu etwas anderem wechseln. Das Schöne ist, dass es flexibel genug ist, um diese Art von Problemen zu vermeiden.

Es ist möglich, einige Bitcoin-Adressen brutal zu erzwingen, da einige Leute ihre privaten Schlüssel auf unsichere Weise generieren. Alle (nicht Null) 32 Bytes können ein privater Schlüssel sein. Wenn Sie also sha256 über eine Passphrase ausführen, erhalten Sie einen scheinbar zufälligen, aber Brute-Force-fähigen privaten Schlüssel.

Nehmen Sie zum Beispiel sha256 ("Wurst"):

$ echo -n 'sausage' | sha256sum
30caae2fcb7c34ecadfddc45e0a27e9103bd7cfc87730d7818cc096b1266a683  -

Laden Sie die Bitadresse hoch und fügen Sie diesen privaten Schlüssel in die Registerkarte „Wallet-Details“ ein, um die entsprechende Bitcoin-Adresse zu erhalten, und suchen Sie sie dann im Blockexplorer :

$ GET http://blockexplorer.com/q/getreceivedbyaddress/1TnnhMEgic5g4ttrCQyDopwqTs4hheuNZ; echo
0.01000000

und Sie werden sehen, dass die Adresse im Februar 2012 etwa 2 Tage lang einen Bitcent enthielt.

Siehe auch: „fuckyou“, das zum Jahreswechsel 2,5 Bitcent für 12 Festtage hielt.

In der Praxis ist es also möglich, die Erstellung von Bitcoin-Adressen brutal zu erzwingen, aber nur für schlecht gewählte Passphrasen. Dies waren wahrscheinlich nur Leute, die mit der Idee herumspielten, „Bitcoins in ihrem Kopf aufzubewahren“, weshalb sie für so kleine Beträge gedacht sind und warum sie nicht lange finanziert wurden.

Bei der Erstellung dieser Antwort wurden keine Adressguthaben beschädigt.

+1 für die interessante (wenn auch praktisch nutzlose) Aufnahme, für die Wurst und für den coolen Schlusssatz.
Wirklich gute Erklärung über "deterministische Brieftaschen". Vielen Dank!
Was wäre, wenn man anstelle der Verwendung solcher einfacher Passphrasen (wörterbuchbasiert und höchstens 2 Wörter) seine Adresse auf eine 6-Wort-Passphrase stützen würde, wobei die Mehrheit der Wörter in Sprachwörterbüchern nicht vorhanden ist?
Das wäre natürlich sicherer als die Verwendung von "Wurst" als Passphrase, aber nicht so sicher wie die Verwendung eines vollständig zufälligen privaten 256-Bit-Schlüssels. Das Brute-Forcing einer 6-Wort-Passphrase ist einfacher als das Brute-Force eines beliebigen 256-Bit-Schlüssels. Angenommen, Ihre Wortliste ist 64 KB lang (16 Bit pro Wort). Dann hat Ihre 6-Wort-Phrase 16 * 6 = 96 Bits an Entropie. Ein zufälliger Schlüssel hat die vollen 160 Bit (Bitcoin-Adressen werden aus einem 160-Bit-Hash des privaten Schlüssels abgeleitet).
Ich habe drei Minuten gebraucht ... Ich bin immer noch fassungslos von der Erfahrung ... "kostenlose Bitcoins", Leute, "kostenlose Bitcoins". Alles in Kleinbuchstaben, mit einem Leerzeichen und ohne Satzzeichen. Die ganze Geschichte findet ihr hier: igor.host/index.php/goldendustproject , mit Bildern und allem... Puh! kann es mir selber nicht erklären

Um Geld auszugeben, das an eine Bitcoin-Adresse gesendet wird, müssen Sie nur einen öffentlichen ECDSA-Schlüssel finden, der auf denselben 160-Bit-Wert hasht. Das dauert im Durchschnitt 2 160 Schlüsselgenerationen.

Angenommen, Sie könnten eine Milliarde (2 30 ) pro Sekunde erzeugen, benötigen Sie 2 130 Sekunden.

Um dies parallel mit einer Milliarde Maschinen zu tun, werden nur 2 100 Sekunden benötigt.

Wenn Sie eine Milliarde Ihrer reichsten Freunde dazu bringen, sich Ihnen anzuschließen, dauert es nur 2 70 Sekunden.

Es gibt ungefähr 2 25 Sekunden pro Jahr, also brauchen Sie 2 45 Jahre.

Das Alter des Universums beträgt bisher etwa 2 34 Jahre — besser loslegen!

Kann RIPEMD-160 (SHA-256 (öffentlicher Schlüssel)) nur rückgängig gemacht werden, indem verschiedene öffentliche Schlüssel ausprobiert werden, oder gibt es einen effizienteren Weg (vorausgesetzt, es gibt keine Schwäche)?
Um mir selbst zu antworten: nein. Wenn die Adresse jedoch zuvor zum Senden von Bitcoins verwendet wurde, kann der vollständige öffentliche Schlüssel in der Eingabe dieser Transaktion gefunden werden. Das reduziert das Problem auf die Berechnung des privaten Schlüssels aus dem öffentlichen Schlüssel, und es gibt effizientere Möglichkeiten, dies zu tun, als zufälliges Raten. Aber Sie müssen mindestens 30 Jahre warten, bis Moores Gesetz aufholt. Siehe meine Frage hier.
Ihre Berechnung geht davon aus, dass der richtige Schlüssel der allerletzte Schlüssel ist, den Sie generieren, richtig? Ich würde denken, dass du nach 2 ^ 23 Jahren eine 50%ige Chance hast, es geknackt zu haben ...
@ Peter, da hast du recht..
@Peter Eigentlich glaube ich nicht. Wann immer Sie ein bisschen Sicherheit hinzufügen oder ein bisschen entfernen, verdoppeln oder halbieren Sie den Suchraum effektiv. Brute Forcen des halben Suchraums bedeutet, dass 2 ^ 44 durchsucht werden - nicht 2 ^ 23.
Das hier ist die richtige Antwort.
Ist diese Zeit geschätzt, um 1 privaten Schlüssel zu knacken oder alle zu knacken?

Nein, das ist aus zwei Gründen nicht möglich.

Zunächst müssten Sie eine unvorstellbar große Anzahl von ECDSA-Schlüsselpaaren generieren und hashen, um eine vernünftige Chance zu haben, eine Kollision zu finden. Bei aktueller Rechenleistung würde das länger dauern als das Alter des Universums.

Zweitens ist es, wie in den anderen Antworten erwähnt, viel rentabler, Bitcoins zu generieren, wenn Sie über viel Rechenleistung verfügen.

Es ist möglich, nur höchst unwahrscheinlich und unpraktisch.
Etwas zu tun, das länger als das Alter des Universums dauern würde, ist möglich? Nicht durch irgendeine Bedeutung dieses Wortes, mit der ich vertraut bin. Ich habe diese Antwort positiv bewertet, also bedeutet die Nullpunktzahl, dass jemand sie negativ bewertet haben muss. Ich wäre sehr vorsichtig, wenn ich den Chefentwickler von BitCoin auf der BitCoin-Stack-Börse ablehnen würde ;) .
@eMansipate Ich glaube, die durchschnittliche oder erwartete Zeit ist länger als das Alter des Universums, aber es gäbe dennoch eine astronomisch geringe Wahrscheinlichkeit (klein genug, um für praktische Zwecke vollständig ignoriert zu werden), in kürzerer Zeit fertig zu werden.
Wenn jemand in einem Physik-Stack-Austausch fragen würde "Ist es möglich, dass mein Körper spontan explodiert", würden Sie ja sagen? Immerhin ist es theoretisch möglich, dass alle Atome in Ihrem Körper plötzlich Quantenzustände ändern und auseinander fliegen ...
Ja, das würde ich, und jeder mit anständigen Kenntnissen der Physik würde mir das bestätigen. Wir dürfen niemals etwas als unmöglich abtun, nur weil es höchst unwahrscheinlich ist. Wenn Sie auf einer Physik-Stack-Börse fragen würden, würde Ihnen ein Fan der Kopenhagener Interpretation wahrscheinlich sagen, dass Bitcoin bereits gehackt wurde , nur nicht in dieser „Fork“ des Universums. Jemand kann es immer noch versuchen und es kann ihm trotzdem gelingen, es ist nur nicht sehr wahrscheinlich - die Wahrscheinlichkeit ist so gering, dass es ausgeschlossen werden kann, aber "nein" ist immer noch eine falsche Antwort.
Oh und @eMansipate: Ich habe nichts als Respekt vor Gavin und allem, was er getan hat, Bitcoin ist ein erstaunliches Projekt und ich bin froh, dass er daran arbeitet. Er ist sicherlich ein großartiger Programmierer und ein sehr intelligenter Mann, aber all das macht Sie nicht immun dafür, dass Sie sich hin und wieder irren. Ich nehme meine Ablehnungen oder geschlossenen Fragen nicht persönlich und ich hoffe, dass Gavin das auch nicht tut.
@ David Perry: Sie haben gerade das Wort "möglich" zum Synonym für "nicht widersprüchlich" gemacht und seine häufigste Verwendung ungültig gemacht. Ich wette, Sie verwenden das Wort nicht wirklich so, wie es kein vernünftiger Mensch tut. "Können Sie am Sonntag meinen Rasen mähen?" "Ja.", eine Woche später, "Warum hast du meinen Rasen nicht gemäht?" "Ich habe nur gesagt, dass es möglich ist."
@ David Schwartz: Dies ist nicht wirklich ein geeigneter Ort für diese Diskussion, aber ich verwende das Wort tatsächlich so. Ich sage auch "Ich habe eine Hypothese", wenn ich tatsächlich nichts habe, was sich als Theorie qualifizieren könnte. Vielleicht ist es pedantisch, aber Spracherosion ist ein ernstes Problem. Auf jeden Fall ist es hier kein Thema, also werde ich es nicht weiter diskutieren.
@eMansipate Sie können die Länge eines bestimmten Versuchs nicht definieren, nur den durchschnittlichen Versuch oder einen gewissen Wahrscheinlichkeitsbereich. Zum Beispiel ist es sehr unwahrscheinlich, aber ich könnte eine Kollision zwischen 2 SHA-256-Hashes hintereinander mit einer Gesamtausführungszeit von <1 Sekunde erzeugen. Zugegeben mit der aktuellen Rechenleistung, um eine ANGEMESSENE Chance zu haben, eine Kollision zu erzeugen, würde eine Menge Zeit in Anspruch nehmen, aber das macht es nicht unmöglich, weil man in einem Versuch eine Kollision bilden könnte.
@theUn Ich kann nicht glauben, dass diese Antwort fünf Downvotes hat, wenn sie die tatsächlich gestellte Frage klar und genau beantwortet . Wenn ein Satz wie „um Geld zu stehlen“ eingeführt wird, wird unmissverständlich deutlich, dass der Anwendungsbereich eher eine praktische Möglichkeit als eine theoretische ist. Wenn die Security SE gefragt würde, ob es möglich sei, SSL-Zertifikate brutal zu erzwingen, um eine Website zu fälschen, wäre die Antwort „nein, es ist nicht möglich“, denn bis oder solange keine neue Mathematik/Hardware erfunden wird, fehlt der Menschheit als Ganzes das Fähigkeit. Mit deutlichem Hinweis auf „aktuelle Rechenleistung“ gilt das auch hier.
Oder betrachten Sie für einen direkteren Vergleich die Frage: "Ist es möglich, seinen Lebensunterhalt mit Roulette in einem Casino zu verdienen?" Jeder, der ja sagt, weil man für den Rest seines Lebens jedes Mal gewinnen könnte , gibt die falsche Antwort – der Kontext, der für „seinen Lebensunterhalt verdienen“ erforderlich ist, macht deutlich, dass wir eher von einer praktischen als von einer theoretischen Möglichkeit sprechen.
@eMansipater Ich denke, es ist eher die Zeile "Zuerst müssten Sie eine unvorstellbar große Anzahl von ECDSA-Schlüsselpaaren generieren und hashen", diese Aussage ist falsch. 100% falsch. Sie könnten eine Kollision mit einer kleinen Anzahl von Hashes erzeugen, möglicherweise sogar mit 1 Hash. Ebenso "würde das mit der aktuellen Rechenleistung länger dauern als das Alter des Universums." Die Mindestzeit zum Auffinden einer Kollision kann nicht definiert werden.
Ich habe mich nur gefragt, woher Sie das Alter des Universums kennen.
shoelessjoe: Es wäre vielleicht besser zu sagen, dass unsere Sonne die Erde einhüllen wird, bevor dies wahrscheinlich geschieht. DeathAndTaxes: Die Mindestzeit kann nicht definiert werden, aber die durchschnittliche Zeit. Die durchschnittliche Zeit bestimmt jedoch nicht, ob etwas "möglich" ist - die Mindestzeit tut es, und die Mindestzeit ist in diesem Fall ein Hash. eMansipater: Meine Antwort auf die Frage: Roulette wäre "möglich, aber höchst unwahrscheinlich", da das Aufrufen von etwas Unmöglichem Sie sehr dumm aussehen lässt, wenn jemand es tatsächlich tut.
Und ja, Gavin, es kann sein, dass mein Körper plötzlich explodiert, besonders an Silvester... Alter, das war eine ziemliche Party...:-)

Wenn Sie einen Beweis dafür sehen möchten, dass es wirklich unmöglich ist, ein bekanntes Schlüsselpaar zu generieren, können Sie dies selbst testen, wenn Sie möchten.

Pavol Rusnak hat Coinkit erstellt, eine Python-Bibliothek für die Interaktion mit Bitcoin-bezogenen Dingen. Darin gibt es ein Beispiel zur Verwendung , das genau das tut, was Sie fragen.

Was es tut, ist, dass es ein zufälliges Schlüsselpaar generiert und blockchain.info nach einem Guthaben durchsucht.

Ich habe es vor ca. einem Monat mit leichten Modifikationen auf ca. 1 Mio. Adressen laufen lassen und keine einzige kollidierende gefunden.

Kann jemand erklären, warum diese Antwort abgelehnt wird? Ich möchte Fehler in Zukunft vermeiden und bin ratlos.
Dennis, obwohl ich nicht derjenige war, der Ihre Antwort abgelehnt hat, kann ich verstehen, warum jemand dies tun könnte. Es fügt nicht wirklich etwas hinzu, was andere Antworten nicht bereits beschreiben, liefert keine mathematischen Berechnungen und ist sogar ein wenig unhöflich gegenüber dem OP.
Oh, Unhöflichkeit war meine Absicht und ich entschuldige mich aufrichtig. Es war eher witzig gemeint. Wie auch immer, was das "Nicht-Hinzufügen" angeht, bin ich anderer Meinung, es verweist auf einen Link, wo Sie sehen können, was oben in der Praxis theoretisiert wurde. Dinge in die Praxis umzusetzen ist immer wertvoll. Würden Sie nicht zustimmen? Ich habe meine Antwort basierend auf Ihrem Feedback bearbeitet. Vielen Dank!
Sie haben auf Links verwiesen, die an anderer Stelle nicht gefunden wurden, und Ihre Antwort mit Feedback aktualisiert. Vielen Dank! Hochgestimmt.

Wenn Sie Diagramme bevorzugen: http://i.imgur.com/ag3KQ0L.png (es gibt mehr Adressen im Adressraum als Zeptometer, 1/1 000 000 000 000 000 000 eines Meters, in der Breite des Universums) .

Wenn Sie Mathematik bevorzugen: http://download.wpsoftware.net/bitcoin-birthday.pdf (von Andrew Poelstra ) sagt (leicht bearbeitet):

Unter Verwendung von [Geburtstagsangriffsmathematik] haben wir [oben] berechnet, dass wir für eine Kollisionswahrscheinlichkeit von 0,1 % 5,4 × 10^22 vorhandene Adressen benötigen würden. Für eine Chance von 99,9999 % bräuchten wir 6,35 × 10^24 Adressen.

Selbst wenn also 10^22 Bitcoin-Adressen generiert wurden, wird es einfach nicht zu einer Kollision kommen. Aber wenn 10 ^ 25 Adressen generiert würden, würde es absolut zu einer Kollision kommen.

Müssen wir uns darüber Sorgen machen? Nein, aus diesen unabhängigen Gründen:

  1. Die Chance, eine bestimmte Kollision zu bekommen, beispielsweise eine Kollision mit einer Ihrer Adressen, ist immer noch 1 zu 2^160 oder 1 zu 10^48 . Selbst wenn Sie also eine Million Millionen Millionen Adressen haben, hat niemand eine Chance, mit Ihnen zusammenzustoßen.

  2. Zum Zeitpunkt der Erstellung dieses Artikels werden im Netzwerk weniger als 10^7 Adressen verwendet. Jeder mit 10^25 Adressen würde also nur mit seinen eigenen Adressen kollidieren.

  3. Jede Adresse benötigt ungefähr 100 Bytes zum Speichern. (Eigentlich etwa die Hälfte, aber wir interessieren uns nur für Größenordnungen.) Damit das Netzwerk also 10^25 Adressen unterstützt, würde es 10 Millionen Millionen Terabyte Speicherplatz benötigen, nur um sie aufzuzeichnen. (Und das berührt noch nicht einmal das Problem , einen so riesigen Datenspeicher zu durchsuchen .

  4. Wenn das aktuelle Mining-Netzwerk (das mit 25 THash das leistungsfähigste Computernetzwerk in der Geschichte der Welt ist) auf Adressgenerierung umgestellt würde, könnte das Netzwerk laut sipa 2,5 × 10^12 Adressen pro Sekunde (eine Adressgenerierung, die ungefähr 10 Hashes entspricht). Bei diesem Tempo würde es 127.000 Jahre dauern, um so viele Adressen zu erhalten. Ob der Homo sapiens schon so lange auf der Erde wandelt, ist fraglich.

  5. Mit 21 Millionen jemals existierenden Bitcoins und 8 Dezimalstellen der Teilbarkeit können höchstens 2,1 × 10 ^ 14 möglicherweise gleichzeitig Geld haben. Aber in einem Bereich von 10^24 Adressen bedeutet dies, dass nur eine von 10^12 Adressen möglicherweise Geld bei sich haben könnte. Ein Angreifer hat also, nachdem er das physikalisch Unmögliche 3 Billionen Mal getan hat, nur eine Chance von eins zu einer Billion, auch nur ein Satoshi herauszuholen.

Es gibt das LBC -Projekt (Large Bitcoin Collider), das dies versucht. Laut ihrer Website haben sie bis Oktober 2017 über 8.000 Billionen Schlüssel erstellt.

Laut einem Motherboard- Artikel vom April 2017 hat LBC über 30 private Bitcoin-Schlüssel gefunden.

Diese privaten Schlüssel sind nicht "echt". Sie wurden vom Schöpfer von LBC „eingeschleust“, dh er hat diese privaten Schlüssel nur zu dem Zweck finanziert, dass sie von LBC gefunden werden. Diese privaten Schlüssel wurden nicht wirklich von Menschen für tatsächliche Transaktionen verwendet. Diese privaten Schlüssel waren auch sehr kurz und hatten eine hohe Wahrscheinlichkeit, gefunden zu werden.
@AndrewChow kannst du diese "gepflanzte" Anschuldigung beweisen? Wenn Sie die Seitennummer der Backend-Seiten nehmen, den Offset der Zeilennummer hinzufügen und diese Nummer durch den Algo setzen, erhalten Sie genau das Wif und die Adresse.
@Michael Es steht buchstäblich im LBC-Thread auf Bitcointalk: bitcointalk.org/index.php?topic=1877935.msg18672178#msg18672178 . Prämien wurden ausschließlich für LBC erstellt.

Theoretisch ist es möglich (aber nicht rentabel). Aber in Wirklichkeit wäre der Geldbetrag, den Sie dafür ausgeben müssten, viel höher als das, was Sie verdienen würden.

Möglich: Ja.

Wahrscheinlich: Nein.

Viele Ereignisse sind möglich, obwohl sie nicht wahrscheinlich sind. Die Wahrscheinlichkeit, einen privaten Bitcoin-Schlüssel durch Brute-Force zu erzwingen, ist so unwahrscheinlich, dass es mit den aktuellen Computerstandards praktisch unmöglich ist.

Da sich die Wissenschaft der Kryptografie weiterentwickelt und Bruteforce immer leistungsfähiger wird, wird die zugrunde liegende Bitcoin-Infrastruktur verbessert, um mit der sich verbessernden Technologie Schritt zu halten. Dies kann erfordern, dass Sie in Zukunft mit einem verbesserten Client auf Ihre Bitcoin-Wallet zugreifen, um einen hohen Sicherheitsstandard aufrechtzuerhalten.

Außerdem ist eine Bitcoin-Adresse nicht dasselbe wie ein privater Schlüssel. Das Generieren einer Bitcoin-Adresse ermöglicht es einem Angreifer, Ihnen Münzen zu senden, aber es würde ihm nicht erlauben, Transaktionen mit Ihrem privaten Schlüssel zu signieren (dh Münzen aus Ihrer Brieftasche zu entfernen).

-1 Ablehnung. Technisch würde eine Kollision öffentlicher Schlüssel die Sicherheit eines privaten Schlüssels ungültig machen. Angenommen, Sie haben ein Paar aus privatem Schlüssel und öffentlichem Schlüssel xy. Wenn ich eine Kollision finde, bei der ein neuer privater Schlüssel z mit demselben öffentlichen Schlüssel y vorhanden ist, KANN ich Transaktionen wie Sie signieren. Durch das Signieren einer Transaktion (mit Ihren Bitcoins) mit dem Schlüssel z werden sie vom Netzwerk validiert, genauso wie sie es tun würden, wenn sie von x signiert würden. Beide würden gleichermaßen gültig erscheinen. Nur dein letzter Absatz ist falsch. Wenn Sie die Antwort ändern, werde ich die Ablehnung entfernen.
"Einem Angreifer erlauben, Ihnen Münzen zu schicken"? Jeder kann Ihnen Coins schicken. Um Ihre Münzen auszugeben, benötigt der Angreifer „alles“ einen privaten Schlüssel, sodass der entsprechende öffentliche Schlüssel denselben RIPEMD-160(SHA-256(x))-Hash wie Ihr öffentlicher Schlüssel hat.

Ja, nach dem technologischen Fortschritt wird es möglich, mit der Suche nach Kollisionen mit einer angemessenen Erfolgsrate zu beginnen, sobald Geräte verfügbar sind, die 1 Thash/s und mehr leisten können. Ich würde schätzen, dass dies in etwa 2-3 Jahren realisierbar sein wird, ob jemand, der es versucht, Glück hat, eine Adresse zu bekommen, die eine anständige Menge an BTC damit verbunden hat, ist eine andere Sache, und die Frage, ob dies der Fall wäre sogar profitabel sein ist noch weiter.

Ich bin mir ziemlich sicher, dass die Chancen viel geringer sind, als die grundlegende Mathematik anzeigt. Wenn Sie eine Übereinstimmung finden, die etwa 20 Zeichen lang ist, sind die Chancen ziemlich hoch, dass die vollständige Adresse aufgrund des Prozesses zur Generierung des Schlüssels übereinstimmt Paar.

Springen Sie ein Jahrzehnt weiter, und dies wird eine weitaus realistischere Sorge sein, oder an dem Punkt, an dem Thash normal wird und Phash auf dem Vormarsch ist In ein paar Jahren noch nicht einmal erfunden.

Ich muss zugeben, ich weiß nicht genug darüber, wie viele Adressen man mit einem 1-Th/s-Computer generieren könnte, aber ich habe einmal die Wahrscheinlichkeit einer Kollision berechnet, wenn jeder Mensch auf diesem Planeten 100 Adressen hat. Wenn ich mich richtig erinnere, war es immer noch im Bereich von 10^-27, also fühlt sich die Aussage, dass das Suchen von Kollisionen mit 1 Th/s plausibel wird, um einige Größenordnungen falsch an. Wenn die Technologie ausreichend fortschreitet, können Adressen auch einfach auf einen größeren Raum inkrementiert werden.
Ich war mir wahrscheinlich nicht klar, es ist jetzt durchaus machbar, Geräte von Ghash/s zu Hause zu haben, wenn es machbar ist, Geräte von Thash/s zu Hause zu haben, die nicht mehr rentabel sind, um für das Schürfen von Bitcoin verwendet zu werden, dann wird es einen Anreiz geben Starten Sie Collision-Mining-Pools mit xxx Thash/s-Fähigkeiten. Mining-Ausrüstung wird für das Mining von Bitcoin schnell nutzlos, das Mining von Bitcoin wird schwieriger, die Belohnungen werden geringer - das Auffinden von Kollisionen wird einfacher, da (a) mehr Schlüsselpaare/Adressen im Laufe der Zeit verwendet werden (b) mehr Hashing-Leistung billig verfügbar ist (c) nein immer schwieriger werden.
Das war nicht das Problem, da folge ich dir. Meine Probleme sind: 1) Können ASIC-Miner überhaupt wiederverwendet werden, um Adressen zu generieren, und 2) Ich denke, dass Ihr Vorschlag die Schwierigkeit, eine Kollision zu finden, immens unterschätzt.
In Bezug auf (2) müssen einige Zahlen dazu zusammengetragen werden, die Variablen sind: die Geschwindigkeit, mit der Angreifer öffentliche ECDSA-Schlüssel erstellen und sie mit einer Liste vergleichen können, die Anzahl der finanzierten Bitcoin-Adressen, für die ein Schlüssel gelten würde nützlich - bestimmte Teile der Gleichung sind gut bekannt, zum Beispiel können wir vernünftigerweise davon ausgehen, dass die Schlüsselverteilung im gesamten Raum ziemlich gleichmäßig sein wird (daher wäre ein Angriff auf nur einen Teil des Raums möglich) und dass es ungefähr 2^96 private gibt Schlüssel für jede Adresse.
In Bezug auf (1) ist für jede Adresse, die eine Eingabe ausgegeben hat und verbleibende nicht ausgegebene Eingaben hat, der öffentliche ECDSA-Schlüssel in der Blockchain, was die Überprüfung viel einfacher macht, für jede Adresse, die nur empfangen und nicht ausgegeben hat, dann ist die Reife 160-Adresse in der Blockchain, die 2 zusätzliche Schritte von reifemd-160 (sha256 (ecdsa-public-key)) erfordert, was es wesentlich rechenintensiver macht, viel weniger als das Berechnen einer vollständigen Adresse als Vanity-Adresse.
Gibt es eine in die BitCoin-Architektur integrierte steckbare Krypto-Technologie, die das Unvermeidliche umgehen kann?
Können Sie Ihre Berechnungen bitte begründen? Wenn RIPEMD-160 sicher ist, sollte es grobe 2^80Schlüssel erfordern, um eine Kollision zu finden. Das Generieren eines Schlüssels dauert viel länger als ein SHA-256-Hash (und Standard-Mining-ASICs tun dies nicht), daher ist "THash" keine nützliche Messung. Aber selbst wenn Sie 1 Tera-Schlüssel pro Sekunde erstellen könnten, müssen Sie 2^40Schlüssel für eine durchschnittliche Kollision erstellen - das sind nach meiner Berechnung etwa 34.000 Jahre - und selbst dann haben Sie wahrscheinlich nur eine Kollision mit einem anderen von Ihnen generierten Schlüssel gefunden. das enthält eigentlich keine Münzen.
Und können Sie bitte Ihre Bemerkung zu einem 20-Zeichen-Match erklären? Es hört sich so an, als würden Sie behaupten, dass die 2^256möglichen privaten Schlüssel nur 2^117oder so der 2^160möglichen Adressen zugeordnet sind - das scheint eine große Schwäche der verwendeten Hash-Algorithmen zu sein, wenn dies zutrifft, und sollte in einem führenden Krypto-Journal veröffentlicht werden.

Ich habe auf bitcoin.org gelesen, dass ein privater Schlüssel $d_A$ eine beliebige Ganzzahl zwischen $1$ und $n-1$ ist. Auch $n=FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE 0x00 = 18.446.744.073.709.551.615 0d00 $. Unter der Annahme von 100 Mio. verschiedenen Adressen entspricht dies einer Wahrscheinlichkeit von 5,42 $ e^{-12}$, eine verwendete Adresse auszuwählen. Wenn wir $x$ Vermutungen haben, brauchen wir $x=$frac{1}{5.42e^{-12}}$ private Schlüssel, um sicherzustellen, dass wir einen finden. Das sind $5,42 e^{12}$ Adressgenerierung, dann müssten Sie für alle 5,42 Billionen zufällig generierten privaten Schlüssel, die generiert werden, $G$ mit jedem privaten Schlüssel $d_n$ im elliptischen Feld multiplizieren, um $Q_n$ zu erhalten, und dann suchen Bitcoin-Blockchain für dieses $Q_n$. Nach 5,42 Billionen von ihnen würden Sie mit ziemlicher Sicherheit einen finden und in der Lage sein, seine BTC zu stehlen.

Sie könnten die Informatik dazu berechnen, wie lange $d_n \times G$ zu multiplizieren und wie lange die Blockkette zu durchsuchen ist. Da fast alle nicht darin enthalten sind, werden es alle Worst-Case-Suchen sein.

Ich habe das Gefühl, dass dies gelegentlich passieren kann, aber viel zu wenige, um als signifikante Bedrohung angesehen zu werden, zumindest vorerst, da dieses Problem nicht so groß wird wie die Blockchain. Außerdem können Sie sogar die in einer BTC-Wallet enthaltene Menge mitteln und die Rentabilität berechnen, und ich vermute, dass sie niedrig ist. Als würden Sie das alles durchmachen, nur um vielleicht 500 USD zu stehlen