27 §3. Faktorisierungsalgorithmen Wie wir schon gesehen haben, beruht die Sicherheit von RSA (aber auch von einer Reihe anderer Verschlüsselungsverfahren in der Kryptographie) ganz wesentlich auf der Schwierigkeit des Faktorisierungsproblems, mit dem wir uns im Folgenden auseinandersetzen wollen. Zunächst verdient es angemerkt zu werden, dass für Zahlen spezieller Bauart das Faktorisierungsproblem um einiges einfacher sein kann, weshalb diese für Zwecke der Kryptographie daher unbedingt vermieden werden sollten! Als einfaches Beispiel dafür betrachten wir im folgenden Zahlen der Bauart a n ± b n , zu denen insbesondere wieder die Fermatschen und Mersenneschen Zahlen gehören. Es gilt für sie der grundlegende Satz 3.1: (Legendre) Sei p ein primitiver Primteiler p von a n ± b n mit ggT(a,b)=1, d.h. nicht zugleich Primteiler von a m ± b m für einen echten Teiler m von n, so gilt p ≡ 1 mod n bzw. sogar p ≡ 1 mod 2 n , falls p und n beide ungerade sind. Bem 3.2: Um vorstehenden Satz anwenden zu können, muss man zunächst alle nichtprimitiven Primfaktoren von a n ± b n , welche auch „algebraische Primfaktoren“ von a n ± b n genannt werden, durch Bildung der ggT( a m ± b m , a n ± b n ) für alle echten Teiler m von n aus a n ± b n „herausfiltern“ , worauf dann die verbleibende Zahl nur noch auf Primteiler der Form 1+kn (k ≥ 1) untersucht zu werden braucht. Eine große Rolle in diesem Zusammenhang spielen auch die nachfolgend eingeführten “zyklotomischen Polynome”. Satz und Def. 3.3: Sei n ∈N * und ς n eine primitive n-te Einheitswurzel. Dann ist für jeden positiven Teiler d von n das Polynom vom Grad ϕ(d ) Φ d ( x ) := ∏ (x − ς 0≤ k < n ggT ( k , n ) = n / d k n ), genannt d-tes zyklotomisches Polynom, unzerlegbar über Q und hat ganzzahlige Koeffizienten. Ferner gilt x n − 1 = ∏ Φ d ( x) dn Bem 3.4: Aus der letzten Gleichung in vorstehenden Satz gewinnt man sofort die n −1 einfachen Beziehungen Φ 1 ( x) = x − 1 und Φ 2 n ( x) = x 2 + 1 ( n ≥ 1) , sowie für jede ungerade Primzahl p Φ p ( x) = xp − 1 = x p −1 + x p − 2 +K+ x + 1 , x −1 xp + 1 Φ 2 p ( x) = = x p −1 − x p − 2 +K− x + 1 , x +1 x2p + 1 Φ 4 p ( x) = 2 = x 2 p − 2 − x 2 p − 4 +K− x 2 + 1. x +1 Mit Hilfe der sog. „Möbiusschen Umkehrformel“ lässt sich daraus sogar die allgemeine Formel 28 Φ n ( x) = ∏ ( x d − 1) n µ( ) d dn gewinnen, wobei für die Möbiussche µ-Funktion gilt ⎧( −1) r , falls m das Produkt von r verschiedenen Primzahlen ist ( r ≥ 0) µ( m): = ⎨ 0, sonst ⎩ Die Bedeutung dieser Betrachtungen ergibt sich nun sofort aus Satz und Def. 3.5: Für jedes n ∈N ist a n − b n = ∏ ( b ϕ ( d ) Φ d ( a / b) ) dn eine Darstellung von a n − b n als Produkt ganzer Zahlen. Alle primitiven Primteiler von a n − b n sind dabei im Faktor b ϕ( n ) Φ n (a / b) obiger Darstellung enthalten (der aber durchaus zusätzlich noch einige algebraische Primteiler von a n − b n enthalten kann!) Er wird daher auch der „primitive Teil“ und sein Komplementärfaktor der „algebraische Teil“ obiger Produktdarstellung genannt. Bem. 3.6: Aufgrund der Darstellung a −b a +b = n = a − bn 2n n n 2n ∏ (b ϕ(d) Φ d ( a / b) d 2n ∏ ( b ϕ ( d ) Φ d ( a / b) dn = ∏ ( b ϕ ( δ ) Φ δ (a / b) δ 2n δn gewinnt man aus 1.5 auch für die Zahlen der Form a n + b n sofort eine Zerlegung, wobei b ϕ( 2 n ) Φ 2 n (a / b) ähnlich wie oben sein „primitiver Faktor“ genannt wird. Es gilt für ihn der wichtige. Nachfolgend wollen wir uns noch den wichtigen Speziallfall a = 2, b = 1 etwas genauer unter die Lupe nehmen. So gilt z.B. Satz 3.7: Für jeden Teiler t einer Mersenneschen Zahl M p = 2 p − 1 , wo p eine ungerade Primzahl ist, gilt t ≡ 1 mod 2 p und t ≡ ±1 mod 8 . Zusammengefasst ist t von der Form 2kp + 1 mit k ≡ 0 mod 4 oder k ≡ − p mod 4 . Bem 3.8: Wie aus 3.7 folgt, ist also q:= 2p + 1 der kleinste potenzielle nichttriviale Teiler von 2 p − 1 für p ∈P \ { 2} , was die Chancen für 2 p − 1 , Primzahl zu sein, auf den ersten Blick sehr gut aussehen lässt. Ist q allerdings prim, so ist es mit einer Wahrscheinlichkeit von 50% auch tatsächlich Teiler! Dies ergibt sich aus Satz 3.9: Ist p eine Primzahl mit der auch q:= 2p + 1 Primzahl ist, so ist q genau dann Teiler von 2 p − 1 , wenn q ≡ ±1 mod 8 . Das Pendant zu 3.7 für Fermatsche Zahlen lautet wie folgt: Satz 3.10: Jeder Teiler von Fn ( n ≥ 2) hat die Form k 2 n + 2 + 1 . 29 Bem. 3.11: Fermat glaubte bekanntlich, dass alle Fermatschen Zahlen Fn für n ≥ 0 prim sind. Nach obigem Satz sind die potentiellen Teiler von F5 enthalten in der Folge 129, 257, 385, 513, 641,..., und tatsächlich gilt 641 F5 , wie schon Euler nachgewiesen hat. Nach Fermat ist ferner auch eine sehr alte, aber in gewissen Spezialfällen, die man daher unbedingt in kryptographischen Anwendungen vermeiden sollte, sehr wirkungsvolle Faktorisierungsmethode benannt. Man versucht dabei die zu faktorisierende Zahl N als Differenz zweier Quadrate darzustellen, was nach folgendem Satz stets möglich ist: Satz 3.12: Für jede ungerade natürliche Zahl N gibt es eine bijektive Zuordnung zwischen den Zerlegungen von N der Form N = ab mit a ≥ b > 0 , und den Darstellungen von N in der Form N = u 2 − v 2 mit u > v ≥ 0 , welche gegeben ist durch u= a+b a−b ,v= 2 2 bzw. a = u + v, b = u − v . Bem. 3.13: Zur Auffindung von u und v nach 3.12 geht man am besten so vor, dass man für die Werte u = ⎡ N ⎤ , ⎡ N ⎤ + 1, ⎡ N ⎤ + 2,.... jeweils überprüft, ob u 2 − N eine Quadratzahl ist, was dann den Wert v:= u 2 − N für v ergibt. Dies ist spätestens für U = ( N + 1) / 2 der Fall, was allerdings dann bedeutet, dass N nur die triviale Zerlegung N= 1⋅ N besitzt. Betrachtet man den praktisch schwierigsten Fall, dass a und b in 3.12 beide prim sind, so sind zu ihrer Auffindung gemäß obigem Algorithmus etwa N⎞ 1⎛ ⎜a + ⎟ − N = a⎠ 2⎝ ( N −a ) 2 2a Schritte notwendig. Diese Zahl ist dann sehr klein, und daher die Fermatsche Methode effizient, wenn a und b nahe beieinander liegen. Betrachtet man allerdings den „typischen Fall“ a ≈ N 2 / 3 , b ≈ N 1/ 3 so ergibt sie sich zu ( ≈ N − 3 N2 23 N 2 ) 2 1 2/3 N 4/3 ≈ N , 2/3 = 2 2N was für die Praxis völlig unbrauchbar ist, da selbst eine Probedivision durch alle Primzahlen p ≤ N in diesem Fall noch effizienter wäre! Man kann allerdings den zuletzt geschilderten ungünstigsten Fall vermeiden, indem man statt N ein Vielfaches kN betrachtet, wobei k viele kleine Faktoren enthalten sollte, um eine Zerlegung von kN in zwei möglichst gleichgroße Faktoren zu gewährleisten. Wie R.S. Lehman gezeigt hat, lässt sich so der Rechenaufwand der Fermatschen Methode für ein allgemeines N immerhin auf ein O( N 1/3 ) drücken. Wie geht man nun bei der Faktorisierung einer Zahl N allgemeiner Bauart vor, wo also dann die bisher besprochenen Methoden nicht mehr angewandt werden können? Zuallererst wird man dazu wohl mit einer Probedivision (trial division) durch alle 30 Primzahlen p bis zu eine gewissen Schranke B (z.B. B=1000) beginnen. Selbst wenn auf diese Weise eine vollständige Faktorisierung von N nur selten gelingt - dafür müsste B = N sein, was für großes N sicher nicht in Frage kommt - so kann man dadurch doch oft kleine Faktoren abspalten und auf den verbleibenden dann kleiner gewordenen Restfaktor eine der gängigen Faktorisierungsmethoden anwenden. Insbesondere können wir im Folgenden voraussetzen, soweit dies notwendig ist, dass N keine sehr kleinen Primfaktoren mehr besitzt. Ebenfalls noch sehr einfach und bei der Auffindung nicht allzugroßer Faktoren sehr effizient, ist die sog. ρ-Methode von Pollard (auch Monte-Carlo Methode genannt), die auf der folgenden einfachen Idee basiert: Ist N die zu faktorisierende Zahl und f(x) ein möglichst einfaches Polynom über Z mit guten Zufallseigenschaften (in der Praxis haben sich Polynome der Form x 2 + a mit a ∉ {0,−2} gut bewährt), so bildet man die Folge x 0 , x 1 , x 2 ,... , welche zu einem vorgegebenen Startwert x 0 rekursiv definiert ist durch x i +1 = f ( x i ) mod N , i = 0,1,2,... Ist nun p ein (zunächst natürlich unbekannter) Primfaktor von N und betrachtet man diese Folge (rein gedanklich) mod p , so werden sehr bald einmal zwei Folgenglieder mod p gleich sein. Theoretisch könnte dies auch erst nach p+1 Iterationen sein, in der Praxis ist dies aber schon nach O( p) Iterationen der Fall. Dieses Phänomen, welches nach einer bekannten Einkleidung auch als “Geburtstagsparadoxon” bezeichnet wird, ist eine unmittelbare Folge von Satz 3.14: Seien k und m positive ganze Zahlen, wobei k << m, d.h. m “groß” im Vergleich zu k sei. Für die Wahrscheinlichkeit Pk ,m , dass k zufällig ausgewählte ganze Zahlen alle in verschiedenen Restklassen mod m liegen gilt dann Pk ,m ≈ e − k ( k −1)/( 2 m ) , d.h. Pk ,m wird mit wachsendem k sehr schnell klein. Insbesondere gilt Pk ,m ≤ 0.5 bereits ab etwa k ≈ 2 m ln 2 ≈ 1.2 m . Setzt man noch P0,m :=1, so ist insbesondere bei ∞ ∑P k =0 k ,m = 1 + 1 + (1 − πm k −1 2 1 1 ) + ... ≈ ) + ... + (1 − )(1 − )L(1 − 2 m m m m zufällig ausgewählten Zahlen zum ersten Mal eine Koinzidenz mod m zu erwarten. Für uns bedeutet dies, dass bereits für relativ kleine Indizes i,j mit i ≠ j gilt x i ≡ x j mod p und folglich ggT ( x i − x j , N ) ≠ 1 , womit man durch Berechnung von ggT ( x i − x j , N ) - außer in dem sehr unwahrscheinlichen Fall, dass auch x i ≡ x j mod N gilt - einen nichttrivialen Teiler von N erhält. Ganz entscheidend ist auch noch, dass man nicht unbedingt ein allgemeines Paar (i,j) mit obigen Eigenschaften finden muss (dazu müsste man ja alle Folgenglieder in Evidenz halten und dauernd vergleichen!), sondern nur eines, für welches x i ≡ x j mod p mit dem Zusatz i=2j gilt (ein solches gibt es nach dem sog. Floydschen Periodenauffindungsalgorithmus 31 immer!). Dazu muss man jetzt nur parallel zur Folge der x i eine weitere Folge y i , i=0,1,2,.. mit gleichem Startwert y 0 , aber y i +1 = f ( f ( y i )) , i = 0,1,2,... berechnen, womit dann nach Definition y i = x 2 i gilt. Es muss dann nur jeweils x i und y i im Speicher gehalten und darauf überprüft werden, ob ggT ( y i − x i , N ) ≠ 1 gilt. Mit Hilfe einer von Brent vorgeschlagenen Verbesserung, auf die wir hier jedoch nicht weiter eingehen, lässt sich die Pollardsche ρ-Methode sogar noch um ca. 25% beschleunigen. Viele gerade der besten Faktorisierungsalgorithmen basieren auf der folgenden einfachen Überlegung von Legendre: Kann man Zahlen ganze Zahlen a,b so finden, dass gilt a 2 ≡ b 2 mod N und a ≡ ± b mod N , so folgt aus N (a + b)(a − b) sofort, dass dann ggT(a+b,N) and ggT(a-b,N) nichttriviale Teiler von N sind. Auch die bereits besprochene Fermatsche Methode kann als ein Spezialfall davon angesehen werden. Wir werden jedoch gleich viel bessere Methoden zur Lösung der Legendreschen Kongruenz kennenlernen, wie etwa die nachfolgend beschriebene Faktorbasismethode, auf welche einige der besten zur Zeit bekannten Faktorisierungsalgorithmen aufbauen. Dazu folgende Def. 3.15: Eine Faktorbasis ist eine Menge B = {p 1 , p 2 ,K , p m } , wobei, abgesehen von der eventuellen Ausnahme p1 = −1 , die p i verschiedene Primzahlen sind, welche nach aufsteigender Größe geordnet seien. Ferner heißt eine ganze Zahl b eine B-Zahl bezüglich eines gegebenen N, wenn der kleinste Absolutrest a = b 2 mod N (d.h. − N / 2 < a ≤ N / 2) als ein Produkt von (nicht notwendig verschiedenen) Zahlen aus B dargestellt werden kann. Bem. 3.16: Eine ganze Zahl b, für deren sämtliche Primfaktoren p gilt p ≤ S für eine natürliche Zahl S, wird auch S-glatt (S-smooth) genannt. Danach ist insbesondere der kleinste Absolutrest a = b 2 mod N für jede B-Zahl b auch P-glatt für die größte in B vorkommende Primzahl P. (Die Umkehrung gilt natürlich nur, wenn B alle in Frage kommenden Primzahlen ≤ P enthält.) Wie eine einfache heuristische Überlegung zeigt, sollte für eine Zahl N ≤ x die Wahrscheinlichkeit y-glatt zu sein, etwa u − u mit u = ln x ln y betragen. (Nur für etwa ein Viertel aller 100-stelligen Zahlen gilt also, dass sie keinen Primfaktor mit mehr als 50 Stellen enthalten!) Mit diesen Bezeichnungen gilt nun der grundlegende Satz 3.17: Seien b 1 , b 2 ,K , b n bezüglich der Faktorbasis B= {p 1 , p 2 ,K , p m } B- Zahlen, für welche also gilt b i 2 ≡ p 1 ei1 p 2 ei 2 K p m eim mod N , i = 1,K, n. Ist für sie die Summe der Vektoren e i : = ( e i1 mod 2, e i 2 mod 2,K , e im mod 2) , i=1,2,…,n, gleich 0 im Vektorraum Z 2 m , so sind dann 32 x = b1 b 2 K b n , y = p1 p 2 K p m f1 f2 fm 1 n mit f j = ∑ e ij , j = 1,K , m 2 i =1 Lösungen der Kongruenz x 2 ≡ y 2 mod N , welche für ein zusammengesetztes N mit einer Wahrscheinlichkeit von höchstens 50% trivial sind. (Genauer beträgt diese Wahrscheinlichkeit 1 / 2 r −1 , wobei r die Anzahl der verschiedenen Primfaktoren von N bezeichnet.) Bem. 3.18: (1) In vielen Fällen wird die Faktorbasismethode noch dahingehend modifiziert, dass man auch noch Zahlen b berücksichtigt, sodass nicht a:= b 2 mod N selbst, sondern a/q für einen Primfaktor q von a, der allerdings unterhalb einer gewissen Schranke S liegen muss, über B faktorisierbar ist. Nach dem “Geburtstagsparadoxon” sollten dann nämlich für nicht zu großes S die Chancen nicht ~ schlecht sein, noch einmal für anderes b auf die gleiche Primzahl q zu stoßen, womit ~ dann mit ( bb ) / q mod N (q ist ja fast sicher invertierbar mod N, andernfalls q ja Faktor von N wäre!) eine weitere B-Zahl gefunden ist. Diese Methode wird in der engl. Literatur als “Large prime variation” bezeichnet, im Gegensatz zur “Double large prime variation”, wo ganz in analoger Weise sogar zwei (wieder nicht zu große) Primfaktoren von a:= b 2 mod N nicht in der Faktorbasis zu liegen brauchen, ohne dass b gleich verworfen wird. (2) In der Praxis läuft die Auffindung von n linear abhängigen Vektoren der im Satz beschriebenen Art auf eine Gaußelimination über dem Körper Z 2 hinaus. Wir haben es dabei grundsätzlich mit einem Optimierungsproblem zu tun: Wählen wir die Faktorbasis klein, so brauchen wir nur entsprechend wenig B-Zahlen zu finden, ihre Auffindung ist dafür umso schwieriger. Auch die Gaußelemination ist umso einfacher, je kleiner die Faktorbasis ist. Diese kehrt sich alles um mit wachsender Größe der Faktorbasis. Wie groß ist also die Faktorbasis B zu wählen, damit der Gesamtaufwand - also der Aufwand für die Auffindung von B-glatten Zahlen und der Aufwand für die sich daran anschließende Gaußelimination - möglichst klein wird? Eine heuristische Überlegung zeigt, dass für die größte Primzahl P in der Faktorbasis B etwa gelten sollte P ≈ exp(c ln N ln ln N ) mit einer Konstanten c, welche vom Verfahren zur Generierung von B-Zahlen abhängt. Zum Beispiel könnte man zu ihrer Generierung einfach das Polynom Q(x):= x 2 − N für nahe bei N liegende Werte von x nehmen, wie dies Kraitchik als erster vorgeschlagen hat, oder die Kettenbruchmethode CFRAC von Lehmer-Powers zu verwenden (implementiert von Morrison-Brillhart), welche gewisse Eigenschaften der Kettenbruchentwicklungen von kN für kleine k∈N* ausnützt, um auf effiziente Weise B-Zahlen zu generieren. Bei der wichtigsten derartigen Methode, dem sog. Quadratischen Sieb (QS) ist c=1 und der Gesamtrechenaufwand dafür kann durch den Ausdruck O(exp( (1 + o(1)) ln N ln ln N )) beschrieben werden. 33 Bei der Generierung von B-Zahlen mit dem quadratischen Sieb bedient man sich allgemeiner quadratischer Polynome der Bauart Q(x):= Ax 2 + 2Bx + C , wobei wegen A(Ax 2 + 2Bx + C) = (Ax + B) 2 + (AC − B2 ) die Bedingung N AC − B 2 sicherstellt, dass AQ(x) als Werte stets Quadrate mod N liefert. (Ein wichtiger Spezialfall davon ist Kraitchik’s Polynom Q(x) = x 2 − N .) Für jede festgewählte Primzahl p in der Faktorbasis gilt dann mit p Q( x ) auch p Q( x + kp) für jedes ganze k. Da ferner die Kongruenz Q( x ) ≡ 0 mod p zwei Lösungen hat, liegen also alle x-Werte mit p Q( x ) in zwei arithmetischen Folgen. Man benötigt somit nur die Anfangsglieder dieser arithmetischen Folgen im Suchintervall, um dann gezielt und ohne Fehlversuche aus allen Q(x) den Primfaktor p „auszusieben“, was dieser Methode ihren Namen gegeben hat. Mit der Laufzeitabschätzung O(exp((c + o(1))(ln N ) 1/ 3 (ln ln N ) 2 / 3 )) für ein c<2 asymptotisch sogar noch besser als das Quadratische Sieb (was sich in der Praxis aber wegen des größeren „Overheads“ erst irgendwo im Bereich von 100-120 Stellen auswirkt) ist das sog. Zahlkörpersieb, das für wirklich große Zahlen die zur Zeit beste bekannte Faktorisierungsmethode auf klassischen Computern darstellt. Alle derzeitigen “Faktorisierungsrekorde” für Zahlen allgemeiner Bauart mit 150-200 Stellen und nur zwei Primfaktoren derselben Größenordnung wurden damit erzielt. Leider fehlen uns aber hier die Voraussetzungen aus der algebraischen Zahlentheorie um darauf näher eingehen zu können. Abschließend wollen aber doch noch auf eine weitere wichtige Gruppe von Faktorisierungsmethoden eingehen, die alle auf der gleichen Idee basieren und mit denen in Einzelfällen erstaunliche Erfolge erzielt werden können. Es sind dies die sog. (p-1)-Methode, die (p+1)-Methode und die Elliptische Kurven Methode (ECM). Bei der sog. (p-1)-Methode von Pollard versucht man mit einem zur Testzahl N teilerfremden a eine Potenz a r mod N so zu bilden, sodass für einen (vorderhand noch unbekannten) Primfaktor p von N gilt, dass p-1 ein Teiler von r ist. Für jedes solche r folgt nämlich aus dem „Kleinen Fermatschen Satz“ sofort, dass a ≡ (a r p −1 ) r p −1 ≡ 1 mod p (*) Damit ist dann also ggT (a r − 1, N) ein nichttrivialer Teiler von N (außer in dem höchst unwahrscheinlichen Fall, dass sogar a r ≡ 1 mod N gilt). Die Hauptschwierigkeit ist dabei klarerweise das Auffinden eines geeigneten r. Unter der (allerdings in der Praxis nur selten gegebenen) Voraussetzung, dass p−1 keine “großen” Primfaktoren enthält, sind dabei vor allem jene r sehr aussichtsreich, welche das Produkt von vielen kleinen Primzahlpotenzen, z.B. aller unterhalb einer gewissen Schranke S sind. Ist dann p−1 S-potenzglatt (engl. S-powersmooth), d.h. ist jede Primzahlpotenz q e , welche p−1 teilt, nicht größer als S, so hat man ein passendes r gefunden. 34 Bei der praktischen Durchführung geht man folgendermaßen vor: Ist p1 , p 2 , p 3 ,... die Folge der Primzahlen in ihrer natürlichen Reihenfolge und q i = p iei , sodass für ein fest gewählte Schranke S1 gilt q i ≤ S1 , aber p i q i > S1 , d.h. [ ] e i = ln S1 / ln p i , i=1,2,3,.., so berechnet man für eine fest gewählte Basis a der Reihe nach die Zahlen b1 = a q1 mod N und b i = b iq−i 1 mod N für i > 1 und überprüft laufend (oder auch nur in gewissen Abständen) ob ggT ( b i − 1, N ) > 1 ist, womit man dann (außer in dem höchst unwahrscheinlichen Fall ggT ( b i − 1, N ) = N ) einen nichttrivialen Teiler von N gefunden hätte. In der Regel kommt man aber an ein Ende, indem man alle möglichen Primzahlpotenzen q 1 , q 2 ,..., q s , welche obigen Bedingungen genügen, in dieser Weise überprüft hat und immer noch ggT (bs − 1, N) = 1 gilt. In diesem Fall wäre dann die “1.Stufe” der Pollardschen (p − 1)-Methode erfolglos verlaufen und man kann daran eine “2.Stufe” in folgender Weise anschließen. Ist S 2 eine weitere fest gewählte Schranke, welche in der Praxis etwa 10-100 mal so groß wie S1 ist und sind q s+1 , q s+ 2 ,..., q t alle Primzahlen q mit S1 < q ≤ S2 , so setzt man c1 = b qs +1 mod N und c i = ci−1b qs+i −qs +i−1 mod N für i>1. wobei hier b = bs der „Output“ der ersten Stufe ist. Ferner definiert man eine Folge u1 , u 2 , u 3 ,.. durch u1 = c1 und u n = (c n − 1) u n −1 und schaut ähnlich wie für b i − 1 in der ersten Stufe regelmäßig nach, ob nicht ggT ( u i , N ) > 1 ist, womit man dann (außer wieder für N | u i ) einen nichttrivialen Faktor von N gefunden hätte. Wie man sich leicht überlegt, führt diese 2.Stufe sicher dann zum Erfolg, wenn N einen Primfaktor p besitzt, sodass für einen Primfaktor q von p−1 mit S1 < q ≤ S2 gilt, dass (p−1)/q potenzglatt ist bez. S1 . (q ist also gewissermaßen ein nicht zu allzugroßer “Ausreißer” bez. der S1 − Potenzglattheit von p - 1.) Das “Gegenstück” zur (p−1)-Methode von Pollard, bei welcher die Rechnungen in der primen Restklassengruppe mod p (mit der Ordnung p−1) durchgeführt werden, ist die (p+1)-Methode von Williams, wobei nun in der (eindeutig bestimmten) Untergruppe U der Ordnung p+1 der multiplikativen Gruppe des Körpers Fp2 gerechnet wird. Man kann dabei wieder auf gewisse Eigenschaften der Lucasfolgen zurückgreifen. Wählt man nämlich Q = 1 und P so, dass für die Diskriminante D = P 2 − 4 gilt (D/p)= −1, so folgt aus α p+1 = αα p = αβ = Q = 1 und analog β p+1 = 1 , dass α und β tatsächlich in der Untergruppe U liegen. Allgemeiner gilt, wenn p +1 Teiler von r ist, dass α r = βr = 1 35 und daher auch Vr = α r + β r ≡ 2 mod p womit dann p ggT ( Vr − 2, N ) gelten muss, was man zur Auffindung von nichttrivialen Faktoren von N verwenden kann. Bei der praktischen Durchführung der (p+1)-Methode macht man ferner Gebrauch von Vkl ( P,1) = Vk ( Vl ( P,1),1) womit man dann Vr in einer ähnlichen Weise sukzessive berechnen kann wie oben die b i für die (p − 1)-Methode. Zur Erläuterung der ECM (=Elliptic Curve Method), die von H.W.Lenstra im Jahre 1985 eingeführt wurde und mit der in der Praxis Primfaktoren bis etwa 40 Stellen ausgesiebt werden können (in Einzelfällen wurden aber auch schon Primfaktoren mit mehr als 50 Stellen damit gefunden!), benötigen wir zunächst einige Grundtatsachen aus der Theorie der Elliptischen Kurven, die wir nachfolgend einfügen. Ist K dazu irgendein Körper, so versteht man dabei allgemein unter einer elliptischen Kurve E über K die Menge der Punkte (x,y) ∈ K x K, welche einer Gleichung der Form y 2 + a 4 xy + a 3 y = x 3 + a 2 x 2 + a 1 x + a 0 (a i ∈ K, i = 0,1,...,4) genügen, wobei das rechtsstehende Polynom keine mehrfachen Nullstellen in K besitze, zusammen mit dem sogenannten “unendlich fernen” Punkt O. Speziell für char(K) ≠ 2,3 können wir nach einer ev. linearen Transformation der Koordinaten x,y stets davon ausgehen, dass obige Gleichung die Form y 2 = x 3 + ax + b (a , b ∈ K) (*) hat, was wir im Folgenden der Einfachheit halber immer annehmen wollen. Q P P+Q Die Bedingung, dass das rechtsstehende Polynom keine mehrfachen Nullstellen hat, was auch durch die einfache Bedingung 4a 3 + 27 b 2 ≠ 0 ausgedrückt werden kann, 36 garantiert im Fall K = R, dass die dadurch definierte algebraische Kurve keine singulären Punkte, d.h. keine Spitzen und Überkreuzungen hat, also z.B. so ausschaut wie in obiger Skizze. Die Hilfsgeraden sollen dabei andeuten, wie für zwei Punkte P und Q von E die Summe P+Q definiert ist. Man unterscheidet dazu folgende Fälle: 1. Ist P=O bzw. Q=O, so ist P+Q=Q bzw. P+Q=P, d.h. O spielt die Rolle eines neutralen Elements (“Nullelements”) bez. + . Wir können daher nachfolgend P ≠ O und Q ≠ O voraussetzen. 2. Liegen P und Q spiegelbildlich bezüglich der x-Achse, so sei P+Q=O. Wegen 1. sind daher P und Q in diesem Fall zueinander invers. 3. Liegt weder der Fall 1. noch der Fall 2. vor, so sei P+Q wie aus der vorstehenden Zeichnung ersichtlich definiert, d.h. man bestimmt den eindeutig definierten Schnittpunkt der Sekante durch P und Q (bzw. im Fall P=Q der Tangente durch P) mit der Kurve und definiert P+Q als seinen Spiegelpunkt bez. der x-Achse. Den typischen Fall 3. wollen wir uns nun noch genauer ansehen. Sei dazu P = ( x1 , y 1 ) und Q = ( x 2 , y 2 ) , so ist die Steigung k der Sekante durch P und Q (bzw. im Fall P = Q Tangente durch P) gegeben durch ⎧ y 2 − y1 falls x 1 ≠ x 2 ⎪⎪ x − x , 2 1 k=⎨ 2 3x + a ⎪ 1 , falls x 1 = x 2 , y 1 ≠ 0 ⎪⎩ 2 y 1 Für die Koordinaten ( x 3 , y 3 ) von P+Q ergibt sich daher nach einfacher Rechnung x 3 = k 2 − x1 − x 2 , y 3 = − y1 + k( x1 − x 3 ) Wie man nun zeigen kann, bildet E bez. der so definierten Addition eine abelsche Gruppe, welche im klassischen Fall K = Q sogar endlich erzeugt ist (Satz von Mordell). Für Anwendungen in der Kryptographie besonders wichtig ist aber der Fall, wo K = Fq , d.h. ein endlicher Körper mit q Elementen ist, wobei q oft sogar eine Primzahl ist. Bei der ECM tritt an die Stelle der oben betrachteten Gruppen eine mittels einer elliptischen Kurve E mod p konstruierte Gruppe E p und an die Stelle von a in der (p−1)-Methode ein Punkt P der Kurve, wobei die (*) entsprechende Gleichung rP = O wäre, würde man mod p rechnen. Tatsächlich kann man in Unkenntnis von p aber natürlich nur mod N, d.h. auf einer “Pseudokurve” E N rechnen und dies drückt sich in E N so aus, dass rP undefiniert ist, da bei der Berechnung von k entweder ggT ( x 2 − x 1 , N ) > 1 oder ggT (2 y 1 , N ) > 1 ist. Durch die Berechnung dieser ggT erhält man also (außer natürlich in dem sehr unwahrscheinlichen Fall, dass rP = O auch in E N gilt) wieder einen nichttrivialen Teiler von N. Die algorithmische Durchführung ist ansonsten gleich wie für die (p−1)-bzw. (p+1)-Methode, der einzige Unterschied besteht in der additiven Schreibweise. Insbesondere gibt es auch hier wieder in ganz analoger Weise zwei Stufen.