Brute-Forcing privater Schlüssel

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?

2^128 ist die Größe der Brute-Force-Suche nach Kollisionen auf 256 Bits aufgrund des Geburtstagsparadoxons. Vielleicht gibt es also einen Link. Aber dann müssen Sie nur eine Kollision zwischen 160-Bit-Adressen finden, also 2 ^ 80 Operationen, was viel weniger ist ...
Meine Mathematik mag falsch sein, aber wenn ich die Zahl auf 2^80 ändere und den Rest der Parameter gleich behalte, würde es nur 38 Jahre dauern.

Antworten (1)

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 2und n - 1zu testen, ob sie neine 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.5ergibt 2^128Schritte zum Brute Forcen eines 256-Bit-Schlüssels. Daher sind höchstens 2^128Versuche 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, nist reiner Zufall.