CARL VON OSSIETZKY Pollards Rho-Methode zur Faktorisierung Abschlusspräsentation Bachelorarbeit Janosch Döcker Carl von Ossietzky Universität Oldenburg Department für Informatik Abteilung Parallele Systeme Inhaltsverzeichnis 1 Einleitung 2 Hintergrund 3 Das Verfahren 4 Experimente 5 Fazit 6 Referenzen Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 2/37 Übersicht 1 Einleitung 2 Hintergrund 3 Das Verfahren 4 Experimente 5 Fazit 6 Referenzen Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 3/37 Das Faktorisierungsproblem Definition (Faktorisierungsproblem) Gegeben: Eine zusammengesetzte Zahl N ≥ 4 Gesucht: Die Primfaktorzerlegung von N Faktorisierungsproblem vermutlich nicht effizient lösbar Praktische Relevanz: Sicherheit von RSA Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 4/37 Wichtige Fakten zur Rho-Methode 1975 von John M. Pollard beschrieben Probabilistisches Verfahren Laufzeit abhängig von der Größe der Primfaktoren Analyse basiert auf Annahmen 1980 von Richard P. Brent verbessert 8 Faktorisierung der Fermatzahl F8 = 22 + 1 = 115 792 089 237 316 195 423 570 985 008 687 907 853 269 984 665 640 564 039 457 584 007 913 129 639 937 Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 5/37 Übersicht 1 Einleitung 2 Hintergrund 3 Das Verfahren 4 Experimente 5 Fazit 6 Referenzen Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 6/37 Pseudozufallszahlen Philosophische Frage: Gibt es echten Zufall? Pseudozufallszahlen deterministisch erzeugt Bekannte Methode: Linearer Kongruenzgenerator (LKG) Entwickelt von Derrick H. Lehmer LKG: xi+1 = (axi + c) mod m mit x0 ∈ {0, 1, . . . , m − 1} Ausreichende Zufälligkeit“ für viele Anwendungen . . . ” . . . wenn die Parameter gut gewählt sind. Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 7/37 Linearer Kongruenzgenerator LKG hat Schwachstellen unabhängig von der Parameterwahl G. Marsaglia: Random numbers fall mainly in the planes“ (1968) ” Beispiel: xi+1 = (169xi + 17) mod 512 Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 8/37 Quadratischer Kongruenzgenerator(QKG) Vorgeschlagen von Donald E. Knuth QKG: xi+1 = (axi2 + dxi + c) mod m mit x0 ∈ {0, 1, . . . , m − 1} Beispiel: xi+1 = (18xi2 + 23xi + 17) mod 512 Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 9/37 Vergleich zwischen LKG und QKG LKG einfacher zu berechnen LKG linear, QKG nicht linear Pseudozufallszahlen erscheinen beim QKG zufälliger“ ” Beide Generatoren erzeugen schließlich periodische Folgen Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 10/37 Beispiel: Schließlich periodische Folge x0 = 2, xi+1 = (xi2 + 1) mod 131 Länge der Vorperiode: 4 Periodenlänge: 7 Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 11/37 Floyds Algorithmus M endliche Menge, f : M → M, C ∈ M Anwendbar auf schließlich periodische Folgen der Form: x0 = C , xi+1 = f (xi ) Bestimmung eines Vielfachen der Periodenlänge Auffinden eines wiederkehrenden Elements ? Idee: xk = x2k für k = 1, 2, . . . Nach Floyd: x0 = y0 = C , xi+1 = f (xi ), yi+1 = f (f (yi )) Sehr geringer Speicherverbrauch Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 12/37 Beispiel: Floyds Algorithmus x0 = 2, xi+1 = (xi2 + 1) mod 131 k 1 2 3 4 5 6 7 xk 5 26 22 92 81 12 14 yk = x2k 26 92 12 66 109 81 14 Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 13/37 Übersicht 1 Einleitung 2 Hintergrund 3 Das Verfahren 4 Experimente 5 Fazit 6 Referenzen Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 14/37 Wonach sucht die Rho-Methode? Sei N ≥ 4 eine zusammengesetzte Zahl und p ein (unbekannter) Primfaktor von N. Gesucht: x, y ∈ Z mit x ≡ y (mod p) und x 6≡ y (mod N) Es gilt per definitionem: (1) x ≡ y (mod p) ⇔ p | (x − y ) (2) x 6≡ y (mod N) ⇔ N - (x − y ) Aus (1) und (2) folgt: 1 < ggT (x − y , N) < N Wichtiges Hilfsmittel: Euklidischer Algorithmus Wie können solche x, y (sinnvoll) bestimmt werden? Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 15/37 Herleitung der Rho-Methode Sei f (x) eine ganzzahlige Polynomfunktion und S ∈ Z Folge von Pseudozufallszahlen: x0 = S, xi+1 = f (xi ) mod N Schließlich periodisch: x̃0 = S, x̃i+1 = f (x̃i ) mod p x̃k ≡ xk (mod p) für k ≥ 0 x̃k = x̃2k ⇒ xk ≡ x2k (mod p) ⇒ p | ggT (xk − x2k , N) Wie bei Floyds Algorithmus: y0 = S, yi+1 = f (f (yi ) mod N) mod N ? ? Unterschied: ggT (xk − yk , N) > 1 anstatt xk = yk Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 16/37 Beispiel Rho-Methode Gesucht: Primfaktorzerlegung von N = 74539 Parameter: x0 = y0 = 2, f (x) = (x 2 + 1) mod N k 1 2 3 4 5 6 7 xk = f (xk−1 ) 5 26 677 11096 57328 536 63680 yk = f (f (yk−1 )) 26 11096 536 71723 13078 3880 23332 ggT (xk − yk , N) 1 1 1 1 1 1 131 Damit ergibt sich N = 131 · 569. Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 17/37 Eine einfache Implementierung def pollard_rho(n) x = y = 2 d = 1 begin x = (x * x + 1) % n y = (y * y + 1) % n y = (y * y + 1) % n d = (x - y).gcd(n) end until d > 1 puts d < n ? "Gefundener Faktor: #{d}" : "Fehlschlag!" end Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 18/37 Demonstration Demonstration der (kompletten) Implementierung anhand: N1 = 662 835 905 978 993 515 936 337 N2 = 1 424 842 450 293 704 631 855 941 378 617 365 082 792 870 362 961 939 468 399 779 353 800 137 802 539 831 394 422 161 828 003 733 369 548 864 158 809 441 716 321 Welche Zahl wird schneller in Primfaktoren zerlegt? Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 19/37 Verallgemeinertes Geburtstagsproblem Keine Analyse ohne Annahmen bekannt Intuitiver Zugang: Verallgemeinertes Geburtstagsparadoxon Definition (Verallgemeinertes Geburtstagsproblem) Wie viele ganze Zahlen müssen zufällig gewählt werden, damit x ≡ y (mod p) für mindestens zwei der Zahlen mit Wahrscheinlichkeit ≥ 21 gilt? Wahrscheinlichkeit, dass q Zufallszahlen paarweise inkongruent Qq−1 q(q−1) i modulo p sind: i=1 1 − p ≈ exp(− 2p ) 1 Lösung von exp(− q(q−1) 2p ) = 2 : q = Janosch Döcker 1 2 + q 1 4 Pollards Rho-Methode zur Faktorisierung √ + 2p ln 2 ≈ 1.18 p 27. Mai 2011 20/37 Geburtstagsparadoxon 1 Wahrscheinlichkeit zwei gleiche Geburtstage 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 Janosch Döcker 20 40 60 Anzahl zufällig ausgewählter Personen Pollards Rho-Methode zur Faktorisierung 80 100 27. Mai 2011 21/37 Hintergrund von Pollards Analyse Sei M := {0, 1, . . . , m − 1}. Knuth untersuchte Folgen der Form xi+1 = f (xi ) mit I zufälligem Startwert x0 ∈ M und I zufälliger Abbildung f : M → M. Unter anderem zeigte er: I Mittlere Länge der Vorperiode: µ ≈ I Mittlere Periodenlänge: λ ≈ Janosch Döcker p πm 8 p πm + 8 1 3 − 2 3 √ ≈ 0.626657 m √ ≈ 0.626657 m Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 22/37 Pollards Analyse Sei (x̃i ) die Folge der Rho-Methode modulo p. Form: x̃i+1 = f (x̃i ) mod p mit ganzzahliger Polynomfunktion f (x) Annahme: f (x) mod p ist zufällige“ Abbildung von Zp in sich ” Gesucht: Mittelwert des kleinsten k > 0 mit x̃k = x̃2k Pollard zeigte unter der erwähnten Annahme: 5 √ π2 √ k(p) ≈ √ p ≈ 1.030809 p 12 2 Für lineare Polynomfunktionen ist die Annahme nicht plausibel. Pollard empfiehlt f (x) = x 2 + c mit c 6= 0, −2. Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 23/37 Übersicht 1 Einleitung 2 Hintergrund 3 Das Verfahren 4 Experimente 5 Fazit 6 Referenzen Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 24/37 Experimente Folge der Form: x̃i+1 = (x̃i2 + c) mod p Eigenschaften von (x̃i ): I Länge der Vorperiode: µ(p) I Periodenlänge: λ(p) I Kleinstes k > 0 mit x̃k = x̃2k : k(p) Pollard untersuchte (x̃i ) mit x̃0 = 2 und c = −1 empirisch. Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 25/37 Die Funktion aµ (n) für c = 1 aµ (n) = 1 |{p∈P:p≤n}| P p∈P p≤n µ(p) √ p 0.63 0.62 aµ(n) 0.61 0.6 0.59 0.58 x0 = 2 x0 zufällig 0.57 0 1e+006 2e+006 3e+006 4e+006 5e+006 n Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 26/37 Die Funktion aλ (n) für c = 1 aλ (n) = 1 |{p∈P:p≤n}| P p∈P p≤n λ(p) √ p 0.65 x0 = 2 x0 zufällig 0.645 0.64 aλ(n) 0.635 0.63 0.625 0.62 0.615 0 1e+006 2e+006 3e+006 4e+006 5e+006 n Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 27/37 Die Funktion ak (n) für c = 1 ak (n) = 1 |{p∈P:p≤n}| P p∈P p≤n k(p) √ p 1.035 1.03 1.025 ak(n) 1.02 1.015 1.01 1.005 x0 = 2 x0 zufällig 1 0.995 0 1e+006 2e+006 3e+006 4e+006 5e+006 n Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 28/37 Die Funktion ak (n) für c = 0 ak (n) = 1 |{p∈P:p≤n}| P p∈P p≤n k(p) √ p 25 20 ak(n) 15 10 5 x0 = 2 x0 zufällig 0 0 100000 200000 300000 400000 500000 n Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 29/37 Die Funktion ak (n) für c = −2 ak (n) = 1 |{p∈P:p≤n}| P p∈P p≤n k(p) √ p 20 18 16 14 ak(n) 12 10 8 6 x0 = 3 x0 zufällig 4 2 0 0 100000 200000 300000 400000 500000 n Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 30/37 Probedivision vs. Rho-Methode 120 Probedivision Rho−Methode Akkumulierte Rechenzeit [s] 100 80 60 40 20 0 10 Janosch Döcker 20 30 40 50 60 Länge n der Binärdarstellung der getesteten Zahlen Pollards Rho-Methode zur Faktorisierung 70 80 27. Mai 2011 31/37 Übersicht 1 Einleitung 2 Hintergrund 3 Das Verfahren 4 Experimente 5 Fazit 6 Referenzen Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 32/37 Fazit Sehr gut zum Entfernen kleiner Primfaktoren Deutlich schneller als Faktorisierung durch Probedivision Kombination mit asymptotisch schnelleren Verfahren Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 33/37 Übersicht 1 Einleitung 2 Hintergrund 3 Das Verfahren 4 Experimente 5 Fazit 6 Referenzen Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 34/37 Referenzen und weiterführende Literatur I John M. Pollard. A monte carlo method for factorization. BIT Numerical Mathematics, 15:331–334, 1975. Donald E. Knuth. Seminumerical Algorithms. Band 2 von The Art of Computer Programming. Zweite Auflage, Addison-Wesley, 1981. Otto Forster. Algorithmische Zahlentheorie. Vieweg, 1996. Hans Riesel. Prime Numbers and Computer Methods for Factorization. Birkhäuser, 1985. Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 35/37 Referenzen und weiterführende Literatur II Henri Cohen. A course in computational algebraic number theory. Springer, 1996. Richard P. Brent. An improved monte carlo factorization algorithm. BIT Numerical Mathematics, 20:176–184, 1980. Richard P. Brent und John M. Pollard. Factorization of the eighth fermat number. Mathematics of Computation, 36:627–630, 1981. R.L. Rivest und A. Shamir und L. Adleman. A Method for Obtaining Digital Signatures and Public-Key Cryptosystems. Communications of the ACM, 21:120–126, 1978. George Marsaglia. Random numbers fall mainly in the planes. Proceedings of the National Academy of Sciences, 61:25–28, 1968. Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 36/37 Vielen Dank für Ihre Aufmerksamkeit! Janosch Döcker Pollards Rho-Methode zur Faktorisierung 27. Mai 2011 37/37