In diesem Beitrag eines Ethereum-Ingenieurs aus dem Ethereum-Wiki über Brute-Forcing von privaten Schlüsseln schreibt er:
„Öffentliche Schlüssel sind so bemessen, dass Brute Force ohne einen Durchbruch bei der Lösung des Problems des diskreten Logarithmus für jede erdenkliche Menge an Rechenleistung unpraktisch ist. Mit 2^128 möglichen Kombinationen, und wenn wir davon ausgehen, dass ein moderner Computer beispielsweise a berechnen kann Milliarden pro Sekunde (was eine massive Überschätzung ist), würde es eine Million solcher Computer ~ 5 bis 15 Jahre dauern, um Ihren Schlüssel brutal zu erzwingen. Wenn wir davon ausgehen, dass sich die Rechenleistung um ein weiteres Millionenfaches verbessert, würde dieser massive Cluster "nur" etwa 5 benötigen Milliarden Jahre."
Laut dieser Frage ist ein privater Schlüssel jedoch 256 Bit lang. Warum bezieht sich das Zitat in diesem Fall auf 2^128 statt auf 2^256?
Haftungsausschluss: Nicht mein Fachgebiet.
Ethereum verwendet aus Sicherheitsgründen Elliptische-Kurven-Kryptografie (ECC). Man kann einen naiven Brute-Force-Test eines 256-Bit-Schlüssels durchführen, indem man alle 2^256 Kombinationen testet. Ähnlich wie es unnötig ist, jede Zahl dazwischen zu testen 2
und n - 1
zu testen, ob sie n
eine Primzahl ist (die Worst-Case-High-School-Methode ist O(n^0.5)
, aber es gibt noch bessere Algorithmen ), kann ECC gebrochen werden, indem das relevante diskrete Log-Problem der elliptischen Kurve effizienter gelöst wird .
Die bekanntesten Algorithmen zum Lösen des diskreten logarithmischen Problems der elliptischen Kurve arbeiten im schlimmsten FallO(n^0.5)
; (2^256)^0.5
ergibt 2^128
Schritte zum Brute Forcen eines 256-Bit-Schlüssels. Daher sind höchstens 2^128
Versuche erforderlich, um einen 256-Bit-Schlüssel zu knacken, der für Ethereum verwendet wird. Beachten Sie, dass dies nichts mit dem Geburtstagsparadoxon zu tun hat, das sich auf Kollisionen bezieht; die Tatsache, dass beide Quadratwurzeln aus sind, n
ist reiner Zufall.
Dist
liquidki