Shanks’ Verfahren zur Faktorisierung: „Square Forms Factorization“ Bachelorarbeit Björn Wolff Universität Oldenburg 3. Juni 2011 Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 Übersicht Einleitung Zahlentheoretische Grundlagen Das Verfahren Implementierung Parallelisierung Fazit Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 Einleitung Einleitung I „Square Forms Factorization“ (SQUFOF) I 1975 von Daniel Shanks entwickelt I Jedoch nie offiziell veröffentlicht I Basiert auf Faktorisierung mit Hilfe der Legendre-Kongruenz I Nutzt die Kettenbruchentwicklung von I Theorie der binären quadratischen Formen Björn Wolff √ Bachelorarbeit: SQUFOF N 3. Juni 2011 1 / 49 Zahlentheoretische Grundlagen Zahlentheoretische Grundlagen Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 2 / 49 Zahlentheoretische Grundlagen Zahlentheoretische Grundlagen Inhalt I Legendre-Kongruenz I Kettenbrüche Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 3 / 49 Zahlentheoretische Grundlagen Legendre-Kongruenz Legendre-Kongruenz I x 2 ≡ y 2 (mod N), für N ∈ N I Triviale Lösung: x ≡ ± y (mod N) I Ist N zusammengesetzt, I dann existieren weitere nicht-triviale Lösungen I diese können zur Faktorisierung benutzt werden Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 4 / 49 Zahlentheoretische Grundlagen Legendre-Kongruenz Legendre-Kongruenz I Basiert auf: x 2 ≡ y 2 (mod N) ⇒ N | (x 2 − y 2 ) I Mit binomischer Formel: N | (x + y )(x − y ) I Da N = pq: I pq | (x + y )(x − y ) I Daher muss p | (x + y ) und q | (x − y ) oder p | (x − y ) und q | (x + y ) I Dann gilt p = ggT ((x + y ), N) und q = ggT ((x − y ), N) I Viele Faktorisierungsverfahren nutzen diese Tatsache I Suche nach Lösungen für die Kongruenz unterscheidet sich Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 5 / 49 Zahlentheoretische Grundlagen Kettenbrüche Kettenbrüche Definition: Kettenbruch Ein Bruch heißt Kettenbruch, wenn er folgende Form besitzt: 1 x = b0 + 1 b1 + b2 + = [b0 ; b1 , b2 , b3 , . . . ] 1 b3 + . . . mit x ∈ R, bi ∈ Z, für alle i ∈ N0 . I Rekursiv: x0 = x; b0 = bx0 c 1 ; bi = bxi c ∀i ≥ 1 : xi = xi−1 − bi−1 Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 6 / 49 Zahlentheoretische Grundlagen Kettenbrüche Kettenbrüche Definition: Kettenbruchentwicklung der Quadratwurzel Für eine nicht quadratische Zahl √ N ∈ Z ist die reguläre Kettenbruchentwicklung von N rekursiv definiert als x0 = √ N, bi = bxi c, xi+1 = 1 , (xi − bi ) wobei bi ∈ Z und xi ∈ R, für alle i ∈ N0 , gilt. In Perron-Darstellung ist also √ N = [b0 ; b1 , b2 , . . . ], wobei bi > 0 für i ∈ N0 . I I Durch √ N erzeugte Kettenbrüche sind unendlich √ √ Beispiele: 2 = [1; 2], 52 = [7; 4, 1, 2, 1, 4, 14] Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 7 / 49 Zahlentheoretische Grundlagen Kettenbrüche Kettenbruch: Beispiel Für N = 52 ergibt sich x0 = Berechnungen liefern: x1 = x2 = x3 = x4 = Björn Wolff √ √ 52 und b0 = b 52c = 7. Weitere √ √ 1 1( 52 + 7) 52 + 7 √ = = =4 + 3 3 52 − 7 √ √ 3 52 + 5 3( 52 + 5) √ = =1 + = 27 9 52 − 5 √ √ 9 9( 52 + 4) 52 + 4 √ = = =2 + 36 4 52 − 4 √ √ 4 4( 52 + 4) 52 + 4 √ = = =1 + 36 9 52 − 4 Bachelorarbeit: SQUFOF √ √ √ √ 52 − 5 3 52 − 4 9 52 − 4 4 52 − 5 9 3. Juni 2011 8 / 49 Zahlentheoretische Grundlagen Kettenbrüche √ √ √ 9 9( 52 + 5) 52 + 5 52 − 7 x5 = √ = = =4 + 27 3 3 52 − 5 √ √ 3 3( 52 + 7) √ x6 = √ = = 52 + 7 =14 + 52 − 7 3 52 − 7 √ √ √ 1 1( 52 + 7) 52 + 7 52 − 5 = = =4 + = x1 x7 = √ 3 3 3 52 − 7 Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 9 / 49 Zahlentheoretische Grundlagen Kettenbrüche √ √ √ 9 9( 52 + 5) 52 + 5 52 − 7 x5 = √ = = =4 + 27 3 3 52 − 5 √ √ 3 3( 52 + 7) √ x6 = √ = = 52 + 7 =14 + 52 − 7 3 52 − 7 √ √ √ 1 1( 52 + 7) 52 + 7 52 − 5 = = =4 + = x1 x7 = √ 3 3 3 52 − 7 √ I 52 = [7; 4, 1, 2, 1, 4, 14] Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 9 / 49 Zahlentheoretische Grundlagen Kettenbrüche √ √ √ 9 9( 52 + 5) 52 + 5 52 − 7 x5 = √ = = =4 + 27 3 3 52 − 5 √ √ 3 3( 52 + 7) √ x6 = √ = = 52 + 7 =14 + 52 − 7 3 52 − 7 √ √ √ 1 1( 52 + 7) 52 + 7 52 − 5 = = =4 + = x1 x7 = √ 3 3 3 52 − 7 √ I I 52 = [7; 4, 1, 2, 1, 4, 14] Symmetrie Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 9 / 49 Zahlentheoretische Grundlagen Kettenbrüche Kettenbrüche Satz: Rekursive Formeln zur Berechnung √ Sei N ∈ Z. Mit den Startwerten b0 = P1 = b Nc √ und Q0 = 1 lassen sich die Teilbrüche xi der Kettenbruchentwicklung von N, für jedes i ∈ N, mit den ineinander verschachtelten rekursiven Formeln N − Pi2 , Qi−1 √ N + Pi xi = , Qi Pi+1 = bi Qi − Pi , Qi = bestimmen. Es j √ist damit k möglich, die bi in jedem Iterationsschritt mit N+Pi bi = bxi c = zu berechnen. Qi Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 10 / 49 Zahlentheoretische Grundlagen Kettenbrüche Kettenbrüche Satz: Periodische Kettenbrüche Für jede nicht quadratische ganze √ Zahl N ist die reguläre Kettenbruchentwicklung von N periodisch. I Beweis durch Abschätzung der möglichen Werte für Qi und Pi : I I √ N, da bi = b Nc √ i +1 Qi = Pi +P <2 N bi Pi < √ I Anzahl möglicher Brüche ist somit beschränkt auf: √ √ b Nc · 2b Nc < 2N I Periode kann maximal eine Länge von 2N − 1 haben Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 11 / 49 Zahlentheoretische Grundlagen Kettenbrüche Näherungsbrüche Definition: Näherungsbruch √ Sei N = [b0 ; b1 , b2 , . . . ] eine Kettenbruchentwicklung in PerronDarstellung. Wird der Kettenbruch an einer bestimmten Stelle n ∈ N0 , je nach benötigter Genauigkeit der Approximation, abgeschnitten, so heißt der dadurch berechnete Bruch An = b0 + Bn 1 b1 + = [b0 ; b1 , . . . , bn ] 1 ··· + 1 bn √ n-ter Näherungsbruch von N. Hierbei gilt An , Bn ∈ N und N ist eine nicht quadratische ganze Zahl. Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 12 / 49 Zahlentheoretische Grundlagen Kettenbrüche Näherungsbruch: Beispiel √ Gegeben sei die Entwicklung 52 = [7; 4, 1, 2, 1, 4, 14] aus vorigem Beispiel. Soll der 6-te Näherungsbruch bestimmt werden, so kann dies wie folgt gemacht werden: i bi Ai Bi -1 1 0 0 7 7 1 1 4 29 4 2 1 36 5 3 2 101 14 4 1 137 19 5 4 649 90 6 14 9223 1279 A−1 = 1; A0 =b0 ; An =bn An−1 + An−2 B−1 = 0; B0 =1; Bn =bn Bn−1 + Bn−2 Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 13 / 49 Zahlentheoretische Grundlagen Kettenbrüche Näherungsbruch: Beispiel √ Gegeben sei die Entwicklung 52 = [7; 4, 1, 2, 1, 4, 14] aus vorigem Beispiel. Soll der 6-te Näherungsbruch bestimmt werden, so kann dies wie folgt gemacht werden: i bi Ai Bi -1 1 0 0 7 7 1 1 4 29 4 2 1 36 5 3 2 101 14 4 1 137 19 5 4 649 90 6 14 9223 1279 A−1 = 1; A0 =b0 ; An =bn An−1 + An−2 B−1 = 0; B0 =1; Bn =bn Bn−1 + Bn−2 I Somit ist √ Björn Wolff 52 ≈ 9223 1279 = A6 B6 Bachelorarbeit: SQUFOF 3. Juni 2011 13 / 49 Das Verfahren Das Verfahren Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 14 / 49 Das Verfahren Das Verfahren Inhalt I Algorithmus I Beispiel Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 15 / 49 Das Verfahren Algorithmus Algorithmus I Ausgelegt auf Faktorisierung von zusammengesetzten Zahlen mit zwei „großen“ Primfaktoren I Hauptbereich: 36- bis 64-Bit-Zahlen I Kettenbruchvariante des Verfahrens von Hans Riesel Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 16 / 49 Das Verfahren Algorithmus Algorithmus Ablauf I Berechnung der Kettenbruchentwicklung mit $√ bi = N + Pi Qi % , Pi+1 = bi Qi − Pi , Q1 = N − P12 , Qi+1 = Qi−1 + (Pi − Pi+1 )bi I I I Suche nach einer Quadratzahl R 2 in der Kettenbruchentwicklung von √ N A2n−1 ≡ Qn = R 2 (mod N) Suche nach einem Symmetriepunkt in der Kettenbruchentwicklung von √ N Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 17 / 49 Das Verfahren Beispiel Beispiel Suche nach Quadratzahl √ √ Für N = 78731 ergibt sich x0 = 78731, b0 = b 78731c = 280 und weiter: √ √ 78731 + 280 78731 − 51 1 =1 + x1 = √ = 331 331 78731 − 280 √ √ 331 78731 + 51 78731 − 179 x2 = √ = =1 + 230 230 78731 − 51 ... √ 338 78731 + 147 x8 = √ = 169 78731 − 147 Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 18 / 49 Das Verfahren Beispiel Beispiel Suche nach Quadratzahl √ √ Für N = 78731 ergibt sich x0 = 78731, b0 = b 78731c = 280 und weiter: √ √ 78731 + 280 78731 − 51 1 =1 + x1 = √ = 331 331 78731 − 280 √ √ 331 78731 + 51 78731 − 179 x2 = √ = =1 + 230 230 78731 − 51 ... √ 338 78731 + 147 x8 = √ = 169 78731 − 147 I Quadratzahl: Q8 = 169 = 132 Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 18 / 49 Das Verfahren Beispiel Beispiel Suche nach Quadratzahl √ √ Für N = 78731 ergibt sich x0 = 78731, b0 = b 78731c = 280 und weiter: √ √ 78731 + 280 78731 − 51 1 =1 + x1 = √ = 331 331 78731 − 280 √ √ 331 78731 + 51 78731 − 179 x2 = √ = =1 + 230 230 78731 − 51 ... √ 338 78731 + 147 x8 = √ = 169 78731 − 147 I Quadratzahl: Q8 = 169 = 132 I Wichtig: Index i muss gerade sein Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 18 / 49 Das Verfahren Beispiel Beispiel Berechnung der Faktoren I Kettenbruchentwicklung bis zur √ Quadratzahl: 78731 = [280; 1, 1, 2, 3, 1, 3, 1] i bi Ai -1 1 Björn Wolff 0 280 280 1 1 281 2 1 561 3 2 1403 4 3 4770 Bachelorarbeit: SQUFOF 5 1 6173 6 3 23289 7 1 29462 3. Juni 2011 19 / 49 Das Verfahren Beispiel Beispiel Berechnung der Faktoren I Kettenbruchentwicklung bis zur √ Quadratzahl: 78731 = [280; 1, 1, 2, 3, 1, 3, 1] i bi Ai I -1 1 0 280 280 1 1 281 2 1 561 3 2 1403 4 3 4770 5 1 6173 6 3 23289 7 1 29462 A27 = 294622 ≡ 169 = 132 = Q8 (mod 78731) Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 19 / 49 Das Verfahren Beispiel Beispiel Berechnung der Faktoren I Kettenbruchentwicklung bis zur √ Quadratzahl: 78731 = [280; 1, 1, 2, 3, 1, 3, 1] i bi Ai -1 1 0 280 280 1 1 281 2 1 561 3 2 1403 4 3 4770 5 1 6173 I A27 = 294622 ≡ 169 = 132 = Q8 (mod 78731) I ggT ((29462 + 13), 78731) = 131 und ggT ((29462 − 13), 78731) = 601 Björn Wolff Bachelorarbeit: SQUFOF 6 3 23289 7 1 29462 3. Juni 2011 19 / 49 Das Verfahren Beispiel Beispiel Suche nach Symmetriepunkt I Shanks’ Überlegungen zur Bestimmung der Faktoren I Modifikation des letzten Terms der Kettenbruchentwicklung √ I √ I √ 78731+147 169 wird zu 78731−147 13 = 10 + Björn Wolff √ 78731−147 13 78731−277 13 Bachelorarbeit: SQUFOF 3. Juni 2011 20 / 49 Das Verfahren Beispiel Beispiel Suche nach Symmetriepunkt y1 = y2 = y3 = y4 = √ 13 78731 + 277 √ = =3 + 154 78731 − 277 √ 154 78731 + 185 √ = =1 + 289 78731 − 185 √ 78731 + 104 289 √ = =1 + 235 78731 − 104 √ 235 78731 + 131 √ =1 + = 262 78731 − 131 Björn Wolff Bachelorarbeit: SQUFOF √ √ √ √ 78731 − 185 154 78731 − 104 289 78731 − 131 235 78731 − 131 262 3. Juni 2011 21 / 49 Das Verfahren Beispiel Beispiel Suche nach Symmetriepunkt I P3 = 131 = P4 Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 22 / 49 Das Verfahren Beispiel Beispiel Suche nach Symmetriepunkt I P3 = 131 = P4 I Da Q4 gerade: Björn Wolff Q4 2 = 262 2 = 131 Bachelorarbeit: SQUFOF 3. Juni 2011 22 / 49 Das Verfahren Beispiel Beispiel Suche nach Symmetriepunkt I P3 = 131 = P4 I Da Q4 gerade: I 78731 = 131 · 601 Björn Wolff Q4 2 = 262 2 = 131 Bachelorarbeit: SQUFOF 3. Juni 2011 22 / 49 Implementierung Implementierung Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 23 / 49 Implementierung Implementierung Inhalt I Methode zur Faktorisierung I Tests zur Laufzeit Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 24 / 49 Implementierung Methode zur Faktorisierung Methode zur Faktorisierung I 1. Schleife: Suche nach Quadratzahl public s t a t i c BigInteger f a c t o r i z e ( BigInteger n) { ... f o r ( i n t i = 1; i <= maxCycles ; i++) { b = sqrtN . add(p0 ) . divide (q1 ) ; p1 = b . multiply (q1 ) . subtract (p0 ) ; q2 = q0 . add(p0 . subtract (p1 ) . multiply (b ) ) ; listCandidate = q1 ; q0 = q1 ; q1 = q2 ; p0 = p1 ; i f (( listCandidate . compareTo( sqrt2sqrtN ) == −1) && ( listCandidate . compareTo(ONE) == 1)) { l i s t . add( listCandidate );} i f (( i % 2) == 1) { sqrtQ1 = sqrt (q1 ) ; i f (( sqrtQ1 .pow( 2 ) . equals (q1))) { i f ( ( ! l i s t . contains (sqrtQ1 )) && (sqrtQ1 . compareTo(ONE) ==1)) { break ; }}} ... } Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 25 / 49 Implementierung Methode zur Faktorisierung Methode zur Faktorisierung I 2. Schleife: Suche nach Symmetriepunkt q0 = sqrtQ1 ; b = sqrtN . subtract (p0 ) . divide (q0 ) ; p0 = b . multiply (q0 ) . add(p0 ) ; q1 = n . subtract (p0 .pow( 2 ) ) . divide (q0 ) ; f o r ( i n t i = 1; i <= secCycles ; i++) { b = sqrtN . add(p0 ) . divide (q1 ) ; p1 = b . multiply (q1 ) . subtract (p0 ) ; q2 = q0 . add(p0 . subtract (p1 ) . multiply (b ) ) ; q0 = q1 ; tmp = p0 ; p0 = p1 ; q1 = q2 ; i f (tmp. equals (p1)) { i f ( ! q0 . testBit (0)) { q0 = q0 . divide (TWO) ; } return q0 ; } ... } Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 26 / 49 Implementierung Tests zur Laufzeit Tests zur Laufzeit I 36- bis 64-Bit-Zahlen I 64- bis 100-Bit-Zahlen I Besondere Zahlen Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 27 / 49 Implementierung Tests zur Laufzeit 36- bis 64-Bit-Zahlen Größe der Zahlen [Bit] Berechnungszeit(∅) [ms] Björn Wolff 36 13 42 32 Bachelorarbeit: SQUFOF 48 80 54 137 64 258 3. Juni 2011 28 / 49 Implementierung Tests zur Laufzeit 64- bis 100-Bit-Zahlen Größe der Zahlen [Bit] Berechnungszeit(∅) [ms] Björn Wolff 64 258 70 615 Bachelorarbeit: SQUFOF 80 3353 90 9818 100 132528 3. Juni 2011 29 / 49 Implementierung Tests zur Laufzeit Besondere Zahlen I Zusammengesetzte Zahlen mit bestimmter Struktur werden schneller faktorisiert als andere I Durch empirische Versuche bestimmt: N = (a2 m + c)(b2 m + d ) I Mit a, b, c, d werden zwei etwa gleichgroße Primzahlen beschrieben, die nah an m liegen I Der Spezialfall N = p(p + 2a), mit p, a ∈ N und 0 < a < Folgenden getestet Björn Wolff Bachelorarbeit: SQUFOF √ p wird im 3. Juni 2011 30 / 49 Implementierung Tests zur Laufzeit Besondere Zahlen Bit 36 42 48 54 64 I Zusammengesetzte Zahl N 17490462623 3209359435561 98189063930959 35506157532969293 7889941993004993536 p 131893 1790149 9905911 188417071 2808851063 N = p(p + 2a), wobei p, a ∈ N und 0 < a < Björn Wolff Bachelorarbeit: SQUFOF p + 2a 132611 1792789 9912169 188444483 2808957049 √ ∅ [ms] 1,00 1,33 1,33 1,67 1,33 p 3. Juni 2011 31 / 49 Implementierung Tests zur Laufzeit Besondere Zahlen I N = p(p + 2a), wobei p, a ∈ N und 0 < a < Björn Wolff Bachelorarbeit: SQUFOF √ p 3. Juni 2011 32 / 49 Implementierung Tests zur Laufzeit Vorführung I N1 = 923485606685672008805989842584990592120422 13921215611856340781417074743669323 I N2 = 582649062654603126469285879 Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 33 / 49 Parallelisierung Parallelisierung Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 34 / 49 Parallelisierung Parallelisierung Inhalt I Multiplikatoren I Segmente I Vergleich Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 35 / 49 Parallelisierung Multiplikatoren Multiplikatoren I Bereits 1982 machten Shanks und Cohen erste Versuche mit Multiplikatoren I Auf mehreren Recheneinheiten läuft der selbe Algorithmus I Jede Recheneinheit bekommt einen anderen Multiplikator zugewiesen I Als Multiplikatoren dienen kleine Zahlen (z.B. 2N, 3N, 5N) I Ziel: Perioden mit kürzerer Länge als die der Hauptperiode zu finden Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 36 / 49 Parallelisierung Segmente Segmente I 2005 von Stephen McMath entwickelt und getestet I Basiert auf Komposition von binären quadratischen Formen f I Nach wenigen Schritten der Kettenbruchentwicklung wird mehrfach die Wurzel gezogen, wodurch mehrere Segmente entstehen I Die verschiedenen Recheneinheiten bekommen von einer Recheneinheit Segmente zugeteilt (z.B. f -f 2 , f 2 -f 3 ) I Ziel: Innerhalb der Segmente Perioden mit kürzerer Länge zu finden Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 37 / 49 Parallelisierung Vergleich Vergleich Laufzeit Segmente Bit 80 100 120 I 20 5,04 157,27 5416,97 Anzahl an Prozessoren 30 40 50 3,03 2,53 2,13 116,76 74,50 77,67 4287,37 2690,76 2538,80 Halbierung der Laufzeit zwischen 20 und 40 Prozessoren Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 38 / 49 Parallelisierung Vergleich Vergleich Laufzeit Multiplikatoren Bit 80 100 120 I 20 2,95 82,62 3255,65 Anzahl an Prozessoren 30 40 50 1,95 1,68 1,23 59,75 52,90 53,60 2028,72 1683,57 1287,80 Nur geringere Verbesserung im Vergleich zu Segmenten Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 39 / 49 Parallelisierung Vergleich Vergleich I Weitere Beobachtungen: I Effizienz der Segmente wird bei steigender Prozessoranzahl nicht beeinträchtigt I Bei Multiplikatoren sinkt die Effizienz mit steigender Prozessoranzahl I Ab 180 Prozessoren sollten die Segmente den Multiplikatoren überlegen sein, weil die Effizienz nicht sinkt I Diese Grenze liegt wahrscheinlich niedriger, da die Multiplikatoren zunehmend größer werden Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 40 / 49 Fazit Fazit Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 41 / 49 Fazit Fazit I Obwohl Parallelisierungen möglich sind, ist SQUFOF den heutigen Verfahren unterlegen (Berechnungszeit RSA-768: 6, 667 · 1024 Jahre) I Dennoch ist SQUFOF leicht zu implementieren und benötigt wenig Speicher (3 Register möglich) I Im Bereich von 36- bis 64-Bit immer noch konkurrenzfähig und wird in diesem Bereich auch weiterhin genutzt Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 42 / 49 Anhang Vielen Dank für die Aufmerksamkeit! Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 43 / 49 Anhang Literatur I Shanks, Daniel: SQUFOF notes, 1975 (von McMath digitalisierte Aufzeichnungen) I Shanks, Daniel: The infrastructure of a real quadratic field and its applications. Proceedings of the Number Theory Conference, Seiten 217-224, 1972. I Gower, Jason und Samuel Wagstaff: Square Forms Factorization. Mathematics of Computation, 77: 551-588, 2008. I McMath, Stephen: Parallel integer factorization using quadratic forms, 2005. I Riesel, Hans: Prime Numbers and Computer Methods for Factorization. Birkhäuser, 1985. Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 44 / 49 Anhang Näherungsbrüche Satz: Rekursive Formeln √ Der Zähler An und der Nenner Bn des n-ten Näherungsbruch von N, für alle √ n ∈ N, können mit den bi aus der Kettenbruchentwicklung von N = [b0 ; b1 , . . . , bn , . . . ] wie folgt bestimmt werden: Wenn die Werte A−1 = 1, A0 = b0 , B−1 = 0, B0 = 1 gesetzt werden, so lässt sich der Näherungsbruch An Bn bestimmen mit An = bn An−1 + An−2 , Bn = bn Bn−1 + Bn−2 . Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 45 / 49 Anhang Vergleich Bit 80 100 120 Anzahl an Prozessoren 20 30 40 50 0,39 0,38 0,39 0,30 0,37 0,34 0,43 0,40 0,35 0,31 0,29 0,39 I Prozent der schnelleren Faktorisierungen mit der Segmentmethode I Multiplikatoren sind überlegen Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 46 / 49 Anhang Binäre quadratische Formen Definition: Binäre quadratische Form Eine quadratische Form in zwei Variablen, X und Y , wird als binäre quadratische Form bezeichnet. Es handelt sich dabei um ein Polynom der Form f (X , Y ) = aX 2 + bXY + cY 2 , (1) wobei a, b, c ∈ Z gilt. Abkürzend wird das Polynom dargestellt als f = (a, b, c). Björn Wolff Bachelorarbeit: SQUFOF (2) 3. Juni 2011 47 / 49 Anhang Beispiel: Verfahren mit quadratischen Formen √ Sei N = 78731. Somit ist P1 = b0 = b Nc = 280, Q0 = 1 und Q1 = N − b02 = 78731 − 2802 = 331. f1 = (Q1 , P2 , −Q2 ) = (1, 280, −331) f2 = (−Q2 , P3 , Q3 ) = (−331, 51, 230) f3 = (Q3 , P4 , −Q4 ) = (230, 179, −203) f4 = (−Q4 , P5 , Q5 ) = (−203, 227, 134) f5 = (Q5 , P6 , −Q6 ) = (134, 175, −359) f6 = (−Q6 , P7 , Q7 ) = (−359, 184, 125) f7 = (Q7 , P8 , −Q8 ) = (125, 191, −338) f8 = (−Q8 , P9 , Q9 ) = (−338, 147, 132 ) An dieser Stelle wird die Quadratzahl 169 = 132 gefunden. Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 48 / 49 Anhang Beispiel: Verfahren mit quadratischen Formen Nun lässt sich 1 f − 2 = (−13, 147, 4394) bestimmen und zu g0 = (−S−1 , R0 , S0 ) = (−13, 277, 154) reduzieren. Die weitere Berechnung liefert: g1 = (S0 , R1 , −S1 ) = (154, 185, −289) g2 = (−S1 , R2 , S2 ) = (−289, 104, 235) g3 = (S2 , R3 , −S3 ) = (235, 131, −262) g4 = (−S3 , R4 , S4 ) = (−262, 131, 235) Hier kann der Algorithmus abgebrochen werden, da R3 = R4 ist. Somit wird der nicht-triviale Faktor S23 = 262 2 = 131 bestimmt und durch Division erhält man den zweiten Faktor, also insgesamt: 78731 = 131 · 601. Björn Wolff Bachelorarbeit: SQUFOF 3. Juni 2011 49 / 49