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?
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,
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.
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!
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.
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.
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:
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.
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.
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 .
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.
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.
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).
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.
2^80
Schlü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^40
Schlü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.2^256
möglichen privaten Schlüssel nur 2^117
oder so der 2^160
mö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.
Artefakt2
Schrittmacher
Murch
Schrittmacher
Murch
Murch
manan5439