SECP256K1 Mindestwert für privaten Schlüssel

Ich habe mich mit Elliptic Curve Cryptography befasst, insbesondere mit der SECP256K1-Spezifikation, die in Bitcoin und Ethereum verwendet wird. Ich verstehe also, dass der Generatorpunkt G basierend auf der Spezifikation festgelegt ist und dass ein privater 256-Bit-Schlüssel (privKey) (idealerweise) wirklich zufällig von 1 bis 1.157920892373162e+77 ausgewählt wird. Der öffentliche Schlüssel (pubKey) wird von dem privaten Schlüssel abgeleitet, so dass der öffentliche Schlüssel privKey*G ist, wobei dies Punktadditions- und Punktverdopplungsoperationen umfasst.

Was ich noch nicht herausgefunden zu haben schien, ist, dass es einen festen Einstiegspunkt G gibt, an dem jeder Gegner beginnen müsste, um zu versuchen, einen privaten Schlüssel aus einem öffentlichen Schlüssel zu entschlüsseln (vorausgesetzt, es wird keine partielle Rainbow-Wertetabelle verwendet ).

Würde das also nicht bedeuten, dass der größte Wert für den privaten Schlüssel, der am weitesten von der Berechnung entfernt ist (dh 1,157920892373162e+77), am sichersten ist?

Würden also private Schlüssel unter einem bestimmten Schwellenwert nicht als kompromittiert angesehen, z. B. private Schlüssel im Bereich von 0-1000 zum Beispiel?

Ich habe das Gefühl, dass mir hier etwas fehlt, jede Hilfe ist willkommen!

Antworten (1)

Wenn Menschen im Allgemeinen häufiger niedrigere Ganzzahlen als private Schlüssel auswählen würden als größere Ganzzahlen, dann wäre es eine gute Strategie für einen Angreifer, mit niedrigeren Ganzzahlen zu beginnen.

Allerdings gilt auch das Gegenteil. Wenn die Leute häufiger größere Zahlen auswählen würden, würden Angreifer idealerweise am Ende beginnen und sich rückwärts vorarbeiten.

In der Praxis existiert eine solche Verzerrung nicht. Solange die Leute eine anständige Zufallszahlengenerierung verwenden, ist jede ganze Zahl genauso wahrscheinlich wie jede andere, und es spielt keine Rolle, in welcher Reihenfolge ein Angreifer Dinge versucht. Unabhängig davon muss er im Durchschnitt die Hälfte des privaten Schlüsselbereichs durchlaufen.

Also nein, es gibt keine Mindestanzahl, mit der man beginnen kann. Ja, Sie haben eine extrem geringe Chance, eine Zahl zwischen 1 und 1000 zu wählen. Aber ebenso haben Sie die gleiche Chance, eine Zahl zwischen 76136428194729137 und 76136428194730136 zu wählen. Ein Angreifer hat keinen Grund zu der Annahme, dass Sie eher eine Zahl zwischen 1 wählen werden und 1000, warum also sollte ein Angreifer bei beginnen?

Auch wenn der Angreifer den öffentlichen Schlüssel hat, gibt es viel schnellere (aber immer noch völlig undurchführbare) Algorithmen, um den privaten Schlüssel zu finden. Diese Algorithmen arbeiten von Natur aus in zufälliger Reihenfolge, es spielt also keine Rolle.

danke für die gut erklärte Antwort, ich dachte dummerweise, dass der Generatorpunkt der Ausgangspunkt sein müsste. Mit anderen Worten, ich habe nicht erkannt, wie Abkürzungen durch den Wertebereich mit der Double-and-Add-Methode erstellt werden können, und daher könnte ein Gegner ganz einfach von fast überall in diesem Bereich aus starten. Dies war sinnvoll, da die Schlüsselgenerierung sehr viel Zeit in Anspruch nehmen würde, wenn nur die Punktadditionsoperation verwendet werden könnte. Ich bin dumm, ich lerne immer noch, nehme ich an!
Nur eine kurze Frage, mit der Punktverdopplungsoperation kann ich den Bereich der Vielfachen wie folgt überspringen: 1 * G -> 2 * G -> 4 * G -> 8 * G -> 16 * G .... und so an. Bin ich richtig, wenn ich das sage?
Ja, absolut. In der Praxis erfolgt die Multiplikation eines Punktes mit einer Zahl durch eine Variante eines Double-and-Add-Algorithmus, der nachfolgende Potenzen von 2 berechnet und diejenigen, die eine 1 in der Bitdarstellung des Skalars haben, zusammenaddiert.