Frage:
Regenbogentabellenkonzept für Primzahlen
sudhacker
2012-12-11 01:49:26 UTC
view on stackexchange narkive permalink

Gibt es ein Konzept, bei dem vorberechnete Tabellen zur Faktorisierung von Primzahlen verwendet werden können? Ist es möglich, dass ein Computer Millionen von Primzahlen generieren, speichern und dann die Faktoren effektiv bestimmen kann?

Fünf antworten:
Polynomial
2012-12-11 02:38:36 UTC
view on stackexchange narkive permalink

Es ist unwahrscheinlich. Die beteiligten Primzahlen sind riesig , daher ist der Schlüsselbereich riesig. Wie massiv es ist, hängt von Ihrer Schlüsselgröße ab. Lassen Sie uns jedoch 512-Bit-Primzahlen für ein Beispiel mit niedrigerer Grenze auswählen.

Die Primzählfunktion gibt uns eine Schätzung der Anzahl der Primzahlen unter einer bestimmten Zahl. Es ist schwierig, genau zu berechnen, aber eine genaue Schätzung ist definiert als π (x) = x / ln (x) , wobei ln der natürliche Logarithmus ist. Als solches können wir eine Schätzung der erwarteten Anzahl von Primzahlen unter dem höchsten Wert in einer n -Bit-Zahl berechnen, indem wir π (2 ^ n) berechnen. Wenn wir alle Zahlen ausschließen möchten, die nicht genau n -bit sind, berechnen wir π (2 ^ n) - π (2 ^ (n-1)) . Dies ist technisch nicht erforderlich , gibt uns jedoch eine schöne Untergrenze dafür, wie viele große Primzahlen für diese Schlüsselgröße vorhanden sind.

Für n = 512 Die Anzahl der für eine vollständige Liste erforderlichen Primzahlen beträgt 1,885 × 10 151 sup>. Wenn wir jede Primzahl in einem 512-Bit-Eintrag speichern können, sind das 1,207 × 10 153 sup> Bytes, das sind 132 Größenordnungen mehr als die Speicherkapazität der Festplatte weltweit .

Also nein, nicht wirklich machbar.

Das ist eine Antwort.
Nur als schneller Seitenknoten: Der Subtraktionsteil zeigt eine interessante Eigenart der Auswahl von n-Bit-Primzahlen. Es ist nicht so, als würde man einen zufälligen Bytestrom erzeugen, bei dem jedes Bit die gleiche Wahrscheinlichkeit hat, entweder 1 oder 0 zu sein. Tatsächlich ist die Auswahl einer 512-Bit-Primzahl, deren erste 10 Bits zufällig 0 sind, _bad_, weil Sie keine mehr haben Bei einer 512-Bit-Primzahl haben Sie eine 502-Bit-Primzahl. Technisch gesehen ist eine zufällige n-Bit-Primzahl also nur theoretisch zufällig über n-1 Bits, wobei das höchstwertige Bit * immer * auf 1 gesetzt ist. Zum Glück ist der Schlüsselraum so groß, dass er keinen Unterschied macht.
@Polynomial: Ist die Auswahl der zufälligen Primzahl innerhalb des Schlüsselraums als zusätzliche Frage zu Ihrem letzten Kommentar zum Schlüsselraum wirklich zufällig? Ich habe noch nie eine Implementierung von RSA gesehen, für mich ist es nur eine Black Box.
[Ja] (http://crypto.stackexchange.com/questions/1970/how-are-primes-generated-for-rsa).
Die Primzählfunktion ist nicht definiert als "π (x) = x / ln (x)" - das wäre nicht sinnvoll, da "π (x)" immer eine ganze Zahl sein muss und "x / ln (x)" `ist niemals eine ganze Zahl. Stattdessen wird es in einem bestimmten mathematischen Sinne durch "x / ln (x)" angenähert.
@DietrichEpp Ja, das ist eigentlich eine wichtige Unterscheidung. Ich werde aktualisieren.
Ich bin mir zwar sicher, dass das Ergebnis immer noch nicht realisierbar sein wird, aber Sie haben die Reduzierung des Speichers, den ein Regenbogentisch bietet, nicht berücksichtigt. Bei der ganzen Sache mit dem Regenbogentisch geht es darum, weniger als eine vollständige Nachschlagetabelle zu speichern. Nur ein Gedanke.
@lynks Ein Regenbogentisch reduziert seinen Platz durch Verkettungseingaben durch eine Reduktionsfunktion. Wie Jeff Ferland betonte, gibt es für solche Werte keine Reduktionsfunktion. Wenn wir uns an die reine Verkettung halten, müssen Sie beide Faktoren speichern, die ohnehin n Bits überschreiten.
Das macht Sinn, ich denke, wir fragen nach einer Funktion, die das Produkt auf ein Paar von Primzahlen * reduziert *, die nicht die beiden Faktoren sind. Wenn wir das hätten, würden wir den Tisch überhaupt nicht brauchen ...
Genau. Es ist ein Haken 22.
Vergessen Sie nicht zu erwähnen, dass [Sie müssten genug Energie aufbringen, um die gesamten Ozeane der Erde zu kochen, um nur 2¹³⁷ Bytes zu bevölkern] (https://blogs.oracle.com/bonwick/entry/128_bit_storage_are_you). .
Um 1,885 * 10 ^ 151 ins rechte Licht zu rücken, beträgt die aktuelle Schätzung für die Anzahl der Atome im Universum ca.4 * 10 ^ 81 ... Dennoch wird die Verwendung von 512-Bit-Primzahlen (um eine ca. 1024-Bit-Halbprimzahl zu erzeugen) nicht mehr als sichere RSA-Schlüssellänge empfohlen (obwohl dies wahrscheinlich zu diesem Zeitpunkt der Fall warFrage wurde ursprünglich gestellt).
Jeff Ferland
2012-12-11 02:46:42 UTC
view on stackexchange narkive permalink

Regenbogentabelle: Jede "Farbe" nimmt eine zufällige Eingabe (den Ausgabe-Hash der letzten Iteration oder den ursprünglichen Hash) und gibt eine Ausgabe zurück, die einem beliebigen Muster zugeordnet ist (z. B. alle Buchstaben). Das wird dann gehasht und an die Eingabe zurückgemeldet.

Da wir auch eine Reduktionsfunktion angeben können, die eine beliebige zufällige Zeichenfolge verwendet und diese deterministisch einem beliebigen Ausgabemuster zuordnet, funktioniert dies für Kennwörter. Es gibt jedoch keine definierbare Funktion, um einen Eingabewert zu verwenden und eine Zahl auszugeben, von der bekannt ist, dass sie eine Primzahl ist.

Jede Zahl, von der nicht bekannt ist, dass sie eine Primzahl ist, weil Sie sie bereits getestet haben muss auf Primheit geprüft werden. Sofern eine Zahl nicht als bekannter Primwert gespeichert ist, ist somit kein Zeit- / Speicher-Kompromiss zu erzielen.

JZeolla
2012-12-11 02:51:47 UTC
view on stackexchange narkive permalink

Worüber Sie hier sprechen, ist nicht machbar. Crypto berechnet nicht einfach große Primzahlen, sondern Sie müssen das Produkt aus zwei Primzahlen faktorisieren.

Sie müssten Millionen von Primzahlen berechnen und in ein wahnsinnig großes Array einspeisen. Dann müssten Sie dieses Array duplizieren, damit Sie ein zweidimensionales Array haben. Dann müssten Sie jeden einzelnen Eintrag in der ersten Dimension mit jedem einzelnen Eintrag in der zweiten Dimension multiplizieren und die beiden Primzahlen und das Ergebnis in einem zweiten Array speichern. Dieses zweite Array wäre gigantisch, und mit gigantisch meine ich, dass es in keiner Weise gespeichert werden kann, aber es würde Ihre Antworten enthalten.

Primzahlen können * überhaupt * nicht berücksichtigt werden - deshalb sind sie Primzahlen. RSA verwendet Semiprimes, die das Produkt zweier Primes sind.
Vielen Dank, ich habe das versehentlich beim Bearbeiten durcheinander gebracht. Ich wollte sagen, Primzahlen berechnen / große Primzahlen.
TOMtomTOM
2014-02-13 15:30:13 UTC
view on stackexchange narkive permalink

Sicher nicht einfach, aber ... "Wo ein Wille ist, ist auch ein Weg" WENN Sie alle Primzahlen von Nummer 2 -> 512 Bit in einer Tabelle haben wollten, dann alle möglichen Produkte, dann wäre dies ja unvorstellbar groß. Aber lassen Sie uns zurückgehen und darüber spekulieren, warum jemand es will. Nehmen wir nur an, jemand hat ein Szenario, in dem er ein Paar von Primzahlen mit ähnlicher Bitlänge verwendet, um eine große Zahl zu erstellen, die für andere nur schwer in ein Paar von Primzahlen einfließen kann (klingt vertraut ...?). Nicht alle möglichen Kombinationen von Primzahlen wären erforderlich, da nur ähnliche Bitlängen verwendet würden. Dadurch wird die Tabellengröße drastisch reduziert. Um pedantisch zu sein, wäre dies eine Rainbow Cube -Tabelle, da dies mehrere Dimensionen erfordert. Die Fähigkeit, Fakten dieser großen Primzahlen zu bestimmen, ist sicherlich schwierig, da die speicherresidente Größe der Cubes (wenn sie für eine effiziente Analyse im RAM gespeichert werden) für einen billigen PC zu groß ist. Es gibt jedoch sicherlich einige große Organisationen, die riesige mehrdimensionale Strukturen besitzen dieser Art von Proportionen (wie Google für ihre Suche). Es ist höchst unwahrscheinlich, dass es keine stark ausgestatteten Organisationen gibt, die solche Prime Cubes bereits berechnet und verwendet haben. Die Schwierigkeit, das Paar von Primzahlen zu berücksichtigen, ist die "Überschriften" -Schwierigkeit für z. RSA, aber unterschätzen Sie nicht die zusätzliche Schwierigkeit, die durch den Schritt zum Generieren des privaten Schlüssels entsteht, da er eine modulare Berechnung aufweist.

Richard
2012-12-11 05:48:58 UTC
view on stackexchange narkive permalink

Wie bereits oben erwähnt, ist auf der ganzen Welt nicht annähernd der erforderliche Speicherplatz vorhanden. Ich würde wetten, dass ein Quantencomputer, auf dem Shors Algorithmus (oder ein ähnlicher Algorithmus) ausgeführt wird, die Notwendigkeit zunichte gemacht hat, bevor wir überhaupt zu dieser Speichermenge gelangen.

Interessanterweise würde dies auch bedeuten, dass die Behauptung der RSA, dass "2048-Bit-Schlüssel für die nächsten Jahrzehnte gültig sein werden", ungültig würde. Es wäre großartig, wenn Sie in Ihrer Antwort Referenzen hinzufügen, um zukünftigen Zuschauern zu helfen :)


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...