Das Number Field Sieve Entwicklung, Varianten und Erfolge Katja Schmidt-Samoa Diplomarbeit betreut durch Dr. Andreas Guthmann Fachbereich Mathematik Universität Kaiserslautern März 2002 Symbolverzeichnis ggT kgV log #M ϕ:Z→N π:N→N N p [.] : R → Z div p|n p-n pk || n n << m idK : K → K R× δ(f (X)) lc(f (X)) ψ(x, B) Lx [u, v] Quot(K) Oα mα (X) [K : L] σ1 , . . . , σd N (θ) N (a) [Oα : Z[α]] ϕp,h pp,h ϕp,c pp,c im Kontext SNFS ker Liste LP ordp größter gemeinsamer Teiler kleinstes gemeinsames Vielfaches natürlicher Logarithmus Anzahl der Elemente der Menge M Eulersche ϕ-Funktion: ϕ(N ) = #{1 ≤ x ≤ |N | | ggT(x, N ) = 1} Primzahlfunktion: π(N ) = #{1 ≤ x ≤ N | x ist Primzahl} Legendre-Symbol Gauß-Klammer: [x] = größte ganze Zahl z mit z ≤ x ganzzahlige Division p teilt n p teilt n nicht pk teilt n exakt, d. h. pk | n und pk+1 - n n ist sehr viel kleiner als m Identitätsabbildung im Körper K die Einheiten des Ringes R Grad des Polynoms f (X) Leitkoeffizient des Polynoms f (X) Psi-Funktion, siehe S.10 L-Funktion, siehe S.10 Quotientenkörper des Körpers K Ganzheitsring des algebraischen Zahlkörpers Q(α) Minimalpolynom der Zahl α (bezüglich Q, wenn nicht anders angegeben) Grad der Körpererweiterung K | L die Monomorphismen von Q(α) in C, siehe S.18 Norm der algebraischen Zahl θ, siehe S.18 Norm des Ideals a, siehe S.19 Index von Z[α] in Oα (als abelsche Gruppen) siehe S.26 siehe S.26 siehe S.28 siehe S.28 Kern siehe S.32 p-adische Bewertung (p ist rationale Primzahl) i νp f 0 (X) Uα ep,c (a, b) D(F (X)) ∆(ω1 , . . . , ωd ) ∆Q(α) M(n × n, R) (ai,j ) det dimK V ω fω lp,O , bzw. lp,A Bq mq ϕq,B F (X, Y ) P1 (Fp ) R(p) pp,c im Kontext GNFS pp,∞ ep,(x0 :x1 ) (a, b) contp (F ) α(F ) ρ(X) χq ii p-adische Bewertung (p ist Primideal) erste Ableitung der Funktion f (X) Einheitengruppe von Oα siehe S.39 Diskriminante der Funktion F (X) Diskriminante der Q-linear unabhängigen ganzalgebraischen Zahlen ω1 , . . . , ωd , siehe S.49 Diskriminante von Q(α), siehe S.49 Menge der n × n-Matritzen mit Einträgen aus R Kurzschreibweise einer Matrix (i ist Zeilen- und j ist Spaltenindex) Determinante Dimension des K-Vektorraumes V siehe S.62 siehe S.62 siehe S.63 siehe S.66 siehe S.66 siehe S.66 homogenisierte Form von f (X), siehe S.68 projektive Gerade, siehe S.69 Anzahl der Nullstellen von F (X, Y ) modulo p, siehe S.69 siehe S.70 siehe S.70 siehe S.71 p-Anteil des typischen F -Wertes, siehe S.78 α-Wert von F , siehe S.78 Dickman-Funktion, siehe S.83 Test-Charakter, siehe 88 Inhaltsverzeichnis Symbolverzeichnis i Vorwort 1 1 Grundlagen moderner Faktorisierungsmethoden 3 1.1 Differenz von Quadraten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Faktorbasen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.3 Siebmethoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4 Parameterwahl und Laufzeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2 Die Idee des Number Field Sieve 14 2.1 Ein abstraktes Faktorisierungsschema . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2 Algebraische Zahlkörper und algebraische Zahlen . . . . . . . . . . . . . . . . . . . . . 15 2.3 Eine erste Beschreibung des Number Field Sieve 16 . . . . . . . . . . . . . . . . . . . . . 3 Das Special Number Field Sieve 22 3.1 Die Wahl des Polynoms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.2 Primideale in Oα . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.3 Die Primidealzerlegung von a − bα . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.4 Die Zerlegung der Einheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.5 Die Suche nach Erzeugern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.5.1 Die Suche nach Fundamentaleinheiten . . . . . . . . . . . . . . . . . . . . . . . 33 3.5.2 Die Suche nach den Primidealerzeugern . . . . . . . . . . . . . . . . . . . . . . 34 3.6 Das Sieben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.7 Freie Relationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.8 Lineare Algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.9 Die Large-Prime-Variante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.9.1 Wie können partielle Relationen gefunden und verwendet werden? . . . . . . . 41 3.9.2 Wie finden wir Zyklen? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.10 Der allgemeine Fall Z[α] 6= Oα . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.10.1 Die Berechnung von Oα . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 iii INHALTSVERZEICHNIS 3.10.2 Die Darstellung von Oα und Idealen . . . . . . . . . . . . . . . . . . . . . . . . 51 3.10.3 Die Primidealzerlegung von a − bα . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.10.4 Die Suche nach Erzeugern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4 Das General Number Field Sieve 4.1 55 Probleme bei der Behandlung allgemeiner Zahlen . . . . . . . . . . . . . . . . . . . . . 55 4.1.1 Die Wahl eines guten Polynoms . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.1.2 Die Konstruktion des algebraischen Quadrates . . . . . . . . . . . . . . . . . . 55 4.1.3 Die Bestimmung der Quadratwurzel . . . . . . . . . . . . . . . . . . . . . . . . 60 4.1.4 Probleme durch große Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Die Wahl eines guten Polynoms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.2.1 Die Verwendung nichtnormierter Polynome . . . . . . . . . . . . . . . . . . . . 61 4.2.2 Die Bewertung von Polynomen . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.2.3 Die Konstruktion guter Polynome . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.3 Quadratische Charaktere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 4.4 Das Lattice Sieve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.4.1 Sieben mit Special-q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.4.2 Sieben im Gitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.4.3 Der neue Siebalgorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 4.5 Verbesserungen des Matrix-Schrittes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 4.6 Der Quadratwurzel-Schritt und die finale Kongruenz . . . . . . . . . . . . . . . . . . . 99 4.2 4.6.1 Die Vereinfachung des Quadrates θ . . . . . . . . . . . . . . . . . . . . . . . . . 100 4.6.2 Die Primidealzerlegung von θ0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 4.6.3 4.6.4 Die Approximation der Quadratwurzel . . . . . . . . . . . . . . . . . . . . . . . 103 √ Die Berechnung von θL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 4.6.5 Die Herleitung der finalen Kongruenz . . . . . . . . . . . . . . . . . . . . . . . 106 5 Ausblick 107 5.1 Welche Auswirkungen hat die RSA-155-Faktorisierung auf die Sicherheit von RSA? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 5.2 Shamirs TWINKLE-Zylinder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 5.3 Ein paralleler Block-Lanczos-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . 112 A Bedienungshinweise für die beigelegten Programme 113 B Überblick über Rekordfaktorisierungen 127 iv Vorwort A Tale of Three Sieves ” Sieve the twos and sieve the threes The sieve of Eratosthenes! When the multiples sublime The numbers which remain are prime! Add log p as you advance Such is the sieve of Pomerance! The largest sums which you have found Give numbers which are smooth and round! Mark out a gigantic square. Add logs at random everywhere. This brief account you must forgive Of Pollard‘s Number Field Sieve!“ John M. Pollard Das Number Field Sieve stellt den zur Zeit schnellsten Algorithmus zum Faktorisieren großer Zahlen dar. Entstanden aus einer Idee von J. M. Pollard [Pol93a], hat es in dreierlei Hinsicht Bemerkenswertes geleistet: Zunächst einmal war der ursprüngliche Number Field Sieve-Algorithmus, der später als Special Number Field Sieve betitelt wurde, das erste Faktorisierungsverfahren, welches auf Zahlen von besonderer Struktur zugeschnitten war. Von dieser Art sind z. B. Fermat- und Cunninghamsche Zahlen (d. h. k Zahlen der Form Fk = 22 + 1 bzw. N = rs ± 1 für natürliche Zahlen k, r und s mit r << s). Vor dem Aufkommen des Special Number Field Sieve wurden derartige Zahlen herangezogen, um Fortschritte auf dem Gebiet des Faktorisierens zu dokumentieren. Dies ist nicht mehr uneingeschränkt möglich, seit das Special Number Field Sieve 1990 durch die spektakuläre Zerlegung der 155-stelligen neunten Fermatzahl F9 auf sich aufmerksam machte, zu einem Zeitpunkt, an dem der damalige Champion, das Multiple Polynomial Quadratic Sieve, gerade begann, 100-stellige Zahlen ins Visier zu nehmen. Seither muss bei der Beurteilung von Faktorisierungserfolgen zwischen speziellen und allgemeinen Zahlen unterschieden werden. Natürlich sind sofort Anstrengungen unternommen worden, diese Methode auch für allgemeine Zahlen zu adaptieren. Hierbei galt es zunächst, viele mathematische Schwierigkeiten aus dem Weg zu räumen. Nachdem dies geschehen war, deckte die Analyse des Verfahrens auf, welches Potential der (zu diesem Zeitpunkt lediglich in der Theorie existierende) General Number Field Sieve-Algorithmus innehat. Alle mächtigen Faktorisierungsverfahren vor dem Number Field Sieve besaßen die asymptotische Laufzeit O(LN [1/2, v]) (zur Definition dieser Funktion siehe Seite 10), so dass viele Skeptiker die Meinung vertraten, hiermit sei bereits die untere Schranke für den Aufwand des Faktorisierens erreicht. Der zweite Erfolg des Number Field Sieve war die Widerlegung dieser Annahme: Die asymptotische Laufzeit des Number Field Sieve ist von der Größenordnung O(LN [1/3, v]). So war das Number Field Sieve in der Theorie bereits der neue Faktorisierungs-Champion, bevor es auch nur eine einzige allgemeine Zahl zerlegt hatte. Als dritte bemerkenswerte Leistung gelang schließlich auch die praktische Überwindung der angesprochenen Probleme, so dass es 1993 erstmalig glückte, das General Number Field Sieve zu implementieren 1 INHALTSVERZEICHNIS [BL93], [BLZ93]. In der Folgezeit sind viele Verbesserungen vorgenommen worden, und seit der Zerlegung von RSA-130 im April 1996 ist das Number Field Sieve alleiniger Rekordhalter auf dem Gebiet des Faktorisierens sowohl von speziellen, als auch von allgemeinen Zahlen (mehr zum RSA-Challenge findet sich im Internet unter www.rsa.com). Der bisherige Höhepunkt der Number Field Sieve-Erfolgsserie wurde im August 1999 erreicht, als einem aus vier Kontinenten stammenden Team die Faktorisierung von RSA-155, einer 512-Bit-Zahl, gelang. Dies stellt aus folgendem Grund einen Meilenstein dar: Das RSA-Kryptosystem ist das heutzutage weltweit meistverbreitetste Verschlüsselungsverfahren. Es beruht auf der Schwierigkeit, große Zahlen zu faktorisieren, weshalb Fortschritte im Faktorisieren direkte Angriffe auf die Sicherheit von RSA darstellen. Aufgrund der erst kürzlich gelockerten strengen Bestimmungen der amerikanischen Regierung die Ausfuhr starker Kryptographie betreffend, werden einer Schätzung zufolge derzeit 95% des elektronischen Handels im Internet mit 512-Bit-Schlüsseln geschützt. Welche Auswirkungen die Number Field Sieve-Faktorisierung einer 512-Bit-Zahl tatsächlich hat, sind derzeit noch nicht abzusehen. Sicher ist es falsch, zu sagen, RSA sei geknackt“, denn zum Einen darf man nicht übersehen, ” welch enormer Einsatz von Rechenkraft, Rechenzeit und nicht zuletzt Spezialistenwissen notwendig war, um RSA-155 zu zerlegen; zum Anderen ist es schon längst gängige Praxis, wirklich sensible Daten mit 1024-Bit- oder sogar 2048-Bit-Schlüsseln zu schützen (mehr zu der Schlüssellängen-Problematik im letzen Kapitel 5). Das erste Ziel dieser Arbeit ist das Nachvollziehen der historischen Entwicklung des Faktorisierungsproblems; es wird dargelegt, wie aus einer schon P. Fermat bekannten Idee durch immer neue Weiterentwicklungen letztlich der zur Zeit mächtigste Faktorisierungsalgorithmus entstanden ist. Im zweiten Kapitel erläutern wir die Idee des Number Field Sieve, indem wir es in ein abstraktes Faktorisierungsschema einbetten. Daran anschließend werden beide Varianten im Einzelnen erläutert. Hierzu ist anzumerken, dass die im dritten Kapitel vorgestellte Version des Special Number Field Sieve dem zur Faktorisierung von F9 eingesetzten Algorithmus entspricht. An diesem ersten Entwurf des Number Field Sieve lässt sich sehr schön beobachten, wie die Ideen aus Kapitel 2 direkt umgesetzt wurden. Die heute gebräuchlichen und Rekorde aufstellenden Implementierungen des Special Number Field Sieve jedoch sind mit Ausnahme der Polynomwahlphase an den im vierten Kapitel vorgestellten General Number Field Sieve-Algorithmus angelehnt. Bei dessen Beschreibung legen wir insbesondere auf aktuelle Ergebnisse Wert, deshalb liegt der thematische Schwerpunkt in der Polynomwahlphase, dem Bereich, in dem zur Zeit besonders intensiv geforscht wird. Das letzte Kapitel durchleuchtet die Implikationen, die sich aus der RSA-155-Faktorisierung sowie neuesten algorithmischen und technischen Entwicklungen für die Sicherheit des RSA-Kryptosystems ergeben. Im Anhang schließlich sind die Daten einiger Rekordfaktorisierungen tabellarisch zusammengestellt. Des Weiteren findet sich dort eine kurze Einführung in den Gebrauch der auf der beiliegenden Diskette enthaltenen Programme. Bedanken möchte ich mich bei Dr. Andreas Guthmann für die Vergabe dieses interessanten und hochaktuellen Themas, für die Möglichkeit, meine Ergebnisse im Rahmen einiger Seminare meinen Kommilitonen vorzustellen und nicht zuletzt für seine Geduld. Besonderer Dank gebührt auch meinen Eltern Luzie und Hans-Peter Wedemeyer, die mir mein Studium ermöglichten und mir immer eine Stütze waren. Last but not least möchte ich an dieser Stelle meinen Ehemann Tobias Schmidt-Samoa erwähnen, der jederzeit für mich da war, mir Mut machte und der mir eine unschätzbare Hilfe war bei Problemen mit LATEX und der Installation von Pari. Katja Schmidt-Samoa 2 Kapitel 1 Grundlagen moderner Faktorisierungsmethoden Heutzutage gibt es im Wesentlichen zwei Gruppen von Faktorisierungsmethoden. Die Verfahren der ersten Gruppe finden besonders schnell kleine Primfaktoren der zu zerlegenden Zahl; Beispiele hierfür sind die Durchführung von Probedivisionen (alle Primzahlen in aufsteigender Reihenfolge testend), Pollard’s Rho [Pol75] und Lenstra’s Elliptische Kurven-Methode [Len87]. Das Number Field Sieve gehört wie auch das Quadratische Sieb [Pom85] und der Continued-FractionAlgorithmus [MB75] zur zweiten Gruppe, der sogenannten Kombinieren von Kongruenzen-Faktorisierungsmethoden. Die Laufzeit dieser Algorithmen ist ausschließlich abhängig von der Größe der zu faktorisierenden Zahl N , nicht von der Größe der gefundenen Faktoren. In diesem Kapitel sollen wichtige Ideen dieser Verfahren herausgearbeitet werden. Insbesondere soll der Leser den Weg, der zum Number Field Sieve geführt hat, nachvollziehen können, daher werden technische Details ausgespart. Mithilfe der angegebenen Referenzen kann die Materie jedoch beliebig vertieft werden. Notation 1.1 Im Number Field Sieve findet ein großer Teil der Berechnungen im Restklassenring Z/N Z statt, dessen Elemente Restklassen modulo N sind. In der Praxis rechnet man mit diesen Restklassen jedoch wie mit gewöhnlichen ganzen Zahlen und reduziert modulo N . Um den Notationsaufwand in vernünftigen Grenzen zu halten, sei im Folgenden durch z für z ∈ Z je nach Kontext die Restklasse modulo N , zu der z gehört, bzw. ein Repräsentant dieser Restklasse in Z (üblicherweise aus dem Intervall [0, . . . , N − 1] oder [−( N 2−1 ), . . . , N 2−1 ]) bezeichnet, obwohl diese Objekte im mathematischen Sinn natürlich nicht gleich sind. In gewisser Weise werden die Elemente von Z/N Z im Folgenden oft als ganze Zahlen, für die besondere Rechenregeln gelten, aufgefasst. Ist z. B. mit φ ein Homomorphismus nach Z/N Z gegeben, so schreiben wir φ(xy) ≡ φ(x)φ(y) (N ), behandeln die Bilder von φ also wie ganze Zahlen. Diese kleinen mathematischen Ungenauigkeiten werden um der besseren Lesbarkeit des Textes willen bewusst in Kauf genommen. 1.1 Differenz von Quadraten Die intuitivste Faktorisierungsmethode ist ohne Zweifel die Durchführung von Probedivisionen. Dieses Verfahren wird natürlich schnell inpraktikabel, falls die zu faktorisierende Zahl keine kleinen“ Prim” faktoren besitzt. So ist es zum Beispiel nicht einfach, im Kopf die Primfaktorzerlegung von N = 1591 zu finden. Wer schon etwas Erfahrung im Faktorisieren (oder gute mathematische Intuition) besitzt, findet wahrscheinlich eine elegantere Lösung des Problems. Bereits P. Fermat machte von der Idee 3 KAPITEL 1 GRUNDLAGEN MODERNER FAKTORISIERUNGSMETHODEN Gebrauch, eine zu faktorisierende Zahl als Differenz von zwei Quadraten auszudrücken. Im Beispiel: N = 1591 = 1600 − 9 = 402 − 32 = (40 + 3)(40 − 3) = 43 · 37. In den 20er Jahren des letzten Jahrhunderts veröffentlichte M. Kraitchik einige Arbeiten, in denen er vorschlug, auch Differenzen von Quadraten zu betrachten, die anstatt gleich lediglich ein Vielfaches der zu zerlegenden Zahl sind [Kra26]. Alle der oben erwähnten Faktorisierungsalgorithmen der zweiten Gruppe arbeiten nach dieser Methode. Grundlegend ist folgendes nach P. Fermat benannte Lemma: Lemma 1.2 Seien X, Y ∈ Z, N ∈ N. Gelten X2 ≡ Y 2 (N ) (1.1) X 6≡ ±Y (N ), (1.2) und dann sind ggT(N, X + Y ) und ggT(N, X − Y ) nichttriviale Teiler von N . Beweis: Es gilt X 2 ≡ Y 2 (N ) ⇔ N | (X + Y )(X − Y ). Wegen (1.2) teilt N weder (X + Y ) noch (X − Y ). Da N das Produkt teilt, haben somit beide Faktoren einen nichttrivialen Teiler mit N gemein. Dieses Lemma liefert unmittelbar folgendes Faktorisierungsschema: Sei N die zu faktorisierende natürliche Zahl. Finde X und Y mit (1.1) und teste, ob zusätzlich (1.2) erfüllt ist. Falls ja, berechne ggT(N, X + Y ) bzw. ggT(N, X − Y ) (z. B. mit dem Euklidschen Algorithmus). Damit ist dann zumindest eine teilweise Faktorisierung von N gegeben und wir können das Verfahren iterieren. Paare (X, Y ), für die (1.1) erfüllt ist, werden im Folgenden als quadratische Kongruenzen bezeichnet. Es bleiben noch zwei Fragen zu klären: 1. Kann obiges Verfahren immer mit Erfolg angewendet werden, d. h. existiert immer ein geeignetes Paar (X, Y ) ? Die Antwort lautet Ja“, falls N eine ungerade zusammengesetzte Zahl ist. ” Sei nämlich N = pq, 2 - N, p 6= 1, q 6= 1 (p und q müssen keine Primzahlen sein). Dann setzen wir: p−q X := p+q 2 und Y := 2 . Da N ungerade ist, sind es auch p und q, daher ist X, Y ∈ Z erfüllt und es gilt: 1. X 2 − Y 2 = p2 +2pq+q 2 4 − p2 −2pq+q 2 4 = pq = N 2. X − Y = q 6≡ 0 (N ) 3. X + Y = p 6≡ 0 (N ) 2. Haben wir ein Paar (X, Y ) mit (1.1) gefunden, wie groß ist dann die Chance, dass auch (1.2) erfüllt ist? M.a.W. wie viele quadratische Kongruenzen liefern auch tatsächlich nichttriviale Teiler von N ? Um diese Frage exakt zu beantworten, müssen wir zunächst einmal die vorliegenden Voraussetzungen präzisieren. Bei der Wahl von X und Y können wir davon ausgehen, dass beide Einheiten in Z/N Z sind, da andernfalls durch ggT(X, N ) bzw. ggT(Y, N ) bereits eine teilweise Faktorisierung von N gegeben wäre. Des Weiteren ist es sinnvoll, sich auf Kandidaten zwischen 1 und N zu beschränken, da modulo N gerechnet wird. Wir erhalten schließlich folgende Aussage: Satz 1.3 Q Sei N > 2 eine ungerade natürliche Zahl und N = 1≤i≤k pei i die kanonische Primfaktorzerlegung von N . Dann gibt es genau ϕ(N ) · 2k geordnete Paare (X, Y ) mit 4 1.1 DIFFERENZ VON QUADRATEN 1. 1 ≤ X, Y ≤ N 2. ggT(XY, N ) = 1 3. X 2 ≡ Y 2 (N ) Unter diesen existieren genau ϕ(N ) · 2 geordnete Paare, für die zusätzlich gilt: 4. X ≡ ±Y (N ) Hierbei bezeichnet ϕ die Eulersche ϕ-Funktion, d. h. es gilt ϕ(N ) = #{1 ≤ x ≤ N | ggT(x, N ) = 1}. Beweis: Sei X0 beliebig, aber fest mit 1 ≤ X0 ≤ N , ggT(X0 , N ) = 1. Für den ersten Teil des Satzes genügt es zu zeigen, dass 2k geordnete Paare (X0 , Y ) den Bedingungen 1. bis 3. genügen. Wir konstruieren alle Lösungen Y mithilfe des Chinesischen Restsatzes. Sei pi ein Primfaktor von N . Wir betrachten die quadratische Gleichung X02 ≡ Y 2 (pei i ). (1.3) Diese ist äquivalent zu pei i | (X0 + Y )(X0 − Y ). Angenommen, pi | (X0 + Y ) und pi | (X0 − Y ). Dann teilt pi auch die Summe X0 + Y + X0 − Y = 2X0 . Da nach Voraussetzung pi 6= 2 gilt, ist dies ein Widerspruch zu ggT(X0 , N ) = 1. Daher geht pei i in einem der beiden Faktoren (X0 + Y ) oder (X0 − Y ) vollständig auf. Es ist also Y genau dann eine geeignete Lösung, wenn Y ≡ ±X0 (pei i ) erfüllt ist. Wir halten fest, dass X0 und −X0 modulo pei i inkongruent sind, da erstens pi 6= 2 und zweitens ggT(X0 , pei i ) = 1 gelten. Daher existieren für jedes i mit 1 ≤ i ≤ k exakt zwei Lösungen Y von (1.3). Nach dem Chinesischen Restsatz gibt es somit genau 2k Paare (X, Y ), die den Anforderungen 1. bis 3. genügen. Die zweite Aussage des Satzes ist offensichtlich, da X0 ≡ ±Y (N ) für genau zwei Zahlen Y mit 1 ≤ Y ≤ N, ggT(Y, N ) = 1 erfüllt ist (N ist ungerade und teilerfremd zu X0 , daher sind X0 und −X0 inkongruent modulo N ). Die meisten Algorithmen der Kombinieren von Kongruenzen-Familie erzeugen die Kongruenzen der Form X 2 ≡ Y 2 (N ) derart, dass ggT(XY, N ) = 1 automatisch erfüllt ist. Satz 1.3 lässt sich dann folgendermaßen interpretieren: Ist N das Produkt von mindestens zwei verschiedenen Primzahlen, dann liefert jedes gefundene Paar (X, Y ) mit X 2 ≡ Y 2 (N ) mindestens eine 50:50-Chance, einen nichttrivialen Teiler von N zu finden. Die exakte Wahrscheinlichkeit hängt ab von der Anzahl der paarweise verschiedenen Primteiler von 1 N : Bei k Primteilern beträgt sie 1 − 2k−1 . Wir möchten jedoch einen kleinen Schönheitsfehler nicht verschweigen: Die letzte Aussage ist nur dann beweisbar, wenn die Paare (X, Y ) zufällig gewählt werden. Dies ist in den meisten Anwendungen (Number Field Sieve, Quadratisches Sieb, Continued-Fraction, ...) leider nicht der Fall; vielmehr werden deterministisch Paare erzeugt, von denen man hofft, dass sie sich wie Zufallszahlen verhalten. Aus diesem Grund sind die propagierten Laufzeiten oben erwähnter Algorithmen lediglich heuristische Prinzipien, aber noch nicht streng mathematisch bewiesen. C. Pomerance bemerkt hierzu, dass die zu zerlegenden Zahlen dies zum Glück nicht wissen [Pom94b]. Aus dem Beweis von Satz 1.3 folgt weiterhin, dass die unter den gegebenen Voraussetzungen gefunden Größen ggT(N, X + Y ) und ggT(N, X − Y ) komplementäre Teiler von N sind, denn kein Primteiler von N kann die beiden Größen X + Y und X − Y zugleich teilen. Daher genügt es, einen der beiden Werte mithilfe des Euklidschen Algorithmus zu berechnen. Zudem erkennen wir, dass N mindestens zwei verschiedene Primteiler besitzen muss, damit das Faktorisieren durch die Differenz von Quadraten klappt. Ist N nämlich eine Primzahlpotenz, dann sagt Satz 1.3, dass kein Paar (X, Y ) mit ggT(XY, N ) = 1 existiert, welches (1.1) und (1.2) erfüllt. Das bedeutet insbesondere: 5 KAPITEL 1 GRUNDLAGEN MODERNER FAKTORISIERUNGSMETHODEN Number Field Sieve, Quadratisches Sieb, Continued-Fraction und vergleichbare Algorithmen versagen bei Primzahlpotenzen! Man sollte deshalb niemals vergessen, die zu faktorisierende Zahl einem Primzahlpotenztest (siehe z. B. [LLMP93a], 2.4 und 2.5) zu unterziehen, bevor man einen der oben erwähnten Algorithmen anwendet. Leider sagt Satz 1.3 aber auch aus, dass die Zahl guter Paare (X, Y ) verglichen mit der Zahl möglicher Paare (X, Y ) so klein ist, dass die ad-hoc“-Faktorisierungsstrategie (rate (X, Y ) und teste, ob (1.1) ” und (1.2) gelten) wenig sinnvoll erscheint. Dies ist zumindest dann der Fall, wenn N wenige Primfaktoren besitzt. Da man mächtige Faktorisierungsmethoden aber erst anwendet, wenn man weiß, dass N keine kleinen Primteiler mehr besitzt (z. B. weil man N den zu Beginn dieses Kapitels erwähnten Faktorisierungsalgorithmen, welche kleine Teiler schnell finden, unterzogen hat), ist N mit hoher Wahrscheinlichkeit ein Produkt von wenigen großen Primzahlen. Es ist also angebracht, nach Verfahren zu suchen, die quadratische Kongruenzen automatisch generieren. Eine solche Methode soll im nächsten Abschnitt vorgestellt werden. 1.2 Faktorbasen Die in diesem Abschnitt beschriebene Technik geht ursprünglich auch auf die oben erwähnten Arbeiten von M. Kraitchik zurück. Da dieser jedoch noch keine elektronischen Hilfsmittel zur Verfügung hatte, konnte er das Potential der Methode nicht aufdecken. Kongruenzen der Form Xi2 ≡ Yi (N ) mit Xi2 6= Yi sollen im Folgenden einfach-quadratische Kongruenzen genannt werden. Kraitchiks Idee war es, viele verschiedene einfach-quadratische Kongruenzen mittels Multiplikation zu einer quadratischen Kongruenz zu kombinieren. Da das Produkt mehrerer Quadrate seinerseits wieder ein Quadrat ist, reicht es aus, nur die rechten Seiten der einfach-quadratischen Kongruenzen zu betrachten. Das Number Field Sieve hingegen arbeitet mit Kongruenzen der Form Xi ≡ Yi (N ), sogenannten einfachen Kongruenzen. Um diese zu einer quadratischen Kongruenz zusammenzufügen, müssen natürlich beide Seiten gleichzeitig behandelt werden. Die Algorithmen der Kombinieren von Kongruenzen-Familie unterscheiden sich im Wesentlichen in der Art und Weise, wie diese einfachen, bzw. einfach-quadratischen Kongruenzen erzeugt werden. Ein erstes Beispiel findet sich am Ende dieses Abschnitts. Ganze Zahlen lassen sich besonders effektiv zu einem Quadrat kombinieren, wenn ihre Primfaktorzerlegungen bekannt sind, denn eine ganze Zahl ist offensichtlich genau dann ein Quadrat, wenn sie positiv und jeder Exponent in ihrer Primfaktorzerlegung gerade ist. Zahlen mit bekannter Primfaktorzerlegung multiplizieren wir schnell miteinander, indem wir die sich entsprechenden Exponenten addieren. Zu diesem Zweck führen wir die sogenannten Exponentenvektoren ein: Der Exponentenvektor einer ganzen Zahl z enthält die Exponenten, die in der Primfaktorzerlegung von z auftreten, wobei alle Primzahlen aufsteigend geordnet durchlaufen werden. Dieser Vektor ist demnach theoretisch unendlich groß, enthält aber nur endlich viele Einträge, die ungleich 0 und somit relevant sind. Haben wir also die Primfaktorzerlegung aller Yi gebildet, können wir geeignete Yi so auswählen, dass sämtliche Summen von Exponenten gerade sind, also das Produkt über diese Yi ein Quadrat bildet. Es ist leicht einzusehen, dass die Exponenten für diesen Zweck zu viel Information liefern, denn von Interesse ist lediglich ihre Parität. Daher können wir die Exponentenvektoren der Yi modulo 2 reduzieren, was auch die Rechnungen erleichtert. Wir machen uns jedoch schnell klar, dass Zahlen mit großen Primfaktoren Probleme aufwerfen: Besitzt Yi einen einfachen Primfaktor p, so müssen wir, um Yi im Produkt berücksichtigen zu können, ein Yj mit demselben Primfaktor p finden. Dies gestaltet sich umso schwieriger, je größer p ist. Aus diesem Grund haben M. Morrisson und J. Brillhart in ihrem Anfang der 70er Jahre entwickelten Continued-Fraction-Verfahren [MB75] das Konzept einer sogenannten Faktorbasis entwickelt, von dem viele mächtige Faktorisierungs- und Diskrete-Logarithmus-Algorithmen auch heute noch profitieren. Die Faktorbasis ist definiert als die Menge aller Primzahlen unterhalb einer in Abhängigkeit von N gewählten (moderaten) Schranke B. Für die Kombination der quadratischen Kongruenz werden 6 1.2 FAKTORBASEN nun nur noch Kongruenzen Xi2 ≡ Yi (N ) herangezogen, für die Yi vollständig über der Faktorbasis zerfällt (d. h. kein Primfaktor von Yi überschreitet B). Zahlen dieser Art nennt man glatt bezüglich B ( smooth“ bzw. B-smooth“ in der englischsprachigen Literatur). ” ” Die Vorteile liegen auf der Hand: Zunächst einmal können wir zu endlichen Exponentenvektoren übergehen, da wir nur noch die ersten π(B) Einträge berücksichtigen müssen. Sei der modulo zwei reduzierte Exponentenvektor von Yi mit v(Yi ) bezeichnet. Diesen können wir auffassen als Element des π(B) π(B)-dimensionalen F2 -Vektorraumes F2 . Insbesondere sind daher π(B) + 1 dieser Vektoren linear abhängig, d. h. π(B) + 1 verschiedene Kongruenzen der Form Xi2 ≡ Yi (N ) lassen sich immer zu einer quadratischen Kongruenz kombinieren, und dies mittels besonders effektiver Gauß-Elimination modulo zwei. Laut C. Pomerance [Pom90] hat das oben zitierte Paper von M. Morrisson und J. Brillhart die Ära moderner Faktorisierungs- und (indirekt) Diskreter-Logarithmus-Algorithmen eingeleitet. Eine einfache Illustration aller bisher entwickelten Ideen liefert Dixon’s Random-Squares-Methode [Dix81]: Sei B die Schranke der Faktorbasis F. Schritt 1: Sammle einfach-quadratische Kongruenzen: a) Wähle a zufällig zwischen 1 und N und berechne den kleinsten nichtnegativen Rest von a2 modulo N . Dieser sei mit ra bezeichnet. Q b) Falls ra über der Faktorbasis zerfällt (d. h. es gilt ra = p∈F pea (p) ), berechne den Vektor Q v(ra ) := (ea (p) mod 2)p∈F . Ist v(ra ) der Nullvektor, so teste, ob a ≡ p∈F pea (p)/2 (N ) gilt. Falls ja, verwerfe diese Kongruenz und gehe zum nächsten Punkt. Falls nein, definiere Q X := a, Y := p∈F pea (p)/2 und stoppe. c) Die letzten beiden Punkte wiederhole so lange, bis π(B) + 1 Kongruenzen gefunden sind. Schritt 2: Forme mit den v(ra ) als Spalten eine π(B) × (π(B) + 1)-Matrix R und löse mittels Gaußπ(B)+1 Elimination modulo zwei das Gleichungssystem Rx = 0, x = (xi ) ∈ F2 . P Schritt 3: Berechne f (p) := 1≤i≤π(B)+1 xi · ea (p) /2, Q Y := p∈F pf (p) , Q X := 1≤i≤π(B)+1 xi · ai . Hierbei bezeichnet ai den zur i-ten Spalte von R korrespondierenden a-Wert. Nach Konstruktion gilt dann X 2 ≡ Y 2 (N ). Dixon’s Random-Squares-Methode ist weniger von praktischer (denn es gibt schnellere Verfahren) als von theoretischer Bedeutung. Aus der Faktorisieren-mit-Kongruenzen-Familie ist Dixon’s Algorithmus der einzige mit bewiesener Komplexitätsanalyse, da im Gegensatz zu anderen Verfahren die Größen ra , die über der Faktorbasis zerfallen sollen, nichtdeterministisch erzeugt werden und sich nachweislich wie Zufallszahlen verhalten. Eine mögliche Verbesserung ergibt sich, wenn wir im ersten Schritt auch negative Reste zulassen, d. h. im Fall ra > N/2 ersetzen wir ra durch ra − N . Hiermit verringern wir die absolute Größe der zu zerlegenden Zahlen und vergrößern somit ihre Zerfallswahrscheinlichkeit. Damit wir auch negative Zahlen über der Faktorbasis zerlegen können, müssen wir die Einheit −1 in diese mit aufnehmen. Leider hat es sich gezeigt, dass glatte Zahlen nicht häufig genug sind, um mit einem Algorithmus wie Dixon’s Random-Squares-Methode große Zahlen (50 bis 60 Dezimalstellen) zu faktorisieren. Um in einem großen Intervall zufällig eine glatte Zahl zu finden, sind so viele Fehlversuche zu erwarten, dass das Testen all dieser Zahlen mittels Probedivisionen die Laufzeit des Algorithmus sprengen würde. Ähnliches gilt auch für den Continued-Fraction-Algorithmus, so waren z. B. 1330000 Versuche notwendig, um die zur Faktorisierung von F7 benötigten 2059 Relationen zu finden. C. Pomerance vergleicht das Aufspüren glatter Zahlen mit der Suche nach einer Nadel in einem Heuhaufen [Pom94a]. Er war es schließlich, der mit dem Quadratischen Sieb [Pom85] erstmalig einen 7 KAPITEL 1 GRUNDLAGEN MODERNER FAKTORISIERUNGSMETHODEN Algorithmus vorstellte, welcher mithilfe eines Siebverfahrens das Auffinden glatter Zahlen erheblich beschleunigte. C. Pomerance selbst vergleicht Siebverfahren mit einem Magneten, mit dessen Hilfe man sich die gesuchten Nadeln aus dem Heuhaufen schnell beschaffen kann, anstatt jeden Strohhalm einzeln zu inspizieren. 1.3 Siebmethoden Siebmethoden arbeiten folgendermaßen: Die einfachen bzw. einfach-quadratischen Kongruenzen werden schematisch erzeugt, so dass man ihre Struktur ausnutzen kann, um mit einem Verfahren ähnlich des Siebes von Eratosthenes aus einer großen Menge von Kongruenzen die wenigen brauchbaren herauszufiltern. Dadurch kann auf den größten Teil der zeitaufwendigen Probedivisionen, nämlich gerade auf die erfolglosen, weitgehend verzichtet werden. Das bekannte Sieb des Eratosthenes wird angewendet, um alle Primzahlen bis zu einer Schranke S aufzuspüren. Zunächst schreibe alle Zahlen von 2 bis S in eine Liste und verfahre dann wie folgt: 1. Markiere die erste unmarkierte und nicht ausgestrichene Zahl p. 2. Streiche in der Folgeliste jede p-te Zahl. 3. Wiederhole die letzten beiden Schritte so lange, bis alle Einträge der Liste markiert oder gestrichen sind. Schließlich sind die markierten Zahlen die Primzahlen und die gestrichenen die zusammengesetzten. Wie können wir dieses alte Verfahren modifizieren, um glatte Zahlen zu entdecken? Die entscheidende Idee ist, dass Zahlen mit vielen kleinen Primfaktoren besonders oft ausgestrichen werden. Indem wir im zweiten Schritt anstatt sie zu streichen die ensprechenden Zahlen durch p teilen, erreichen wir, dass nach k Durchläufen jene Zahlen besonders klein geworden sind, die nur aus den ersten k Primzahlen zusammengesetzt sind (wir erhalten nicht für jede derartige Zahl eine 1 als Rest, da nicht mit Primzahlpotenzen gesiebt wurde). Besonders interessant ist das Verfahren, da es nicht nur für eine Liste zusammenhängender Zahlen praktikabel ist, sondern vielmehr auch dann noch funktioniert, wenn wir aufeinanderfolgende Werte eines ganzzahligen Polynoms betrachten. Denn ist f (X) ein derartiges Polynom und p eine Primzahl, dann gilt: f (X) ≡ 0 (p) ⇒ f (X + k · p) ≡ 0 (p), k ∈ Z. Man sieht dies leicht, denn da f (X) ein Polynom mit ganzzahligen Koeffizienten und die Reduktion modulo p ein Homomorphismus ist, folgt aus X ≡ Y (p) immer f (X) ≡ f (Y ) (p). Wir erhalten alle durch p teilbaren f -Werte, indem wir die Nullstellen von f (X) modulo p bestimmen und jeweils von einer solchen ausgehend die Vielfachen von p addieren, bzw. subtrahieren. Diese Beobachtung ist für Dixon’s Random-Squares-Methode leider nicht von Nutzen, weil die dort zu zerlegenden Größen ra nicht als Werte eines ganzzahligen Polynoms erscheinen. Stattdessen wurden neue Algorithmen entworfen, die einfache, bzw. einfach-quadratische Kongruenzen geeigneter Struktur erzeugen. Zur Verdeutlichung soll kurz das Quadratische Sieb [Pom85] vorgestellt werden, ein Algorithmus, den C. Pomerance unter Ausnutzung einer Idee von R. Schroeppel zu Beginn der 80er Jahre des 20. Jahrhunderts entwickelte. Sei √ Q(a) := (a + [ N ])2 − N. Dann gilt offenbar √ (a + [ N ])2 ≡ Q(a) (N ). (1.4) In der Terminologie von Abschnitt 1.2 ist die Relation (1.4) also eine einfach-quadratische Kongruenz √ (mit (a + [ N ]) in der Rolle von X und Q(a) in der Rolle von Y ). Entscheidend für das Funktionieren des Siebes ist die Tatsache, dass Q(a) ein Polynom mit ganzzahligen Koeffizienten ist, denn wie bereits erläutert gilt für eine beliebige Primzahl p: p | Q(a) ⇒ p | Q(a + k · p), k ∈ Z. 8 1.3 SIEBMETHODEN Um nun aus einer großen Menge aufeinanderfolgender a-Werte genau diejenigen auszusieben, für die Q(a) durch p teilbar ist, genügt es, die Kongruenz Q(a) ≡ 0 (p) (1.5) genau einmal vollständig zu lösen. Denn sind a1p , . . . , akp die Lösungen von (1.5) in {1, . . . , p}, so finden wir alle möglichen Lösungen, indem wir zu aip , 1 ≤ i ≤ k, ganzzahlige Vielfache von p addieren. Nach Definition von Q(a) können wir über die Lösungsmenge Folgendes aussagen: • Ist N kein quadratischer Rest modulo p (d. h. das Legendre-Symbol Np wird zu −1 ausgewertet), dann existiert keine Lösung. • Ist p > 2 und gilt Np = 1, dann hat (1.5) genau zwei Lösungen modulo p. √ • Gilt p = 2, so ist die Lösung von (1.5) modulo 2 eindeutig, nämlich 0, falls N − [ N ]2 gerade ist und 1 sonst. An dieser Stelle soll nochmals darauf hingewiesen werden, dass mächtige Faktorisierungsalgorithmen wie das Quadratische Sieb erst zum Einsatz kommen, nachdem aus der zu faktorisierenden Zahl alle kleinen Primfaktoren herausdividiert worden sind. Aus diesem Grund ist insbesondere kein Element der Faktorbasis ein Teiler von N , und die oben erwähnten Legendre-Symbole sind immer definiert. Auch die schon im Zusammenhang mit Satz 1.3 angesprochene Tatsache, dass mit dem Quadratischen Sieb ausschließlich quadratische Kongruenzen X 2 ≡ Y 2 (N ) mit ggT(XY, N ) = 1 konstruiert werden, ist eine unmittelbare Folge hieraus. In der Praxis betrachten wir nur ganze Zahlen a mit |a| << N , daher sind die Größen Q(a) nach Definition immer positiv. Insofern ist es in diesem Fall unnötig, die Einheit −1 in die Faktorbasis aufzunehmen. Die obige Analyse der Lösungsmenge von (1.5) zeigt zudem, dass die Primzahlen p mit N = −1 den Ausdruck Q(a) für kein a ∈ Z teilen, konsequenterweise werden diese also aus der Fakp torbasis entfernt. Dies ist ein Beispiel dafür, dass zahlentheoretische Kenntnisse herangezogen werden können, um die Faktorbasis sinnvoll zu verkleinern und infolgedessen unnötige Arbeit einzusparen. Dieses Prinzip wird uns beim Number Field Sieve wiederbegegnen. Ein weiteres übliches Vorgehen zur Effizienzsteigerung ist das sogenannte logarithmische Sieben. Dies bedeutet, dass die zu siebende Liste nicht mit den Polynomwerten, sondern mit deren gerundeten Logarithmen initialisiert wird. Anstatt beim Sieben mit der Primzahl p die gefundenen Treffer“ durch ” p zu teilen, subtrahieren wir den gerundeten Logarithmus von p. Welche Basis wir für die Logarithmen wählen, hängt von den Speicherplatzvorgaben ab. Der erzielte Laufzeitvorteil resultiert aus dem Ersetzen einer multiplikativen durch eine additive Struktur, denn wie jeder weiß, sind Divisionen teu” rer“ als Subtraktionen. Dies gleicht die durch die einmalige Berechnung der Logarithmen zu leistende zusätzliche Arbeit mehr als aus. Der eigentliche Siebprozess lässt sich nun folgendermaßen beschreiben: Sei F = {p Primzahl| 2 < p ≤ B und Np = 1} ∪ {2} die Faktorbasis. Gesucht sind alle 1 ≤ |a| ≤ M , für die Q(a) über der Faktorbasis zerfällt. B und M sind Parameter, die in Abhängigkeit von N bestimmt werden müssen. Schritt 1: Initialisiere einen Array AQ der Länge 2M mit den gerundeten Logarithmen der Q(a), 1 ≤ |a| ≤ M . Schritt 2: Für jedes p ∈ F bestimme die Lösungen ap1 und ap2 von (1.5), bzw. nur ap1 , falls p = 2 gilt. Nun subtrahiere [log(p)] von AQ [a] genau dann, wenn a ≡ ap1 (p) oder a ≡ ap2 (p) erfüllt ist. Schritt 3: Zurückgegeben werden alle a mit AQ [a] < für eine kleine Schranke > 0. 9 KAPITEL 1 GRUNDLAGEN MODERNER FAKTORISIERUNGSMETHODEN Für alle von dieser Prozedur bestimmten Werte a zerfällt Q(a) mit sehr hoher Wahrscheinlichkeit über der Faktorbasis (je nachdem, wie groß die Schranke gewählt worden ist). Wegen auftretender Rundungsfehler kann im letzten Schritt nicht auf Gleichheit mit 0 getestet werden. Verglichen mit früheren Methoden finden Siebmethoden glatte Zahlen in deutlich kürzerer Zeit: Ist B die Schranke der Faktorbasis, so sind π(B) Probedivisionen erforderlich, um einen Kandidaten auf Glattheit zu testen; ein Sieb benötigt im Gegensatz dazu lediglich log log B Schritte im Durchschnitt (siehe [Pom96]). Aufgrund dieser immensen Verbesserung war das Quadratische Sieb in der Lage, doppelt so lange Zahlen zu faktorisieren wie der vorausgehende Champion, der Continued-FractionAlgorithmus. Leider kann es vorkommen, dass einige der guten“ Werte a nicht gefunden werden, da mit jeder Prim” zahl nur einmal gesiebt wird. Theoretisch ist es möglich, auch mit Potenzen der Faktorbasiselemente zu sieben. Dies funktioniert völlig analog zur oben beschriebenen Prozedur, denn es gilt: N ist quadratischer Rest modulo pk ⇔ N ist quadratischer Rest modulo p. Zu beachten ist, dass auch beim Sieben mit p2 , p3 , p4 , . . . jeweils nur [log(p)] (statt eines entsprechenden Vielfachen) von den betreffenden Array-Einträgen subtrahiert wird, da wir zu jedem Zeitpunkt die kleineren Potenzen bereits berücksichtigt haben. In der Praxis wird aus Gründen der Effizienz allerdings auf das Sieben mit Primzahlpotenzen verzichtet. Wie wir sehen, werden die quadratischen Kongruenzen jetzt im Gegensatz zu Dixon’s RandomSquares-Methode deterministisch erzeugt. Dies wirft einige Schwierigkeiten bei der Laufzeitanalyse auf, wie in Abschnitt 1.1 bereits angedeutet wurde. 1.4 Parameterwahl und Laufzeit Noch zu beantworten bleibt die Frage nach der Schranke B der Faktorbasis. Die folgenden Bemerkungen sind für alle Algorithmen, die mit Faktorbasen arbeiten, gültig. Zunächst einmal fällt auf, dass je größer B gewählt wird, desto mehr einfache bzw. einfach-quadratische Kongruenzen gefunden werden müssen, um diese zu einer quadratischen Kongruenz kombinieren zu können. Insofern scheint es wünschenswert, mit einer möglichst kleinen Faktorbasis zu arbeiten. Andererseits ist die Zerfallswahrscheinlichkeit über einer kleinen Faktorbasis natürlich geringer als über einer großen. Daher sind umso mehr Zahlen auf Glattheit zu testen, je kleiner B gewählt wird. Um die Größe der Faktorbasis optimieren zu können, sind tiefliegende Kenntnisse über die Anzahl der Zahlen, die keinen Primfaktor über einer gewissen Schranke B besitzen vonnöten. Da dieser Parameter die Laufzeit des Algorithmus jedoch signifikant beeinflusst, möchten wir dieser Frage nicht aus dem Weg gehen. Angenommen, die Größe der Zahlen, die über der Faktorbasis zerfallen sollen (im Quadratischen Sieb also die Werte Q(a)), sei durch x nach oben beschränkt, d. h. wir suchen glatte Zahlen in dem Intervall [1, . . . , x]. Im Folgenden verwenden wir Ergebnisse aus der analytischen Zahlentheorie über die Verteilung glatter Zahlen. So ist für positive reelle Zahlen x und B die Funktion ψ(x, B) definiert als Anzahl B-glatter positiver ganzer Zahlen kleiner oder gleich x, d. h. ψ(x, B) = #{z ∈ Z+ | z ≤ x und p ≤ B für alle Primteiler p von z}. (1.6) Die Wahrscheinlichkeit, dass eine zufällig aus dem Intervall [1, . . . , x] gewählte ganze Zahl B-glatt ist, können wir daher beschreiben durch den Ausdruck ψ(x, B)/[x]. Daher berechnet sich die erwartete Anzahl von Kandidaten, die zu testen sind, um k B-glatte Zahlen zu finden, als [x] · k/ψ(x, B). Ist k > π(B), dann wissen wir aus den vorangegangenen Überlegungen, dass sich aus diesen k glatten Zahlen mit Sicherheit ein Quadrat konstruieren lässt. Da für B > 3 immer B > π(B) erfüllt ist, ist k = B eine sinnvolle Wahl. Um in diesem Fall den optimalen B-Wert zu ermitteln, können wir einen Satz aus der Arbeit [BLP93] zitieren. Zunächst müssen wir noch die L-Funktion definieren, die aus den Laufzeitanalysen fast aller modernen Faktorisierungsalgorithmen bekannt ist: 10 1.4 PARAMETERWAHL UND LAUFZEIT Definition 1.4 (L-Funktion) Seien u, v ∈ R mit 0 ≤ u ≤ 1. Dann ist Lx [u, v] : R −→ R definiert als Lx [u, v] = exp[v(log x)u (log log x)1−u ]. Für das asymptotische Verhalten der L-Funktion ist die Größe von u wichtiger als die von v, denn u erscheint als Exponent in der Länge von x, v hingegen nur als Faktor (die Länge von x berechnet sich z. B. für in der Binärdarstellung vorliegende Zahlen x als blog2 xc + 1): Ist u = 0, so gilt Lx [u, v] = (log x)v , wir erhalten somit ein Polynom in der Länge von x. Ist andererseits u = 1, dann ist Lx [u, v] = exp(v log x) exponentiell in der Länge von x. Ist 0 < u < 1, so nennen wir daher einen Algorithmus, dessen asymptotische Laufzeit von der Größenordnung O(Lx [u, v]) ist, subexponentiell. Um den angekündigten Satz zu verstehen, benötigen wir noch eine weitere Schreibweise: f (X) ∈ o(g(X)) bedeutet, dass limX7→∞ f (X)/g(X) = 0 erfüllt ist. Insbesondere ist der Term o(1) daher ein Stellvertreter für eine gegen Null konvergierende Funktion. Satz 1.5 (Thm. 10.1 aus [BLP93]) Sei g(X) : R≥2 −→ R≥1 eine Funktion mit der Eigenschaft g(B) = B 1+o(1) für B 7→ ∞. Dann gilt für x 7→ ∞: 1 √ x · g(B) ≥ Lx , 2 + o(1) (1.7) ψ(x, B) 2 für alle B ≥ 2. Des Weiteren gilt in (1.7) die Gleichheit genau dann, wenn # " √ 1 2 + o(1) B = Lx , 2 2 (1.8) für x 7→ ∞ erfüllt ist. Diesen Satz können wir, auf unsere Situation bezogen, folgendermaßen interpretieren: Verwenden wir ein Siebverfahren und ist B die Schranke der Faktorbasis, dann sind nur B o(1) Operationen notwendig, um eine einzelne Zahl des Siebraumes auf B-Glattheit zu testen (siehe hierzu [Pom96]). Daher kann die Funktion g(B) aus obigem Satz interpretiert werden als eine obere Schranke für die Arbeit, die zu leisten ist, um diesen Test B mal durchzuführen. Nach unseren √ Vorüberlegungen können wir schließlich aus Ungleichung (1.7) folgern, dass der Ausdruck Lx [1/2, 2] eine untere Schranke für die zu erwartende Anzahl von zu testenden Kandidaten der Größenordnung x ist, um B Zahlen zu finden, die glatt sind bezüglich B. Damit diese untere Schranke angenommen wird, müssen wir B wie in (1.8) wählen. Ein Ergebnis von C. Pomerance zeigt uns, dass unser Ansatz in gewisser Hinsicht nicht zu verbessern ist: Satz 1.6 (Lemma 2.1 aus [Pom94b]) Es bezeichne Wsk(x, k) die Wahrscheinlichkeit, dass unter k zufällig gewählten Zahlen aus dem Intervall [1, x] eine Auswahl existiert, deren Produkt ein Quadrat ist. Ist dann eine kleine positive reelle Zahl, dann gilt 1 √ =1 2, 2 + √ 2. limx7→∞ Wsk x, Lx 21 , 2 − = 0 1. limx7→∞ Wsk x, Lx 11 KAPITEL 1 GRUNDLAGEN MODERNER FAKTORISIERUNGSMETHODEN Der erste Teil dieses √ Satzes ist eine Folgerung√aus Satz 1.5, denn jener sagt aus, dass mit der Wahl von B = Lx [1/2, 2/2 + o(1)] unter Lx [1/2, 2 + o(1)] zufällig aus dem Intervall [1, x] gewählten Zahlen im Limes B existieren, die B-glatt sind. Wie gesehen folgt dann die Behauptung aus der linearen Abhängigkeit der zugehörigen Exponentenvektoren. Viel interessanter ist der zweite Teil, denn informal formuliert bedeutet diese Aussage Folgendes: Falls wir zur Faktorisierung von N ein Kombinieren von Kongruenzen Verfahren verwenden wollen, welches zum Ziel hat, Zufallszahlen der Größenordnung x zu einem Quadrat zu multiplizieren, so √ müssen wir (im Limes) wenigstens Lx [1/2, 2 + ] Kandidaten testen. Dies gilt unabhängig davon, auf welche Art und Weise wir das gesuchte Quadrat konstruieren. Da wir andererseits wissen, dass die Verwendung √ von glatten Zahlen und Siebmethoden bei geeigneter Parameterwahl mit gerade diesen Lx [1/2, 2 + o(1)] Kandidaten auskommt, kann es keine signifikant bessere Alternative geben. Aus Satz 1.5 können wir auch ablesen, dass die Laufzeit dieses Verfahrens von der Größenordnung i h √ O Lx 1/2, 2 + o(1) (1.9) ist (denn unter Laufzeit verstehen wir immer Siebzeit, da diese alle anderen Berechnungen dominiert). Bemerkung 1.7 (Die Bedeutung des o(1)-Terms) Der o(1)-Term in der Laufzeitangabe (1.9) soll Änderungen, die sich asymptotisch nicht bemerkbar machen, abfangen. Genauer gesagt: Unter der Voraussetzung limx7→∞ fg(x) (x) = 1 gilt (v + o(1))f (x) = (v + o(1))g(x), denn: (v + o(1))g(x) = vg(x) + o(1)g(x) = vf (x) + o(1)g(x) + vg(x) − vf (x) g(x) g(x) +v −v = vf (x) + f (x) o(1) f (x) f (x) | {z } | {z } =o(1) = =o(1) (v + o(1))f (x) Wir dürfen jedoch nicht aus den Augen verlieren, dass sich die zitierten Sätze nur auf echte Zufallszahlen beziehen. Um sie zur Laufzeitanalyse konkreter Verfahren heranziehen zu können, müssen wir nachweisen, dass sich die Zahlen, welche über der Faktorbasis zerlegt werden sollen, wie Zufallszahlen verhalten (genauer gesagt: dass ihre Zerfallswahrscheinlichkeit identisch ist mit der Zerfallswahrscheinlichkeit von Zufallszahlen der gleichen Größenordnung). Wie bereits erwähnt, ist dieser Nachweis bisher nur für Dixon’s Random-Squares-Methode gelungen. Dies muss jedoch keinen Anlass zur Sorge geben; im Gegenteil: In Abschnitt 4.2 werden wir sehen, dass das General Number Field Sieve auf Polynome zurückgreift, deren Werte sich besser als Zufallszahlen verhalten. Dennoch hat die Praxis gezeigt, dass (1.9) eine realistische heuristische Laufzeitangabe auch für das Quadratische Sieb und das Number Field Sieve ist. Der für die Komplexität eines solchen Verfahrens entscheidende Faktor ist demnach die Größe der Zahlen, die über der Faktorbasis zerlegt werden sollen. 1 Im Fall des Quadratischen Siebes sind diese nach Definition von Q(X) von der Größenordnung N 2 . Wenn wir diese Größe in (1.9) für x substituieren, erhalten wir O (LN [1/2, 1 + o(1)]) als asymptotische Laufzeit für das Quadratische Sieb. Wir können mithilfe von (1.9) sogar allgemeiner die heuristische 1 asymptotische Laufzeit eines Verfahrens bestimmen, für das x von der Größenordnung N k für eine ganze positive Zahl k ist: 1. Durch Substitution erhalten wir h i h 1 i 1 1 1 1 1 L k1 1/2, 2 2 + o(1) = exp (2 2 + o(1))(log N k ) 2 (log log N k ) 2 . N 12 1.4 PARAMETERWAHL UND LAUFZEIT 1 1 2. Wir multiplizieren den Faktor (2 2 + o(1)) mit (1/k) 2 , der o(1)-Term bleibt hiervon natürlich 1 1 1 unberührt. Als Ausgleich multiplizieren wir den Faktor (log N k ) 2 mit k 2 , so dass sich h i h i 1 1 1 1 1 L k1 1/2, 2 2 + o(1) = exp ((2/k) 2 + o(1))(log N ) 2 (log log N k ) 2 N ergibt. 1 3. Weil N k für N 7→ ∞ auch gegen unendlich strebt, ist der o(1)-Term Stellvertreter für eine mit N 7→ ∞ gegen Null konvergierende Funktion. 1 Nach Bemerkung 1.7 folgt wegen log log N k = log lim N 7→∞ log 1 k 1 k + log log N und + log log N 1 (log log N ) 2 21 =1 schließlich L N h 1 k i 1 1/2, 2 2 + o(1) = exp h i 1 1 1 (2/k) 2 + o(1) (log N ) 2 (log log N ) 2 1 = LN [1/2, (2/k) 2 + o(1)]. Diese Berechnung zeigt, dass der für die asymptotische Laufzeit entscheidende Parameter u = 1/2 nicht verbessert (d. h. unterschritten) werden kann, wenn die Zahlen, die zerfallen sollen, exponentiell in der Länge von N sind. Eine ganze Zeit lang glaubte man daher, dass kein Faktorisierungsalgorithmus asymptotisch eine bessere Laufzeit als O (LN [1/2, v]) erreichen könne. Erst das Number Field Sieve hat diese Annahme eindrucksvoll widerlegt. Der Ansatz des Number Field Sieve ist es, die Kongruenzen so zu erzeugen, dass • einerseits Siebmethoden noch praktikabel sind (das ist z. B. im Continued-Fraction-Algorithmus nicht der Fall) • und andererseits die Zahlen, die mit der Faktorbasis faktorisiert werden sollen, subexponentiell sind in der Länge von N . 13 Kapitel 2 Die Idee des Number Field Sieve Um die Idee des Number Field Sieve auf der Grundlage der im letzten Kapitel entwickelten Prinzipien transparent zu machen, entwickeln wir im Folgenden ein sehr stark abstrahiertes Schema der Kombinieren von Kongruenzen-Verfahren. Zum besseren Verständnis des Schemas verdeutlichen wir die einzelnen Schritte am bereits bekannten Quadratischen Sieb. Daran anschließend skizzieren wir die für das Number Field Sieve unverzichtbaren Definitionen und Sätze über algebraische Zahlkörper. Das Number Field Sieve geht schließlich aus dem eingangs beschriebenen Schema als Spezialisierung hervor. 2.1 Ein abstraktes Faktorisierungsschema Seien R1 und R2 faktorielle Ringe mit endlich erzeugten Einheitengruppen. Mit φ1 und φ2 seien Homomorphismen von R1 bzw. R2 nach Z/N Z gegeben. Schritt 1: Wähle eine Auswahl kleiner“ Primelemente von R1 und R2 . Diese sei mit P1 bzw. P2 ” bezeichnet. Des Weiteren enthalte Ei Erzeuger der Einheitengruppe von Ri für i ∈ {1, 2}. Die Faktorbasis sei dann definiert durch F := {φ1 (i)|i ∈ E1 ∪ P1 } ∪ {φ2 (i)|i ∈ E2 ∪ P2 }. Schritt 2: Suche X̃ ∈ R1 und Ỹ ∈ R2 mit φ1 (X̃ 2 ) = φ2 (Ỹ 2 ). Gehe hierzu wie folgt vor: 2a) Finde eine Ausgangskongruenz φ1 (r1 ) = φ2 (r2 ) für r1 ∈ R1 und r2 ∈ R2 . Diese liefert ein Muster für einfache Kongruenzen, denn aufgrund der Homomorphieeigenschaften gilt φ1 (g(r1 )) = φ2 (g(r2 )) für jeden polynomialen Ausdruck g(X) ∈ Z[X]. Mithilfe geeigneter Siebmethoden finde etwas mehr als #F Paare der Form (g(r1 ), g(r2 )) mit φ1 (g(r1 )) = φ2 (g(r2 )), die sich über E1 ∪ P1 und E2 ∪ P2 zerlegen lassen: Y Y Y Y g(r1 ) = e1 () π f1 (π) und g(r2 ) = e2 () π f2 (π) ∈E1 ∈E2 π∈P1 π∈P2 liefern wegen φ1 (g(r1 )) = Y φ1 ()e1 () ∈E1 = φ2 (g(r2 )) = Y φ2 (π)f1 (π) π∈P1 e2 () φ2 () ∈E2 eine Relation zwischen den Faktorbasiselementen. 14 Y Y π∈P2 φ2 (π)f2 (π) 2.2 ALGEBRAISCHE ZAHLKÖRPER UND ALGEBRAISCHE ZAHLEN 2b) Forme pro Paar einen Exponentenvektor aus den modulo 2 reduzierten Exponenten, die in dieser Zerlegung erscheinen. 2c) Mithilfe linearer Algebra modulo 2 finde eine lineare Abhängigkeit unter diesen Vektoren, d. h. eine Teilmenge, die aufsummiert den Nullvektor ergibt. Die zu den Elementen dieser Teilmenge korrespondierenden Paare seien durch i ∈ S indiziert. Dann gilt: ! Y Y Y P P φ1 gi (r1 ) = φ1 () i∈S ei,1 () φ1 (π) i∈S fi,1 (π) i∈S ∈E1 π∈P1 ! = φ2 Y gi (r2 ) = i∈S Y P φ2 () i∈S ei,2 () ∈E2 Y P φ2 (π) i∈S fi,2 (π) π∈P2 mit X ei,1 () = 2n,1 und i∈S X fi,1 (π) = 2nπ,1 , sowie i∈S X ei,2 () = 2n,2 und i∈S X fi,2 (π) = 2nπ,2 i∈S für alle π, und geeignete natürliche Zahlen n,1 , nπ1 , n,2 und nπ,2 . Mit Y Y X̃ := n,1 π nπ,1 und ∈E1 Ỹ := Y ∈E2 2 π∈P1 n,2 Y π nπ,2 π∈P2 2 folgt schließlich φ1 (X̃ ) = φ2 (Ỹ ). Schritt 3: Teste, ob φ1 (X̃) 6= ±φ2 (Ỹ ) erfüllt ist. Falls nein, gehe zu Schritt 2. Falls ja, definiere X und Y durch X = φ1 (X̃) und Y = φ2 (Ỹ ). Dann liefert ggT(N, X − Y ) einen nichttrivialen Teiler von N . Im Quadratischen Sieb gilt R1 = R2 = Z und der Homomorphismus φ = φ1 = φ2 ist durch Reduktion modulo N gegeben. Die in Schritt 2a) geforderte Ausgangskongruenz ist φ(0) = φ(N ). Deshalb erhalten wir durch √ √ φ (a + [ N ])2 = φ (a + [ N ])2 − N √ 2 mit variablem a ein Muster für einfache Kongruenzen (es ist also g(X) = a + [ N ] −X nach obigem Schema). Dieses Muster liefert sogar einfach-quadratische Kongruenzen, so dass im Quadratischen Sieb nur die rechte Seite der Kongruenzen betrachtet werden muss. Im Schema wie auch im Number Field Sieve hingegen ist es notwendig, auf beiden Seiten gleichzeitig ein Quadrat zu konstruieren. Zu diesem Zweck werden jeweils der zu φ1 (g(r1 )) gehörige mit dem zu φ2 (g(r2 )) gehörigen Exponentenvektor zu einem großen Exponentenvektor zusammengefasst. Das Number Field Sieve arbeitet tatsächlich mit zwei verschiedenen Ringen R1 und R2 , genauer gesagt ist R1 wie zuvor der Ring Z der ganzen Zahlen und die Rolle von R2 übernimmt ein Unterring des Ganzheitsringes eines algebraischen Zahlkörpers. Wir sprechen daher auch von der rationalen und der algebraischen Seite des Algorithmus. Bevor wir näher ins Detail gehen, skizzieren wir kurz einige grundlegende Definitionen und Sätze algebraischer Zahlentheorie. Details und Beweise sind z. B. in [ST87], Kapitel 2 zu finden. 2.2 Algebraische Zahlkörper und algebraische Zahlen Um das Number Field Sieve zu verstehen, sind Grundkenntnisse in algebraischer Zahlentheorie unabdingbar. Einen sehr direkten Zugang hierzu, der kaum Vorkenntnisse voraussetzt, liefert [ST87]. Umfassender und auf etwas höherem Abstraktionsniveau angesiedelt ist [Mar77]. 15 KAPITEL 2 DIE IDEE DES NUMBER FIELD SIEVE In dieser Arbeit wird, der modernen Definition eines Ringes folgend, unter einem Ring immer ein kommutativer Ring mit Eins verstanden. Auch gehen wir – ohne jedesmal explizit darauf hinzuweisen – davon aus, dass Ideale, insbesondere Primideale, nicht gleich dem Nullideal sind. Ein Teilkörper K von C heißt algebraischer Zahlkörper, wenn K eine endliche (also insbesondere algebraische) Erweiterung von Q ist. Definitionsgemäß ist K damit von der Form Q(α1 , . . . , αn ) für über Q algebraische komplexe Zahlen α1 , . . . , αn . Da Q als Körper der Charakteristik 0 vollkommen ist, ist jede Erweiterung von Q separabel. Jede endliche separable Erweiterung ist einfach, daher gilt für algebraische Zahlkörper das Primitive-Element-Theorem: Ist K ein algebraischer Zahlkörper, dann gibt es ein α ∈ C mit K = Q(α). Der Grad von Q(α) ist definiert als [Q(α) : Q] und daher gleich dem Grad des Minimalpolynoms mα (X) von α bezüglich Q. Daher lässt sich jedes Element θ ∈ Q(α) eindeutig darstellen als θ = g(α), wobei g(X) ein rationales Polynom mit δ(g(X)) < δ(mα (X)) ist. Ist θ ∈ Q(α), dann ist θ algebraisch, weil die Erweiterung Q(α)|Q algebraisch ist. Als Grad von θ bezeichnen wir den Grad des Minimalpolynoms mθ (X) von θ bezüglich Q. Nach dem Gradsatz ist dieser ein Teiler des Grades von Q(α). Algebraische Zahlkörper kann man als Verallgemeinerung der rationalen Zahlen Q betrachten. So wie Q der Quotientenkörper von Z ist, gibt es in jedem algebraischen Zahlkörper Q(α) einen ausgezeichneten Unterring Oα mit Q(α) = Quot(Oα ). Dieser Ring Oα heißt Ganzheitsring von Q(α) und ist definiert als Gesamtheit aller ganzalgebraischen Zahlen in Q(α). Eine Zahl x ∈ C heißt ganzalgebraisch, wenn sie Nullstelle eines normierten Polynoms f (X) ∈ Z[X] ist. Um Verwechslungen zu vermeiden, werden im Folgenden Elemente aus Z als ganze rationale Zahlen, bzw. ganzrationale Zahlen bezeichnet. Ist d der Grad von Q(α), dann lässt sich zeigen, dass (Oα , +) als Z-Modul frei vom Rang d ist. Daher existiert eine aus ganzalgebraischen Zahlen bestehende Z-Basis {ω1 , . . . , ωd } von Oα , eine sogenannte Ganzheitsbasis von Oα , bzw. Q(α). Da Q(α) der Quotientenkörper von Oα ist, ist jede Ganzheitsbasis immer auch eine Q-Basis von Q(α). 2.3 Eine erste Beschreibung des Number Field Sieve Um dem in Abschnitt 2.1 angegebenen Schema zu folgen, müssen wir zunächst die Homomorphismen φ1 und φ2 definieren. Auf der rationalen Seite wählen wir wie zuvor den Reduktionshomomorphismus modulo N . Wenden wir uns nun der algebraischen Seite zu: Sei f (X) ∈ Z[X] ein irreduzibles, normiertes Polynom vom Grad d mit f (α) = 0 für ein α ∈ C. Dann sind α eine ganzalgebraische Zahl, Q(α)|Q eine algebraische Körpererweiterung vom Grad d und Z[α] ein Teilring des Ganzheitsringes Oα von Q(α). Dieser Ring Z[α] wird die Rolle von R2 übernehmen. Im Folgenden repräsentieren wir die Elemente aus Z[α] als ganzrationale Polynome vom Grade höchstens d − 1, wobei d der Grad von Q(α) ist. Dies ist möglich, da die Potenzen {1, α, . . . , αd−1 } eine Z-Basis von Z[α] bilden, wenn α eine ganzrationale Zahl vom Grad d ist (siehe hierzu [ST87], Lemma 2.7). Finden wir ein m ∈ Z mit f (m) ≡ 0 (N ), so liefert die durch α 7→ m mod N induzierte Abbildung φ einen Homomorphismus von Z[α] nach Z/N Z, denn es gilt: Satz 2.1 (Ringhomomorphismen von Z[α]) Sei f (X) ∈ Z[X] ein irreduzibles Polynom mit komplexer Nullstelle α. Weiterhin Sei R ein kommutativer Ring mit Eins. In R gelte f (r) = 0 für ein r ∈ R. Dann ist die durch α 7→ r induzierte Abbildung φ : Z[α] → R ein Ringhomomorphismus. Umgekehrt wird jeder Ringhomomorphismus φ : Z[α] → R durch eine Nullstelle r von f (X) in R induziert vermöge α 7→ r. Beweis: Man rechnet die Homomorphieeigenschaften leicht nach, da in Z/N Z wegen f (m) ≡ 0 (N ) eine zu f (α) = 0 analoge Reduktionsformel gilt (dies braucht man für den Nachweis der multiplikativen 16 2.3 EINE ERSTE BESCHREIBUNG DES NUMBER FIELD SIEVE Verträglichkeit von φ). Ist andererseits φ : Z[α] → R ein Homomorphismus von Z[α] in einen beliebigen Ring R, dann gilt für das Element φ(α) von R die Relation f (φ(α)) = φ(f (α))) = φ(0) = 0. Da ein Homomorphismus von Z[α] durch das Bild von α bereits eindeutig beschrieben ist, haben wir gezeigt, dass einen Homomorphismus von Z[α] in einen Ring R anzugeben nichts weiter bedeutet, als in R ein Element r zu finden, welches die Relation f (r) = 0 in R erfüllt. Die durch α 7→ m mod N induzierte Abbildung kann also die Rolle des Homomorphismus φ2 übernehmen. Da Z[α] eine Ringerweiterung von Z ist und die Reduktion modulo N aus der Einschränkung von φ2 auf Z hervorgeht, ist es unnötig, im Folgenden zwischen φ1 und φ2 zu unterscheiden; wir sprechen daher nur noch von φ. Ist g(α) ∈ Z[α] für ein g(X) ∈ Z[X], gilt offensichtlich φ(g(α)) = φ(g(m)). Deshalb können wir das in Schritt 2 des Schemas formulierte Ziel, X̃ ∈ R1 und Ỹ ∈ R2 mit φ1 (X̃ 2 ) = φ2 (Ỹ 2 ) zu finden, folgendermaßen konkretisieren: Konstruiere ein β = g1 (α) ∈ Z[α] mit β 2 =: g(α), so dass g(m) ein Quadrat in Z ist. Definiere X̃ als Quadratwurzel von g(m) und Ỹ := β. Schritt 3 schließlich realisieren wir, indem wir X als Reduktion von X̃ modulo N und Y als Reduktion von g1 (m) modulo N definieren. Ein konkretes Beispiel soll diese Vorgehensweise verdeutlichen: Beispiel 2.2 Seien N := 341 und f (X) := X 3 − 2. √ Dann ist α := 3 2 eine komplexe Wurzel von f (X) und m := 7 wegen f (7) = 341 ≡ 0 (N ) eine Nullstelle von f (X) in Z/N Z. Daher ist die Abbildung φ: Z[α] −→ 2 aα + bα + c 7→ Z/N Z 49a + 7b + c ein Homomorphismus. Sei weiter β := α2 − 4α − 11, also g1 (X) = X 2 − 4X − 11 und g1 (m) = g1 (7) = 10. Wegen g12 (X) = X 4 − 8X 3 − 6X 2 + 88X + 121 = f (X)(X − 8) − 6X 2 + 90X + 105 gilt β 2 = −6α2 + 90α + 105 , d. h. g(X) = −6X 2 + 90X + 105. Wie gefordert, ist g(7) = 441 = 212 ein Quadrat in Z. Mit den Definitionen √ X̃ := 441 = 21 ⇒ X := 21 und Ỹ := β = g1 (α) ⇒ Y := 10 erhalten wir die quadratische Kongruenz X 2 ≡ 212 ≡ g(7) ≡ φ(β 2 ) ≡ (φ(β))2 ≡ (g1 (7))2 ≡ 102 ≡ Y 2 (341). Wegen 21 ≡ 6 10 (341) liefern ggT(341, 21 − 10) = 11 und ggT(341, 21 + 10) = 31 zwei nichttriviale Teiler von 341. In diesem Fall ist also bereits die vollständige Faktorisierung 341 = 11 · 31 gefunden. Zur Vereinfachung der Schreibweise werden wir von nun an nicht mehr zwischen X̃ und X unterscheiden. Es sollte klar sein, dass bei der Bestimmung der rationalen Wurzel immer modulo N gerechnet wird, um unnötig große Zahlen zu vermeiden. Jetzt müssen wir nur noch darlegen, auf welche Art und Weise sich β 2 und X 2 konstruieren lassen. Wir betrachten wieder das Schema: Die benötigte 17 KAPITEL 2 DIE IDEE DES NUMBER FIELD SIEVE Ausgangskongruenz ist offensichtlich durch φ(α) = φ(m) gegeben. Jeder polynomiale Ausdruck g(X) liefert dann eine einfache Kongruenz: φ(g(α)) = φ(g(m)). Wegen der Reduktionsformel f (α) = 0 beschränken wir uns auf Polynome vom Grade höchstens d − 1. Unser Ziel ist es, viele einfache Kongruenzen durch Produktbildung zu einer quadratischen Kongruenz zu kombinieren: Finde eine Menge S von Polynomen g(X) über Z vom Grad höchstens d − 1 mit Q 1. g(X)∈S g(α) = β 2 für ein β ∈ Z[α] und Q 2. g(X)∈S g(m) = X 2 für ein X ∈ Z. Definiere Y ∈ Z durch φ(β) = Y . Nun gilt X2 ≡ Y g(X)∈S g(m) ≡ φ Y g(α) ≡ φ(β 2 ) ≡ Y 2 (N ) (2.1) g(X)∈S In der Praxis wählen wir Polynome der Form g(X) := a − bX für teilerfremde ganze Zahlen a und b. Das Schema sieht vor, die Menge S mittels Siebmethoden und linearer Algebra modulo 2 zu finden. Auf der rationalen Seite ist die Vorgehensweise offensichtlich, denn da es sich bei den g(m) um ganzzahlige Polynome (in den Variablen“ a und b) handelt, funktionieren Siebmethoden ähnlich wie im letzten ” Kapitel besprochen. Als rationale Faktorbasis wählen wir alle Primzahlen p ∈ Z, die eine gewisse Schranke B1 nicht überschreiten, und sieben mit diesen Primzahlen. Zwar sind sowohl a als auch b variabel, dies wirft jedoch keine Probleme auf, da man die Menge der Ausdrücke a − bm als eine durch b parametrisierte Familie von linearen Polynomen in a auffassen kann. Der Siebprozess gestaltet sich dann wie folgt: Wir wählen je ein Intervall für a und b, halten einen b-Wert fest und sieben über alle Ausdrücke der Form a − bm für a aus dem a-Intervall. Dann fixieren wir den nächsten Wert des b-Intervalls und sieben erneut über alle a-Werte und so fort. Als etwas komplizierter entpuppt sich der Umgang mit der algebraischen Seite. Auch hier möchten wir dem Schema folgen, eine algebraische Faktorbasis“ definieren und mittels ” Siebmethoden all diejenigen a − bα herausfiltern, die über dieser zerfallen. Siebverfahren kennen wir jedoch nur für den Ring Z der ganzrationalen Zahlen. Das wichtigste Hilfsmittel, glatte“ Zahlen der ” Form a − bα zu gewinnen, ist daher die Normabbildung: Ist Q(α) ein algebraischer Zahlkörper d-ten Grades, dann existieren genau d paarweise verschiedene Monomorphismen σ1 , . . . , σd von Q(α) in C. Ist θ ∈ Q(α), dann heißen die Ausdrücke σ1 (θ), . . . , σd (θ) die Konjugierten von θ. Die Norm von θ (geschrieben N (θ)) berechnet sich dann als Produkt aller Konjugierten von θ. Die Normabbildung erlaubt es uns, Probleme aus dem Bereich der algebraischen in den Bereich der rationalen Zahlen zu transportieren, denn die Norm einer algebraischen Zahl ist rational, die einer ganzalgebraischen Zahl sogar ganzrational. Desweitern können wir auf die uns schon bekannten ganzrationalen“ Siebmethoden zurückgreifen, denn die Norm von a − bα lässt sich darstellen als ein ” Polynom in a und b. In diesem Sinn nennen wir eine ganzalgebraische Zahl γ glatt bezüglich einer Schranke B, wenn ihre Norm B-glatt ist im üblichen Sinn. Da die σi Homomorphismen sind, erhält die Normabbildung die multiplikative Struktur, d. h. es gelten |N ()| = 1 für eine Einheit von Oα und N (θ1 θ2 ) = N (θ1 )N (θ2 ) für θ1 , θ2 ∈ Q(α). Mithilfe der üblichen Siebmethoden und linearer Algebra modulo 2 können wir daher eine Menge S von Q Paaren (a, b) teilerfremder ganzrationaler Zahlen konstruieren, so dass die Norm des Produktes (a,b)∈S (a − bα) das Quadrat einer ganzrationalen Zahl ist. Unglücklicherweise Q ist dies nur eine notwendige, keine hinreichende Bedingung dafür, dass die ganzalgebraische Zahl (a,b)∈S (a − bα) selbst ein Quadrat in Z[α] ist. Intuitiv betrachtet, liegt der Grund hierfür darin, dass die Normabbildung nicht injektiv ist, d. h. verschiedene algebraische Zahlen können dieselbe Norm besitzen. Daher ist es möglich, ein Produkt mit quadratischer Norm zu konstruieren, ohne dass dieses Produkt selbst ein Quadrat in Q(α) ist. Dem Schema folgend ist aber unser Ziel gerade die Konstruktion eines Z[α]-Quadrates. An dieser Stelle trennen sich das Special und das General Number Field Sieve. Ersteres löst das Problem, wie es das Schema vorschreibt: Es wird eine Faktorbasis aus ganzalgebraischen Primelementen 18 2.3 EINE ERSTE BESCHREIBUNG DES NUMBER FIELD SIEVE und Einheiten definiert und die Größen a − bα werden über dieser Faktorbasis zerlegt. Die Zerlegung ganzalgebraischer Zahlen wird jedoch durch den Umstand erschwert, dass Ganzheitsringe algebraischer Zahlkörper im Allgemeinen nicht faktoriell sind. Es existiert zwar eine Zerlegung in irreduzible Faktoren, da diese jedoch nicht notwendig Primelemente sind, ist die Zerlegung nicht immer eindeutig. Der historische Ausweg (zurückgehend auf E. Kummer und R. Dedekind) ist der Übergang zu Idealen, denn in Oα existiert eine eindeutige Zerlegung in Primideale (siehe [ST87], Thm. 5.5). Auch hier leistet uns die Normabbildung gute Dienste, denn man kann den Begriff Norm auch für Ideale definieren: Ist a ein Ideal von Oα , dann wird mit N (a) die Mächtigkeit der Restklassengruppe Oα /a bezeichnet. Diese ist endlich, da jedes Ideal a von Oα als Z-Modul von d Elementen frei erzeugt wird ([ST87], Thm 5.8), d. h. a ist ein gleichrangiges Z-Untermodul von Oα . Die Multiplikativitätseigenschaft gilt auch für die Idealnorm und des Weiteren stimmen die Norm eines Elementes θ ∈ Oα und des von θ erzeugten Hauptideals θOα den Betrag betreffend überein (siehe [ST87], Thm. 5.10 und Cor. 5.9). Aufgrund dieser Eigenschaften der Normabbildung erlaubt die Norm einer jeden algebraischen Zahl γ daher Rückschlüsse auf die multiplikative Struktur von γ bzw. γOα : Der Betrag der Norm von γ stimmt mit dem Produkt der Normen der Primidealteiler von γOα überein, wenn Vielfachheiten berücksichtigt werden. Nach [ST87], Thm. 5.11 wissen wir, dass die Norm eines Primideals eine pPotenz für eine ganzrationale Primzahl p ist. Man sagt dann, dieses Primideal liege über der Primzahl p. Sind also die ganzrationalen Primteiler der Norm von γ bekannt, so können wir die möglichen Primidealteiler von γOα eingrenzen, denn es kommen nur Primideale über jenen ganzrationalen Primzahlen infrage. Bei der genauen Identifikation der Primidealteiler von γOα ausgehend von N (γ) ergeben sich dennoch folgende Probleme: • Ist pe(p) für eine Primzahl p ∈ Z ein exakter Teiler von N (γ), dann kann es in Oα verschiedene Primideale geben, deren Norm eine p-Potenz ist. Welche von diesen teilen nun wie oft das Ideal γOα ? • Selbst wenn wir wissen, dass genau ein Primideal zu dem Faktor pe(p) beiträgt, ist das Primideal hierdurch noch nicht eindeutig bestimmt, denn verschiedene Primideale können dieselbe Norm besitzen. Für beliebige ganzalgebraische Zahlen lassen sich diese Probleme nicht ohne weitere Informationen lösen, wohl aber für die speziellen ganzalgebraischen Zahlen, wie sie im Special Number Field Sieve verwendet werden: Betrachten wir Zahlen der Form γ = a − bα für teilerfremde ganzrationale Zahlen a und b, dann werden wir sehen, dass sich ausschließlich aus der Norm von γ bereits die vollständige Primidealzerlegung von γOα gewinnen lässt. Dies ist der Grund, warum wir uns auf algebraische Zahlen jener besonderen Form beschränken. Ist Oα ein Hauptidealring, wie es für das Special Number Field Sieve vorausgesetzt wird, so wird jedes Primideal von Oα von einem Oα -Primelement erzeugt, eindeutig bis auf den Übergang zu Assoziierten. An dieser Stelle kommen die Einheiten von Oα ins Spiel. Nach dem Dirichletschen Einheitensatz ([ST87], Thm. 12.6) ist die Einheitengruppe von Oα das Produkt der endlichen zyklischen Gruppe der Einheitswurzeln von Oα und einer von endlich vielen Elementen (den sogenannten Fundamentaleinheiten) frei erzeugten Gruppe. Konstruieren wir eine algebraische Faktorbasis aus den Primelementen kleiner Norm und den Erzeugern der Einheitengruppe von Oα , so können wir analog zum rationalen Fall jedem Element einen eindeutigen Exponentenvektor zuordnen und die Faktorisierung von N nach dem allgemeinen Schema herleiten. Im General Number Field Sieve können wir keine speziellen Eigenschaften von Oα voraussetzen, ein analoges Vorgehen ist daher nicht möglich. Ist im Special Number Field Sieve die Norm von a − bα lediglich ein Hilfsmittel, um die Zerlegung von a − bα in algebraische Einheiten und Primelemente zu gewinnen, kommt ihr im General Number Field Sieve eine noch bedeutendere Rolle zu: Wie angesprochen wird mit Siebmethoden und linearer Algebra modulo 2 eine ganzalgebraische Zahl konstruiert, deren Norm ein Quadrat in Z ist. In Kapitel 4 werden wir sehen, wie auf dieser Grundlage ein algebraisches Quadrat konstruiert wird, ohne dessen einzelnen Faktoren a − bα in Einheiten und Primelemente zu zerlegen. Die Konstruktion des algebraischen Quadrates im General Number Field Sieve weicht insofern vom eingangs beschriebenen Schema ab, denn es wird fast ausschließlich mit ganzrationalen Zahlen gerechnet, nicht im Ring Z[α], bzw. Oα . 19 KAPITEL 2 DIE IDEE DES NUMBER FIELD SIEVE In der Literatur tauchen auch Beschreibungen des Number Field Sieve auf, die zwei verschiedene algebraische Zahlkörper verwenden: Ausgehend von irreduziblen, normierten Polynomen f1 (X), f2 (X) ∈ Z[X], die eine gemeinsame Nullstelle m modulo N besitzen, definiert man die algebraischen Zahlkörper Q(α1 ) und Q(α2 ), wobei αi eine komplexe Wurzel von fi (X), i ∈ {1, 2}, bezeichne. Analog zum obigen Schema sei φi : Z[αi ] −→ Z/N Z der durch αi 7→ m induzierte Homomorphismus für i ∈ {1, Q 2}. Schließlich konstruiert man Q eine Menge S von Polynomen g(X) ∈ Z[X] derart, dass sowohl g(X)∈S g(α1 ) in Z[α1 ] als auch g(X)∈S g(α2 ) in Z[α2 ] ein Quadrat bilden. Diese Quadrate seien β12 und β22 . Wählt man nun X, Y ∈ Z so, dass φ1 (β1 ) = X und φ2 (β2 ) = Y gelten, dann erhält man die quadratische Kongruenz X2 ≡ (φ1 (β1 ))2 ≡ φ1 (β12 ) ≡ φ1 Y g(α1 ) ≡ g(X)∈S Y g(m) g(X)∈S Y ≡ φ2 g(α2 ) ≡ φ2 (β22 ) ≡ (φ2 (β2 ))2 g(X)∈S ≡ Y 2 (N ) Das Number Field Sieve mit nur einem algebraischen Zahlkörper geht aus dieser Variante als Spezialfall hervor vermöge f1 (X) = X − m, α1 = m, Q(α1 ) = Q sowie φ1 = idQ . Es existiert jedoch folgendes Problem: Wie wir noch sehen werden, ist die Aufgabe, auch nur ein geeignetes Polynom zu finden, für große allgemeine Zahlen alles andere als trivial. Erst recht ist bis heute kein zufriedenstellender Ansatz bekannt, zwei Polynome mit gemeinsamer Nullstelle modulo N zu konstruieren. Zwar wurde die Zwei-Zahlkörper-Variante mit Wahl zweier quadratischer Polynome f1 (X) und f2 (X) in einer frühen Implementation des Number Field Sieve am CWI in Amsterdam (einer Idee von Peter L. Montgomery folgend) erfolgreich implementiert [EH96]. Dieses Verfahren scheint jedoch nicht geeignet zu sein, allgemeine Zahlen mit deutlich mehr als 100 Stellen zu faktorisieren. Anschaulich formuliert ist der Grund hierfür darin zu sehen, dass zwei quadratische Polynome nicht groß“ genug sind, um genügend Relationen zur Verfügung zu stellen. Erfolgversprechender wäre die ” Kombination zweier Polynome dritten Grades, leider ist es jedoch nicht gelungen, Montgomery’s Polynomwahlverfahren so zu verallgemeinern, dass es Polynome größeren Grades als 2 mit gemeinsamer Nullstelle modulo N generiert. Sowohl die ersten [LLMP93a], [CDEH+ 96], als auch die zur Zeit aktuellsten Rekorde [CDF+ 00],[Fra02] sind mit nur einem nichttrivialen algebraischen Zahlkörper erzielt worden. Aus diesen Gründen konzentriert sich die vorliegende Arbeit auf diese Variante. Aber was ist es denn nun, das das Number Field Sieve so schnell macht? Da das Bild eines Quadrates unter einem Ringhomomorphismus wegen der multiplikativen Homomorphieeigenschaft seinerseits wieder ein Quadrat ist, ist es im Number Field Sieve möglich, eines der zwei benötigten Quadrate in Z[α] statt in Z zu suchen und dieses dann homomorph nach Z/N Z abzubilden. Auf den ersten Blick jedoch scheint dies gar kein Vorteil zu sein, schließlich lässt sich Z[α] wesentlich schwerer algorithmisch beherrschen als Z. Doch erinnern wir uns, was wir am Ende von Kapitel 1 hergeleitet haben: Um eine signifikant bessere Laufzeit als bereits bestehende Algorithmen zu erreichen, darf die Größe der Zahlen, die auf Glattheit getestet und im Erfolgsfall zerlegt werden, nicht exponentiell in der Länge von N sein. Genau dies leistet das Number Field Sieve. Werden alle Parameter (Größe der Faktorbasen, Intervallgrenzen für a und b, . . .) geeignet gewählt und ist m ausreichend klein“ im Vergleich zu N , dann sind diese Zahlen ” von der Größenordnung LN [2/3, v] (siehe [LLMP93b] und [BLP93]), also subexponentiell in der Länge von N . Indem wir diese Größe in die Laufzeitangabe (1.9) einsetzen, erhalten wir (mit x = LN [2/3, v]): i h 1 Lx 1/2, 2 2 + o(1) 20 = exp h i 1 1 1 2 2 + o(1) (log LN [2/3, v]) 2 (log log LN [2/3, v]) 2 2.3 EINE ERSTE BESCHREIBUNG DES NUMBER FIELD SIEVE = = = = = 12 12 2 2 1 1 3 3 3 3 exp 2 + o(1) v(log N ) (log log N ) log v(log N ) (log log N ) 1 1 1 3 log N exp 2 2 · v 2 + o(1) 21 1 3 (log log N ) (log v + (2/3) log log N + (1/3) log log log N ) 13 1 1 log N exp (2v) 2 · (2/3) 2 + o(1) 12 1 4 1 (3/2)(log log N ) 3 log v + (log log N ) 3 + (1/2) log log log N (log log N ) 3 13 23 1 exp (4v/3) 2 + o(1) log N log log N h i 1 LN (1/3), (4v/3) 2 1 2 Bei obigen Umformungen ist Folgendes zu beachten: 1 Der o(1)−Term aus Lx [1/2, 2 2 +o(1)] ist Stellvertreter für eine Funktion, die mit x = LN [2/3, v] 7→ ∞ gegen Null konvergiert. Da mit N 7→ ∞ auch x gegen unendlich strebt, können wir den o(1)-Term auch auf N beziehen. Um im fünften Schritt den Exponenten zu vereinfachen, verwenden wir die Bemerkung 1.7. Die Konstante v hängt davon ab, ob wir das Special oder das General Number Field Sieve betrachten: 1 Im General Number Field Sieve gilt v = (64/3) 3 , was zu einer asymptotischen Laufzeit von " 1 # 1 64 3 LN , 3 9 1 führt. Durch die geringere Größe v = (16/3) 3 bedingt erreicht das Special Number Field Sieve die noch bessere asymptotische Laufzeit von " 1 # 1 32 3 LN , . 3 9 1 1 Zum Vergleich: Es gilt (64/9) 3 ≈ 1, 9 und (32/9) 3 ≈ 1, 6. Intuitiv betrachtet liegt der Vorteil des Number Field Sieve verglichen mit Algorithmen wie dem Quadratischen Sieb in der Zweidimensionalität: Weil in den zu zerlegenden Ausdrücken sowohl a als auch b variabel sind, können wir aus einem größeren Vorrat schöpfen, wodurch die durchschnittliche Größe der Zahlen, die über der Faktorbasis zerfallen sollen, verringert wird. 21 Kapitel 3 Das Special Number Field Sieve Dieses Kapitel beschreibt das Anfang der neunziger Jahre entwickelte Special Number Field Sieve. Es kann nur dann angewendet werden, wenn der zugrunde liegende algebraische Zahlkörper nicht zu komplex ist. Wie im letzten Kapitel beschrieben, entsteht dieser Zahlkörper durch Adjunktion einer Nullstelle α eines irreduziblen Polynoms f (X) zu Q. Ist die zu faktorisierende Zahl N von spezieller Form, dann werden wir in Abschnitt 3.1 sehen, wie man ein Polynom f (X) konstruieren kann, welches zu einem einfachen“ Zahlkörper Q(α) führt. ” Klassische Kandidaten für das Special Number Field Sieve (ab jetzt abgekürzt durch SNFS ) sind k Fermatzahlen (also Zahlen der Form Fk = 22 + 1) oder allgemeiner Cunninghamsche Zahlen der Form N = rt ± 1 für ein kleines r und ein großes t. Der erste spektakuläre Erfolg des SNFS war daher auch die Faktorisierung der neunten Fermatzahl F9 [LLMP93a]. Was verstehen wir unter einem einfachen“ algebraischen Zahlkörper Q(α)? ” Die wichtigste Forderung besagt, dass der Ganzheitsring Oα von Q(α) ein Hauptidealring und damit faktoriell sein soll. Idealerweise ist auch Z[α] ein Hauptidealring. Unter der Voraussetzung, dass Oα ein Hauptidealring ist, ist dies äquivalent zu der Aussage Oα =Z[α] (siehe Satz 3.10). In den dokumentierten Anwendungen des SNFS [LLMP93b] ist diese Konstellation zwar selten gegeben, wohl aber bei der bekannten Faktorisierung der neunten Fermatzahl [LLMP93a]. Der Einfachheit halber gehen wir ab Abschnitt 3.3 zunächst davon aus, dass Z[α] ein Hauptidealring ist und erläutern im letzten Abschnitt dieses Kapitels, welche Modifikationen für den allgemeineren Fall notwendig sind. Welche Forderungen stellen wir darüber hinaus an Q(α)? Angenommen, wir haben bereits mittels Siebmethoden genügend viele teilerfremde ganzrationale Zahlen a und b gefunden, für die a − bm und a − bα glatt sind bezüglich der Schranken B1 (rational) und B2 (algebraisch). Ein solches Paar (a, b) nennen wir ein gutes Paar. Ist also a − bα glatt in Oα , dann lässt sich das von a − bα erzeugte Hauptideal bis auf die Reihenfolge der Faktoren eindeutig in Primideale, deren Normen glatt sind bezüglich B2 , zerlegen: (a − bα)Oα = pf11 · · · pfl l , (3.1) Da Oα ein Hauptidealring ist, wird jedes dieser Primideale von einem Primelement in Oα erzeugt. Wählen wir für jedes Primideal pi einen Erzeuger πi ∈ Oα , dann gilt somit a − bα = επ1f1 · · · πlfl (3.2) für eine Einheit ε von Oα . Nach dem Dirichletschen Einheitensatz gibt es endlich viele sogenannte Fundamentaleinheiten η1 , . . . , ηk , so dass sich jede Einheit von Oα eindeutig darstellen lässt als ein Produkt dieser Fundamentaleinheiten und einer Einheitswurzel. Weiterhin ist bekannt, dass die Einheitswurzeln von Oα eine endliche zyklische Gruppe bilden (siehe [ST87], Lemma 12.1). Bezeichnet also ζ einen Erzeuger dieser Gruppe, dann lässt sich (3.2) wie folgt umschreiben: a − bα = ζ n η1e1 · · · ηkek π1f1 · · · πlfl . 22 (3.3) 3.1 DIE WAHL DES POLYNOMS Diese Darstellung ist – wie immer bis auf die Reihenfolge der Faktoren – eindeutig, wenn die ei und fi aus Z gewählt werden und n eine natürliche Zahl zwischen 1 und der Mächtigkeit der Gruppe der Einheitswurzeln ist. Ist φ der durch α 7→ m mod N induzierte Homomorphismus, dann liefert jedes gute Paar (a, b) schließlich folgende Gleichung: Y Y Y φ(a − bα) = φ(ζ)n φ(ηi )ei φ(πi )fi = φ(a − bm) = φ(pi )gi (3.4) i=1,...,k i=1,...,l i=1,...,m In Abschnitt 3.10 werden wir zeigen, wie sich φ auf Oα fortsetzen lässt, so dass die Ausdrücke φ(ηi ) und φ(πi ) auch im Fall Z[α] 6= Oα definiert sind. Jetzt ist klar, wie die Faktorbasis gewählt werden muss, um die Ideen von Kapitel 2 zu realisieren. Zunächst definieren wir P , P und E wie folgt: • P enthalte alle ganzrationalen Primzahlen bis zur Schranke B1 . • P beinhalte für jedes Primideal p ersten Grades, dessen Norm B2 nicht überschreitet, genau einen Erzeuger πp . • E enthalte einen Erzeuger der Gruppe der Einheitswurzeln und ein System von Fundamentaleinheiten. In Abschnitt 3.3 werden wir sehen, warum es ausreicht, auf der algebraischen Seite lediglich die Erzeuger der Primideale ersten Grades zu berücksichtigen (p heisst Primideal ersten Grades, wenn die Norm von p eine rationale Primzahl ist). Des Weiteren werden wir ausschließlich negative b wählen, so dass die Größen a − bm immer positiv sind. Dies erspart uns die Aufnahme der Einheit −1 in die rationale Faktorbasis. In den ersten Arbeiten über das SNFS wurde mit Ausdrücken der Form a + bm statt a − bm und entsprechend positiven b-Werten gearbeitet. Ein möglicher Grund, warum sich letztendlich die Schreibweisen a − bm und a − bα durchgesetzt haben, ist die Tatsache, dass sich die Norm von a − bα griffiger beschreiben lässt, wie wir in Abschnitt 3.3 sehen werden. Als Faktorbasis definieren wir schließlich F := {φ(i) | i ∈ P ∪ E ∪ P}. Dann können wir zu jedem guten Paar einen Exponentenvektor erstellen und mittels linearer Algebra zwei modulo N kongruente Quadrate konstruieren. Um diesen Ansatz erfolgreich anzuwenden, muss der Ganzheitsring Oα von Q(α) einfach genug strukturiert sein, um folgende Probleme algorithmisch in akzeptabler Zeit lösen zu können: • Berechnung der Erzeuger der Primideale kleiner“ Norm ” • Konstruktion eines Systems von Fundamentaleinheiten • Zerlegung eines glatten γ ∈ Z[α] in ein Produkt wie in (3.3) Ist dies möglich, dann kann das SNFS zur Faktorisierung von N herangezogen werden, sonst muss man auf das kompliziertere General Number Field Sieve ausweichen. Es ist jedoch wichtig zu wissen, dass bei den aktuellsten mit dem SNFS erzielten Rekorde nicht der in diesem Kapitel hergeleitete Algorithmus zum Einsatz kam. Vielmehr wurden Implementierungen des im folgenden Kapitel beschriebenen General Number Field Sieve verwendet, wobei jedoch das Polynom von Hand“ bestimmt wurde. ” 3.1 Die Wahl des Polynoms Sei kN = rt − s für kleine natürliche Zahlen r und k, eine (den Betrag betreffend) kleine ganze Zahl s und eine natürliche Zahl t. 23 KAPITEL 3 DAS SPECIAL NUMBER FIELD SIEVE Wir konstruieren ein Polynom f (X) ∈ Z[X] und eine Zahl m, die klein ist im Vergleich zu N , so dass f (m) ≡ 0 (N ) gilt. Eine komplexe Wurzel α von f (X) definiert dann den algebraischen Zahlkörper Q(α), der mit großer Wahrscheinlichkeit dazu geeignet ist, N mithilfe des SNFS zu faktorisieren. Zunächst wählen wir in Abhängigkeit von N den Grad d der Körpererweiterung (zur optimalen Größe dieses Parameters vergleiche den Abschnitt Polynomwahl 4.2 im Kapitel über das General number field sieve). Hat N zwischen 120 und 220 Dezimalen, scheint d = 5 die beste Wahl zu sein. Nach Voraussetzung gilt rt ≡ s (N ). Nun wählen wir ein minimales l ∈ N, so dass ld ≥ t erfüllt ist. Es folgt rld ≡ srld−t (N ). Schließlich definieren wir a0 := srld−t , f (X) := X d − a0 und m := rl . Dann ist offensichtlich m eine Nullstelle von f (X) modulo N . 1/d Damit die komplexe Nullstelle α := a0 eine Körpererweiterung Q(α)|Q vom Grad d definiert, muss f (X) irreduzibel sein. Aus dem bekannten Eisensteinschen Irreduzibilitätskriterium ([Bos99], S.64) folgt, dass f (X) irreduzibel in Q[X] ist, falls a0 > 1 wenigstens einen einfachen Primfaktor p besitzt (d. h. p2 - a0 ). Es steht uns auch ein stärkeres Kriterium zur Verfügung (Beweis siehe [Lan94],Theorem 9.1 in Chapter VI): Satz 3.1 Sei f (X) = X d − a0 ∈ Q[X], a0 6= 0, d > 2. Dann ist f (X) irreduzibel, wenn keine der beiden folgenden Bedingungen erfüllt ist: 1. Es existiert ein Primteiler p von d, so dass a0 eine p−te Potenz in Q ist. 2. Es gilt 4|d und die Zahl −a0 4 ist eine vierte Potenz in Q. Wir sehen, dass f (X) in den allermeisten Fällen irreduzibel sein wird. Andernfalls können wir immer noch hoffen, dass die Zerlegung f (X) = g(X)h(X) nichttriviale Faktoren von N in der Gestalt ggT(N, g(m)) bzw. ggT(N, h(m)) liefert. Führt auch dies nicht zum gewünschten Erfolg, so ersetzen wir f (X) durch einen geeigneten irreduziblen Faktor (der m als Nullstelle modulo N besitzt). 3.2 Primideale in Oα Da unser erstes Ziel die Zerlegung ganzalgebraischer Zahlen der Form a − bα in Primideale ist, werden in diesem Abschnitt zunächst einmal einige Eigenschaften von Oα -Primidealen hergeleitet. Definitionsgemäß ist ein Ideal p eines Ringes R ein Primideal, wenn R/p ein Integritätsbereich ist. Da endliche Integritätsbereiche Körper sind, ist jedes Primideal von Oα sogar ein maximales Ideal. An dieser Stelle sei nochmals daran erinnert, dass wir unter Primideal immer ein Nichtnull-Ideal verstehen. Um den Notationsaufwand zu verringern, identifizieren wir im Folgenden oft eine algebraische Zahl θ mit dem durch θ erzeugten Hauptideal θOα . So schreiben wir z. B. p | θ anstelle von p | θOα , wenn p ein Primidealteiler von θOα ist. Eine Besonderheit von Ganzheitsringen algebraischer Zahlkörper, die wir oft anwenden, ist die Äquivalenz von Ideal-Inklusion und -Teilbarkeit, d. h. es gilt a|b für Ideale a und b genau dann, wenn b ⊆ a erfüllt ist (zum Beweis siehe [ST87], Prop. 5.6). Eine weitere wichtige Eigenschaft von Primidealen in Oα beschreibt der folgende Satz (zum Beweis siehe [ST87], Thm. 5.11): 24 3.2 PRIMIDEALE IN Oα Definition und Satz 3.2 (Grad eines Primideals) Sei p ein Primideal von Oα . Dann gibt es genau eine Primzahl p ∈ Z mit p | pOα und es gilt N (p) = pn , wobei n höchstens so groß ist wie der Grad von Q(α). Die Zahl n wird Grad des Primideals p genannt. Man sagt, das Primideal p liegt über p, bzw. p ist die Primzahl unter p. Sei also p ein Primideal. Nach dem letzten Satz gibt es eine Primzahlpotenz q = pn , so dass gilt Oα /p ∼ = Fq . p ist Kern des natürlichen Homomorphismus ϕ : Oα −→ Oα /p, der γ auf γ + p abbildet. Also ist p der Kern eines Homomorphismus von Oα in einen endlichen Körper Fq , wobei der Grad von p gleich dem Grad der Körpererweiterung von Fq über dessen Primkörper Fp ist. Ist andererseits ϕ ein Homomorphismus von Oα in einen endlichen Körper Fq , dann ist der Kern von ϕ definitionsgemäß ein maximales Ideal von Oα , also insbesondere ein Primideal. Wir fassen zusammen, dass eine 1:1-Beziehung existiert zwischen den Primidealen von Oα und den Kernen von Homomorphismen, die Oα auf endliche Körper abbilden. Als nächstes beschäftigen wir uns mit dem Aussehen dieser Primideale. Sei ϕ ein Homomorphismus von Z[α] in Fq , q = pk . In Fq gilt f (ϕ(α)) = ϕ(f (α)) = ϕ(0) = 0, wobei das queren die eindeutige Fortsetzung des Reduktionshomomorphismus modulo p auf Z[X] bezeichnet (beachte f (X) ∈ Z[X]). Daher wird α von ϕ auf eine Nullstelle von f (X) modulo p abgebildet. Durch das Bild von α ist ϕ auf Z[α] eindeutig festgelegt. Leider lässt sich ϕ nicht immer eindeutig auf Oα fortsetzen. Probleme bereiten die sogenannten Indexteiler : Sei z := [Oα : Z[α]] der Index von Z[α] in Oα . Da sowohl Z[α] als auch Oα als Z-Moduln von einer d-elementigen Basis frei erzeugt werden, ist z endlich. Ein Primideal p heißt Indexteiler, wenn die nach Satz 3.2 eindeutige Primzahl unter p ein Teiler von z ist. Da jedes Primideal über p definitionsgemäß ein Teiler von pOα ist, gibt es nur endlich viele Primideale über p. Daher gibt es in jedem algebraischen Zahlkörper Q(α) nur endlich viele Indexteiler. Dieses Resultat ist ermutigend, denn wie sich noch zeigen wird, bereiten Indexteiler mehr Schwierigkeiten als andere Primideale. Zunächst einmal schließen wir Indexteiler aus unseren Betrachtungen aus. Es gelte also p - z, d. h. insbesondere sei z modulo p invertierbar. Unter dieser Voraussetzung ist ϕ durch ϕ(α) auf ganz Oα bereits eindeutig bestimmt, denn da z die Ordnung von Oα /Z[α] aufgefasst als abelsche Gruppe bezeichnet, gilt zγ ∈ Z[α] für jedes γ ∈ Oα . Daher folgt ϕ(γ) = ϕ(z −1 zγ) = ϕ(z −1 )ϕ(zγ) = z −1 ϕ( zγ ). |{z} ∈Z[α] Zusammenfassend können wir Folgendes festhalten: Satz 3.3 Die Primideale von Oα sind genau die Kerne von Homomorphismen, welche Oα auf endliche Körper abbilden. Ist ϕ ein Homomorphismus von Oα in Fq mit q = pn , dann ist ϕ(α) =: c eine Nullstelle von f (X) modulo p. Der Kern von ϕ ist ein Primideal n-ten Grades. Gilt p - z, dann ist ϕ durch c bereits eindeutig festgelegt. Ist andererseits p ein Primideal von Oα und p die eindeutige Primzahl unter p, dann ist p der Kern eines Homomorphismus von Oα in einen endlichen Körper der Charakteristik p. Der Grad von p entspricht dem Grad der Erweiterung dieses Körpers über Fp . 25 KAPITEL 3 DAS SPECIAL NUMBER FIELD SIEVE Liefert umgekehrt jede Nullstelle von f (X) modulo einer Primzahl, die nicht den Index teilt, einen Homomorphismus von Oα in einen endlichen Körper und damit ein Primideal? Die Antwort erbringt Satz 3.4 (Die Homomorphismen ϕp,h ) Sei p eine Primzahl, die nicht den Index z teilt, und sei h(X) ein normiertes Polynom mit ganzrationalen Koeffizienten, so dass h(X) in Fp [X] ein irreduzibler Faktor von f (X) ist. Dann ist die Abbildung ϕp,h : Oα γ = g(α) −→ 7→ Fp [X]/h(X)Fp [X] z −1 (zg(X)) + h(X)Fp [X] ein Homomorphismus. Beweis: Man rechnet leicht nach, dass die additive Homomorphieeigenschaft von ϕp,h erfüllt wird und ϕp,h (1) = 1 gilt. Interessant ist lediglich die Verträglichkeit von ϕp,h mit der Multiplikation. Seien hierzu γ1 = g1 (α) und γ2 = g2 (α) zwei beliebige Elemente von Oα . In Q[X] liefere die Euklidische Division das Ergebnis g1 g2 (X) = k(X)f (X) + g(X) mit δ(g(X)) < δ(f (X)). Hieraus folgt z 2 g1 g2 (X) = z 2 k(X)f (X) + z 2 g(X). Da sowohl z 2 g1 g2 (X) als auch z 2 g(X) ganzrationale Koeffizienten besitzen, gilt dies auch für das Polynom z 2 k(X)f (X). Insbesondere gilt z 2 k(X) ∈ Z[X], wie das Lemma von Gauß zeigt, denn f (X) ist normiert und ganzrational. Schließlich folgt ϕp,h (γ1 )ϕp,h (γ2 ) = z −1 zg1 (X)z −1 zg2 (X) + h(X)Fp [X] = z −2 z 2 g1 g2 (X) + h(X)Fp [X] = z −2 (z 2 k(X)f (X) + z 2 g(X)) + h(X)Fp [X] = z −2 (z 2 k(X) f (X) + z 2 g(X)) + h(X)Fp [X] = z −2 z 2 g(X) + h(X)Fp [X] = z −1 zg(X) + h(X)Fp [X] (wegen z 2 k(X) ∈ Z[X]) (wegen h(X)|f (X)) (wegen zg(X) ∈ Z[X]) = ϕp,h (g(α)) = ϕp,h (g1 (α)g2 (α)) = ϕp,h (γ1 γ2 ) Bemerkung 3.5 (Äquivalente Darstellung von ϕp,h ) Beschreibt Fp einen algebraischer Abschluss von Fp und ist c ∈ Fp mit h(c) = 0 gegeben, dann lässt sich der Homomorphismus ϕp,h auch folgendermaßen beschreiben: ϕp,h : Oα γ = g(α) −→ 7→ Fp (c) z −1 (zg(c)). Ist δ(h(X)) > 1, dann ist es irrelevant, welche Nullstelle c wir betrachten, denn alle durch Adjunktion einer solchen Nullstelle entstehenden Erweiterungskörper sind isomorph zu Fp [X]/h(X)Fp [X]. Definition und Satz 3.6 (Die Primideale pp,h ) Der Kern von ϕp,h werde mit pp,h bezeichnet. pp,h ist ein Primideal vom Grad δ(h(X)). 26 3.2 PRIMIDEALE IN Oα Um die Klassifikation der Primideale über p abzuschließen, beweisen wir eine für praktische Zwecke besonders nützliche Darstellung von pp,h : Satz 3.7 (Zwei-Element-Darstellung von pp,h ) Unter den Voraussetzungen von Satz 3.4 gilt: pp,h = (p, h(α))Oα = pOα + h(α)Oα . Beweis: ⊇“: Diese Inklusion folgt unmittelbar aus der Definition von pp,h = ker(ϕp,h ) und Homo” morphieeigenschaften. ⊆“: Sei γ = g(α) ∈ pp,h = ker(ϕp,h ). Dann liegt z −1 (zg(X)) in dem von h(X) erzeugten Hauptideal, ” d. h. z −1 (zg(X)) ∈ h(X)Fp [X]. Daher gibt es ein k(X) ∈ Z[X] vom Grad kleiner d, so dass in Fp [X] die Polynomgleichung z −1 (zg(X)) = k(X)h(X) erfüllt ist. Ist ordp die p-adische Bewertung auf Q, dann folgt ordp (ai ) > 0 für alle Koeffizienten ai von g(X) − k(X)h(X) ∈ Q[X], denn da z modulo p invertierbar ist, ist es auch der Hauptnenner der Koeffizienten von g(X). Zusammenfassend gilt: g(α) = g(α) − r(α)h(α) + r(α)h(α) | {z } | {z } ∈pOα (∗) ∈h(α)Oα Für die Gültigkeit der Aussage (∗) fehlt noch der Nachweis, dass wenn ρ ∈ Oα in der Form ρ = pγ/z für ein γ ∈ Z[α] vorliegt, die Zahl γ/z ein Element von Oα ist. Auch hierfür nutzen wir wieder aus, dass p kein Teiler von z ist. Denn daher gibt es ganze Zahlen u und v, so dass gilt: up + zv = 1. Hieraus folgt γz = up γz + zv γz = uρ + vρ ∈ Oα , was den Beweis vervollständigt. Der folgende Satz fasst die bisher erarbeiteten Ergebnisse über Nichtindexteiler zusammen: Satz 3.8 (Primideale über p) Sei p ∈ Z eine Primzahl, die nicht den Index z := [Oα : Z[α]] teilt. Zerfällt f (X) modulo p wie folgt in irreduzible, normierte Faktoren: Y f (X) ≡ hi (X)ei (p), i=1,...,k dann ist jedes Primideal von Oα , welches p teilt, von der Form pOα + hi (α)Oα für ein i ∈ {1, . . . , k}. Dieses Ideal hat denselben Grad wie das Polynom hi (X) und wird mit pp,hi bezeichnet. Umgekehrt ist für jedes normierte h(X) ∈ Z[X], welches ein irreduzibler Teiler von f (X) modulo p ist, das Ideal pOα + h(α)Oα ein Primideal vom Grad δ(h(X)), welches p in Oα teilt. Mit stärkeren Hilfsmitteln lässt sich außerdem beweisen, dass in Oα das Ideal pp,h in p genauso oft aufgeht wie in Fp [X] das Polynom h(X) in f (X) (hierzu siehe [Mar77], Thm. 27): Satz 3.9 Unter den Voraussetzungen des letzten Satzes gilt zusätzlich, dass p in Oα wie folgt in Primideale zerfällt: Y i pOα = pep,h . i i=1,...,k Ist p eine Primzahl, die den Index teilt, und c eine Nullstelle von f (X) modulo p, dann lässt sich analog zum Beweis von Satz 3.4 zeigen, dass die durch α 7→ c induzierte Abbildung von Z[α] nach Fp (c) ein Homomorphismus ist. Jetzt kann es jedoch passieren, dass dieser sich nicht eindeutig auf Oα fortsetzen lässt, und es daher verschiedene Oα -Primideale zu dem Paar (p, c) gibt. 27 KAPITEL 3 DAS SPECIAL NUMBER FIELD SIEVE 3.3 Die Primidealzerlegung von a − bα Zur Vereinfachung werden wir ab jetzt annehmen, dass Z[α] ein Hauptidealring ist. Am Ende dieses Kapitels werden wir sehen, welche Modifikationen für den allgemeineren Fall notwendig sind. Satz 3.10 Ist Z[α] ein Hauptidealring, so gilt Z[α] = Oα . Beweis: Es genügt, Oα ⊆ Z[α] zu zeigen. Sei also β ∈ Oα beliebig, aber fest. Dann gibt es ein z ∈ Z, so dass β = γz gilt für ein γ ∈ Z[α]. Da β ganzalgebraisch ist über Q, ist β Nullstelle eines normierten ganzrationalen polynomialen Ausdrucks, d. h. es gibt Koeffizienten a0 , . . . , an−1 ∈ Z mit β n + an−1 β n−1 + . . . + a1 β + a0 = 0. Multiplikation mit z n liefert γ n + an−1 zγ n−1 + . . . + a1 z n−1 γ + z n a0 = 0. Da Z[α] als Hauptidealring insbesondere faktoriell ist, existiert eine Zerlegung von z in Primelemente von Z[α]. Obige Gleichung zeigt, dass jeder dieser Primteiler von z auch γ in Z[α] teilen muss. Daher gilt β = γz ∈ Z[α], was zu zeigen war. Daher gibt es glücklicherweise in Oα auch keine Indexteiler und die im letzten Abschnitt hergeleiteten Sätze können ohne Einschränkung zur Anwendung gelangen. In diesem Abschnitt leiten wir das erfreuliche Ergebnis her, dass jedes Primideal, welches (a − bα)Oα teilt, ein Primideal ersten Grades und durch seine Norm bereits eindeutig bestimmt ist. Unter dieser Voraussetzung bereitet es dann keine Schwierigkeiten mehr, aus der Faktorisierung von N (a − bα) auf die Primidealzerlegung von (a − bα)Oα zu schließen. Satz 3.11 (Primidealteiler von (a − bα)Oα sind ersten Grades) Seien a und b teilerfremde ganzrationale Zahlen. Dann ist jedes Primideal p, welches (a − bα)Oα teilt, vom Grad 1. Beweis: Sei p die Primzahl unter p. Nach den Ergebnissen des letzten Abschnittes ist p der Kern eines Homomorphismus der Form ϕp,h , d. h. es gilt p = pp,h für einen irreduziblen Faktor h(X) von f (X) in Fp [X] und der Grad von p entspricht dem Grad des Polynoms h(X). Ein Primideal ersten Grades ist pp,h demnach genau dann, wenn h(X) ein linearer Faktor ist. Wir verwenden für ϕp,h die Darstellung aus Bemerkung 3.5. Es genügt daher nachzuweisen, dass α von ϕp,h auf ein Element von Fp abgebildet wird. Weil in Oα Teilbarkeit gleichbedeutend ist mit Inklusion, folgt aus der Voraussetzung ϕp,h (a−bα) = 0, somit a = ϕp,h (a) = ϕp,h (b)ϕp,h (α) = b ϕp,h (α). Es bleibt also nur noch zu zeigen, dass b modulo p invertierbar ist. Angenommen, p | b. Dann wäre p wegen a = b ϕp,h (α) ebenso ein Teiler von a, was einen Widerspruch zur Voraussetzung ggT(a, b) = 1 darstellte. Damit ist die Behauptung bewiesen. Der letzte Satz rechtfertigt, dass wir in P ausschließlich Erzeuger der Primideale ersten Grades aufgenommen haben. Da wir von nun an nur noch mit diesen Primidealen zu tun haben werden, führen wir eine vereinfachende Schreibweise ein: Notation 3.12 (Primideale ersten Grades) Sei pp,h ein Primideal ersten Grades. Dann gilt h(X) = X − c für ein geeignetes c ∈ {0, . . . , p − 1}. Wir schreiben pp,c anstelle von pp,h , ebenso ϕp,c für ϕp,h . 28 3.3 DIE PRIMIDEALZERLEGUNG VON A − Bα Bemerkung 3.13 (Bijektion zwischen Primidealen und Nullstellen) Wir halten fest, dass eine bijektive Beziehung besteht zwischen den Primidealen ersten Grades von Z[α] auf der einen und den Nullstellen von f (X) modulo Primzahlen auf der anderen Seite: das Primideal pp,c korrespondiert mit der Nullstelle c von f (X) modulo p, andererseits definiert nach Satz 3.4 jede Nullstelle von f (X) modulo einer Primzahl genau ein Primideal ersten Grades von Z[α]. Jetzt fehlt nur noch ein kleines Lemma, um die Primidealzerlegung von (a − bα)Oα vollständig aus der Größe N (a − bα) berechnen zu können. Lemma 3.14 (Primidealteiler von (a − bα)Oα sind eindeutig bestimmt) Sei pp,c ein Primidealteiler von (a − bα)Oα . Dann gibt es kein weiteres Primideal über p in der Primidealzerlegung von (a − bα)Oα . Beweis: Es ist klar, dass ϕp,c und damit auch pp,c durch ϕp,c (α) bereits eindeutig festgelegt sind. Wie −1 wir im Beweis von Satz 3.11 gesehen haben, folgt aus pp,h | (a − bα) direkt ϕp,c (α) = a b , womit die Behauptung gezeigt ist. Nun können wir das Hauptergebnis dieses Abschnittes herleiten: Q Sei N (a − bα) = ± i=1,...,n pei i die Primfaktorzerlegung von N (a − bα). Da die Norm eines Elementes und die Norm des von Q diesem Element erzeugten Hauptideals betragsmäßig übereinstimmen, gilt N ((a − bα)Oα ) = i=1,...,n pei i . Ist andererseits (a − bα)Oα = pf11 · · · pfl l die eindeutige PrimidealzerlegungQvon (a − bα)Oα , so erhalten wir aus der Multiplikativität der Normabbildung N ((a − bα)Oα ) = i=1,...,l N (pi )fi . Aus Lemma 3.14 folgt, dass zu jeder Primzahl pi aus der Primfaktorzerlegung von N (a − bα) genau ein Primidealfaktor von (a − bα)Oα existiert, daher muss n = l gelten. Weil nach Satz 3.11 alle Primidealteiler von (a − bα)Oα ersten Grades sind und wegen der eindeutigen Primfaktorzerlegung in Z muss ei = fi für i ∈ {1, . . . , n} erfüllt sein. Wir erhalten zusammenfassend: Satz 3.15 (Primidealzerlegung von (a − bα)Oα ) Q Sei N (a − bα) = ± i=1,...,n pei i die Primfaktorzerlegung von N (a − bα). Dann gilt (a − bα)Oα = Y pepii ,ci mit bci ≡ a (pi ). i=1,...,n Nachdem wir nun gezeigt haben, dass sich die Primidealzerlegung von (a−bα)Oα direkt aus der Norm von a − bα gewinnen lässt, ist unser nächstes Ziel konsequenterweise die Bestimmung dieser Größe. Satz 3.16 (Norm von a − bα) Seien Q(α) ein algebraischer Zahlkörper d-ten Grades, mα (X) das Minimalpolynom von α bezüglich Q und a, b ∈ Q, b 6= 0. Dann gilt a N (a − bα) = bd mα . b Beweis: Seien α1 , . . . , αd die Konjugierten von α, d. h. die Bilder der Q-Monomorphismen σ1 , . . . , σd angewendet auf α. Aufgrund von Homomorphieeigenschaften erhalten wir die Konjugierten von a−bα, indem wir α durch die αi ersetzen. Deshalb gilt: N (a − bα) = Y (a − bαi ). i=1,...,d 29 KAPITEL 3 DAS SPECIAL NUMBER FIELD SIEVE Es ist leicht zu zeigen, dass die Konjugierten von α genau den paarweise verschiedenen Nullstellen von mα (X) entsprechen (siehe z. B. Thm. 2.3 aus [ST87]). Daher gilt in C[X]: Y mα (X) = (X − αi ). i=1,...,d Zusammenfassend erhalten wir: N (a − bα) = Y (a − bαi ) = bd i=1,...,d a Y a − αi = bd mα . b b i=1,...,d Da das in Abschnitt 3.1 definierte Polynom f (X) = X d − a0 irreduzibel und normiert ist, ist f (X) das Minimalpolynom von α bezüglich Q. Deshalb können wir folgern: a = ad − bd a0 . N (a − bα) = bd f b 3.4 Die Zerlegung der Einheit Die bis jetzt erarbeitete Theorie erlaubt es uns, jedes glatte a − bα ∈ Z[α] in ein Produkt aus Primelementen der Faktorbasis und einer Einheit ε zu zerlegen: Y a − bα = ε π f (π) , (3.5) π∈P wobei wir die Bewertungen f (π), wie im Abschnitt 3.3 gezeigt, aus der Norm von a − bα berechnen können (wenn wir im Folgenden von Einheiten sprechen, sind immer die Einheiten von Oα gemeint). Was noch fehlt, ist die Zerlegung der Einheit ε über E, d. h. in ein Produkt aus einer Einheitswurzel und Fundamentaleinheiten wie in (3.3). Um dies zu erreichen, bedienen wir uns der logarithmischen Repräsentation lα : Zusätzlich zu algebraischen kommen in der algebraischen Zahlentheorie auch geometrische Methoden – wie z. B. der Minkowkische Gitterpunktsatz – zur Anwendung, unter anderem um die Struktur der Einheitengruppe Uα von Oα herzuleiten. Diese Methoden setzen jedoch lineare Strukturen voraus, so dass zunächst Oα mithilfe der sogenannten Standardeinbettung σα in einen reellen Vektorraum eingebettet wird. Diese Abbildung ist so konstruiert, dass die Bilder Q-linear-unabhängiger Elemente R-linear unabhängig sind. Da die Einheiten eine multiplikative Struktur bilden, entziehen sie sich zunächst den oben angesprochenen geometrischen Methoden, denn diese sind auf Gitter zugeschnitten, welche additiv sind. Daher wird die Standardeinbettung logarithmisiert, so dass man schließlich die logarithmische Repräsentation erhält, welche multiplikative Strukturen homomorph auf additive Strukturen abbildet: Definition 3.17 (Signatur und logarithmische Repräsentation) Seien σ1 , . . . , σd die d Monomorphismen von Q(α) in C. Gilt σi (Q(α)) ⊆ R, dann heißt σi reell, andernfalls komplex. Zu jedem komplexen Monomorphismus σi bezeichne σi den komplex konjugierten Monomorphismus, die Anzahl der komplexen Monomorphismen ist also gerade. Ist s die Anzahl der reellen und 2t die Anzahl der komplexen Monomorphismen von Q(α), dann heißt das Paar (s, t) die Signatur von Q(α). Die σi seien nun so angeordnet, dass σ1 , . . . , σs die reellen und σs+1 , . . . , σs+t paarweise nicht zueinander konjugiert komplexe Monomorphismen sind. Die logarithmische Repräsentation von Q(α) ist dann definiert als folgende Abbildung: 30 3.4 DIE ZERLEGUNG DER EINHEIT lα : Q(α)× −→ θ 7→ Rs+t (log |σ1 (θ)|, . . . , log |σs (θ)|, log |σs+1 (θ)|2 , . . . , log |σs+t (θ)|2 ) Als abkürzende Schreibweise vereinbaren wir k := s + t − 1. Wir wissen, dass es folgende Produktdarstellung von a − bα gibt: Y Y e ηj j a − bα = ζ n π f (π) . (3.6) π∈P j=1,...,k | {z ε } Unser erstes Ziel ist die Bestimmung der Größen ej . Aus Logarithmuseigenschaften folgt die Gleichheit lα (θ1 θ2 ) = lα (θ1 ) + lα (θ2 ) für alle θ1 , θ2 ∈ Q(α). Daher liefert die Anwendung von lα auf (3.6): X lα (ε) = lα (a − bα) − f (π) lα (π) =: vε ∈ Rk+1 (3.7) π∈P Es ist bekannt, dass die Einheitswurzeln von Oα den Kern von lα bilden (siehe z. B. Lemma 12.1 aus [ST87]). Daher gilt auch lα (ε) = X ej lα (ηj ) (3.8) j=1,...,k Mithilfe von (3.7) und (3.8) lässt sich die Berechnung der ej schließlich auf die Lösung eines linearen Gleichungssystemes reduzieren: Wir definieren die Matrix H ∈ M((k + 1) × k, R) so, dass lα (ηj ) die j−te Spalte von H bildet. Dann ergeben sich die gesuchten Größen (e1 , . . . , ek )T als Lösungsvektor x des linearen Gleichungssystemes Hx = vε . Das Gitter lα (Uα ) bildet ein s + t − 1-dimensionales Untergitter von Rs+t , wie z. B. Thm. 12.5 aus [ST87] zeigt. Definitionsgemäß ist ein System von Fundamentaleinheiten das Urbild einer Gitterbasis von lα (Uα ). Da die Spalten der Matrix H daher die Basis eines vε enthaltenden Gitters bilden, besitzt das Gleichungssystem Hx = vε eine eindeutige Lösung. Durch Ausnutzen der Voraussetzungen lässt sich das wiederholte Lösen dieses Gleichungssystems (dies muss für jedes gute Paare durchgeführt werden!) noch etwas beschleunigen: Mithilfe der Normabbildung lassen sich Einheiten einfach charakterisieren, denn γ ∈ Oα ist genau dann eine Einheit, wenn |N (γ)| = 1 gilt (siehe [ST87], Prop. 4.9). Hieraus folgt mit der Definition von lα , dass sich für jede Einheit ε ∈ Uα die Komponenten von lα (ε) zu Null aufsummieren. Daher lässt sich jede Zeile von H als Negation der Summe der übrigen Zeilen darstellen, analog gilt dies für die Komponenten des Vektors vε . Da die Spalten von H linear unabhängig sind, besitzt H den Rang k. Das Streichen einer beliebigen Zeile liefert also eine invertierbare Matrix H̃. Wir können nun ein für alle Mal H̃ −1 berechnen und erhalten die Größen (e1 , . . . , ek )T als Produkt H̃ −1 v˜ε , wobei v˜ε aus vε durch Löschen der entsprechenden Komponente hervorgeht. Lediglich dieser Vektor (und natürlich das Produkt) müssen nun für jedes gute Paar neu berechnet werden. Zu guter Letzt noch einige Worte darüber, wie sich der Exponent n der Einheitswurzel bestimmen lässt: Sei wieder (s, t) die Signatur von Q(α). Oft ist es der Fall, dass Q(α) nur die trivialen Einheitswurzeln ±1 besitzt, wie folgendes Korollar illustriert: Korollar 3.18 Besitzt ein algebraischer Zahlkörper Q(α) mindestens einen reellen Monomorphismus in C (d. h. es gilt s > 0), dann gibt es in Q(α) nur die trivialen Einheitswurzeln ±1. Beweis: γ ∈ Oα ist genau dann eine Einheitswurzel von Oα , wenn der Betrag aller Konjugierten von γ den Wert 1 hat. Ein Beweis dieser Charakterisierung der Einheitswurzeln, die auf L. Kronecker 31 KAPITEL 3 DAS SPECIAL NUMBER FIELD SIEVE zurückgeht, steht z. B. in [Mol99], Cor. 2.38. Sei γ eine Einheitswurzel von Oα . Ist σr ein reeller Monomorphismus von Oα nach C, so gilt daher |σr (γ)| = 1 nach Kroneckers Kriterium. Weil aber σr (γ) eine reelle Zahl ist, muss demnach σr (γ) ∈ {−1, 1} erfüllt sein, woraus die Behauptung mit der Injektivität von σr folgt. Offensichtlich gilt σ(Q(α)) ⊆ R für einen Monomorphismus σ genau dann, wenn σ(α) ∈ R erfüllt ist. Die Anzahl reeller Monomorphismen lässt sich daher an den Konjugierten von α – also den Nullstellen des Minimalpolynoms von α – ablesen. Da in unserem Fall das Minimalpolynom von α von besonders einfacher Form f (X) = X d − a0 ist, gibt es nur drei Fälle zu unterscheiden: 1. d ist ungerade. Dann besitzt f (X) genau eine reelle Nullstelle, es gilt daher s = 1. 2. d ist gerade und a0 ist nicht-negativ. In diesem Fall besitzt f (X) genau zwei reelle Nullstellen, also gilt s = 2. 3. d ist gerade und a0 ist negativ. f (X) kann keine reelle Nullstelle besitzen, somit gilt s = 0. Liegt einer der beiden ersten Fälle vor, dann erzeugt ζ := −1 die Gruppe der Einheitswurzeln und wir müssen lediglich zwischen n = 0 und n = 1 unterscheiden. Zu diesem Zweck wählen wir einen reellen Monomorphismus σr . Haben wir dafür gesorgt, dass unter σr alle Elemente von P ∪ E (mit Ausnahme von ζ) auf positive Zahlen abgebildet werden (gegebenenfalls müssen einige Elemente durch ihre Negation ersetzt werden), dann können wir n durch einen einfachen Vorzeichentest bestimmen: Aus σr (a − bα) > 0 folgt n = 0, andernfalls gilt n = 1. Besitzt Q(α) keine reellen Monomorphismen, so müssen wir ein ähnliches Verfahren mit einem komplexen Monomorphismus σc durchführen. In diesem Fall ist ζ eine komplexe Um n zu be Einheitswurzel. Q ej Q f (π) n stimmen berechnen wir σc (a − bα) und vergleichen diesen Wert mit σc ζ π η , π∈P j=1,...,k j bis beide für das korrekte n übereinstimmen. 3.5 Die Suche nach Erzeugern Um die für die algebraische Faktorbasis benötigten Erzeuger der Einheitengruppe sowie der Primideale ersten Grades, deren Norm kleiner oder gleich B2 ist, zu finden, bedienen wir uns wieder der Normabbildung. Zugrunde liegen die Tatsache, dass ein γ ∈ Oα genau dann eine Einheit ist, wenn N (γ) = ±1 gilt, und folgender Satz: Satz 3.19 (Erzeuger der Primideale ersten Grades) Sei pp,c ein Primideal ersten Grades über p. Dann gilt für π = g(α) ∈ Oα : πOα = pp,c ⇔ |N (π)| = p und g(c) ≡ 0 (p). Beweis: ⇒“: Ist πOα = pp,c , dann gilt |N (π)| = p, da der Betrag der Norm eines Elementes gleich ” der Norm des von diesem Element erzeugten Hauptideals ist. Außerdem muss ϕp,c (π) = 0 erfüllt sein wegen π ∈ pp,c = ker(ϕp,c ). Nach Definition von ϕp,c ist dies gleichbedeutend mit g(c) ≡ 0 (p). ⇐“: Wie im ersten Teil des Beweises gezeigt, folgt π ∈ pp,c aus g(c) ≡ 0 (p), ergo pp,c |π. Daher ” gilt πOα = pp,c a für ein geeignetes Ideal a in Oα . Ein Vergleich der Normen zeigt dann a = Oα , da N (πOα ) = p = N (pp,c ) erfüllt ist und die Idealnorm multiplikativ ist. Wir erinnern uns, dass nach Bemerkung 3.13 eine eineindeutige Korrespondenz zwischen den Z[α]Primidealen ersten Grades und den Nullstellen von f (X) modulo Primzahlen besteht. Diese bijektive Beziehung können wir ausnutzen, um den Suchprozess zu kontrollieren. Zunächst erstellen wir daher eine Liste LP der zu den Primidealen pp,c gehörigen Paare (p, c): 32 3.5 DIE SUCHE NACH ERZEUGERN • Für jede rationale Primzahl p ≤ B2 finde die Nullstellen von f (X) modulo p (z. B. mithilfe des Algorithmus 1.6.1 aus [Coh96]). • Ist c eine solche zur Primzahl p gehörige Nullstelle, nimm das Paar (p, c) in die Liste LP auf. Je nachdem, ob und wie f (X) modulo p zerfällt, finden sich in der Liste pro Primzahl p zwischen 0 und d verschiedene Einträge (p, c). Für das Number Field Sieve spielen diejenigen Primzahlen p, für die f (X) modulo p vollständig in Linearfaktoren zerfällt, eine besondere Rolle (siehe Abschnitt 3.7). Die Suche nach Erzeugern der Primideale und Einheiten kann grundsätzlich so gestaltet werden, dass man die Normen einer großen Anzahl γ ∈ Oα bestimmt, bis man ausreichend viele γ gefunden hat, die den Kriterien von Satz 3.19 für ein Paar (p, c) der Liste LP genügen, bzw. für die |N (γ)| = 1 gilt. Durch geschicktes Ausnutzen der Normmultiplikativität lassen sich beide Suchprozesse noch effizienter gestalten. Um die Übersichtlichkeit zu wahren, beschreiben wir die Einheitensuche und die Primidealerzeugersuche getrennt, obwohl in der Praxis beide in ein und demselben Prozess stattfinden. 3.5.1 Die Suche nach Fundamentaleinheiten Folgendes Lemma zeigt, dass wir nicht darauf angewiesen sind, alle benötigten Einheiten direkt zu finden, sondern dass wir sie auch aus geeigneten ganzalgebraischen Zahlen gleicher Norm konstruieren können. Lemma 3.20 Seien γ1 , γ2 ∈ Oα mit |N (γ1 )| = |N (γ2 )| und γ1 γ2 ∈ Oα . Dann ist γ1 γ2 eine Einheit von Oα . Beweis: Dies ist eine direkte Folgerung aus der Tatsache, dass die Einheiten von Oα genau die ganzalgebraischen Zahlen γ mit |N (γ)| = 1 sind. Da die Division algebraischer Zahlen teuer“ ist, gehen wir in der Praxis so vor, dass wir im Verlauf ” unserer Suche nur die Elemente kleiner Norm zwischenspeichern und bei Normübereinstimmung den Quotienten bilden (denn aus der eindeutigen Primfaktorzerlegung folgt, dass es für Elemente gleicher kleiner Norm wahrscheinlicher ist, zueinander assoziiert zu sein, als für Elemente gleicher großer Norm). Sind genug Einheiten gefunden, dann können wir sie mithilfe der logarithmischen Repräsentation auf multiplikative Unabhängigkeit testen. Genauer gesagt: Die Einheiten ε1 , . . . , εs+t−1 sind genau dann multiplikativ unabhängig, wenn die Determinante der in Abschnitt 3.4 konstruierten Matrix H̃ nicht verschwindet. Tut sie dies doch, dann entfernen wir eine Spalte und ersetzen sie durch eine neu gefundene Einheit. Leider bilden s + t − 1 multiplikativ unabhängige Einheiten nicht notwendig ein System von Fundamentaleinheiten, da lα (Uα ) lediglich ein Z-Modul und kein Vektorraum ist. Es existieren zwar Algorithmen, die testen, ob eine Menge von Einheiten die Einheitsgruppe erzeugt, diese sind jedoch zu langsam, um für unsere Zecke geeignet zu sein. In der Praxis des SNFS wird dieses Problem so gehandhabt, dass man s + t − 1 gefundene multiplikativ unabhängige Einheiten zunächst wie ein System von Fundamentaleinheiten behandelt. Taucht während der Durchführung des Algorithmus eine neue Einheit ε auf, die sich aus jenen nicht kombinieren lässt, dann wird φ(ε) einfach der Faktorbasis hinzugefügt. An dieser Stelle soll nochmals darauf hingewiesen werden, dass in der Regel nur sehr wenig Fundamentaleinheiten benötigt werden; im häufigen Fall d = 5 sind es z. B. gerade einmal zwei Stück. Man kann davon ausgehen, dass diese bei der Suche nach den Erzeugern der Primideale als Nebenprodukt“ ” anfallen. 33 KAPITEL 3 DAS SPECIAL NUMBER FIELD SIEVE 3.5.2 Die Suche nach den Primidealerzeugern Zunächst wählen wir eine kleine Multiplikationsschranke M (üblicherweise M ≤ 10) und eine von B2 abhängige Suchraumgrenze G (zur Größe dieser Parameter verweisen wir auf [LLMP93b]). Dann wenden wir folgenden Normtestalgorithmus an: Schritt 1: Für jedes Paar (p, c) der Liste LP setze m(p, c) := M + 1. Schritt 2: Für alle 0 6= γ = P i=0,...,d−1 ri α i mit 2i 2 d i=0,...,d−1 ri |t| P < G berechne N (γ). Schritt 3: Gilt N (γ) = p und gibt es in Pder Liste LP ein oder mehrere unmarkierte Paare (p, c), so ermittele dasjenige c, für welches i=0,...,d−1 ri ci ≡ 0 (p) gilt. Setze m(p, c) := 1, πp,c := γ und markiere das Paar (p, c) in der Liste LP . P Schritt 4: Gilt N (γ) = k · p, i=0,...,d−1 ri ci ≡ 0 (p) für ein Paar (p, c) der Liste LP mit k < m(p, c), dann setze m(p, c) auf k und definiere πp,c := γ. In diesem Suchprozess gibt der Wert m(p, c) den aktuellen Status der Suche nach einem Erzeuger von pp,c wieder. Solange m(p, c) = M + 1 gilt, war man noch nicht sehr erfolgreich. Diejenigen πp,c , für die m(p, c) = 1 erfüllt ist, sind nach Satz 3.19 Erzeuger der Primideale pp,c , d. h. der Suchprozess ist für sie abgeschlossen. Es ist sehr wahrscheinlich, dass zumindest für die kleineren Primzahlen p am Ende des Normtestalgorithmus Erzeuger für alle pp,c entdeckt worden P sind. Für πp,c mit m(p, c) = k gilt, dass πp,c ein Ideal der Norm p · k erzeugt. Aus der Bedingung i=0,...,d−1 ri ci ≡ 0 (p) folgt außerdem πp,c ∈ pp,c , d. h. pp,c | πp,c . Daher können wir schließen, dass πp,c das Produkt eines Ideals a der Norm k mit pp,c erzeugt. Dividieren wir nun πp,c durch einen Erzeuger von a, dann erhalten wir schließlich einen Erzeuger des Primideals pp,c wie gewünscht. Um dies zu realisieren, berechnen wir Erzeuger von allen Idealen a mit N (a) ≤ M und legen sie in der Liste LM ab. Zu diesem Zweck kann der Normtestalgorithmus erweitert werden: Im Verlauf des Algorithmus suchen wir Erzeuger aller Primideale der Norm kleiner oder gleich M (diese Norm kann auch eine kleine Primzahlpotenz sein, da wir uns nicht mehr auf Primideale ersten Grades beschränken). Da die Schranke M sehr klein ist, werden diese mit höchster Wahrscheinlichkeit vom Normtestalgorithmus ohne Ausnahme entdeckt. Nach Abschluss desselben können per geeigneter Multiplikation jener gefundenen Primideal-Erzeuger die Erzeuger zusammengesetzter Ideale mit Norm kleiner oder gleich M konstruiert werden. Ist z. B. M = 10, dann müssen wir zusätzlich zu den Erzeugern der Primideale ersten Grades noch diejenigen zweiten Grades der Norm 4 bzw. 9, sowie jene dritten Grades der Norm 8 mit dem Normtestalgorithmus ermitteln. Satz 3.8 folgend, können wir der Faktorisierung von f (X) modulo 2, bzw. 3 ansehen, ob und wie viele derartige Primideale in Oα existieren (um f (X) modulo einer Primzahl zu faktorisieren, können wir z. B. das in [Coh96], Kapitel 3.4 beschriebene Verfahren verwenden). Daher können wir schon im Voraus bestimmen, wie viele Erzeuger welcher Art gefunden werden müssen und die Liste LM entsprechend initialisieren. Findet der Normtestalgorithmus ein P P γ = i=0,...,d−1 ri αi mit N (γ) = 4, aber i=0,...,d−1 ri ci 6≡ 0 (2) für alle Paare (2, c) der Liste LP , so erzeugt γ ein Primideal zweiten Grades der Norm 4 (und nicht etwa das Produkt zweier Primideale der Norm 2). Sind wir auf diese Weise auf γ gestoßen und existiert in der Liste L10 bereits ein γ 0 der Norm 4, so können wir durch Quotientenbildung wie im Unterabschnitt 3.5.1 testen, ob beide dasselbe Ideal erzeugen. Falls ja, ist mit γ/γ 0 eine Einheit gefunden, andernfalls nehmen wir γ in die Liste L10 mit auf. (Die letzten Ausführungen gelten analog auch für die Ideale der Normen 8 und 9). Um die Liste zu vervollständigen, bilden wir alle möglichen Produkte von Erzeugern, so dass das Produkt der Einzelnormen die Schranke 10 nicht überschreitet. Es sollte klar sein, wie sich dieses Verfahren auf beliebiges M verallgemeinern lässt. Auf diese Art und Weise konstruieren wir die vollständige Liste LM . Gilt nach Abschluss des erweiterten Normtestalgorithmus N (πp,c ) = k · p, so finden wir schließlich einen Erzeuger von pp,c , indem wir πp,c sukzessive durch die Elemente P γ der Liste LM mit Norm k dividieren und testen, ob sowohl πp,c /γ ∈ Z[α] erfüllt ist, als auch i=0,...,d−1 ri ci ≡ 0 (p) gilt. Nach den Voraussetzungen ist dies für genau ein γ der Liste LM der Fall. Jetzt ersetzen wir πp,c durch 34 3.6 DAS SIEBEN πp,c /γ, setzen m(p, c) auf 1 und markieren das Paar (p, c) der Liste LP . So fahren wir fort, bis die Liste LP vollständig abgearbeitet ist (d. h. alle Einträge markiert sind). 3.6 Das Sieben Wir kommen nun zu dem Teil, der von manchen Autoren als das Herz des Number Field Sieve“ ” bezeichnet wird. Diesen Titel kann man der Siebphase insofern zugestehen, als dass sie mit Abstand am meisten Rechenzeit benötigt. Die Faktorisierung von F9 gelang letztendlich nur, indem man den Siebprozess parallelisierte und das Programm zusammen mit einem Teil der b-Werte per e-mail an Helfer aus der ganzen Welt verschickte. Heutzutage benutzt man schnellere Siebmethoden (die bekannteste wird im Kapitel über das General Number Field Sieve vorgestellt werden), trotzdem ist das Finden geeigneter Relationen immer noch der zeitaufwendigste Teil des Number Field Sieve. Dies hat einige – aus ästhetischer“ Sicht negative – Konsequenzen: Das idealisierte Sieben einer Liste ” (für jedes Faktorbasiselement p und dessen Potenzen pk teile alle Listenelemente durch p, die kongruent 0 modulo p sind (bzw. modulo pk in späteren Schritten)) ist ein exaktes und elegantes Verfahren. Die bezüglich der Faktorbasis glatten Zahlen sind genau diejenigen, die durch diese Prozedur zu Eins gemacht werden. Um diese Idee aber auch für große Faktorbasen und Listen praktikabel zu machen, muss man das Verfahren beschleunigen. Zunächst einmal sind Divisionen teuer, daher geht man zu Logarithmen über und ersetzt folglich Divisionen durch Subtraktionen (und entsprechend den Gleich-1-Test durch einen Gleich-0-Test). Des Weiteren kann man im Siebprozess auf Primzahlpotenzen verzichten und letztendlich auch auf kleine Faktorbasiselemente, da das Sieben mit kleinen Zahlen am längsten dauert und (pro Treffer) den geringsten Erfolg (d. h. die geringste Reduzierung des entsprechenden Eintrages) liefert. All diese Einschränkungen haben neben dem positiven Effekt der Zeiteinsparung natürlich negative Konsequenzen zur Folge wie z. B. Rundungsfehler (bei den Logarithmen) und das Verpassen einiger glatter Zahlen, die viele mehrfache oder besonders kleine Primfaktoren haben. Um dem zu begegnen, führt man eine Korrekturgröße ein und wählt nach Beendigung des Siebens jene Listenpositionen aus, deren Einträge diese Größe unterschreiten. Dies ersetzt den Gleich-0-Test. Wird der Korrekturfaktor zu klein gewählt, verliert man zu viele glatte Elemente, setzt man ihn hingegen zu groß an, werden möglicherweise einige Zahlen fälschlicherweise als glatt erkannt. Wir sehen, dass es bei den vielen Modifikationen gegenüber dem idealisierten Sieben sehr wichtig ist, Parameter geeignet zu wählen. Dies geschieht am besten empirisch. Man muss bei jeder neuen Änderung sehr genau abwägen, ob die Kosten-Nutzen-Relation noch stimmt. Als nächstes skizzieren wir jenes Sieb, welches bei der Faktorisierung von F9 [LLMP93a] und bei den schon mehrfach zitierten dokumentierten Beispielen des SNFS [LLMP93b] zur Anwendung gelangte. Wie bereits in Kapitel 2 beschrieben, wählen wir zunächst die Obergrenze amax < m für die aWerte von a − bm bzw. a − bα, die getestet werden sollen. Dann definieren wir amin := −amax . Die Größe b hingegen durchläuft nur negative Zahlen (da die Ausdrücke a − bm positiv sein sollen, um die Aufnahme von −1 in die rationale Faktorbasis zu umgehen). Nun halten wir einen b−Wert fest und sieben über das komplette a−Intervall. Dann ersetzen wir b durch b − 1 und fahren so fort, bis genügend Relationen gefunden sind. Aus diesem Grund ist es unnötig, eine Grenze für b im Voraus anzugeben. Im Folgenden bezeichnen S die untere Schranke für Faktorbasiselemente, Tratkor , Talgkor den rationalen bzw. algebraischen Korrekturterm (in Abhängigkeit von S und der Größe der Faktorbasis gewählte natürliche Zahlen) und G eine negative Zahl moderater Größe. Unser Ziel ist es, Paare (a, b), amin < a < amax , b < 0 zu finden, die folgenden drei Bedingungen genügen: ggT(a, b) = 1 |a − bm| zerfällt über P a − bα zerfällt über P ∪ E (3.9) (3.10) (3.11) Um dies zu erreichen, wenden wir folgendes Siebverfahren an: 35 KAPITEL 3 DAS SPECIAL NUMBER FIELD SIEVE Schritt 1: Setze l := 0, b := −1. Schritt 2: Initialisiere einen Array Ab der Länge (2 · amax ) + 1 mit den gerundeten Werten von − log(a − bm) + Tratkor . Schritt 3: Für alle S < p ≤ B1 addiere [log(p)] zu allen Einträgen Ab [a], für die a ≡ bm (p) erfüllt ist. Benutze hierfür ein Sieb mit Ausgangspunkt bm mod p. Schritt 4: Initialisiere einen Bitarray Bb der Länge (2 · amax ) + 1, so dass Bb [a] = 1 ⇔ Ab [a] > 0 gilt. Schritt 5: Für alle a mit Ab [a] > 0 ersetze Ab [a] durch G. Schritt 6: Für alle Paare (p, c) ∈ Lp mit p > S addiere [log(p)] zu allen Einträgen Ab [a], für die die Kongruenz a ≡ bc (p) erfüllt ist. Benutze hierfür ein Sieb mit Ausgangspunkt bc mod p. Schritt 7: Für alle a mit Ab [a] < 0 setze Bb [a] := 0. Schritt 8: Für alle a mit Bb [a] = 1 teste, ob ggT(a, b) = 1 erfüllt ist. Falls nein, setze Bb [a] := 0. Schritt 9: Für alle a mit Bb [a] = 1 teste, ob Ab [a] − G ≥ [log |ad − bd a0 | − Talgkorr ] erfüllt ist. Falls nein, setze Bb [a] := 0. Schritt 10: Erhöhe l um die Anzahl der 1−Einträge von Bb und setze b := b − 1. Schritt 11: Wiederhole alle Schritte ab Schritt 2 so lange, bis l die Größe der Faktorbasis ausreichend überschreitet. Erläuterungen und Ergänzungen: • Die Größe l gibt die Anzahl der bereits gefundenen guten Paare an. • Schritte 2 bis 4 sind der rationale Teil des Siebes, Schritte 6 bis 9 der algebraische. • Im rationalen Teil wird der Siebarray mit [− log(a−bm)+Trat ] initialisiert, damit sich alle a−bm, die über der Faktorbasis zerfallen, durch einen schnellen Positivitätstest ermitteln lassen. • Da a verschwindend klein ist im Vergleich zu bm, wird im zweiten Schritt jeweils eine sehr große Anzahl aufeinanderfolgender Arraypositionen zeitsparend mit demselben Wert initialisiert. • Auf den algebraischen Teil lassen sich die letzten beiden Punkte nicht übertragen, da die Größen [log |ad −bd a0 |] über dem a-Intervall zu stark schwanken. Stattdessen initialisieren wir den Array Ab an den Stellen, die das rationale Sieb bestanden haben, moderat negativ. G ist kein Korrekturterm, da der Wert von |G| vor dem Test, ob a − bα glatt ist, wieder zu den entsprechenden Arrayeinträgen addiert wird. Vielmehr soll durch die Einführung von G verhindert werden, dass die ggT- und [log |ad − bd a0 |]-Berechnungen zu oft durchgeführt werden müssen. Wenigstens einige besonders schlechte Paare (a, b), für die a − bα von fast gar keinem Element πp,c ∈ P geteilt wird, können so vorzeitig ausgeschlossen werden. • Der im vierten Schritt eingeführte Bitarray Bb gibt an der Position a den Status des Paares (a, b) wieder. Ist Bb [a] = 0, dann erfüllt das Paar (a, b) mit großer Wahrscheinlichkeit eine der Forderungen (3.9), (3.10) oder (3.11) nicht. • Der algebraische Teil des Siebes benutzt die in Abschnitt 3.3 hergeleitete Äquivalenz πp,c | a − bα ⇔ a ≡ bc (p) und Satz 3.15, der die Primidealzerlegung von a − bα mithilfe der Primfaktorzerlegung von N (a − bα) beschreibt. • Die Größe ad − bd a0 gibt die nach Satz 3.16 berechnete Norm von a − bα wieder. 36 3.7 FREIE RELATIONEN • In Schritt 6 wird über alle Arrayeinträge von Ab gesiebt, nicht etwa nur über die mit positivem Bb -Eintrag. Das liegt daran, dass die ausnahmslose Addition von log(p) auch nicht langsamer ist, als jedesmal zu testen, ob Bb [a] = 0 gilt und in diesem Fall auf die Addition zu verzichten. • Schritt 6 betreffend ist außerdem zu beachten, dass die Paare (p, c) der Liste LP genau die von den πp,c ∈ P erzeugten Primideale repräsentieren. • Legt man die Werte von bc mod p und bm mod p, die zum Start der Siebprozesse in den Schritten 3 und 6 benötigt werden, in einen Zwischenspeicher, so kann man sich für die folgenden b0 s Divisionen sparen, denn es gilt: bm mod p = ((b + 1)m mod p − m mod p) mod p. Letzte Gleichung ist natürlich auch für c statt m erfüllt. Diese Überlegungen haben zur Konsequenz, dass es günstiger ist, mit unmittelbar aufeinanderfolgenden b−Werten zu sieben. Dies sollte besonders dann bedacht werden, wenn der Siebprozess parallelisiert wird. Im Anschluss an das Siebverfahren zerlegen wir für alle Paare (a, b) mit Bb [a] = 1 die Werte a − bm und N (a−bα) = |ad −bd a0 | in ein Produkt aus Primzahlen unterhalb der Schranke B1 bzw. B2 . Hierzu können Probedivisionen verwendet werden, da nicht mehr so viele Paare übrig sind. Jetzt fallen auch die Paare auf, die das Sieb irrtümlich überlebt haben; diese sind natürlich zu verwerfen. 3.7 Freie Relationen Nach dem in Kapitel 2 entwickelten Schema ist es das Ziel des Number Field Sieve, viele Paare (r, γ), r ∈ Z, γ ∈ Oα zu finden, so dass r und γ über P bzw. E und P zerfallen und die Gleichung φ(r) = φ(γ) erfüllt ist. Wie bereits mehrmals ausgeführt, führt jede solche Kongruenz zu einer Relation zwischen Faktorbasiselementen. Bisher haben wir γ in der Form a − bα für teilerfremde ganze Zahlen a, b und entsprechend r = a − bm gewählt. Die Kongruenz φ(r) = φ(γ) wird von diesen Paaren erfüllt, weil wir φ und m entsprechend konstruiert haben. Dieser Abschnitt zeigt, wie wir auf eine besonders einfache Art und Weise einige zusätzliche Relationen gewinnen können. Sei p ≤ B1 eine Primzahl, so dass f (X) modulo p vollständig in Linearfaktoren zerfällt: Y f (X) = (X − ci )ei (p). (3.12) i=1...,k Dann wissen wir nach Satz 3.9, dass sich p in Oα wie folgt in ein Produkt von Primidealen ersten Grades zerlegen lässt: Y i p= pep,c . i i=1,...,k Q Die so erhaltene Relation von Faktorbasiselementen φ(p) = i=1,...,k φ(πp,ci )ei heißt freie Relation (Qfree relation“), weil wir keine Siebmethoden anstrengen müssen, um sie zu finden, denn φ(p) und ” ei i=1,...,k φ(πp,ci ) zerfallen trivialerweise über der Faktorbasis. Wir bekommen sie sozusagen umsonst ( for free“). Die Gültigkeit dieser Relation hängt nicht von der Wahl des Homomorphismus φ ab. ” Da aus den oben genannten Gründen freie Relationen sehr willkommen sind, ist es interessant zu erfahren, wie viele von ihnen wir erwarten können. Die Kombination der nächsten beiden Sätze liefert eine Abschätzung nach oben und nach unten: Satz 3.21 Sei f (X) = X d − a0 ein in Q[X] irreduzibles Polynom und L ein Zerfällungskörper von f (X). Dann ist die Dirichletsche Dichtigkeit aller Primzahlen p, für die f (X) modulo p in Linearfaktoren zerfällt, invers zu [L : Q]. 37 KAPITEL 3 DAS SPECIAL NUMBER FIELD SIEVE Beweis: Dies ist ein Spezialfall von Theorem 43 aus [Mar77]. Dieses bezieht sich zwar auf Primzahlen p, für die f (X) in Fp zerfällt und nur einfache Nullstellen besitzt (d. h. in Gleichung (3.12) gilt k = d und ei = 1 für alle i), dies ist aber kein Problem, da – wie wir gleich beweisen werden – die Einschränkung ei = 1 für alle i nur für endlich viele p nicht erfüllt ist und sich daher an der Dichtigkeit nichts ändert. Es genügt offensichtlich zu zeigen: p 6 | d · a0 =⇒ f (X) besitzt modulo p nur einfache Nullstellen. Es ist bekannt ([Bos99], S.111), dass f (x) in Fp [X] genau dann mehrfache Nullstellen besitzt, falls 0 0 ggT(f (X), f (X)) ∈ Fp [X] \ Fp gilt. Hierbei bezeichnet f (X) die formale Ableitung von f (X), die 0 für f (X) = X d − a0 von der Form f (X) = dX d−1 ist. Damit dieser ggT nicht konstant ist, muss p 0 0 ein Teiler von d (dann verschwindet f (X)) oder von a0 sein (dann gilt ggT(f (X), f (X)) = X d−1 ). Hieraus folgt die Behauptung. Anders formuliert besagt dieser Satz, dass für ca. eine von [L : Q] Primzahlen f (X) modulo p in Linearfaktoren zerfällt. Der folgende Satz grenzt die mögliche Größe von [L : Q] ein: Satz 3.22 Sei f (X) = X d − t ein in Q[X] irreduzibles Polynom und L ein Zerfällungskörper von f (X). Dann gilt kgV(d, ϕ(d)) [L : Q] und [L : Q] d · ϕ(d). Hierbei bezeichnen kgV das kleinste gemeinsame Vielfache und ϕ die Eulersche ϕ-Funktion. Beweis: Sei ζd eine komplexe d-te Einheitswurzel. Nach Definition von f (X) ist klar, dass die Zahlen 1 1 1 1 t d , ζd t d , . . . , ζdd−1 t d alle Nullstellen von f (X) in C sind. Daher ist L = Q(t d , ζd ) der Zerfällungskörper von f (X). Auch ist bekannt, dass [Q(ζd ) : Q] = ϕ(d) gilt (siehe [Bos99], S.181). Da f (X) irreduzibel 1 1 und normiert ist, ist f (X) das Minimalpolynom von t d bezüglich Q und somit ist [Q(t d ) : Q] = d erfüllt. Die erste Teilbarkeitsrelation folgt daher aus zweimaliger Anwendung des Gradsatzes, denn sowohl 1 Q(ζd ) als auch Q(t d ) sind Zwischenkörper der Erweiterung L | Q. Um die zweite Aussage des Satzes zu zeigen, notieren wir zunächst, dass L als Zerfällungskörper eines separablen Polynoms eine Galoiserweiterung von Q ist. Für den Zwischenkörper Q(ζd ) ist daher auch die Erweiterung L | Q(ζd ) galoisch (siehe [Bos99], S.136). Ist n := [L : Q(ζd )], dann besitzt die Galoisgruppe Gal(L | Q(ζd )) die Mächtigkeit n. Wir zeigen n | d. Hieraus folgt die Behauptung wiederum mit dem Gradsatz. 1 1 1 1 Sei σ ∈ Gal(L | Q(ζd )). Wegen f σ(t d ) = σ f (t d ) = 0 gilt σ(t d ) = ζdk t d für ein k ∈ {0, . . . , d − 1}. Daher ist folgende Abbildung eindeutig definiert: ψ : Gal(L | Q(ζd )) σ −→ 7→ Z/dZ 1 1 k + dZ, falls σ(t d ) = ζdk t d Wir zeigen, dass ψ ein Gruppenmonomorphismus ist: 1 1 1 1 1. Seien σ1 , σ2 ∈ Gal(L | Q(ζd )) mit σ1 (t d ) = ζdk1 t d und σ2 (t d ) = ζdk2 t d . Dann gilt 1 1 1 1 σ1 ◦ σ2 (t d ) = σ1 (ζdk2 t d ) = σ1 (t d ) σ1 (ζdk2 ) = ζdk1 +k2 t d | {z } k = ζd 2 , da σ1 ein Q(ζd )-Homomorphismus ist Hieraus folgt ψ(σ1 ◦ σ2 ) = k1 + k2 . 2. Klar ist ψ(idQ(ζd ) ) = 0. 38 3.8 LINEARE ALGEBRA 1 1 3. ψ ist injektiv, da ψ(σ) = 0 nach Definition von ψ nur für σ mit σ(t d ) = t d erfüllt sein kann. 1 1 Da t d das primitive Element der Erweiterung L | Q(ζd ) ist, ist σ durch das Bild von t d bereits eindeutig festgelegt. Daher muss σ die Identität sein. Insbesondere ist das Bild von ψ eine zu Gal(L | Q(ζd )) isomorphe Untergruppe von Z/dZ. Nach dem Satz von Lagrange ist daher n ein Teiler von d. Im wichtigen Fall d = 5 liefert also eine von 20 Primzahlen eine freie Relation. Wählen wir algebraische und rationale Faktorbasis ungefähr gleich groß, dann erwarten wir, dass von allen benötigten Relationen jede 40-ste frei ist. Dieser Wert von 2.5% wird von der Praxis bestätigt [LLMP93b]. 3.8 Lineare Algebra In diesem Abschnitt beschreiben wir kurz, wie sich schließlich mit linearer Algebra modulo 2 die zwei kongruenten Quadrate aus (2.1) bestimmen lassen. Die in den bisherigen Abschnitten dieses Kapitels hergeleiteten Techniken versetzen uns in die Lage, Paare (a, b) mit folgenden Zerlegungen zu finden: Y a − bm = pe(p) p∈P a − bα = Y η∈E η f (η) Y π g(π) π∈P Dies führt zu folgender Relation zwischen den Faktorbasiselementen: Y Y Y φ(p)e(p) = φ(η)f (η) φ(π)g(π) p∈P η∈E (3.13) π∈P Für die praktische Bestimmung der Größen g(π) ist folgende Definition nützlich: Wir wissen, dass die Elemente π ∈ P eineindeutig zu den Paaren (p, c) der Liste Lp korrespondieren. Für jedes solche Paar definieren wir ( ordp (N (a − bα)) falls a ≡ bc (N ), ep,c (a, b) := 0 sonst Ist dann a, b ein gutes Paar, können wir die Exponenten aus obiger Zerlegung wie folgt bestimmen: • Um die Größen e(p) zu erhalten, durchlaufen wir mit p die rationale Faktorbasis P und berechnen ordp (a − bm). • Die Exponenten der Primelemente gewinnen wir, indem wir die Größen ep,c (a, b) berechnen, dabei läuft (p, c) über die entsprechenden Primelemente aus P. Nach der in Abschnitt 3.3 hergeleiteten Theorie erhalten wir so genau die Werte g(π). • Die Größen f (η) schließlich bestimmen wir so, wie es in Abschnitt 3.4 beschrieben wurde. Je nachdem, wie die guten Paare (a, b) gewonnen wurden, ist es jedoch nicht ausgeschlossen, dass einige der Relationen doppelt vorkommen oder schlicht und einfach falsch sind. Diese Gefahr ist dann besonders groß, wenn – wie es heutzutage üblich ist – der Siebprozess auf verschiedenen Rechnern stattfand und die gewonnenen Daten schließlich per e-mail übermittelt wurden. Angenommen, die Relationen (auch die freien) liegen in der Form (i, e(i)) vor, wobei i alle Faktorbasiselemente durchläuft, für die der zugehörige Exponent e(i) ungleich Null ist. Dann lassen sich durch einfaches Nachrechnen die Bedingung (3.13) überprüfen und fehlerhafte Relationen sofort eliminieren. R sei die Zusammenfassung korrekter Relationen. Um Wiederholungen in R mit wenig Zeit- und Speicheraufwand zu entdecken, können wir uns eines Hashverfahrens bedienen: 39 KAPITEL 3 DAS SPECIAL NUMBER FIELD SIEVE Wir initialisieren eine Hashtabelle T geeigneter Länge (diese sollte den Wert 2 · #R nicht unterschreiten) und kreieren eine Hashfunktion auf den Relationen. Für jede Relation aus R bilden wir den Hashwert und schreiben die Relation an die berechnete Adresse in T . Jetzt müssen nur noch die Kollisionen auf Gleichheit getestet und gegebenenfalls mehrfach vorhandene Relationen verworfen werden. Zur Kollisionsbehandlung in der Hashtabelle sollte eine einfache lineare Verschiebung ausreichend sein, d. h. ist die zu einem Hashwert einer Relation gehörige Tabellenposition bereits belegt, so wird die Relation in die nächste freie Stelle eingefügt, nicht ohne zuvor alle übergangenen Einträge auf Gleichheit zu testen. Ein ähnliches Verfahren aus dem Bereich Patternmatching“ ist als Rabin-Karp-Methode ” bekannt. Um mit einer – den einzelnen Eintrag betreffenden – kleineren Hashtabelle auszukommen, können wir auch vor der Berechnung des Hashwertes einen Fingerabdruck der Relation berechnen und nur diesen hashen. In [LM94] wird vorgeschlagen, den eine Relation repräsentierenden Bitstring als Polynom über F2 zu interpretieren (1001 entspricht dann z. B. X 3 + 1) und dieses modulo eines festgewählten irreduziblen Polynoms des Grades 64 zu reduzieren. Dieser Fingerabdruck kann dann wiederum in 64 Bit oder 8 Byte gespeichert werden. Gehen wir davon aus, dass uns im Folgenden eine wiederholungsfreie Menge von korrekten Relationen vorliegt. Für jede dieser Relationen formen wir einen Exponentenvektor aus den modulo 2 reduzierten e(p), g(π) und f (η), wobei p, π und η jeweils über P, P und E laufen. Aus den Exponentenvektoren als Spalten konstruieren wir schließlich eine Matrix H. Der letzte schwierige Schritt des SNFS ist die Lösung des homogenen Gleichungssystems Hx = 0 modulo 2. In frühen Anwendungen des SNFS geschah dies noch mit einfacher Gauß-Elimination. Heutzutage sind jedoch Gleichungssysteme mit mehreren Millionen Zeilen und Spalten keine Seltenheit mehr (6,7 Millionen bei der Faktorisierung von RSA-155 [CDL+ 00]), so dass besser angepasste Methoden verwendet werden müssen, allein um dem immensen Speicherbedarf Rechnung zu tragen. Ein Gleichungssystem dieser Größenordnung ist nur deshalb überhaupt praktisch lösbar, weil die Matrix H extrem schwach besetzt ist und modulo 2 gerechnet wird. Da es in F2 nur die Skalare 0 und 1 gibt, ist eine lineare Abhängigkeit unter den Exponentenvektoren nichts anderes als eine Teilmenge von diesen, die aufsummiert den Nullvektor liefert. P. L. Montgomery hat eine Variante des Lanczos-Algorithmus entwickelt, die dies ausnutzt und sich auch schon in der Praxis bewährt hat. Da eine ausführliche Beschreibung dieser Methode den Rahmen dieser Arbeit sprengen würde, verweisen wir lediglich auf [Mon95a]. Nach Lösung des Gleichungssystems formen wir schließlich eine Menge M von Exponentenvektoren derart, dass die j−te Spalte von H genau dann in M liegt, wenn xj = 1 erfüllt ist. Nach Konstruktion sind die Elemente von M F2 -linear abhängig. Schreiben wir Exponentenvektoren v(j) in der Form v(j) = (e(j) (p) mod 2, f(j) (η) mod 2, g(j) (π) mod 2)Tp∈P,η∈E,π∈P , dann folgt hieraus: X 1. Für alle p ∈ P gilt e(j) (p) = 2np für ein np ∈ N. j mit v(j) ∈M 2. Für alle η ∈ E gilt X f(j) (η) = 2nη für ein nη ∈ N. g(j) (p) = 2nπ für ein nπ ∈ N. j mit v(j) ∈M 3. Für alle π ∈ P gilt X j mit v(j) ∈M Q Q Q Definieren wir X := p∈P pnp und Y durch η∈E φ(η)nη π∈P φ(π)nπ = Y mod N , so erhalten wir die quadratische Kongruenz Y Y Y φ(η)2nη X2 = p2np ≡ φ(π)2nπ ≡ Y 2 (N ). (3.14) p∈P η∈E π∈P Wie in Kapitel 1 bewiesen, ist die Zahl ggT(X−Y, N ) mit mindestens 50 %−iger Wahrscheinlichkeit ein nichttrivialer Teiler von N . In der Praxis suchen wir natürlich so viele Relationen, dass mehrere lineare Abhängigkeiten unter den Exponentenvektoren berechnet werden können, damit wir N vollständig faktorisieren können. 40 3.9 DIE LARGE-PRIME-VARIANTE 3.9 Die Large-Prime-Variante Die in diesem Abschnitt beschriebene Large-Prime-Variante des Number Field Sieve hat zwar keine Auswirkungen auf die theoretische Laufzeitanalyse, macht das Number Field Sieve aber für praktische Anwendungen erst interessant. Large-Prime-Varianten sind auch aus anderen Algorithmen der Kombinieren von Kongruenzen-Familie bekannt, insbesondere sei hier das Quadratische Sieb erwähnt. Die Idee dieser Variante ist es, nicht nur nach Paaren (a, b) zu suchen, für die a − bm und a − bα vollständig über P , bzw. E und P zerfallen, sondern vielmehr auf jeder Seite zusätzlich einen oder mehrere große Primfaktoren – die sogenannten Large Primes – zuzulassen. Die Maximalgröße dieser Primelemente wird vor dem Algorithmus durch zwei neue Schranken festgelegt (eine rationale und eine algebraische). Die so gewonnen Relationen heißen partielle Relationen ( partial relations“) im ” Gegensatz zu den vollen Relationen ( full relations“) ohne große Primfaktoren. Bei gleichen a- und ” b-Intervallen findet man nun erheblich mehr partielle als volle Relationen (zur Faktorisierung von F9 trugen z. B. 45719 volle und 3114327 partielle Relationen bei). In der englischsprachigen Literatur ist es üblich, den Begriff large prime“ auf der rationalen und large ” ” prime ideal“ auf der algebraischen Seite zu verwenden. In dieser Arbeit hingegen ist der Terminus Large Prime“ ein Oberbegriff für große Primzahl“ und großes Primideal“. ” ” ” Zur Vereinfachung lassen wir auf jeder Seite nur eine Large Prime zu (die Faktorisierung von F9 arbeitete mit dieser Methode). Wie die vorgestellten Verfahren verallgemeinert werden können, wird z. B. in [DL95] beschrieben. Die dort vorgestellte Variante lässt 2 Large Primes auf jeder Seite zu und wurde zur (General Number Field Sieve-) Faktorisierung von RSA-130 eingesetzt. Die heutzutage zum Einsatz kommenden Verfahren stellen wir in Abschnitt 4.5 vor. 3.9.1 Wie können partielle Relationen gefunden und verwendet werden? Sind die Grenzen für die Large Primes erst einmal festgelegt, dann lassen sich die partiellen wie auch die vollen Relationen mit einem leicht modifzierten Siebverfahren finden. Zu diesem Zweck reicht es aus, die Akzeptanzschranke des Siebes oder ggf. die Initialisierung der zu siebenden Werte geeignet anzupassen. Angenommen, wir lassen auf der rationalen Seite einen Primfaktor p mit B1 < p < B3 und auf der algebraischen Seite ein Primideal p mit B2 < N (p) < B4 zu. Verwenden wir z. B. das in Abschnitt 3.6 beschriebene Siebverfahren, dann bedeutet dies, den Siebarray Ab im zweiten Schritt mit den gerundeten Werten von − log(a − bm) + log B3 + Tratkor zu initialisieren, bevor das rationale Sieb startet. Auf der algebraischen Seite müssen wir in Schritt 9 testen, ob die Ungleichung Ab [a] − G ≥ [log |ad − bd a0 | − log B4 − Talgkor ] erfüllt ist. Damit erreichen wir, dass das neue Sieb Paare (a, b) akzeptiert, für die a − bm über P und a − bα über E ∪ P zerfallen mit Ausnahme eines Faktors n mit B1 < n < B3 auf der rationalen und eines Idealfaktors a mit B2 < N (a) < B4 auf der algebraischen Seite. Setzen wir B3 < B12 und B4 < B22 voraus, dann können wir davon ausgehen, dass die gefundenen großen Faktoren tatsächlich prim sind (da nicht mit Potenzen und den kleinsten Primelementen gesiebt wurde, ist dies jedoch nicht beweisbar). Jetzt zeigen wir, wie sich aus partiellen Relationen volle kombinieren lassen. Zuerst führen wir eine genauere Klassifikation der Relationen ein: Notation 3.23 (ff-, pf-, fp- und pp-Relationen) Im Folgenden bezeichnen wir volle Relationen mit ff (für full-full“), Relationen mit rationaler und ” ohne algebraische Large Prime mit pf (für partial-full“) und die weiteren partiellen Relationen analog ” mit fp und pp. Der einfachste Fall tritt ein, wenn zwei pf-Relationen mit demselben großen rationalen Primfaktor pl 41 KAPITEL 3 DAS SPECIAL NUMBER FIELD SIEVE vorliegen: pl · Y φ(p)e1 (p) ≡ p∈P pl · Y Y φ(η)f1 (η) η∈E φ(p)e2 (p) ≡ p∈P Y Y φ(π)g1 (π) (N ) (3.15) φ(π)g2 (π) (N ). (3.16) π∈P φ(η)f2 (η) η∈E Y π∈P Die Multiplikation dieser Relationen liefert dann: Y Y Y p2l · φ(p)e1 (p)+e2 (p) ≡ φ(η)f1 (η)+f2 (η) φ(π)g1 (π)+g2 (π) p∈P η∈E (N ). (3.17) π∈P Die Relation aus (3.17) kann wie eine volle Relation behandelt werden, da der Faktor p2l bereits ein Quadrat ist und daher bei der Erstellung des Exponentenvektors nicht beachtet werden muss. Falls dieser Exponentenvektor zu der durch Lösen des linearen Gleichungssystems bestimmten Teilmenge linear abhängiger Exponentenvektoren gehört, muss der Faktor p2l natürlich auf der rationalen Seite der quadratischen Kongruenz (3.14) eingefügt werden. Leider lässt sich diese Methode auf die algebraische Seite nicht übertragen, da man, um die neu gewonnene Relation bei der Quadratbildung berücksichtigen zu können, einen Erzeuger des involvierten großen Primideals kennen müsste. Die Bestimmung solcher Erzeuger möchten wir jedoch vermeiden. Ein alternative Behandlung der Relationen (3.15) und (3.16), welche für jede Art von partieller Relation praktikabel ist, ist die Division anstelle der Multiplikation. Dies hat das Verschwinden des störenden großen Faktors zur Folge. Allerdings können nun auch negative Exponenten der Faktorbasiselemente auftreten. Dies ist unproblematisch, sofern alle Faktorbasiselemente teilerfremd sind zu N , also modulo N invertierbar sind. Hierbei handelt es sich jedoch um eine natürliche Forderung, da andernfalls bereits ein nichttrivialer Faktor von N gefunden wäre. Offensichtlich lassen sich analog auch Paare von fp-Relationen mit demselben großen Primideal pl und Paare von pp-Relationen, die dieselbe große Primzahl pl sowie dasselbe große Primideal pl besitzen, behandeln. Es liegt nahe, dieses Verfahren auch für mehr als zwei partielle Relationen anzuwenden. Um sprachlich nicht mehr zwischen den verschiedenen Ausprägungen partieller Relationen unterscheiden zu müssen, führen wir die symbolische große Primzahl 1, bzw. das symbolische große Primideal 1 ein. So enthält jede partielle Relation je genau eine Large Prime auf der rationalen und der algebraischen Seite. Definition 3.24 (Zykel) Eine Menge Z von partiellen Relationen rab , wobei rab durch das gute Paar (a, b) generiert wurde, heißt ein Zykel, wenn es zu jedem rab ∈ Z ein sogenanntes Relationenvorzeichen s(a, b) ∈ {−1, 1} gibt, so dass gilt: Y Y (a − bm)s(a,b) = pe(p) p∈P (a,b) mit rab ∈Z Y und (a − bα)s(a,b) Y = η∈E (a,b) mit rab ∈Z η f (η) Y π g(π) π∈P für geeignete e(p), f (η) und g(π) ∈ Z. Durch entsprechende Multiplikationen und Divisionen der an diesem Zykel Z beteiligten Relationen erhalten wir schließlich folgende volle Relation: Y Y Y φ(π)g(π) . φ(p)e(p) = φ(η)f (η) p∈P 3.9.2 η∈E π∈P Wie finden wir Zyklen? In diesem Unterabschnitt werden wir zeigen, dass sich die Suche nach Zyklen partieller Relationen auf ein einfach zu lösendes graphentheoretisches Problem reduzieren lässt. Zu diesem Zweck definieren wir 42 3.9 DIE LARGE-PRIME-VARIANTE einen ungerichteten Graph GLP wie folgt: Jeder in einer partiellen Relation vorkommenden großen Primzahl, bzw. jedem solchen großen Primideal entspricht eine Ecke dieses Graphen. Genau dann besitzt GLP eine Kante zwischen den Ecken pl und pl , wenn es eine partielle Relation gibt, die das Paar (pl , pl ) enthält. Nach Konstruktion ist GLP ein bis auf die zur symbolischen Large Prime 1 gehörigen Ecke ein bipartiter Graph, wobei die Menge V \ {1} partitioniert ist in die den großen Primzahlen entsprechenden Ecken einerseits und die zu den großen Primidealen gehörigen Ecken andererseits. Es ist leicht einzusehen, dass jeder Zykel in GLP einen Zykel partieller Relationen liefert. Hat der Zykel gerade Länge, dann können wir seinen Kanten folgen und den beteiligten Relationen alternierend das Relationenvorzeichen ±1 zuweisen. Andernfalls muss der Zykel die Ecke 1 enthalten, denn ein bipartiter Graph besitzt keine ungeraden Zykel. In diesem Fall verfahren wir wie gerade ausgeführt, nur müssen wir mit der Relationenvorzeichenvergabe bei einer der mit der Ecke 1 inzidenten Kanten beginnen. Der Graph GLP in der oben definierten Form dient lediglich der Veranschaulichung der in diesem Abschnitt hergeleiteten Zusammenhänge, er wird jedoch in der Praxis nicht aufgebaut. Für das Number Field Sieve ist es nicht notwendig, alle Zyklen von GLP zu bestimmen, vielmehr genügt die Berechnung einer sogenannten Zykelbasis. Um diesen Begriff zu präzisieren, führen wir den Zyklenraum, eine F2 -Vektorraumstruktur auf den Zyklen eines Graphen, ein: Definition 3.25 (Ketten und Randoperator) Sei G ein Graph. • Eine 0-Kette von G ist eine formale Linearkombination P i vi der Ecken vi mit i ∈ F2 . • Eine 1-Kette von G ist eine formale Linearkombination P i ei der Kanten ei mit i ∈ F2 . • Der Randoperator δ überführt 1-Ketten in 0-Ketten , so dass gilt 1. δ ist linear. 2. Ist e = v1 v2 eine Kante, so ist δe = v1 + v2 . Dieser Definition gemäß sind Zyklen genau die 1-Ketten mit verschwindendem Rand. Ein Fundamentalzykel oder Kreis ist ein Zykel, dessen innere Ecken paarweise verschieden sind. Die Summe zweier Zyklen Z1 und Z2 besteht anschaulich beschrieben aus der symmetrischen Differenz der Kanten von Z1 und der Kanten von Z2 . Man kann zeigen, dass der Zyklenraum eine Basis (die Zykelbasis) aus Fundamentalzyklen besitzt und das sich die Anzahl der Basiselemente (der Zyklenrang) m(G) bestimmen lässt durch die Formel m(G) = − ν + k. Hierbei bezeichnet die Anzahl der Kanten, ν die Anzahl der Ecken und k die Anzahl der Zusammenhangskomponenten von G. Abbildung 3.1 verdeutlicht den Begriff Zykelbasis. Für unsere Zwecke ist es nicht ratsam, verschiedene volle Relationen aus linear abhängigen Zyklen zu gewinnen. Ist z. B. Z = Z1 + Z2 eine Kombination von Zyklen von GLP , dann entpuppt sich die aus Z gewonnene volle Relation als Produkt der aus Z1 und Z2 abgeleiteten. In der Matrix H ist der aus Z bestimmte Exponentenvektor die Summe der anderen beiden. Für die quadratische Kongruenz X 2 ≡ Y 2 (N ), die aus dieser linearen Abhängigkeit berechnet wird, gilt schließlich X ≡ Y (N ); sie liefert daher nur triviale Teiler von N . Insofern gilt unsere Aufmerksamkeit im Folgenden dem Auffinden einer Zykelbasis des Graphen GLP . Ein Problem der Large-Prime-Variante ist, dass sich den partiellen Relationen nicht direkt ansehen lässt, wie viele Fundamentalzyklen der aus ihnen konstruierte Graph besitzt. Um dies herauszufinden, müssen wir die Formel m(G) = − ν + k heranziehen, also insbesondere die Zahl der Ecken und der Zusammenhangskomponenten von GLP bestimmen (die Zahl der Kanten entspricht natürlich der Anzahl partieller Relationen). Daher beschreiben wir im Folgenden einen Algorithmus, der lediglich diese Größen berechnet und somit schneller ist als der hierauf aufsetzende Algorithmus zum Auffinden einer Zykelbasis. In der Praxis kann man den Zählalgorithmus parallel zum Siebprozess laufen 43 KAPITEL 3 DAS SPECIAL NUMBER FIELD SIEVE Abbildung 3.1: Beispiel einer Zykelbasis lassen und jede neu gefundene partielle Relation unmittelbar eingeben. Sobald die Zahl der zu erwartenden Fundamentalzyklen zusammen mit den durch das Sieb direkt gefundenen vollen Relationen ausreichend groß ist, kann der Siebprozess gestoppt werden. Der hier beschriebene Zählalgorithmus benutzt die wohlbekannte Union-Find-Methode. Dieses Verfahren erhält als Eingabe eine Menge M sowie eine Relation ∼∈ M × M und baut einen Wald auf, dessen Bäume den Äquivalenzklassen des reflexiven, symmetrischen und transitiven Abschlusses von ∼ entsprechen. In unserem Fall ist M die Eckenmenge von GLP , die Relation ∼ wird durch die Kanten von GLP repräsentiert und die gefundenen Äquivalenzklassen beschreiben die Zusammenhangskomponenten des Graphen. Die aufgebauten Bäume sind von den Blättern zur Wurzel gerichtet. Der Wald kann daher durch einen mit den Ecken indizierten Array ALP dargestellt werden, wobei ALP [v] den Vater der Ecke v enthält. Zunächst definieren wir die Prozedur Find(A, v). Diese steigt in dem durch den Array A repräsentierten Wald von der Ecke v hinauf zur Wurzel und liefert diese als Ergebnis. Als Seiteneffekt werden alle besuchten Knoten direkt zur Wurzel gerichtet. Find(A, v) : if A[v] = v then return v else i:=Find(A, A[v]) A[v] := i return i fi Der Zählalgorithmus baut aus Effizienzgründen jeden Baum so auf, dass der kleinste Knoten die Wurzel bildet. Daher führen wir ein totale Ordnung auf den Large Primes ein: Sei (a, b) ein gutes Paar mit großem Primideal pl und einer großen Primzahl ql . Gilt pl 6= 1, dann ist die Norm von pl eine rationale Primzahl p (wir erinnern uns, dass nach Satz 3.11 alle Primidealteiler von a − bα ersten Grades sind). Wie in 44 3.9 DIE LARGE-PRIME-VARIANTE Abschnitt 3.3 hergeleitet, können wir dem Primideal pl eindeutig ein Tupel (p, c) zuordnen, so dass a ≡ bc (p) für c ∈ {0, . . . , p − 1} erfüllt ist. Dies erlaubt uns die Unterscheidung zwischen Primidealen gleicher Norm. Um große Primzahlen formal mit großen Primidealen vergleichen zu können, schreiben wir (ql , −1) statt ql (die zweite Komponente wird negativ gesetzt, damit rationale und algebraischen Large Primes nicht verwechselt werden können). Der 1 ordnen wir das Paar (1, 1) zu. Ist dann ≤Z die übliche Ordnung auf Z, können wir aus der lexikograpische Kombination von ≤Z mit sich selbst eine Ordnung auf Large Primes definieren: (p1 , c1 ) ≤ (p2 , c2 ) ⇔ p1 <Z p2 oder p1 = p2 und c1 ≤Z c2 . Der Zählalgorithmus Schritt 1: Initialisiere das Feld ALP mit 0 und setze den Eckenzähler nE sowie den Zähler nZ der Zusammenhangskomponenten auf 0. Schritt 2: Bearbeite die partielle Relation R, die die große Primzahl pR und das große Primideal pR enthält, wie folgt: O.B.d.A sei pR ≤ pR . 2a) Ist ALP [pR ] = 0 und ALP [pR ] = 0, so setze nE := nE + 2, nZ := nZ + 1, ALP [pR ] := pR und ALP [pR ] := pR . 2b) Ist ALP [pR ] 6= 0 und ALP [pR ] = 0, so setze nE := nE + 1 und ALP [pR ] := Find(ALP , pR ). 2c) Ist ALP [pR ] = 0 und ALP [pR ] 6= 0, so setze nE := nE + 1 und berechne die Wurzel w(pR ) := Find(ALP , pR ). Gilt pR < w(pR ), so setze ALP [pR ] := pR und ALP [w(pR )] := pR . Gilt w(pR ) ≤ pR , so setze ALP [pR ] := w(pR ). 2d) Ist ALP [pR ] 6= 0 und ALP [pR ] 6= 0, so berechne die Wurzeln w(pR ) := Find(ALP , pR ) und w(pR ) := Find(ALP , pR ). Gilt w(pR ) < w(pR ), so setze nZ := nZ − 1 und ALP [w(pR )] := w(pR ). Gilt w(pR ) < w(pR ), so setze nZ := nZ − 1 und ALP [w(pR )] := w(pR ). Schritt 3: Den letzten Schritt wiederhole für alle partiellen Relationen. Schritt 4: Setze ν := nE und k := nZ . Erläuterungen und Ergänzungen • Abbildung 3.2 zeigt ein Beispiel für die Anwendung des Zählalgorithmus. • Im Verlauf des Algorithmus ist ALP [v] mit dem Vaterknoten von v belegt. Solange dieser Wert 0 ist, wurde der Knoten v noch nicht aufgenommen. • Die Größe des Arrays muß so gewählt werden, dass alle Large Primes aufgenommen werden können. Ihre exakte Anzahl wird erst durch den Zählalgorithmus bestimmt, daher behelfen wir uns mit einer geschätzten oberen Schranke. • Der Algorithmus unterscheidet nicht zwischen rationalen und algebraischen Large Primes, daher ist die Forderung pR ≤ pR in Schritt 2 tatsächlich keine Einschränkung. • Der Grund für die Effizienz des Union-Find-Verfahrens liegt in der Konstruktion besonders flacher Bäume. Um dies zu erreichen, wird die Datenstruktur mit jedem Aufruf von Find weiter optimiert, indem alle besuchten Knoten direkt auf die gefundene Wurzel geleitet werden. • Eine Invariante des Zählalgorithmus ist, dass für bereits aufgenommene Knoten v1 und v2 folgende Äquivalenz gilt: Find(ALP , v1 ) = Find(ALP , v2 ) ⇔ v1 und v2 liegen in derselben Zusammenhangskomponente des konstruierten Graphen. 45 KAPITEL 3 DAS SPECIAL NUMBER FIELD SIEVE !#"%$&'")( +*,!- ./. #"%$&"0( +*,1- .',/. !#"2$&'")( * - !#"%$&'")( * - ./. #"%$&")( +*1 !#"%$&'")( *,!- Abbildung 3.2: Beispielanwendung des Zählalgorithmus • Schritt 2.d) realisiert die eigentliche Union-Prozedur, d. h. die Wurzeln von pR und pR werden berechnet und der Baum mit der größeren Wurzel an den anderen gehängt. Die Ordnung der Large Primes wurde so gewählt, dass die zu kleineren Primzahlen gehörigen Large Primes kleiner sind als die zu größeren gehörigen. Da kleine Large Primes häufiger sind als große, soll hiermit erreicht werden, dass in den meisten Fällen der kleinere an den größeren Baum gehängt wird. Auch dies trägt zu flachen Strukturen und insofern zur Laufzeitverbesserung bei. • 2.b) und 2.c) sind lediglich Spezialfälle von 2.d). • Sind die in Schritt 2.(d) berechneten Wurzeln gleich, dann haben wir einen Basiszykel gefunden. Eine weitere Invariante des Zählalgorithmus ist, dass nach 0 bearbeiteten Relationen genau 0 + nE − nZ Basiszykel gefunden worden sind. Diese werden jedoch nicht weiter beachtet, da ein Herausschreiben aufgrund der durch die Find-Prozedur veränderten Vaterknoten nicht möglich und ein Mitzählen nicht nötig ist, da wir den Zyklenrang auch am Ende des Algorithmus berechnen können. • Nach dem Zählalgorithmus wissen wir, dass die verarbeiteten partiellen Relationen genau −ν+k volle Relationen liefern. Der nächste Schritt ist die Bestimmung der Zykelbasis. Der besseren Lesbarkeit wegen beschreiben wir den Suchalgorithmus auf Graphebene. Zur Veranschaulichung arbeiten wir mit den Kanten und Ecken des Graphen GLP und bauen hieraus einen Wald WLP auf, dessen Bäume den Zusammenhangskomponenten von GLP entsprechen. Wie sich die verwendeten Operationen (Knoten oder Kante 46 3.9 DIE LARGE-PRIME-VARIANTE hinzufügen, den Baum den Vaterpfeilen folgend durchlaufen, etc.) mithilfe einer Arrayrepräsentation des konstruierten Waldes WLP verwirklichen lassen, lässt sich der Beschreibung des Zählalgorithmus entnehmen. Um WLP aufzubauen, können wir ein ähnliches Prinzip wie im Zählalgorithmus verwenden, nur entfällt das Umleiten der Pfeile direkt zur Wurzel, weil wir, um die gefundenen Zyklen ablesen zu können, die Originalstruktur des Graphen GLP nicht zerstören dürfen. WLP kann durch einen mit den Knoten von GLP indizierten Array dargestellt werden. Aus dem Zählalgorithmus kennen wir die Wurzel jeder Zusammenhangskomponente von GLP , hierauf baut der Suchalgorithmus auf. Der Suchalgorithmus Schritt 0: Beginne mit allen Wurzelknoten und setze ihre Tiefe auf 0. Schritt i: Suche unter den noch nicht bearbeiteten Kanten von GLP diejenigen, die mindestens mit einer Ecke der Tiefe i − 1 von WLP inzident sind. Gibt es keine solche, so stoppe. Ist (u, v) eine Kante von GLP , so dass u in WLP mit Tiefe i − 1 vorhanden ist und v neu ist in WLP , dann nimm die Ecke v, behaftet mit der Tiefe i, und die Kante (u, v) in WLP auf. Letzteres wird erreicht, indem der Vater von v auf u gesetzt wird. Ist (u, v) eine Kante von GLP , so dass u mit der Tiefe i−1 und v mit Tiefe i−1 oder Tiefe i in WLP vorhanden sind, so wurde ein Basiszykel gefunden. Schreibe diesen heraus, indem die Richtungen der Kanten von v zur Wurzel umgedreht werden und anschließend von u nach v den Kanten folgend alle beteiligten Relationen notiert werden. Die der Kante (u, v) zugeordnete Relation schließt den Zykel. Anschließend werden die Kanten von der Wurzel zu v wieder umgerichtet. Die Kante (u, v) nimm nicht in WLP auf. So verfahre mit allen gefundenen Kanten. Erläuterungen und Ergänzungen • Die Abbildung 3.3 illustriert eine Anwendung des Suchalgorithmus. • Die Nichtaufnahme der einen Zykel schließenden Kante garantiert, dass die gefundenen Zyklen tatsächlich linear unabhängig sind. • Es ist leicht einzusehen, dass der Suchalgorithmus für jede Zusammenhangskomponente K von GLP einen spannenden Baum konstruiert. Bezeichnet man mit K die Zahl der Kanten und mit νK die Zahl der Ecken in K, dann besitzt dieser spannende Baum νK − 1 Kanten und somit werden in der Zusammenhangskomponente K genau K − (νK − 1) Zyklen gefunden. Summiert man nun über alle Zusammenhangskomponenten, so erhält man − ν + k = m(GLP ) Zyklen. • Aus den beiden vorangegangenen Punkten folgt die Korrektheit des Suchalgorithmus. • Der Suchalgorithmus arbeitet erst eine Tiefe komplett ab, bevor neue, tiefere Knoten aufgenommen werden. Warum diese Breitensuche verhindern kann, dass unnötig große Zyklen konstruiert werden, verdeutlicht exemplarisch nebenstehende Abbildung. Mit der oben beschriebenen Breitensuche gewinnen wir die beiden kleinen Zyklen v1 v2 v5 v3 v1 und v2 v4 v6 v5 v2 , wohingegen man bei ungeschickterer Reihenfolge der Kantenbearbeitung den Zykel v2 v4 v6 v5 v2 sowie den großen Zykel v1 v2 v4 v6 v5 v2 v1 erhält. • Die Breitensuche benötigt als Hilfsmittel die Tiefe der Knoten von WLP . Da jedoch nur zwischen aktueller und Vorgängertiefe unterschieden werden muss, reicht es aus, lediglich ihre Parität zu speichern; hierfür wird daher nur ein zusätzliches Bit benötigt. 47 KAPITEL 3 DAS SPECIAL NUMBER FIELD SIEVE *#,+-/. %'-0-214356 -798 $(&+-/. %'-0-/1435-76 8 !" $#&%')( Abbildung 3.3: Beispielanwendung des Suchalgorithmus • Zusätzlich zum Vaterknoten muss der Arrayeintrag zum Knoten v auch einen Datensatz enthalten, der es uns erlaubt, die dem Paar (v, Vater von v) zugrundeliegende partielle Relation zu ermitteln. Dies ist notwendig, um gefundene Zyklen herauszuschreiben. • Da in jedem Durchlauf des Suchalgorithmus alle verbliebenen Relationen geprüft werden, lässt sich viel Zeit sparen, indem die Menge der Relationen vor Durchführung der Suche einem Filterverfahren unterzogen wird. So können wir z. B. die Zyklen der Länge 2 im Voraus ermitteln und jeweils eine beteiligte Kante entfernen; dann hat GLP keine Mehrfachkanten. Zyklen der Länge 2 entstehen aus zwei Relationen, die dieselbe große Primzahl und dasselbe große Primideal besitzen. Diese Relationen lassen sich mithilfe eines Hashverfahrens schnell bestimmen, z. B. durch Variation des in Abschnitt 3.8 beschriebenen Vorgehens, welches mehrfach vorhandene Relationen ermittelt. Eine weitere Möglichkeit besteht darin, die partiellen Relationen nach ihren Large Primes zu ordnen und Paare, die zu Zweierzykeln führen, einfach abzulesen. Aus n partiellen Relationen mit identischen Large Primes lassen sich n − 1 linear unabhängige Zweierzykeln kombinieren. Nachdem wir hieraus volle Relationen gebildet haben, lassen sich n − 1 Relationen entfernen. Um Relationen nach ihren Large Primes zu ordnen, können wir z. B. die lexikographische Kombination von ≤ mit sich selbst benutzen. Diese Vorgehensweise bietet den zusätzlichen Vorteil, dass wir auch schnell all diejenigen Relationen verwerfen können, die garantiert zu keinem Zykel gehören, weil ihre große Primzahl oder ihr großes Primideal nur genau einmal vorkommt. In Abschnitt 4.5 werden wir ausgefeiltere Filtertechniken kennenlernen. 3.10 Der allgemeine Fall Z[α] 6= Oα Der Ring Z[α] ist durch die Z-Basis {1, α, . . . , αd−1 } gegeben und daher einfach“ zu handhaben, ” da sich seine Elemente durch ganzrationale Polynome des Grades d − 1 repräsentieren lassen. Um 48 3.10 DER ALLGEMEINE FALL Z[α] 6= Oα diesen Vorteil nicht einzubüßen, könnte man im Fall Z[α] $ Oα auf die Idee kommen, α durch eine andere ganzalgebraische Zahl β mit Q(α) ∼ = Q(β) zu ersetzen, so dass Oβ = Z[β] gilt. Leider gibt es jedoch algebraische Zahlkörper K, für die OK 6= Z[α] für alle α ∈ OK erfüllt ist. Ein Beispiel √ √ hierfür ist der Körper Q( 7, 14), wie die Lösung zur Aufgabe 1.79 in [Mol99] zeigt. Daher gibt es für Ganzheitsringe algebraischer Zahlkörper kein Primitives-Element-Theorem“ wie z. B. für algebraische ” Zahlkörper selbst. Die Trivialbehandlung des Problems scheidet also aus. Welche Konsequenzen ergeben sich für den in diesem Kapitel beschriebenen Algorithmus, wenn Z[α] nicht mit dem Ganzheitsring Oα identisch, sondern lediglich eine echte Teilmenge desselben ist? Im Beweis von Satz 3.10 haben wir gezeigt, dass Oα = Z[α] gilt, wenn Z[α] faktoriell ist. Die Kontraposition dieser Aussage besagt, dass im Fall Z[α] Oα der Ring Z[α] nicht mehr faktoriell sein kann. Es ist klar, dass unter diesen Umständen der SNFS -Algorithmus in der bislang hergeleiteten Form nicht mehr funktioniert, denn ein zentrales Ziel ist die Zerlegung von Ausdrücken der Form a − bα in Primelemente von Z[α]. Vielmehr erscheint es notwendig, in Oα statt wie bisher in Z[α] zu rechnen. Welche Anpassungen des SNFS -Algorithmus hierfür erforderlich sind, ist Gegenstand dieses Abschnittes. Die folgenden Überlegungen beschreiben die ersten Versuche, das SNFS auf beliebige Zahlen zu verallgemeinern. Wie wir in Kapitel 4 sehen werden, wurde schließlich doch ein gänzlich anderer Weg beschritten. Nichtsdestotrotz können wir die Ergebnisse dieses Abschnittes für den Quadratwurzelschritt des GNFS verwenden, deshalb haben die folgenden Ausführungen an Aktualität nichts verloren. 3.10.1 Die Berechnung von Oα Einen Unterring von Q(α), der als Z-Modul endlich erzeugt ist und maximalen Rang d besitzt, nennen wir eine Ordnung von Q(α). Sowohl Oα als auch Z[α] sind Ordnungen von Q(α). Da eine komplexe Zahl θ genau dann ganzalgebraisch ist, wenn sie Element eines als Z-Modul endlich erzeugten Unterringes von C ist, ist jede Ordnung von Q(α) in Oα enthalten. Aus diesem Grund nennt man Oα auch die Maximalordnung von Q(α) (der Beweis obiger Charakterisierung ganzalgebraischer Zahlen findet sich z. B. in [Mol99], Thm. 1.51). Um in Oα zu rechnen, müssen wir zunächst eine geeignete Z-Basis von Oα bestimmen. Bereits dieser Punkt ist im Allgemeinen alles andere als trivial. M. Pohst und H. Zassenhaus haben ein Verfahren, den sogenannten Rundenalgorithmus, entwickelt, welches von einer bekannten Ordnung (also z. B. Z[α]) ausgehend, diese schrittweise vergrößert, bis die Maximalordnung Oα erreicht ist. Eine ausführliche Beschreibung der verwendeten Techniken findet sich z. B. in [Coh96], Kapitel 6.1. Wir beschränken uns an dieser Stelle lediglich auf die Darstellung der Idee dieses Verfahrens und eine Diskussion, ob dieses im vorliegenden Fall überhaupt praktikabel ist. Ist p eine ganzrationale Primzahl, dann heißt eine Ordnung O von Q(α) p-maximal, wenn der Index [Oα : O] nicht durch p teilbar ist. Von M. Pohst und H. Zassenhaus stammt eine Methode, eine nicht p-maximale Ordnung zu einer p-maximalen Ordnung zu vergrößern (natürlich ohne bereits bestehende p0 −Maximalitäten zu zerstören). Eine Ordnung, die für alle Primzahlen p-maximal ist, muss identisch mit Oα sein. Es genügt also, alle Primzahlen p, die [Oα : Z[α]] teilen, zu bestimmen und die Pohst-ZassenhausMethode – ausgehend von Z[α] – für genau diese Primzahlen anzuwenden. Für hinreichend komplexe Körper Q(α) ist der zeitaufwendigste Schritt des Verfahrens tatsächlich die Ermittlung der Primfaktoren von [Oα : Z[α]]. Wie jedoch finden wir – ohne Oα bereits zu kennen – die auch für die Charakterisierung von Primidealen wichtigen Teiler von [Oα : Z[α]]? Eine Eigenschaft der Diskriminante von Q(α) kann uns hier weiterhelfen. Sind ω1 , . . . , ωd Q-linear unabhängige Elemente von Oα , dann ist ∆(ω1 , . . . , ωd ) – die Diskriminante von ω1 , . . . , ωd – definiert als das Quadrat der Determinante der Matrix (σi (ωj )), wobei σi alle Q-Monomorphismen von Q(α) nach C durchläuft. Bekannterweise ist ∆Q(α) , die Diskriminante von Q(α), definiert als Diskriminante einer Ganzheitsbasis von Oα . Die Größe ∆Q(α) ist eine numerische Invariante des Zahlkörpers Q(α), d. h. unabhängig von der Wahl der Ganzheitsbasis. Der folgende Satz zeigt, wie ∆Q(α) und die Diskriminante des Minimalpolynoms von α zusammenhängen: 49 KAPITEL 3 DAS SPECIAL NUMBER FIELD SIEVE Satz 3.26 (Diskriminantenformel) Es gilt D(mα (X)) = [Oα : Z[α]]2 · ∆Q(α) . Beweis: Es ist bekannt, dass für die Diskriminante von 1, α, . . . , αd−1 folgende Formel gilt Y ∆(1, α, . . . , αd−1 ) = (σi (α) − σj (α))2 , 1≤i<j≤d da sie das Quadrat einer Vandermonde-Determinante ist (für Details siehe den Beweis von Thm. 2.6 aus [ST87]). Andererseits gilt nach Definition der Diskriminante eines Polynoms ebenfalls Y D(mα (X)) = (σi (α) − σj (α))2 , 1≤i<j≤d da mα (X) normiert ist und die Konjugierten von α die Nullstellen von mα (X) sind. P Sei {ω1 , . . . , ωd } eine Ganzheitsbasis von Oα . Dann gilt αj = 1≤k≤d ak,j ωk mit geeigneten Koeffizienten ak,j ∈ Z für 0 ≤ j ≤ d − 1. P Die Anwendung eines Q-Monomorphismus liefert σi (αj ) = 1≤k≤d ak,j σi (ωk ), da σi auf Q die Identität ist. Daher gilt die Matrixidentität (σi (αj )) = (ai,j ) · (σi (ωj )). Wie man leicht nachrechnet, folgt mithilfe der Produktformel für Determinanten ∆(1, α, . . . , αd−1 ) = (det(σi (αj )))2 = det((ai, j) · (σi (ωj )))2 = (det(ai,j ))2 ∆Q(α) . Da (ai,j ) die Übergangsmatrix von Oα zu Z[α] ist, gilt | det(ai,j )| = [Oα : Z[α]]. Alles zusammenfassend erhalten wir D(mα (X)) = ∆(1, α, . . . , αd−1 ) = (det(ai,j ))2 · ∆Q(α) = [Oα : Z[α]]2 · ∆Q(α) , was zu zeigen war. Da ∆Q(α) eine ganzrationale Zahl ungleich Null ist (siehe Lemma 2.14 aus [ST87]), sagt dieser Satz aus, dass als Teiler von [Oα : Z[α]] nur quadratische Teiler von D(mα (X)) infrage kommen. Die Diskriminante eines Polynoms g(X) lässt sich auch aus der Resultierenden von g(x) und deren formaler Ableitung g 0 (X) berechnen: D(g(X)) = (−1)n(n−1)/2 Res(g(X), g 0 (X)) , a wobei n den Grad und a den Leitkoeffizienten von g(X) bezeichnen (siehe [Esc01], S. 37). In unserem Fall liegt mα (X) in der besonders einfachen Form f (X) = X d − a0 vor. Man rechnet leicht nach, dass sich für die Diskriminante von f (X) ergibt: d−1 Y d |D(f (X))| = d σi (α) = dd |N (α)|d−1 = dd |a0 |d−1 . 1≤i≤d Die letzte Gleichheit ist korrekt, da die Norm von α betragsmäßig dem konstanten Term des MinimalQ polynoms von α entspricht, wie man der Darstellung mα (X) = f (X) = 1≤i≤d (X − σi (α)) in C[X] entnehmen kann. Im vorliegenden Fall ist die Ermittlung der quadratischen Faktoren von D(f (X)) somit relativ unproblematisch, da man lediglich d, r und s faktorisieren muss (nach Konstruktion von f (X) gilt a0 = srld−t , ld − t > 0). Daher ist die Anwendung des oben beschriebenen Verfahrens von M. Pohst und H. Zassenhaus im SNFS praktikabel. Da dieses Verfahren auch den Wert von ∆Q(α) ermittelt, können wir mithilfe der Formel aus Satz 3.26 schließlich z := [Oα : Z[α]] berechnen. Wie in Abschnitt 3.2 bereits hergeleitet, gilt zθ ∈ Z[α] für alle 50 3.10 DER ALLGEMEINE FALL Z[α] 6= Oα θ ∈ Oα . Sofern die natürliche Bedingung ggT(z, N ) = 1 erfüllt ist, können wir den Homomorphismus φ eindeutig auf Oα fortsetzen: Für θ ∈ Oα definieren wir φ(θ) := z −1 φ(zθ). Dass hierdurch auch tatsächlich ein Homomorphismus gegeben ist, lässt sich analog zu Satz 3.4 beweisen. Diese Definition komplettiert die zu Anfang dieses Kapitels gegebene Beschreibung des SNFS -Basisalgorithmus. Welche Teile des Algorithmus müssen im Fall Z[α] 6= Oα verändert werden? Nach eingehender Inspektion der vorausgehenden Abschnitte erkennen wir, dass nur in den Abschnitten 3.3 (Primidealzerlegung von a − bα) und 3.5 (Suche nach Erzeugern) aus der Tatsache Z[α] = Oα Nutzen gezogen wurde. Lediglich diese Überlegungen müssen nun geeignet verallgemeinert werden, der Rest (u. A. die Zerlegung der Einheit, das Sieben, die Large-Prime-Variante,...) bleibt unverändert gültig. Der folgende Unterabschnitt bereitet die Verallgemeinerung von Abschnitt 3.3 vor. 3.10.2 Die Darstellung von Oα und Idealen Definition 3.27 (Hermitsche Normalform einer Matrix) Eine reguläre Matrix A = (ai,j ) ∈ M(n × n, Z) befindet sich in Hermitscher Normalform (abgekürzt HNF), wenn folgende Bedingungen erfüllt sind: 1. A ist obere Dreiecksmatrix. 2. ai,i > 0 für 1 ≤ i ≤ n. 3. Es gilt 0 ≤ ai,j ≤ ai,i für alle 0 ≤ i < j ≤ n. Für unsere Zwecke werden sich besonders die ersten beiden Punkte als nützlich herausstellen. Satz 3.28 (HNF-Basis) Seien M und M 0 freie Z-Moduln gleichen Ranges d < ∞ mit M 0 ⊆ M und sei weiterhin {µ1 , . . . , µd } eine Z-Basis von M . Dann existiert eine eindeutige Basis {µ01 , . . . , µ0d } von M 0 , so dass die Übergangsmatrix von {µ1 , . . . , µd } zu {µ01 , . . . , µ0d } in HNF ist. Diese Basis heißt die HNF-Basis von M’ bezüglich {µ1 , . . . , µd }. Beweis: Siehe [Coh96], Algorithmen 2.4.4 und 2.4.10 (konstruktiv). Wie lässt sich dieses Resultat für unsere Zwecke verwenden? Ist z := [Oα : Z[α]], dann ist zOα ein Z-Untermodul von Z[α]. Sowohl Z[α] als auch zOα sind freie Z-Moduln vom Rang d. Wählen wir für Z[α] die Standardbasis {1, α, . . . , αd−1 }, so garantiert der letzte Satz die Existenz einer HNF-Basis {ω1 , . . . , ωd } von zOα bezüglich {1, α, . . . , αd−1 } (wir sagen auch kurz bezüglich α“). ” Die Elemente ωz1 , . . . , ωzd liefern dann eine Ganzheitsbasis von Oα , für die gilt: • ωi ist ein ganzrationales Polynom in α vom Grad i − 1 für 1 ≤ i ≤ d, weil die HNF-Matrix des Übergangs obere Dreiecksform besitzt und ihre Diagonalelemente ungleich Null sind. • ω1 z = ±1, da 1 die kleinste positive Zahl aus Z ∩ Oα ist und als Folgerung aus dem letzten Punkt ausschließlich das erste Basiselement zur Z-Kombination ganzrationaler Zahlen beitragen kann. Diese Basis nennen wir die HNF-Basis von Oα bezüglich α. Für uns ist besonders der erste Punkt wichtig, denn ist ein θ ∈ Q(α) in der Standarddarstellung θ = g(α) gegeben, so lässt sich mithilfe der HNF-Basis von Oα bezüglich α durch Rückwärts-Einsetzen“ besonders effizient entscheiden, ob ” θ ∈ Oα erfüllt ist. Zu diesem Zweck haben wir HNF-Basen eingeführt. 51 KAPITEL 3 DAS SPECIAL NUMBER FIELD SIEVE Abschließend noch einige Überlegungen zu Idealen: Da auch die Ideale von Oα als Z-Moduln frei erzeugt vom Rang d sind (siehe [ST87], Thm. 5.8), existiert für jedes Ideal eine HNF-Basis bezüglich einer Ganzheitsbasis von Oα . Wie sich noch zeigen wird, sind für uns besonders die HNF-Basen der Indexteiler von Nutzen. Doch wie finden wir diese? Sei p eine ganzrationale Primzahl, die den Index z teilt. In Kapitel 6.2 aus [Coh96] ist ausführlich ein Algorithmus beschrieben, welcher die Primideale über p berechnet. Da wir voraussetzen, dass Oα ein Hauptidealring ist, existiert ein Oα -Erzeuger π von p, den wir mit dem Algorithmus 6.5.10 aus [Coh96] bestimmen können. Ist nun {ω1 , . . . , ωd } eine HNF-Basis von Oα bezüglich α, dann bildet die Menge {πω1 , . . . , πωd } ein Z-Erzeugendensystem von p. Aus den Darstellungen X πωj = ai,j ωi i=1,...,d konstruieren wir die Matrix (ai,j ) ∈ M(d × d, Z), welche p in Oα repräsentiert. Analog zum Beweis von Satz 3.28 erhalten wir ausschließlich durch elementare Spaltenumformungen eine HNF-Matrix (bi,j ) ∈ P M(d × d, Z), wie sie in Definition 3.27 beschrieben wurde. Definieren wir nun $j := i=1,...,d bi,j ωi , dann ist offenbar {$1 , . . . , $d } die HNF-Basis von p bezüglich {ω1 , . . . , ωd }. Aufgrund der speziellen Eigenschaften von HNF-Basen gilt: Lemma 3.29 (HNF-Basis eines Indexteilers) $j ist ein rationales Polynom in α vom Grad j − 1 für j ∈ {1, . . . , d}. Wir machen uns schnell klar, dass diese schöne Eigenschaft nur erfüllt ist, weil wir {ω1 , . . . , ωd } als HNF-Basis von Oα bezüglich α gewählt haben. 3.10.3 Die Primidealzerlegung von a − bα In diesem Abschnitt gehen wir davon aus, dass – wie es im letzten Abschnitt hergeleitet wurde – Oα in Form einer HNF-Basis {ω1 , . . . , ωd } bezüglich α vorliegt und wir für alle Indexteiler p eine HNF-Basis {$1 , . . . , $d } von p bezüglich {ω1 , . . . , ωd }, einen Erzeuger π sowie den Grad von p kennen. Zuerst beweisen wir die Verallgemeinerung von Satz 3.11 und Lemma 3.14: Satz 3.30 Seien a und b teilerfremde ganze Zahlen. Sei p ein Primidealteiler von (a − bα)Oα und p die rationale Primzahl unter p. Dann gilt: p - z: In diesem Fall ist p ein Primideal ersten Grades von Oα und es existiert keine weiteres Primideal über p, welches a − bα teilt. p | z: In diesem Fall ist Z[α] ∩ p ein Primideal ersten Grades von Z[α]. Ist q ein weiteres Primideal über p, welches (a − bα)Oα teilt, dann gilt Z[α] ∩ q = Z[α] ∩ p. Beweis: Nach Satz 3.3 wissen wir, dass p der Kern eines Homomorphismus von Oα in einen endlichen Körper ist. Dieser Homomorphismus sei mit ϕp bezeichnet. Genau wie im Beweis des Satzes 3.11 können wir zeigen, dass ϕp (α) =: c ein Element von Fp ist. Ist p kein Indexteiler, dann ist ϕp wiederum nach Satz 3.3 durch das Bild von α bereits eindeutig festgelegt und muss daher dem Homomorphismus ϕp,c aus Satz 3.4 entsprechen. Daher ist Teil 1 der Behauptung bewiesen. Gilt hingegen p | z, dann ist ϕp durch c zumindest auf Z[α] eindeutig bestimmt und wegen c ∈ Fp ist ϕp (Z[α]) isomorph zu Fp . Weil Z[α] ∩ p der Kern des Homomorphismus ϕp eingeschränkt auf Z[α] ist, folgt auch der zweite Teil der Behauptung. 52 3.10 DER ALLGEMEINE FALL Z[α] 6= Oα Eine Konsequenz dieses Satzes ist, dass wir ähnlich wie im Fall Oα = Z[α] die Faktorbasis einschränken können: Zuerst erstellen wir die Liste LP wie in Abschnitt 3.5. LP enthält alle Paare (p, c) mit p ≤ B2 , für die c ∈ {0, . . . , p − 1} eine Nullstelle von f (X) modulo p ist. Diese Paare korrespondieren eineindeutig mit den B2 -glatten Primidealen ersten Grades von Z[α], nicht jedoch mit denen von Oα (Indexteiler). Für jedes Paar (p, c) von LP mit p - z nehmen wir in P genau einen Erzeuger des Primideals pp,c auf. Für jedes Paar (p, c) von LP mit p | z hingegen müssen wir genau die Indexteiler p über p ermitteln, welche Z[α] in dem durch (p, c) repräsentierten Z[α]-Primideal schneiden. Es ist klar, dass diese Bedingung gleichbedeutend ist mit ϕp (α) = c, d. h. α − c ∈ p. Ist $1 , . . . , $d die im letzten Abschnitt hergeleitete HNF-Basis von p, dann lässt sich dieses Kriterium wegen der speziellen Form dieser Basis (siehe Lemma 3.29) für alle infrage kommenden Kandidaten der Liste LP schnell testen. Diejenigen p, für die wir auf diese Art und Weise herausfinden, dass sie Z[α] nicht in einem Primideal ersten Grades schneiden, werden verworfen. Für die anderen nehmen wir jeweils einen Erzeuger in P auf. Zudem speichern wir das korrespondierende Paar (p, c). Im Unterschied zu den Primzahlen p mit p - z gibt es nun nicht mehr länger pro Paar (p, c) genau ein zugehöriges Primideal. Analog zum Vorgehen in Abschnitt 3.3 lässt sich die Verallgemeinerung von Satz 3.15 herleiten: Satz 3.31 (Die Primidealzerlegung von (a − bα)Oα ) Sei P die Menge der Primfaktoren von N (a − bα) und sei N (a − bα) = ± zerlegung von N (a − bα). Dann gilt: Y e(p,1) Y e(p,k ) p p(p,c)1 · · · p(p,c)kp . (a − bα)Oα = pep,c Q p∈P pep die Primfaktor- p p∈P p-z p∈P p|z In dieser Zerlegung sind die pp,c Primideale ersten Grades, eindeutig bestimmt durch a ≡ bc (p). Die Primideale p(p,c)i für i ∈ {1, . . . , kp } sind die zu dem Paar (p, c) gehörigen Indexteiler, wobei auch in diesem Fall c durch a ≡ bc (p) eindeutig bestimmt ist. Bezeichnen wir mit f (p, i) den Grad von p(p,c)i , so gilt X f (p, i)e(p, i) = ep für alle p ∈ P mit p - z. i=1,...,kp Ist nun p ein Primteiler von N (a − bα) mit p | z, wie finden wir dann heraus, welcher Indexteiler über p das Hauptideal (a − bα)Oα wie oft teilt? In manchen Fällen können wir dies direkt aus Satz 3.31 ablesen, schließlich kommen nur jene Indexteiler über p in Betracht, die zu dem Paar (p, c) mit a ≡ bc (p) gehören. Ist z. B. p das einzige zum Paar (p, c) gehörige Primideal und f der Grad von p, dann ist die p-adische Bewertung von a − bα durch ep f gegeben. Auch in anderen Fällen kann es möglich sein, dass die Summenformel für ep die Primidealteiler und ihre Bewertungen bereits eindeutig festlegt. Manchmal ist es aber doch unumgänglich, p-adische Bewertungen zu berechnen. Der nächste Satz zeigt, dass dies in unserem Fall unkompliziert ist: Satz 3.32 (Bewertungen von a − bα) Sei p ein Primidealteiler von (a − bα)Oα und ap ∈ Q(α) \ Oα so gewählt, dass ap p ⊆ Oα erfüllt ist. Dann ist die p-adische Bewertung von a − bα gegeben durch das maximale v ∈ Z mit der Eigenschaft avp (a − bα) ∈ Oα . Dieser Satz ist ein Spezialfall von Lemma 4.8.16 aus [Coh96]. Dort kann man den Beweis und eine Methode, ap zu bestimmen, nachlesen. Da Oα ein Hauptidealring ist, ist die Berechnung der ap besonders effektiv möglich. Auch der Test avp (a − bα) ∈ Oα lässt sich in unserem Fall schnell auswerten, da Oα in Form einer HNF-Matrix bezüglich α gegeben ist. Durch Rückwärtseinsetzen“ können wir ” sofort bestimmen, ob eine Zahl im Z-Erzeugnis dieser Basis (also in Oα ) liegt. 53 KAPITEL 3 DAS SPECIAL NUMBER FIELD SIEVE Alles zusammengenommen müssen wir für jeden Indexteiler p, der Z[α] in einem Primideal ersten Grades schneidet, Folgendes bestimmen: 1. den Grad von p, 2. einen Oα -Erzeuger von p 3. die HNF-Basis {$1 , . . . , $d } von p bezüglich θ1 , . . . , θd , 4. das zu p gehörige Paar (p, c) der Liste LP und 5. die Zahl ap , die wir zum Berechnen p-adischer Bewertungen benötigen. So gesehen, erscheint die Behandlung von Indexteilern sehr aufwendig; man muss sich jedoch vor Augen halten, dass in der Praxis nur ein sehr kleiner Teil aller Primideale ein Indexteiler ist. So hat beispielsweise der Index z in keiner der SNFS -Faktorisierungen aus [LLMP93b] mehr als 2 Primteiler. In der Gesamtlaufzeit des Algorithmus schlagen diese Schwierigkeiten daher nicht zu Buche, zumal der weitaus zeitaufwendigste Schritt des SNFS, die Siebphase, hiervon nicht betroffen ist. 3.10.4 Die Suche nach Erzeugern Der Normtestalgorithmus aus Abschnitt 3.5 sucht die Erzeuger ausschließlich in Z[α], daher ist im allgemeinen Fall natürlich die Ausdehnung der Suche auf Oα notwendig. Weil Oα in Form einer ZBasis {θ1 , . . . , θd } vorliegt, bereitet dies keine Schwierigkeiten: Anstelle von zd−1 αd−1 + . . . z1 α + z0 mit zi ∈ Z testen wir einfach zd θd + zd−1 θd−1 + . . . + z1 θ1 . Für die Suche nach Einheiten ergeben sich weiter keine Modifikationen. Bei der Suche nach Primidealerzeugern beschränken wir uns auf Nicht-Indexteiler. Die Erzeuger der Indexteiler berechnen wir wie schon erwähnt mit dem Algorithmus 6.5.10 aus [Coh96]. Im Fall Oα = Z[α] haben wir Satz 3.19 ausgenutzt, der aussagt, dass π = g(α) ∈ Oα genau dann ein Erzeuger des Primideals pp,c ersten Grades über p ist, wenn |N (π)| = p und g(c) ≡ 0 (p) erfüllt sind. Diesen Satz können wir analog für die Suche nach den Erzeugern der Nicht-Indexteiler im allgemeinen Fall verwenden. Zwar hat das Polynom g(X) nun rationale Koeffizienten, da aber p - z gilt, können wir den Reduktionshomomorphismus modulo p eindeutig auf Oα fortsetzen und die zu testende Bedingung g(c) ≡ 0 (p) lässt sich einfach auswerten. 54 Kapitel 4 Das General Number Field Sieve Zu Beginn von Kapitel 3 haben wir dargelegt, unter welchen Bedingungen das SNFS zum Faktorisieren einer Zahl N herangezogen werden kann. Wir haben gesehen, dass, wenn N von spezieller Form ist, oft ein geeignetes Polynom f (X) mit komplexer Nullstelle α konstruiert werden kann, so dass der Zahlkörper Q(α) allen Anforderungen genügt (z. B. muss Oα ein Hauptidealring sein). Leider ist ein solches Verfahren für beliebige Zahlen N noch nicht bekannt. Man kann zwar ohne Schwierigkeiten ein irreduzibles, normiertes Polynom f (X) mit einer Nullstelle m modulo N finden (siehe Abschnitt 4.2), über den durch eine komplexe Nullstelle α von f (X) generierten Zahlkörper Q(α) lässt sich jedoch im Allgemeinen nichts aussagen; insbesondere dürfen wir keine der im letzten Kapitel bemühten schönen Eigenschaften von Oα erwarten. Trotzdem ist es gelungen, den Number Field Sieve-Algorithmus auf beliebige Zahlen zu verallgemeinern, wir sprechen dann vom General Number Field Sieve, abgekürzt durch GNFS. 4.1 Probleme bei der Behandlung allgemeiner Zahlen Um Wiederholungen zu vermeiden, wird im vorliegenden Kapitel das GNFS nicht vollständig neu entwickelt, vielmehr werden nur die Probleme, die im Unterschied zum SNFS auftreten, hergeleitet und deren Lösungen besprochen. Die Aufgabe dieses Abschnittes ist es, einen Überblick über die bei der Adaption der Ideen des SNFS zu erwartenden Schwierigkeiten zu geben. 4.1.1 Die Wahl eines guten Polynoms Der erste Schritt bei der Umsetzung der in Kapitel 2 beschriebenen Idee des Number Field Sieve ist die Konstruktion eines irreduziblen und normierten Polynoms f (X) ∈ Z[X] mit einer Nullstelle m von f (X) modulo N , so dass m klein ist im Vergleich zu N . Dies ist der Teil des GNFS, der zur Zeit am unbefriedigsten gelöst ist. Hier sind in der Zukunft wohl die meisten Verbesserungen zu erwarten. Der Einfluss einer geschickten Wahl von f (X) ist gar nicht groß genug einzuschätzen, denn die zu leistende Siebarbeit und nicht zu vergessen die Größe der anschließend aufgebauten Matrix hängen direkt von f (X) ab. Insofern bestimmt eine gute oder schlechte Wahl von f (X) signifikant die Laufzeit des Algorithmus. Aus diesem Grund werden wir auf diese Phase des GNFS in Abschnitt 4.2 besonders ausführlich eingehen. 4.1.2 Die Konstruktion des algebraischen Quadrates Sind f (X) ∈ Z[X], α ∈ C sowie m ∈ Z mit f (α) = 0 und f (m) ≡ 0 (N ) erst einmal bestimmt, so ist das nächste Ziel die Herleitung einer Menge S von Paaren teilerfremder Zahlen a, b ∈ Z, so dass das Produkt aller a − bm mit (a, b) aus S ein Quadrat in Z und das entsprechende Produkt der Ausdrücke 55 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE a − bα das Quadrat einer Zahl aus Z[α] liefert. Die Behandlung der rationalen Seite erfolgt wie im SNFS, die Konstruktion des ganzalgebraischen Quadrates erfordert jedoch einige Modifikationen. Im Folgenden werden wir die Vorgehensweise des SNFS kurz rekapitulieren und herausstellen, welche Probleme sich bei der Übertragung auf allgemeine Zahlen ergeben können. Unser Ausgangspunkt war die Faktorisierung der Norm von a − bα. Mithilfe von Siebmethoden haben wir eine Menge S mit der Q Eigenschaft konstruiert, dass die Norm des Produktes (a,b)∈S (a − bα) ein Quadrat in Z ist. Leider war wegen der Nicht-Injektivität der Normabbildung hierdurch nicht gewährleistet, dass das Produkt selbst das Quadrat eines Elementes von Z[α] ist. Um diese Hürde zu überwinden, haben wir nach Möglichkeiten gesucht, die von der Normabbildung zusammengeworfenen“ Größen wieder voneinan” der zu trennen. So haben wir die als Teiler von (a − bα)Oα infrage kommenden Primideale derselben Norm unterscheiden können, indem wir die Bilder von α unter den diese Primideale definierenden Homomorphismen mit den entsprechenden Bildern von ab−1 verglichen haben. Aus diesen Überlegungen entstand die Definition der Funktion ep,c (siehe Abschnitt 3.8), mit deren Hilfe wir schließlich die Exponentenvektoren erstellt haben. Wir konnten so zu jedem Primteiler p von N (a − bα) das Primideal von Z[α] angeben, welches sich für p | N (a − bα) verantwortlich zeigt: Gilt a ≡ bc (N ), dann korrespondiert p mit dem zu (p, c) gehörigen Primideal. Diese Differenzierung der Primteiler von N (a−bα) (und damit entsprechend der Primidealteiler von (a−bα)Oα ) liefert im SNFS den Schlüssel zum Erfolg. Natürlich sind wir bestrebt, diese vielversprechende Methode auch im allgemeinen Fall anzuwenden. Eine notwendige Bedingung Wie in Abschnitt 3.5 definieren wir zunächst die Liste Lp , die für jede rationale Primzahl p < B2 alle Tupel (p, c) mit f (c) ≡ 0 (p), c ∈ Fp enthält. Genau wie im SNFS können wir eine Menge S von Paaren (a, b) konstruieren, so dass für alle (p, c) der Liste LP gilt: X ep,c (a, b) ≡ 0 (2). (4.1) (a,b)∈S Dieses Kriterium ist auch im allgemeinen Fall notwendig dafür, dass das Produkt über alle a − bα mit (a, b) aus S das Quadrat einer Zahl aus Z[α] ist, wie der folgende Satz zeigt: Satz 4.1 Q P Aus (a,b)∈S (a − bα) = β 2 für β ∈ Z[α] folgt (a,b)∈S ep,c (a, b) ≡ 0 (2) für alle (p, c) aus LP . Beweis: Wir verwenden Satz 3.31, der den Zusammenhang zwischen der Primfaktorzerlegung von N (a − bα) und der Zerlegung von a − bα in Primideale von Oα beschreibt. Für die Gültigkeit dieses Satzes ist es nicht erforderlich, dass Oα ein Hauptidealring ist. Der entscheidende Punkt ist vielmehr, dass jeder Primidealteiler von a − bα geschnitten mit Z[α] ein Primideal ersten Grades von Z[α] liefert (nach Satz 3.30). Diese wiederum korrespondieren eineindeutig mit den Elementen der Liste LP . Sei nun also (p, c) ein Element der Liste LP mit ep,c (a, b) 6= 0, d. h. insbesondere gelten a ≡ bc (p) und p | N (a − bα). Aus Satz 3.31 schließen wir: 1. Teilt p nicht den Index [Oα : Z[α]], dann gibt es genau ein Primideal pp,c von Oα , welches über dem durch (p, c) beschriebenen Z[α]-Primideal liegt und die pp,c -adische Bewertung von a − bα entspricht genau der Größe ordp (N (a − bα)) = ep,c (a, b). 2. Ist andernfalls p ein Teiler von [Oα : Z[α]], dann kann es mehrere Primideale p(p,c)i , i ∈ {1, . . . , kp } von Oα über dem mit (p, c) korrespondierenden Z[α]-Primideal ersten Grades geben. Bezeichnen wir mit f (p, i) den Grad von p(p,c)i und mit ν(p,c)i die p(p,c)i -adische Bewertung, so gilt X i=1,...,kp 56 ν(p,c)i (a − bα)f (p, i) = ordp (N (a − bα)) = ep,c (a, b). 4.1 PROBLEME BEI DER BEHANDLUNG ALLGEMEINER ZAHLEN Ist schließlich das Produkt über alle a − bα ein Quadrat, so sind sämtliche Exponenten in der Primidealzerlegeug dieses Produktes gerade. Für Fall 1) folgt hieraus unmittelbar die Behauptung, im zweiten Fall gilt: X X X X X ep,c (a, b) = ν(p,c)i (a − bα)f (p, i) = f (p, i) ν(p,c)i (a − bα) (a,b)∈S (a,b)∈S i=1,...,kp i=1,...,kp (a,b)∈S | ≡ 0 {z ≡ 0 (2) } (2) Warum Kriterium (4.1) nicht ganz, aber fast hinreichend ist Doch was uns eigentlich interessiert, ist ein hinreichendes Kriterium, und das ist (4.1) offensichtlich nicht. Ein Grund hierfür, den wir auch schon bei der Entwicklung des SNFS beachten mussten, sind die Einheiten von Oα : Nicht nur verschiedene Primideale werden von der Normabbildung unifiziert“, ” auch ist die Norm einer Einheit immer vom Betrag 1. So ist es berechtigt zu sagen, dass die Norm Einheiten ignoriert“, was zur Folge hat, dass wir nicht von der Norm eines Produktes auf die betei” ligten Einheiten schließen können. Leider ist dies nicht das einzige noch verbleibende Problem. Die kommenden Ausführungen werden aufdecken, was genau dazu führen kann, dass ein Produkt, welches (4.1) erfüllt, nicht das Quadrat einer Zahl aus Z[α] ist. 1. Die erste denkbare Schwierigkeit ergibt sich, weil Kriterium (4.1) auf Primideale von Z[α] statt von Oα zugeschnitten ist und folglich Indexteiler, die bekanntlich nicht in einer bijektiven Beziehung zu Z[α]-Idealen stehen, Probleme bereiten können. So ist folgendes Szenario denkbar: Sei p eine Primzahl, die den Index [Oα : Z[α]] teilt und c eine Nullstelle von f (X) modulo p. Das mit (p, c) korrespondierendere Primideal von Z[α] liege sowohl unter p(p,c)1 als auch unter p(p,c)2 , wobei p(p,c)1 und p(p,c)2 zwei verschiedene Primideale zweiten Grades von Oα seien. Gelten nun • p(p,c)1 || (a1 + b1 α)Oα , aber p(p,c)1 - (a2 + b2 α)Oα , • p(p,c)2 || (a2 + b2 α)Oα , aber p(p,c)2 - (a1 + b1 α)Oα und • kein weiteres zu (p, c) gehörige Oα -Primideal teilt (a1 + b1 α)Oα · (a2 + b2 α)Oα , dann ist ep,c (a1 , b1 ) + ep,c (a2 , b2 ) = 4 zwar eine gerade Zahl, aber (a1 + b1 α) · (a2 + b2 α) ist noch nicht einmal das Quadrat eines Oα -Ideals. Im optimalen Fall des SNFS – d. h. wenn der Ring Z[α] gleich dem Ganzheitsring Oα ist – kann diese Schwierigkeit nicht eintreten, dort ist (4.1) eine hinreichende Bedingung dafür, dass das Produkt über alle a − bα ein Idealquadrat ist. Im allgemeinen Fall Z[α] 6= Oα umgehen wir das Problem durch explizite Berechnung der Bewertungen bezüglich der Indexteiler und die Aufnahme dieser Größen in die Exponentenvektoren. Diese Vorgehensweise ist auf das GNFS jedoch nicht ohne zusätzliche Schwierigkeiten übertragbar, weil unter Umständen bereits die Identifizierung der Indexteiler in einem hinreichend komplexen Zahlkörper außerhalb der praktischen Möglichkeiten liegt (so erfordert z. B. der in Abschnitt 3.10.1 vorgestellte Rundenalgorithmus zur Berechnung von Oα die Faktorisierung der Diskriminante von Q(α), was für sich genommen schon schwieriger sein kann als die Faktorisierung von N ). 2. Doch selbst angenommen, wir seien in der Lage, diese Schwierigkeit zu umgehen und können garantieren, dass das Produkt aller a−bα das Quadrat eines Ideals a ist, so ist a nicht notwendig ein Hauptideal. Im SNFS haben wir nur algebraische Zahlkörper der Klassenzahl Eins betrachtet, daher gab es dort kein vergleichbares Problem. 3. Ist a ein Hauptideal, sagen wir von der ganzalgebraischen Zahl θ erzeugt, bedeutet dies trotzdem nicht, dass θ die Wurzel des Produktes der a − bα ist, denn der Erzeuger eines Ideals ist nur eindeutig bis auf den Übergang zu Assoziierten. Im unglücklichsten Fall hat das Produkt aller 57 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE a − bα den Wert ε · θ2 mit einer Einheit ε, die kein Quadrat ist. Um diese Gefahr auszuschließen, haben wir im SNFS ein System von Fundamentaleinheiten sowie einen Erzeuger der Gruppe der Einheitswurzeln in die algebraische Faktorbasis aufgenommen und jede Einheit, die bei der Zerlegung eines Ausdruckes a − bα in ein Produkt von Primidealerzeugern aus der Faktorbasis als Rest übrigblieb, als Produkt dieser Faktorbasiseinheiten dargestellt. Die entsprechenden Exponenten wurden daraufhin beim Erstellen des Exponentenvektors von a und b verarbeitet, so dass im Lineare-Algebra-Schritt auch diese Einheiten zum Quadrat geformt werden konnten. Es überrascht nicht, dass ein solches Vorgehen (insbesondere die Konstruktion eines Systems von Fundamentaleinheiten) für so schwierige algebraische Zahlkörper, wie sie beim GNFS die Regel sind, praktisch nicht zu realisieren ist. 4. Doch selbst wenn wir die Einheit betreffend Glück haben und das Produkt über alle a − bα tatsächlich das Quadrat einer ganzalgebraischen Zahl ist, sind wir dennoch nicht am Ziel, denn diese Zahl ist nicht notwendig ein Element aus Z[α]. Genau dies benötigen wir aber, um mithilfe des Homomorphismus φ von Z[α] nach Z/N Z zwei modulo N kongruente Quadrate zu erhalten. Am einfachsten Q gestaltet sich die Behebung der letzten Schwierigkeit, denn die Konstruktion einer Menge S mit (a,b)∈S (a − bα) = θ2 für θ ∈ Oα ist für die Herleitung der finalen Kongruenz bereits ausreichend, wie die folgenden Überlegungen zeigen: Zunächst einmal ist es denkbar, dass sich der Homomorphismus φ auf θ fortsetzen lässt. Dies ist der Fall, wenn die Nenner aller Koeffizienten von θ in der Standard-Darstellung modulo N invertierbar sind. Wir wissen, dass dies immer gilt, wenn der Index [Oα : Z[α]] modulo N invertierbar ist. Ist φ(θ) definiert, so können wir die finale Kongruenz ohne jede Modifikation erstellen. Andernfalls kann das Scheitern einer Inversion modulo N zwei Gründe haben: Die entsprechende Zahl hat einen nichttrivialen Teiler mit N gemein, was eine teilweise Faktorisierung von N zur Folge hätte, oder diese Zahl ist ein Vielfaches von N . Nur im letzten Fall haben wir ein Problem, welches sich mithilfe des folgenden Satzes jedoch schnell lösen lässt: Satz 4.2 Seien Q(α) ein algebraischer Zahlkörper vom Grad d, α eine ganzalgebraische Zahl und f (X) das Minimalpolynom von α bezüglich Q. Dann gilt f 0 (α) · θ ∈ Z[α] für alle θ ∈ Oα . Beweis: Sei O eine Ordnung von Q(α). Dann nennen wir ∗O := {x ∈ Q(α) | S(x · θ) ∈ Z für alle θ ∈ O} den zu O dualen Modul. Hierbei bezeichne S die Spurabbildung von Q(α) bezüglich Q, d. h. S(x) ist definiert als die Summe aller Q(α)-Konjugierten von x. Insbesondere ist die Spur einer ganzalgebraischen Zahl ganzrational (vergleiche [Mar77], S. 21f). Daher erkennen wir, dass Oα enthalten ist in dem zu Z[α] dualen Modul ∗Z[α]. Aus der algebraischen Zahlentheorie ist bekannt, dass die Elemente α αd−1 1 f 0 (α) , f 0 (α) , . . . , f 0 (α) eine Z-Basis von ∗Z[α] bilden (dies ist eine Folgerung aus dem Beweis zu Satz 2.4 aus [Neu92]). Jedes Element θ von Oα besitzt daher eine Darstellung θ = Koeffizienten zi ∈ Z, woraus die Behauptung folgt. Haben wir also bereits S so bestimmt, dass f 0 (α)2 Y (a,b)∈S Q (a,b)∈S (a zd−1 αd−1 +...+z1 α+z0 f 0 (α) mit − bα) = θ2 gilt für ein θ ∈ Oα , so folgt (a − bα) = f 0 (α)2 θ2 = (f 0 (α) · θ)2 . | {z } =:β∈Z[α] Um die Differenz der Quadrate modulo N zu generieren, müssen wir entsprechend die rationale Seite mit f 0 (m)2 , dem Bild von f 0 (α)2 unter dem durch α 7→ m mod N induzierten Homomorphismus φ, multiplizieren. Wir fassen zusammen, dass wir die finale Kongruenz in jedem Fall wie bekannt herleiten können. 58 4.1 PROBLEME BEI DER BEHANDLUNG ALLGEMEINER ZAHLEN Weitaus ernster muten die ersten drei Probleme der obigen Aufzählung an. Um ein Maß dafür anzugeben, wie schwerwiegend diese tatsächlich sind, müssen wir im Text vorgreifen und einen Begriff einführen, der erst in Unterabschnitt 4.2.1 näher erläutert wird: Sei (p, c) ein Element der Liste Lp . Die in Unterabschnitt 3.8 definierte Funktion ep,c lässt sich interpretieren als eine Abbildung von ganzalgebraischen Zahlen der Form a − bα in die ganzrationalen Zahlen. Wie wir noch sehen werden, lässt sie sich zu einem Homomorphismus der multiplikativen Gruppe Q(α)× in die additive Gruppe Z fortsetzen. Ist p das zu (p, c) gehörige Primideal ersten Grades von Z[α], dann schreiben wir lp,Z[α] für diesen Homomorphismus. Auch für beliebige Primideale p von Z[α], nicht notwendig ersten Grades, werden wir in Unterabschnitt 4.2.1 Homomorphismen lp,Z[α] definieren, diese werten das Argument a − bα für teilerfremde ganzrationale Zahlen a, b jedoch Q immer zu 0 aus. Im Moment ist die für uns nur die Tatsache wichtig, dass wir ein Produkt θ := (a,b)∈S (a − bα) mit lp,Z[α] (θ) ≡ 0 (2) für alle Primideale p von Z[α] konstruieren können. Bezeichnen wir mit V die Gesamtheit aller x ∈ Q(α)× mit dieser Eigenschaft, d. h. V := {x ∈ Q(α)× | lp,Z[α] (x) ≡ 0 (2) für alle Primideale p von Z[α]}, dann enthält V wegen der Homomorphieeigenschaft der lp,Z[α] alle Quadrate aus Q(α)× . Satz 4.1 2 ist nichts anderes als eine äquivalente Formulierung dieses Sachverhaltes. Der Quotient V /Q(α)× repräsentiert nun unser Problem: Wir können Elemente aus V generieren, unser Interesse gilt aber jenen 2 2 aus Q(α)× . Da jedes Element der Gruppe V /Q(α)× höchstens die Ordnung 2 besitzt, können wir 2 V /Q(α)× in natürlicher Weise als F2 -Vektorraum auffassen. Gelingt uns der Nachweis, dass die Dimension dieses Vektorraums klein“ ist, so können wir schließen, dass unser Problem – zumindest vom 2 ” theoretischen Standpunkt aus betrachtet – nicht schwerwiegend zu sein scheint. Um dimF2 V /Q(α)× abzuschätzen, unterziehen wir die in obiger Aufzählung unter Punkt 1 bis Punkt 3 aufgelisteten Teilprobleme einer genaueren Inspektion: • Sei W := {x ∈ Q(α)× | x = a2 für ein Ideal a von Oα }. Hierbei lassen wir ausdrücklich auch gebrochene Ideale zu, da Qwir uns nicht auf ganzalgebraische x beschränken. Teilproblem 1 tritt also ein, wenn für θ := (a,b)∈S (a − bα) gilt: θ ∈ V \ W . 2 • Sei Y := Uα Q(α)× , wobei wie früher Uα die Einheitengruppe von Oα bezeichne. Dann ist Teilproblem 2 gleichbedeutend mit θ ∈ W \ Y . 2 • Teilproblem 3 schließlich lässt sich durch θ ∈ Y \ Q(α)× beschreiben. 2 In [BLP93] lässt sich nachlesen, wie sich die Indizes [V : W ], [W : Y ] und [Y : Q(α)× ] abschätzen 2 lassen. Eine Kombination dieser Ergebnisse liefert schließlich [V : Q(α)× ] < N , also insbesondere 2 dimF2 V /Q(α)× < log2 (N ) = (log N )/ log 2. Diese Überlegungen zeigen uns, wie wertvoll die Bedingung (4.1) tatsächlich ist: Q Erfüllt θ := (a,b)∈S (a − bα) dieses Kriterium, dann ist θ fast“ ein Quadrat. Die Diskrepanz zwi” schen fast-ein-Quadrat-sein“ und wirklich-ein-Quadrat-sein“ ist so klein, dass wir hoffen können, sie ” ” auch praktisch in den Griff zu bekommen. In der Tat werden wir sehen, dass sich, einer bestechend einfachen Idee von L. Adleman folgend, alle drei angesprochenen Teilprobleme auf einen Streich lösen lassen. Näher wird hierauf in Abschnitt 4.3 eingegangen. Dort wird ein Kriterium beschrieben, welches zusammen mit (4.1) eine hinreichende Bedingung dafür liefert, dass das Produkt über alle a − bα das Quadrat einer ganzalgebraischen Zahl ist. Darüber hinaus sind wir in der Lage, durch eine unwesentliche Vergrößerung der Exponentenvektoren dafür zu sorgen, dass die im Lineare-Algebra-Schritt ermittelte Lösung des Gleichungssystems modulo 2 jener Bedingung genügt. Zusammenfassung Auf die Bewältigung der oben beschriebenen Schwierigkeiten wird im weiteren Verlauf dieses Kapitels noch im Detail eingegangen werden, wir können aber schon jetzt festhalten, dass die Konstruktion 59 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE des algebraischen Quadrates wie im SNFS im Wesentlichen darauf hinaus läuft, eine ausreichende Menge von Paaren (a, b) zu finden, für die die Größe N (a − bα) glatt ist. Der Lineare-Algebra-Schritt findet dann eine Teilmenge S jener Paare, so dass Kriterium (4.1) und eine in QAbschnitt 4.3 hergeleitet werdende Bedingung erfüllt sind. Hierdurch wird erreicht, dass das Produkt (a,b)∈S (a−bα) schließlich das Quadrat einer ganzalgebraischen Zahl ist. 4.1.3 Die Bestimmung der Quadratwurzel Zu den die Ermittlung des algebraischen Quadrates betreffenden Problemen eher theoretischer Natur gesellt sich zuguterletzt noch ein algorithmisches: Im Gegensatz zum SNFS, wo sich die Wurzel des konstruierten algebraischen Quadrates analog zur rationalen Seite aus der Lösung des linearen Gleichungssystems und den Elementen der algebraischen Faktorbasis ablesen lässt, ist dies – wie wir noch sehen werden – im GNFS nicht der Fall. Daher liegt die letzte Herausforderung bei der Entwicklung des GNFS in der Bestimmung der Quadratwurzel eines gigantisch großen Produktes ganzalgebraischer Zahlen. Wie sich diese meistern lässt, wird in Abschnitt 4.6 erläutert. 4.1.4 Probleme durch große Zahlen Einige Teile des SNFS könnten zwar theoretisch übernommen werden, in der Praxis wurden aber aufgrund der immer größer werdenden zu faktorisierenden Zahlen Modifikationen notwendig. Hierbei handelt es sich um das Sieben, den Lineare-Algebra-Schritt und die Large-Prime-Variante. Ein neues Siebverfahren wird in Abschnitt 4.4 vorgestellt, Verbesserungen bei der Behandlung von Large-Primes und des Matrix-Schrittes werden in Abschnitt 4.5 behandelt. 4.2 Die Wahl eines guten Polynoms Das zuerst beschriebene Verfahren, für das Number Field Sieve ein irreduzibles Polynom f (X) ∈ Z[X] mit Nullstelle m modulo N zu finden, ist die sogenannte Base-m-Methode. Die Idee hierbei ist, zuerst m in geeigneter Größe festzulegen und hieraus f (X) zu konstruieren: Sei d der Grad des gesuchten Polynoms (mehr zur Wahl dieses Parameters in Unterabschnitt 4.2.2; für N zwischen 110 und 220 1 Dezimalen scheint d = 5 optimal zu sein). Dann definieren wir m := bN d c und schreiben N zur Basis m: N = ad md + ad−1 md−1 + . . . + a1 m + a0 mit 0 ≤ ai < m für 0 ≤ i ≤ d. Betrachten wir folgendes Polynom f (X) := ad X d + ad−1 X d−1 + . . . + a1 X + a0 , 2 dann gilt ganz offensichtlich f (m) = N . Unter der Voraussetzung N > 2d , welche in der Praxis immer erfüllt ist, lassen sich mit sehr einfachen Argumenten ad = 1 und ad−1 ≤ d nachweisen (siehe [BLP93], Proposition 3.2), so dass f (X) ein geeigneter Kandidat zu sein scheint. Es fehlt noch die Irreduzibilität, aber analog zum SNFS lässt sich aus einer Zerlegung von f (X) eine Faktorisierung von N herleiten (vergleiche Abschnitt 3.1). Im Gegensatz zum SNFS ist diese sogar beweisbar nichttrivial: Man kann zeigen, dass – wenn f (X) ein durch die Base-m-Methode gewonnenes Polynom ist – aus f (m) = p für eine Primzahl p bereits die Irreduzibilität von f (X) folgt (vergleiche hierzu den Beweis von Korollar 2 aus [BFO94]). Die Kontraposition dieser Implikation sagt dann aus, dass N = f (m) eine zusammengesetzte Zahl sein muss, wenn es eine echte Zerlegung f (X) = g(X) · h(X) gibt. Die gesuchten nichttrivialen Faktoren von N ergeben sich als g(m) und h(m), wie der eben zitierte Beweis auch darlegt. Weil man Polynome schnell faktorisieren kann (z. B. mit dem Algorithmus 3.5.7 aus [Coh96]), ist die Reduzibilität von f (X) das Beste, was uns passieren kann. Obwohl die Base-m-Methode so elementar und wenig trickreich zu sein scheint, ist es doch bis heute nicht gelungen, für allgemeine Zahlen wesentlich bessere Verfahren zu finden. 60 4.2 DIE WAHL EINES GUTEN POLYNOMS Verzichten wir auf die Normiertheit von f (X), so lassen sich mit der Base-m-Methode Polynome 1 mit kleineren Koeffizienten herleiten; zu diesem Zweck wählen wir m in der Größenordnung [N d+1 ]. Dies hat jedoch zur Folge, dass eine Wurzel α von f (X) keine ganzalgebraische Zahl mehr ist. In Unterabschnitt 4.2.1 werden wir sehen, dass die Behandlung dieser Schwierigkeit zwar großen theoretischen, aber zu vernachlässigenden praktischen Aufwand erfordert. Daher arbeitet das GNFS am effizientesten mit nichtnormierten Polynomen. Da die Base-m-Methode natürlich aus verschiedenen m unterschiedliche Polynome gewinnt, haben wir zwar ein Problem gelöst, aber ein neues geschaffen: Welches der möglichen Polynome ist für unsere Zwecke am besten geeignet? Hierzu eine Illustration: 1 Möchten wir eine 150-stellige Zahl N faktorisieren, so besteht die Zahl [N 6 ] etwa aus 25 Dezimalen. Aber aus 25-stelligen m lassen sich ca. 1025 verschiedene Base-m-Polynome konstruieren. Um nun ein Polynom einem anderen vorziehen zu können, müssen wir zunächst einmal geeignete Auswahlkriterien formulieren: Wir suchen ein Polynom, welches die Laufzeit des Algorithmus optimiert. Zur Zeit kann man Laufzeit des Number Field Sieve ungefähr gleichsetzen mit Laufzeit der Siebphase. Ein denkbares Zukunftsszenario ist die Entwicklung einer auf das Sieben spezialisierten Hardware; in einer so unterstützten Faktorisierung wird die Siebphase nicht mehr alle anderen Berechnungen majorisieren (vergleiche Kapitel 5). Welche Eigenschaften muss demnach ein Polynom besitzen, welches die zu leistende Siebarbeit minimiert? Bedenken wir, dass auf der rationalen Seite Ausdrücke der Form a − bm und auf der algebraischen Seite entsprechend die Größen N (a − bα) zerlegt und zu einem Quadrat kombiniert werden müssen, so erkennen wir, dass die Siebphase dann und nur dann schnell ist, wenn es viele glatte Zahlen der Gestalt (a − bm)N (a − bα) gibt. Welchen Einfluss übt das Polynom f (X) hierauf aus? Nun, in Abschnitt 3.3 haben wir gezeigt, dass N (a − bα) = bd f (a/b) gilt. Daher ist die Größe N (a − bα) unmittelbar von f (X) abhängig. Der Wert a − bm wiederum wird durch m bestimmt. Deshalb sind für fest gewählte Faktorbasen ausschließlich das Polynom f (X) und dessen Nullstelle m modulo N verantwortlich dafür, wie viele gute Paare ein Siebraum enthält. Darüber hinaus kann bei Wahl eines optimalen Polynoms mit einer kleineren Faktorbasis gearbeitet werden, so dass die Dimension des im Lineare-Algebra-Schritt zu lösenden Gleichungssystems verringert wird. Dieser Aspekt hat in jüngster Zeit besonderse Bedeutung gewonnen, da es scheint, als werden die Lineare-Algebra-Methoden bei den immer größer werdenden Matrizen bald an ihre Grenzen stoßen. Informal nennen wir die Anzahl der glatten Zahlen der Form (a − bm)N (a − bα), wobei a und b den für f (X) optimalen Siebraum durchlaufen, die Güte von f (X). Um zwei Polynome miteinander zu vergleichen, ist es natürlich möglich, Siebexperimente mit einer repräsentativen Auswahl von (a, b)-Paaren durchzuführen und jenes Polynom zu favorisieren, welches die meisten glatten Zahlen in der Stichprobe liefert. Um 1025 Polynome miteinander zu vergleichen, scheinen zeitaufwendige Siebexperimente jedoch keine gute Wahl zu sein. In der Praxis ist die Polynomwahlphase daher ein mehrstufiges Auswahlverfahren: Es gibt verschiedene Kriterien zur Polynom-Begutachtung, die sich in ihrer Aussagekraft und in ihrem Berechnungsaufwand unterscheiden. So liefern Siebexperimente das aussagekräftigste Kriterium, sind jedoch auch mit dem größten Aufwand verbunden. Am anderen Ende dieser Skala steht die Beurteilung der Größe der Koeffizienten von f (X): sehr schnell zu realisieren, lässt aber nur ungenaue Schlüsse auf die Güte des Polynoms zu. Im Unterabschnitt 4.2.2 werden wir noch weitere Kriterien kennenlernen und daran anschließend in Unterabschnitt 4.2.3 sehen, wie sich mithilfe des mehrstufigen Auswahlverfahrens Polynome mit ungewöhnlich hohen Gütewerten generieren lassen. 4.2.1 Die Verwendung nichtnormierter Polynome Seien nun also f (X) := ad X d + ad−1 X d−1 + . . . + a1 X + a0 ∈ Z[X] ein irreduzibles Polynom mit Leitkoeffizient ad 6= ±1 und α eine komplexe Wurzel von f (X). Für den GNFS -Algorithmus ist es weiterhin notwendig, dass f (X) den Inhalt 1 besitzt, d. h. f (X) soll ein 61 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE primitives Polynom sein. Konkret hat die Tatsache, dass α keine ganzalgebraische Zahl ist, zur Folge, dass uns weder Satz 4.1 noch Satz 4.2 zur Verfügung stehen. Im Folgenden entwickeln wir die theoretischen Grundlagen, die nötig sind, um diese Schwierigkeiten zu beheben. Dabei wird zunächst die Angabe eines zu (4.1) analogen Kriteriums im Vordergrund stehen, dessen Erfüllung wie bisher die Grundlage der Quadratkonstruktion darstellt. Welche Form schließlich die finale Kongruenz annimmt, werden wir in Abschnitt 4.6 beschreiben. Die Ordnung Z[ω] Ist α keine ganzalgebraische Zahl, dann können wir die in Abschnitt 3.3 hergeleitete Formel zur Bestimmung von N (a − bα) nicht mehr direkt anwenden. Die Einführung einer in Z[α] enthaltenen Ordnung hilft uns hier weiter: Definition und Satz 4.3 (Die ganzalgebraische Zahl ω) Seien f (X) und α wie oben definiert. Dann ist ω := ad α eine ganzalgebraische Zahl. Beweis: Wir definieren fω (X) := ad−1 f d X ad = X d + ad−1 X d−1 + ad−2 ad X d−2 + ad−3 a2d X d−3 + . . . + a1 ad−2 X + a0 add−1 . d Dann gilt: fω (ω) = fω (ad α) = ad−1 f d folgt die Behauptung. ad α ad = ad−1 f (α) = 0. Da fω (X) ein normiertes Polynom ist, d Bemerkung 4.4 Da ω ein ganzzahliges Vielfaches von α ist, gilt offensichtlich Q(α) = Q(ω), also auch Oα = Oω . Des Weiteren ist der Grad von ω gleich d (Grad von α), und daher ist das im Beweis von Satz 4.3 definierte Polynom fω (X) das Minimalpolynom von ω bezüglich Q. Anwendung von Satz 3.16 liefert nun: add N (a − bα) = N (ad (a − bα)) = N (ad a − bω) = bd fω a a a d = bd add−1 f . b b Die erste Gleichheit ergibt sich aus der Multiplikativität der Norm und der Tatsache, dass die Norm einer rationalen Zahl q in einem algebraischen Zahlkörper des Grades d den Wert q d annimmt (denn alle Q-Konjugierten von q sind gleich q, weil die σi Q-Monomorphismen sind). Somit steht uns wieder eine Formel für die Normberechnung zur Verfügung: d N (a − bα) = a−1 d b f a b . (4.2) Als nächstes leiten wir ein zu (4.1) analoges Kriterium her, was konkret bedeutet: Es soll nur die Normen der a − bα zum Gegenstand haben und dabei so stark sein, dass seine Erfüllung uns wie im α ∈ Oα -Fall die Haupthürde in der Konstruktion des algebraischen Quadrates nehmen lässt. Jetzt kommen die schon angesprochenen Homomorphismen lp ins Spiel. 62 4.2 DIE WAHL EINES GUTEN POLYNOMS Die Homomorphismen lp,O Sei O eine Ordnung in Q(α). Satz 4.5 (Die Homomorphismen lp,O ) Für jedes Primideal p von O existiert ein Gruppenhomomorphismus lp,O : Q(α)× → Z mit folgenden Eigenschaften: (a) lp,O (x) ≥ 0 für alle x ∈ O6=0 . (b) Für 0 6= x ∈ O gilt: lp,O (x) > 0 ⇔ x ∈ p. (c) Für jedes x ∈ Q(α)× gelten lp,O (x) = 0 für alle bis auf endlich viele p und Y N (p)lp,O (x) = |N (x)|. p Primideal von O Des Weiteren ist der Homomorphismus lp,O durch diese Eigenschaften eindeutig bestimmt. Beweis: Detailliert ausgeführt in [BLP93], Kapitel 7. Dort finden sich auch die Beweise zu den folgenden Ausführungen: Wie wir wissen, lässt sich jedes Element von Q(α)× eindeutig in ein Produkt aus Primidealen von Q Oα zerlegen (wobei die Exponenten ganzrationale Zahlen sind). Ist x = qe(q) eine solche Zerlegung, dann ist die q-adische Bewertung von x – wir schreiben νq (x) – definiert als νq (x) = e(q). Aufgrund der Eindeutigkeitsaussage in Satz 4.5 sind im Fall O = Oα die Homomorphismen lp,Oα also nichts anderes als p-adische Bewertungen, denn diese erfüllen die Eigenschaften (a) bis (c). Da O im Fall O $ Oα kein Dedekindring ist, gibt es in O keine eindeutige Primidealzerlegung und daher auch keine wohldefinierte Primideal-Bewertung. Den Homomorphismus lp,O kann man in diesem Zusammenhang verstehen als Verallgemeinerung des Begriffs der Bewertung bezüglich eines Primideals. Die für das Number Field Sieve entscheidende Eigenschaft (der Zusammenhang zwischen Element- und Primidealnorm) bleibt dabei erhalten. Wie können wir uns die Homomorphismen lp,O für beliebige Ordnungen O vorstellen? Sei p ein Primideal von O. Dann ist die Menge der Primideale q von Oα über p endlich und nichtleer. Wir schreiben q | p für q liegt über p“. Da q und p Primideale über derselben rationalen Primzahl sind, ist ” der endliche Körper Oα /q eine endliche Erweiterung des Körpers O/p. Den Grad dieser Erweiterung bezeichnen wir mit f (q/p). Folgendes Korollar gibt Auskunft über die Gestalt der lp,O : Korollar 4.6 (Äquivalente Darstellung der Homomorphismen lp,O ) Es gilt lp,O (x) := X q|p q Primideal von Oα f (q/p)νq (x). Zu welchem Zweck haben wir die Homomorphismen lp,O eingeführt? Wie schon früher im Text erwähnt, liefert die Homomorphieeigenschaft folgende Implikation: Ist x ∈ Q(α)× ein Quadrat, dann gilt lp,O (x) ≡ 0 (2) für alle Primideale p von O. Gelingt es uns nun, Eigenschaft (c) aus Satz 4.5 dazu zu verwenden, die Größen lp,O (a − bα) aus der Primfaktorzerlegung von N (a − bα) zu bestimmen, dann können wir ein zu (4.1) zumindest syntaktisch analoges Kriterium definieren: Wir ersetzen ep,c (a, b) durch lp (a − bα), wobei p alle Primideale von O durchläuft. Es bleibt nachzuweisen, dass das so definierte Kriterium auch semantisch zu (4.1) analog ist in dem Sinn, dass seine Erfüllung eine sehr starke notwendige Bedingung für die Quadratkonstruktion darstellt. Folgende Betrachtungen bestärken uns in diesem Vorhaben: 63 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE Ist O = Z[α], dann können wir über die Homomorphismen lp,Z[α] nachstehende Aussagen treffen: • Ist p ein Primideal von Z[α] vom Grad echt größer als 1, dann gilt lp,Z[α] (a − bα) = 0 für alle teilerfremden a, b ∈ Z (Folgerung aus Satz 3.31). • Ist p hingegen ein Primideal ersten Grades von Z[α] korrespondierend mit dem Paar (p, c) der Liste LP , dann gilt lp,Z[α] (a − bα) = ep,c (a, b) für alle teilerfremden a, b ∈ Z (Folgerung aus der Eindeutigkeitsaussage von Satz 4.5). Wir erkennen hieraus, dass wir bereits im α ∈ Oα -Fall mit den Homomorphismen lp,O gearbeitet haben, ohne uns allerdings dessen bewusst gewesen zu sein. Wenn dieser Ansatz dort funktioniert hat, warum nicht auch in einem allgemeineren Kontext? Leider müssen wir einsehen, dass für α 6∈ Oα der Ring Z[α] keine Ordnung mehr ist. Schlimmer noch: Da sich ganzalgebraische Zahlen θ unter anderem auch dadurch charakterisieren lassen, dass die additive Gruppe Z[θ] endlich erzeugt ist (siehe [ST87], Lemma 2.7), können wir für Z[α] nicht einmal mehr ein endliches Z-Erzeugendensystem finden. Unser nächstes Ziel ist daher die Angabe einer Ordnung A, die die Rolle von Z[α] übernehmen kann. Die Ordnung A Um dieses Ziel zu erreichen, müssen wir uns zunächst α−1 zuwenden: Lemma 4.7 (Eigenschaften von α−1 und fα−1 (X)) a) Es gilt α−1 = − a10 ad αd−1 + ad−1 αd−2 + · · · + a2 α + a1 . b) fα−1 (X) := a0 X d + a1 X d−1 + · · · + ad−1 X + ad ist das a0 -fache des Minimalpolynoms mα−1 (X) von α−1 bezüglich Q. Des Weiteren ist a0 die den Betrag betreffend kleinste ganzrationale Zahl z mit zmα−1 (X) ∈ Z[X]. Beweis: zu a) Zunächst einmal merken wir an, dass a0 6= 0 erfüllt ist, denn sonst wäre f (X) reduzibel. Man rechnet leicht nach, dass gilt: − a10 f (X) + 1 X =− 1 ad X d−1 + ad−1 X d−2 + · · · + a2 X + a1 . a0 Die Behauptung folgt nach Einsetzen von α für X aus f (α) = 0. zu b) Es gilt 0 = α−d f (α) = a0 α−d + a1 α−(d−1) + · · · + ad−1 α−1 + ad . Dies weist fα−1 (α−1 ) = 0 nach. Es gilt somit mα−1 (X) | fα−1 (X). Wegen Q(α) = Q(α−1 ) ist der Grad von α−1 gleich d, dem Grad von α. Insbesondere muss daher mα−1 (X) ein Polynom d-ten Grades sein. Weil fα−1 (X) primitiv ist (der Inhalt von f (X) ist nach Voraussetzung gleich 1, und fα−1 (X) besitzt dieselben Koeffizienten wie f (X)), ist die Behauptung nachgewiesen. Notation 4.8 (fα (X)) Zur Vereinheitlichung der Darstellung schreiben wir ab jetzt fα (X) anstelle von f (X). Um die Ordnung A zu beschreiben, geben wir eine Z-Basis von A an: 64 4.2 DIE WAHL EINES GUTEN POLYNOMS Definition 4.9 (Z-Basis der Ordnung A) Wir definieren β0 , . . . , βd−2 ∈ Z[α] wie folgt: β0 := ad αd−1 + ad−1 αd−2 + ··· + a3 α2 + a2 α β1 := ad αd−2 + ad−1 αd−3 + ··· + a3 α + a2 β2 .. . := .. . ad−1 αd−4 .. . + .. . ··· + a3 βd−3 := ad α2 + ad−1 α βd−2 := ad α + ad−1 ad αd−3 .. . + .. . + a1 + ad−2 Dann sei A definiert durch A := Z + β0 Z + · · · + βd−2 Z. Bemerkung 4.10 (Eigenschaften der βi ) P 1. Wie man schnell nachvollzieht, gilt i=0,...,d−1 βi X i = fα (X)/(X − α). Daher sind die βi ganzalgebraisch, denn allgemein gilt: Ist f (X) ein Polynom mit ganzalgebraischen Koeffizienten und Nullstelle ρ, dann besitzt auch das Polynom f (X)/(X − ρ) ganzalgebraische Koeffizienten (zum Beweis siehe [Hec70], S.91). −1 2. Die βP ], denn man rechnet leicht nach, dass die Gleichungen i sind auch Elemente von Z[α −(k+1) βi = k=0,...,i −ai−k α für i = 0, . . . , d − 2 erfüllt sind. Deshalb können wir sofort A ⊆ Z[α] ∩ Z[α−1 ] schließen. 3. Wir können die βi auch rekursiv definieren: β−1 := 0 und βi+1 = (βi − ai+1 )α−1 für i = −1, . . . , d − 3. Den Arbeiten [BLP93] und [Len92] lassen sich auch folgende äquivalente Darstellungen der Ordnung A entnehmen: Satz 4.11 (Äquivalente Darstellungen der Ordnung A) Es gilt A = Z[α] ∩ Z[α−1 ] = x ∈ Q(α) x· X αi Z ⊆ i=0,...,d−1 X i=0,...,d−1 αi Z . Die letzte Darstellung weist A als die größte in Z[α] enthaltene Ordnung aus. Auch erkennen wir jetzt sofort, dass A tatsächlich eine Ordnung ist: Erstens ist A trivialerweise als Z-Modul endlich erzeugt und von maximalem Rang, weil wir A durch Angabe einer d-elementigen Z-Basis definiert haben. Zweitens zeigen uns die beiden alternativen Beschreibungen von A, dass A multiplikativ abgeschlossen und damit ein Ring ist. Bemerkung 4.12 (Z[ω] ⊂ A) Analog zum (a)-Teil von Lemma 4.7 lässt sich α = − a1d P i=1,...,d ai−1 α−(d−i) beweisen. Hieraus folgt: ω = ad α = −a0 α−(d−1) + a1 α−(d−2) − · · · − ad−2 α−1 − ad−1 . Insbesondere erkennen wir, dass Z[ω] ⊂ Z[α] ∩ Z[α−1 ] = A erfüllt ist. 65 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE Primideale in A Jetzt wenden wir uns den Primidealen ersten Grades von A zu. Für Primideale in Ordnungen algebraischer Zahlkörper gelten die meisten Eigenschaften, die auch für Primideale der Maximalordnung Oα erfüllt sind. Die wichtigste Ausnahme ist das Nichtvorhandensein einer eindeutigen PrimidealZerlegung, was sich darauf zurückführen lässt, dass in allgemeinen Ordnungen aus der Idealinklusion a ⊆ b nicht notwendig die Teilbarkeitsrelation b | a folgt. Zur Erinnerung: Ein Nichtnullideal p von A ist definitionsgemäß ein Primideal, wenn A/p ein Integritätsbereich ist. Primideale in Ordnungen algebraischer Zahlkörper sind maximal, daher ist A/p ein Körper. Als Norm von p – geschrieben N (p) – bezeichnet man die Mächtigkeit dieses Körpers, die immer endlich ist. Ist p die rationale Primzahl unter p, dann ist Fp der Primkörper von A/p und N (p) der Grad der Erweiterung A/p | Fp . Die Primideale von A sind genau die Kerne von Homomorphismen, welche A auf endliche Körper abbilden. Ist p = ker(ϕp ), dann lässt sich ϕp in nicht notwendig eindeutiger Weise auf Oα fortsetzen. Wir erhalten – als Kerne dieser Fortsetzungen – genau die Primideale q von Oα , die über p liegen. Der Homomorphismus lp,A lässt sich nach Korollar 4.6 aus den durch diese Primideale definierten Bewertungen konstruieren. Da wir lp,A für Argumente der Gestalt a − bα auswerten wollen, die nicht notwendig ganzalgebraisch sind, müssen wir die Homomorphismen, deren Kerne Oα -Primideale sind, geeignet fortsetzen. Zu diesem Zweck benötigen wir einige Definitionen und Sätze aus der Bewertungstheorie: Satz 4.13 (Die q-adische Bewertung νq ) Für jedes Primideal q von Oα genügt die q-adische Bewertung νq : Q(α) → Z ∪ {∞} folgenden Eigenschaften: (a) νq (x) = ∞ ⇔ x = 0, (b) νq (x1 · x2 ) = νq (x1 ) + νq (x2 ) (c) νq (x1 + x2 ) ≥ min{νq (x1 ), νq (x2 )} und (d) νq (x) = νq (−x) für alle x, x1 , x2 ∈ Q(α). Jedem Primideal q von Oα ist der sogenannte Bewertungsring Bq zugeordnet: Definition und Satz 4.14 (Der Bewertungsring Bq ) Sei q ein Primideal von Oα . Dann ist der Bewertungsring Bq definiert als Bq := {x ∈ Q(α) | νq (x) ≥ 0}. Bq ist ein kommutativer Ring mit Eins und mq := {x ∈ Q(α) | νq (x) > 0} ist ein maximales Ideal in diesem Ring. Wir erkennen, dass mq ∩ Oα = q gilt. Daher liefert der dem Bewertungsring in natürlicher Weise zugeordnete Reduktionshomomorphismus ϕq,B : Bq → Bq /mq die gesuchte Fortsetzung von ϕq auf einen Unterring von Q(α). Es gelten offensichtlich folgende Äquivalenzen: 66 4.2 DIE WAHL EINES GUTEN POLYNOMS Lemma 4.15 (a) νq (x) ≥ 0 ⇔ x ∈ Bq ⇔ ϕq,B (x) ist definiert (b) νq (x) > 0 ⇔ x ∈ mq ⇔ ϕq,B (x) = 0 (c) νq (x) < 0 ⇔ x 6∈ Bq ⇔ ϕq,B (x) ist nicht definiert für alle x ∈ Q(α). Da wir in erster Linie mit der Charakterisierung von Primidealen als Kerne von Homomorphismen in endliche Körper arbeiten werden, lohnt sich eine genauere Betrachtung dieser Objekte: Satz 4.16 (Homomorphismen von A in Fp ) Sei p eine rationale Primzahl. Ist c ∈ Fp eine Nullstelle von fα (X) modulo p, dann ist die durch α 7→ c induzierte Abbildung ϕ : Z[α] → Fp ein Homomorphismus, und pp,c := ker(ϕ) ∩ A ist ein Primideal ersten Grades von A. Diese Aussage gilt auch analog mit α−1 statt α und entsprechend fα−1 (X) anstelle von fα (X). Umgekehrt ist jedes Primideal ersten Grades von A von dieser Form. Außerdem lässt sich jeder Homomorphismus von A nach Fp eindeutig auf Z[α] und/oder Z[α−1 ] fortsetzen. Beweis: Die erste Ausssage beweisen wir weitgehend analog zu Satz 2.1, wobei lediglich zu beachten ist, dass euklidische Division durch fα (X) in Z[X] nicht mehr möglich ist, da fα (X) nicht normiert ist. Sind g1 (X) und g2 (X) ganzrationale Polynome und gilt ad - lc(g1 )·lc(g2 ), dann können wir das Produkt g1 (X) · g2 (X) =: g(X) nicht mit fα (X) reduzieren und g1 (α) · g2 (α) wird durch g(α) repräsentiert. In diesem Fall ist die multiplikative Homomorphieeigenschaft trivialerweise erfüllt, andernfalls folgt sie aus der zu fα (α) = 0 analogen Reduktionsformel fα (c) ≡ 0 (p). Aus A/pp,c ∼ = ϕ(A) ∼ = Fp schließen wir, dass pp,c wie behauptet ein Primideal ersten Grades von A ist. Die beiden noch fehlenden Aussagen des Satzes beweisen wir in einem Schritt: Sei umgekehrt p = ker(ϕp ) mit ϕp : A → Fp ein Primideal ersten Grades von A und sei weiterhin q ein beliebiges Primideal von Oα über p. Wegen νq (α−1 ) = −νq (α) gilt α ∈ Bq oder α−1 ∈ Bq , wenigstens einer der Werte ϕq,B (α) und ϕq,B (α−1 ) ist also definiert. Wir müssen zeigen, dass diese Werte (falls definiert) Elemente von Fp sind und nicht von q, sondern nur von p abhängen. Zunächst beweisen wir, dass die Definiertheit von ϕq,B (α) nur von p abhängt. Zu diesem Zweck zeigen wir, dass aus α 6∈ Bq folgt α 6∈ Bq0 für alle Oα -Primideale q0 über p. Mit anderen Worten bedeutet dies, dass es nicht zwei verschiedene Fortsetzungen von ϕp geben kann, so dass die eine α auf Null und die andere α−1 auf Null abbildet. Sei also α 6∈ Bq , was nach Lemma 4.15 gleichbedeutend ist mit ϕq,B (α−1 ) = 0. Insbesondere ist 0 eine Nullstelle von fα−1 (X) modulo p. Deshalb können wir festhalten, dass p ein Teiler von ad , dem konstanten Term derPFunktion fα−1 (X), sein muss. −(k+1) Mithilfe der in Bemerkung 4.10 eingeführten Darstellungen βi = können k=0,...,i −ai−k α 0 wir außerdem ϕq,B (βi ) = 0 für i = 0, . . . , d − 2 schließen. Angenommen, q sei ein weiteres Oα Primideal über p, und ϕq0 ,B (α) sei definiert. Da ϕq,B und ϕq0 ,B auf A übereinstimmen, bildet auch ϕq0 ,B die Basiselemente βi auf Null ab. Hieraus, aus der Tatsache p | ad sowie aus den Gleichungen P ϕq,B (βj ) = ϕq,B ( i=j+1,...,d ai αi−j−1 ) für j = d − 2, d − 3, . . . , 0 können wir nun iterativ p | aj für j = d − 1, . . . , 1 folgern (wichtig für diesen Schritt ist die Voraussetzung, dass ϕq0 ,B (α) definiert ist). Da nun aber das Polynom fα (X) als primitiv vorausgesetzt wurde, ist p nicht auch noch ein Teiler von a0 . Demnach ist fα (X) modulo p das konstante Nichtnull-Polynom a0 . Dies ist ein Widerspruch, denn ϕq0 ,B (α) muss eine Nullstelle von fα (X) modulo p sein. Mit dem Kontrapositionsprinzip folgt aus dem bisher Gezeigten: Ist ϕq,B (α) definiert für ein Oα -Primideal q über p, dann gilt dies für alle Oα -Primideale über p. Analog können wir diese Aussage für α−1 beweisen. Wir zeigen nun, dass ϕq,B (α) bzw. ϕq,B (α−1 ) ein Element von Fp ist und ausschließlich abhängt von ϕq,B (βi ), i = 0, . . . , d − 2. Wegen ϕq,B |A = ϕp folgt hieraus die Behauptung. Gilt ϕq,B (α) = 0 oder ϕq,B (α−1 ) = 0, dann ist die Behauptung trivialerweise erfüllt. In diesem Fall 67 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE lässt sich ϕp genau auf einen der Ringe Z[α] oder Z[α−1 ] eindeutig fortsetzen, für den anderen ist keine Fortsetzung definiert. Nehmen wir nun oBdA. an, dass sowohl ϕq,B (α) als auch ϕq,B (α−1 ) definiert sind. Insbesondere sind diese beiden Werte ungleich Null. Wir zeigen, dass sich ϕq,B (α) einzig aus den Bildern ϕq,B (βj ) für 0 ≤ j ≤ d − 2 bestimmen lässt. Weil ϕq,B |A = ϕp gilt, kann ϕq,B (α) nur von p abhängen. Durch Inversenbildung modulo p erhalten wir auch ϕq,B (α−1 ), denn nach Voraussetzung gilt ϕq,B (α) 6= 0. Nun zur Bestimmung von ϕq,B (α). Wir nutzen wieder die in Definition 4.9 visualisierte P”Dreiecksform“ aus, indem wir sukzessive versuchen, ϕq,B (α) aus den Gleichungen ϕq,B (βj ) = ϕq,B ( i=j+1,...,d ai αi−j−1 ) für j = d − 2, d − 3, . . . , 0 zu berechnen: Ist p kein Teiler von ad , dann gilt ϕq,B (α) = ad −1 (ϕq,B (βd−2 ) − ad−1 ). Außerdem ist ϕq,B (α) ∈ Fp erfüllt, denn auf A ist ϕq,B identisch mit ϕp : A → Fp . Gilt p | ad , p - ad−1 , dann leiten wir ϕq,B (α) aus ϕq,B (βd−3 ) = ϕq,B (ad α2 + ad−1 α + ad−2 ) = ϕq,B (ad−1 α + ad−2 ) her und erhalten wieder ein Element von Fp . Auf diese Art und Weise können wir ϕq,B (α) ∈ Fp bestimmen, es sei denn, es gilt p | ggT(a2 , . . . , ad ). In diesem Fall betrachten wir β0 = −a0 α−1 . Ist p kein Teiler von a0 , dann können wir hieraus ϕq,B (α−1 ) ∈ Fp ermitteln und durch Inversenbildung modulo p ϕq,B (α) erhalten (nach Voraussetzung ist ϕq,B (α−1 ) 6= 0). Andernfalls muss p - a1 erfüllt sein, da fα (X) primitiv ist. Die Gleichung ϕq,B (β1 ) = ϕq,B (−a0 − a1 α−1 ) = ϕq,B (−a1 α−1 ) führt uns dann endgültig zum Ziel. Wir haben somit gezeigt, dass sich im Fall ϕq,B (α) und ϕq,B (α−1 ) sind definiert“ der Homomorphismus ϕp (X) ein” deutig auf Z[α] und Z[α−1 ] fortsetzen lässt und sowohl α als auch α−1 auf Elemente von Fp abgebildet werden. Der Beweis des letzten Satzes liefert folgendes Korollar: Korollar 4.17 (Primideale ersten Grades von A) Sei p eine rationale Primzahl und c ∈ Fp eine Nullstelle von fα (X) modulo p. Dann bildet A geschnitten mit dem Kern des durch α 7→ c induzierten Homomorphismus ϕα7→c von Z[α] nach Fp ein Primideal ersten Grades von A. Dieses bezeichnen wir mit pp,c . Gilt fα−1 (0) ≡ 0 (p), dann ist A geschnitten mit dem Kern des durch α−1 7→ 0 induzierten Homomorphismus ϕα−1 7→0 von Z[α−1 ] nach Fp ein Primideal ersten Grades von A; wir schreiben pp,∞ . Ist c 6= 0 eine Nullstelle von fα (X) modulo p, dann liefern die Konstruktionen A ∩ ker(ϕα7→c ) und A ∩ ker(ϕα−1 7→c−1 ) natürlich dasselbe Primideal von A. Andere Primideale ersten Grades von A gibt es nicht. Im α ∈ Oα -Fall konnten wir eine bijektive Beziehung zwischen den Nullstellen des Minimalpolynoms von α modulo Primzahlen einerseits und den Primidealen ersten Grades von Z[α] andererseits herleiten. Wenn nun A die Rolle von Z[α] übernehmen soll, welche Entsprechung finden wir für das Minimalpolynom? Korollar 4.17 zeigt, dass die Polynome fα (X) und fα−1 (X) hierfür geeignet sind. Noch schöner wäre es allerdings, ein einziges Polynom zur Verfügung zu haben. Wir werden sehen, dass die sogenannte homogenisierte Form von fα (X) genau dies leistet: Definition 4.18 (Homogenisierte Form) Das zweistellige Polynom F (X, Y ) := ad X d + ad−1 X d−1 Y + ad−2 X d−2 Y 2 + · · · + a1 XY d−1 + a0 Y d ∈ Z[X, Y ] heißt homogenisierte Form von fα (X). Wir erkennen, dass F (X, Y ) die Polynome fα (X) und fα−1 (X) gleichberechtigt repräsentiert vermöge: fα (X) = F (X, 1) und fα−1 (X) = F (1, X). 68 4.2 DIE WAHL EINES GUTEN POLYNOMS Darüber hinaus besitzt F (X, Y ) noch folgende Eigenschaften, die man durch Nachrechnen verifizieren kann: Lemma 4.19 (Eigenschaften von F (X, Y )) (a) F (cX, cY ) = cd F (X, Y ), insbesondere F (X, Y ) = Y d F Y F (X, Y ) = X d fα−1 X für X 6= 0. X Y ,1 = Y d fα X Y für Y 6= 0 und analog (b) mω (X) = fω (X) = a−1 d F (X, ad ). (c) N (a − bα) = a−1 d F (a, b). Bevor wir nun die Nullstellen von F (X, Y ) modulo p und die Primideale ersten Grades von A über p in Beziehung setzen, ist noch folgende Überlegung notwendig: Wir haben F (X, Y ) eingeführt, weil F (X, Y ) die Polynome fα (X) und fα−1 (X) in sich vereinigt. Speziell interessieren wir uns für die Nullstellen dieser Polynome modulo Primzahlen, weil diese die Primideale ersten Grades von A repräsentieren. Insbesondere möchten wir zwischen verschiedenen Nullstellen von F (X, Y ) modulo p, die dieselbe Nullstelle von fα (X) bzw. fα−1 (X) darstellen, nicht unterscheiden. Beispiel 4.20 Seien F (X, Y ) := 3X 2 + 2XY − 3Y 2 , fα (X) := 3X 2 + 2X − 3 und fα−1 (X) := −3X 2 + 2X + 3. Dann gelten F (3, 1) = fα (3) ≡ 0 (5) und F (4, 3) ≡ 32 · F (3, 1) ≡ 0 (5). In diesem Fall gehen die Nullstellen (3, 1) und (4, 3) von F (X, Y ) modulo 5 auf dieselbe Nullstelle von fα (X) modulo 5, nämlich 3, zurück. Außerdem ist 2 – das multiplikative Inverse von 3 modulo 5 – eine Nullstelle von fα−1 (X) modulo 5. Diese ist unter anderem verantwortlich für die Nullstellen (1, 2) und (2, 4) von F (X, Y ) modulo 5: F (2, 4) ≡ 22 · F (1, 2) ≡ 22 · fα−1 (2) ≡ 0 (5). Andererseits korrespondieren alle diese Nullstellen ausschließlich mit dem Primideal p5,3 . Um diesem Umstand Rechnung zu tragen, werden wir die Nullstellen von F (X, Y ) modulo p in geeignete Äquivalenzklassen einteilen. Dazu benötigen wir den Begriff der projektiven Gerade: Definition 4.21 (Projektive Gerade über Fp ) Betrachtet man F2p als Fp -Vektorraum, so nennt man die Menge aller 1-dimensionalen Untervektorräume (also aller Geraden durch den Nullpunkt) die kanonische projektive Gerade über Fp . Diese wird mit P1 (Fp ) bezeichnet. Ein Punkt x ∈ P1 (Fp ) wird festgelegt durch das geordnete Paar x = (x0 , x1 ) ∈ F2p \ {0}. Die Paare (x0 , x1 ) und y = (y0 , y1 ) definieren denselben Punkt von P1 (Fp ) genau dann, wenn es ein c ∈ F× p gibt mit x = cy (d. h. wenn beide auf derselben Geraden durch den Nullpunkt liegen). Die Gesamtheit aller y = (y0 , y1 ), die denselben Punkt wie x definieren, nennen wir die Klasse von x und schreiben hierfür [x] = (x0 : x1 ). Wie der Begriff der Klassenbildung schon andeutet, können wir die projektive Gerade P1 (Fp ) auch auffassen als Quotient von F2p \ {0} nach der Äquivalenzrelation ∼ : x∼y ⇔ es existiert c ∈ F× p mit x = cy. Jetzt haben wir genug Vorarbeit geleistet, um endlich jenen Satz herzuleiten, der den Zusammenhang zwischen den Primidealen ersten Grades von A und den Nullstellen von F (X, Y ) aufzeigt. Zunächst definieren wir R(p) := {(x0 : x1 ) ∈ P1 (Fp ) | F (x0 , x1 ) ≡ 0 (p)}. 69 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE Gilt F (x0 , x1 ) ≡ 0 (p), dann folgt wegen F (cx0 , cx1 ) = cd F (x0 , x1 ) auch F (y0 , y1 ) ≡ 0 (p) für alle y0 , y1 ∈ Fp mit (y0 : y1 ) = (x0 : x1 ). Daher ist die Menge R(p) wohldefiniert. Ist nun (x0 : x1 ) ∈ R(p), also F (x0 , x1 ) ≡ 0 (p), dann folgt im Fall x1 6≡ 0 (p), dass x0 · x−1 1 eine Nullstelle von fα (X) modulo p ist. Wir ordnen der Klasse (x0 : x1 ) daher das Primideal pp,c mit c ≡ x0 · x−1 (p) zu. Analog verfahren 1 wir im Fall x1 ≡ 0 (p), denn nach Definition von P1 (Fp ) gilt dann x0 6≡ 0 (p) und 0 ≡ x1 · x−1 (p) ist 0 eine Nullstelle von fα−1 (X) modulo p. Daher korrespondiert die Klasse (x0 : x1 ) mit pp,∞ . Umgekehrt geht nach dem letzten Korollar jedes Primideal ersten Grades von A eindeutig auf eine Nullstelle von fα (X) modulo p bzw. fα−1 (X) modulo p zurück, daher gilt: Satz 4.22 (Zuordung zwischen R(p) und A-Primidealen) Sei p eine rationale Primzahl. Dann ist folgende Abbildung von der Menge R(p) in die Gesamtheit der Primideale ersten Grades über p von A bijektiv: ( pp,c falls x1 6≡ 0 (p) und c ≡ x0 · x−1 (p) gilt, 1 (x0 : x1 ) 7→ pp,∞ falls x1 ≡ 0 (p). Anstelle von pp,c mit c ≡ x0 · x−1 (p) schreiben wir bisweilen auch pp,(x0 :x1 ) . 1 Dieser Satz ist entscheidend für unser Vorhaben, die Vorgehensweise des α ∈ Oα -Falles mit A in der Rolle von Z[α] nachzuvollziehen. Ein notwendiges Kriterium zur Quadratkonstruktion Der letzte Schritt bei der Konstruktion eines zu (4.1) analogen Kriteriums ist die Bestimmung der Größen lp,A (a − bα) für teilerfremde ganzrationale Zahlen a und b aus der Norm von a − bα. Zuerst beweisen wir die Verallgemeinerung von Satz 3.30: Satz 4.23 Seien a und b teilerfremde ganzrationale Zahlen und sei p ein Primideal von A mit lp,A (a − bα) 6= 0. Dann ist der Grad von p gleich Eins. Beweis: Wir verwenden Lemma 4.15, Satz 4.13 und Satz 4.16, ohne jedesmal explizit darauf hinzuweisen. Sei p die ganzrationale Primzahl unter p. Mithilfe von Korollar 4.6 können wir aus lp,A (a − bα) 6= 0 schließen, dass ein Primideal q von Oα über p existiert mit νq (a−bα) 6= 0. Für den Nachweis, dass p ein Primideal ersten Grades von A ist, genügt es nach Satz 4.16 offenbar, ϕq,B (α) ∈ Fp oder ϕq,B (α−1 ) ∈ Fp herzuleiten. Wir erinnern uns, dass diese Werte nicht von q, sondern nur von p abhängen. Es ist daher sinnvoll, folgende zwei Fälle zu unterscheiden: Fall 1: ϕq,B (α) ist undefiniert Dies ist gleichbedeutend mit ϕq,B (α−1 ) = 0. Daher gilt p = pp,∞ und die Behauptung ist erfüllt. Deshalb betrachten wir nun Fall 2: ϕq,B (α) ist definiert Wir zeigen zunächst, dass aus dieser Voraussetzung νq (a − bα) ≥ 0 und p - b folgen und leiten dann die Behauptung aus diesen Tatsachen her: • Es gilt: νq (a − bα) ≥ min{νq (a), νq (bα)} = min{νq (a), νq (b) +νq (α)}. | {z } | {z } ≥0 ≥0 Wir erkennen, dass νq (a − bα) < 0 folglich νq (α) < 0 erzwingt, was gleichbedeutend ist mit der Undefiniertheit von ϕq,B (α). Daher ist lp,A (a − bα) < 0 nur für p = pp,∞ möglich. 70 4.2 DIE WAHL EINES GUTEN POLYNOMS • Gelte nun also νq (a − bα) > 0. Dies ist gleichbedeutend mit ϕq,B (a − bα) = 0. Angenommen, p sei ein Teiler von b. Dann gilt p - a, weil a und b als teilerfremd vorausgesetzt sind, und wir schließen ϕq,B (bα) = ϕq,B (a) > 0. Es folgt: 0 = νq (bα) = νq (b) +νq (α). | {z } >0 Daher muss νq (α) < 0 erfüllt sein und wir sehen, dass lp,A (a − bα) > 0 und p | b nur für p = pp,∞ möglich ist. −1 • Aus den beiden letzten Punkten folgt unmittelbar ϕq,B (α) = a · b ∈ Fp . Diese Rechnung ist möglich, weil nach Voraussetzung der Wert ϕq,B (α) definiert ist. Somit haben wir p = pp,(a:b) nachgewiesen und die Behauptung vollständig gezeigt. Optimal wäre es, wenn sich – ähnlich wie bei unserem früheren Vorgehen – herausstellen würde, dass zu einer rationalen Primzahl p und einem Paar ganzrationaler teilerfremder Zahlen (a, b) höchstens ein A-Primideal p über p existiert mit lp,A (a − bα) 6= 0. Dies ist aber leider nicht der Fall. Aus dem Beweis des letzten Satzes können wir zumindest Folgendes ableiten: • Gelten lp,A (a − bα) 6= 0 und p | b, dann muss p = pp,∞ erfüllt sein. Wir erinnern uns, dass pp,∞ definiert ist als Schnitt von A mit dem Kern des durch α−1 7→ 0 induzierten Homomorphismus von Z[α−1 ] nach Fp . Notwendige Voraussetzung für die Existenz dieses Homomorphismus ist, dass fα−1 (0) ≡ 0 (p) erfüllt ist. Insbesondere muss also p ein Teiler von ad , dem konstanten Term von fα−1 (X), sein. • Teilt p nicht ad , dann kann lp,A (a − bα) 6= 0 ausschließlich auf p = pp,(a:b) zutreffen. • Im Fall p | ad und p - b ist lp,A (a − bα) 6= 0 höchstens möglich für p = pp,∞ und p = pp,(a:b) . Ausschließlich der letzte Fall bereitet noch etwas Mühe, denn aus a und b lässt sich hier nicht eindeutig ein p mit lp,A (a − bα) 6= 0 bestimmen. Es zeigt sich jedoch, dass unter den Voraussetzungen p | ad und p - b immer lpp,∞ ,A (a − bα) = −ordp (ad ) erfüllt ist (siehe [BLP93]). Aus dem bisher Gezeigten und mit Teil c von Satz 4.5 folgt nun die Verallgemeinerung von Satz 3.31. Aus Gründen der besseren Lesbarkeit schreiben wir lp,(x0 :x1 ) anstelle von lpp,(x0 :x1 ) ,A . Es gilt: =−ordp (ad ) |N (a − bα)| = Y p-ad p lp,(a:b) (a−bα) Y p z }| {Y lp,(a:b) (a−bα)+lp,∞ (a−bα) p|ad p-b plp,∞ (a−bα) . (4.3) p|ad p|b Dies bereitet den Weg zu folgendem Satz, der beschreibt, wie sich die Größen lp,c (a − bα) analog zum α ∈ Oα -Fall aus der Faktorisierung der Norm von a − bα gewinnen lassen: Definition und Satz 4.24 (Die Größen ep,(x0 :x1 ) (a, b)) Seien a und b teilerfremde ganzrationale Zahlen, p eine rationale Primzahl und (x0 : x1 ) ∈ R(p). Dann definieren wir ( ordp (F (a, b)) falls (a : b) = (x0 : x1 ), ep,(x0 :x1 ) (a, b) := 0 sonst. Hiermit gilt: ( lp,(x0 :x1 ) (a − bα) falls x1 6≡ 0, ep,(x0 :x1 ) (a, b) = lp,(x0 :x1 ) (a − bα) + ordp (ad ) sonst. 71 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE Beweis: Aus 4.3 und F (a, b) = N (a − bα) · ad (siehe Lemma 4.19) folgt: |F (a, b)| = |N (a − bα) · ad | =0 = Y p-ad p lp,(a:b) (a−bα) Y p z }| {Y lp,(a:b) (a−bα)+lp,∞ (a−bα)+ordp (ad ) p|ad p-b plp,∞ (a−bα)+ordp (ad ) . p|ad p|b Aufgrund der eindeutigen Primfaktorzerlegung folgt hieraus die Behauptung. Dieser Satz versetzt uns endlich in die Lage, ein zu 4.1 analoges Kriterium zu formulieren: Ist B2 die Norm-Schranke der algebraischen Faktorbasis, dann gelte für alle rationalen Primzahlen p ≤ B2 und alle (x0 : x1 ) ∈ R(p): X ep,(x0 :x1 ) (a, b) ≡ 0 (2). (4.4) (a,b)∈S Satz 4.25 Sei Q S die Gesamtheit2einer geraden Anzahl von Paaren teilerfremder ganzrationaler Zahlen a, b. Gilt (a,b)∈S (a − bα) = x für ein x ∈ Q(α), dann genügt S dem Kriterium (4.4). Beweis: Seien p ≤ B2 eine rationale Primzahl und (x0 : x1 ) ∈ R(p). Ist x1 6≡ 0 (p), dann folgt die Behauptung unmittelbar aus Satz 4.24 und den Homomorphieeigenschaften der lp . Für x1 ≡ 0 (p) benötigen wir die Voraussetzung, dass #S eine gerade Zahl ist: X X ep,(x0 :x1 ) (a, b) = lp,(x0 :x1 ) (a − bα) + ordp (ad ) (a,b)∈S (a,b)∈S = lp,(x0 :x1 ) Y (a − bα) + #S · ordp (ad ) (a,b)∈S = 2 · lp,(x0 :x1 ) (x) + #S · ordp (ad ) ≡ 0 (2). Durch einen zusätzlichen Eintrag im Exponentenvektor, der unabhängig von a und b immer den Wert 1 erhält, lässt sich erreichen, dass die im Lineare-Algebra-Schritt konstruierte Menge S eine gerade Anzahl von Elementen besitzt. Gehen wir daher im Folgenden davon aus, dass #S ≡ 0 (2) erfüllt ist. Herleitung der finalen Kongruenz Die Verwendung eines nichtnormierten Polynoms hat zur Folge, dass wegen Z[α] 6⊂ Oα die Zahlen a − bα nicht mehr notwendig ganzalgebraisch sind. Daher ist das Ziel des Sieb- und Lineare-AlgebraQ Schittes – das Produkt (a,b)∈S (a−bα) – lediglich ein Quadrat in Q(α)× , nicht jedoch in Z[α]. Wie wir dennoch die finale Kongruenz herleiten können, hängt davon ab, welcher Algorithmus zur Bestimmung des algebraischen Quadrates herangezogen wird: Die naheliegendste Möglichkeit ist die Verallgemeinerung des α ∈ Oα -Falles. Dort haben wir die Tatsache f 0 (α) · θ ∈ Z[α] für alle θ ∈ Oα ausgenutzt, um zu garantieren, dass die Wurzel des konstruierten algebraischen Quadrates ein Element von Z[α] ist. Diese Vorgehensweise können wir übernehmen, wenn wir α durch die ganzalgebraische Zahl ω := ad α und entsprechend Z[α] durch die Ordnung Z[ω] ⊆ Oα ersetzen. Als Homomorphismus wählen wir die durch ω = ad α 7→ ad m mod N induzierte Q Abbildung von Z[ω] nach Z/N Z. Multiplizieren wir das Quadrat (a,b)∈S (a − bα) mit a#S d , so ist 72 4.2 DIE WAHL EINES GUTEN POLYNOMS jeder Faktor von der Form ad (a − bα) = ad a − bω ∈ Z[ω]. Weil die Menge S eine gerade Anzahl von Q Elementen enthält, ist dann das Produkt a#S (a,b)∈S (a − bα) das Quadrat einer ganzalgebraischen d Zahl θ und damit insbesondere fω0 (ω) · θ ∈ Z[ω]. Wir erhalten: fω0 (ω)2 · a#S d Y (a,b)∈S (a − bα) = ( fω0 (ω)θ )2 . | {z } =:β∈Z[ω] Die finale Kongruenz können wir daher wie gewohnt herleiten, wenn wir die rationale Seite mit 0 2 a#S d fω (ad m) multiplizieren. Die ersten Implementierungen des GNFS arbeiteten auf diese Art und Weise. Eine Weiterentwicklung des Quadratwurzelschrittes von P. L. Montgomery hat jedoch zur Folge, dass Q Q anstelle der Quadratwurzel von (a,b)∈S (a − bα) diejenige von (a,b)∈S (a − bα)sa,b für sa,b ∈ {−1, 1} 0 2 bestimmt wird. In diesem Fall ist die Multiplikation mit a#S d fω (ω) natürlich wirkungslos. In Abschnitt × 4.6 werden wir sehen, wie lediglich ein Quadrat aus Q(α) die Konstuktion der beiden modulo N kongruenten Quadrate ermöglicht. 4.2.2 Die Bewertung von Polynomen Dieser Unterabschnitt liefert die theoretischen Grundlagen für Methoden, die Eignung eines Polynoms für das Number Field Sieve zu bewerten, ohne Siebexperimente durchzuführen. Die letzten Ausführungen haben gezeigt, dass ein Polynom f (X) genau dann einem Polynom g(X) vorzuziehen ist, wenn es über dem a, b-Siebraum mehr glatte Werte der Form F (a, b) · (a − bmf ) als entsprechend der Gestalt G(a, b) · (a − bmg ) gibt; hierbei bezeichnen F (X, Y ) und G(X, Y ) die homogenisierten Formen sowie mf und mg die Nullstellen modulo N von f (X) bzw. g(X). Bei der Verwendung der Base-m-Methode ist die Größenordnung der Nullstelle modulo N durch N bereits festgelegt, daher ist die Größe F (a, b) bzw. G(a, b) der entscheidende Faktor. Es stellt sich deshalb die Frage: Wie muss ein Polynom f (X) beschaffen sein, damit F (X, Y ) über dem Siebraum ausgewertet viele glatte Werte annimmt? Unter der Güte von f (X) bzw. F (X, Y ) werden wir im Folgenden die Anzahl glatter Zahlen der Form F (a, b) verstehen, wobei a und b den Siebraum durchlaufen. Es gibt zwei wesentliche Aspekte, die die Güte eines Polynoms beeinflussen: Größen- und Nullstelleneigenschaften. Größeneigenschaften Offensichtlich wichtig für die Güte von f (X) ist die durchschnittliche Größe der Funktionswerte von f (X), denn kleine Zahlen sind mit höherer Wahrscheinlichkeit glatt als größere Zahlen. Hauptsächlich bestimmt werden die Größeneigenschaften (in der englischsprachigen Literatur ist von size proper” ties“ die Rede) natürlich durch den Grad des Polynoms. Der Einfluss dieses Parameters ist schon ausführlich untersucht worden und gilt im Wesentlichen als geklärt. Deshalb soll an dieser Stelle ein kurzer Überblick über die Methoden und erzielten Ergebnisse genügen: In [BLP93] führen die Autoren eine Laufzeitanalyse des Number Field Sieve durch und zeigen, dass für festes d bei einer optimalen Wahl der Faktorbasen und des Siebraumes die Laufzeit des Number Field Sieve nach oben begrenzt werden kann durch den Ausdruck q 1 1 exp (1 + o(1)) d log d + (d log d)2 + 4 log(N d ) log log(N d ) . (4.5) Ziel ist es also, d so zu bestimmen, dass 4.5 minimiert wird. Auf diese Art und Weise ist die asymptotisch (für N → ∞) optimale Wahl für d gegeben durch log N 13 d = 3 + o(1) . log log N 1 3 (4.6) 73 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE Diese Abschätzungen gehen davon aus, dass das Number Field Sieve-Polynom f (X) normiert ist. Wir haben jedoch im letzten Unterabschnitt gezeigt, dass man diese Voraussetzung fallenlassen kann, da so die Konstruktion von Polynomen mit kleinerer Nullstelle m und daher auch kleineren Koeffizienten ermöglicht wird. B. Murphy verallgemeinert in seiner Dissertation [Mur99] die oben skizzierten Überlegungen auf die Arbeit mit nichtnormierten Polynomen und folgert, dass für N mit 80 bis 110 Dezimalen d = 4, 120 bis 220 Dezimalen d = 5 und schließlich für noch größere N mit bis zu 300 Dezimalen d = 6 die beste Wahl zu sein scheint. Es ist also davon auszugehen, dass für das Number Field Sieve in den nächsten Jahren ausschließlich Polynome fünften Grades von Bedeutung sein werden. Ein anderes Bild eräbe sich, fände man eine Methode, zwei nichtlineare Polynome f1 (X) und f2 (X) mit gemeinsamer Nullstelle m modulo N und beispielsweise den Graden 2 und 4 bzw. 3 und 3 zu generieren (siehe Abschnitt 2.3). Wie bereits erwähnt, scheinen die zwei quadratischen Polynome aus P. L. Montgomerys Quadratic-PolynomialVariante des Number Field Sieve nicht auszureichen, um für Zahlen mit mehr als 100 Dezimalen die Kombination eines linearen und eines Base-m-Polynoms fünften Grades zu schlagen. Weil aber vergleichbare Verfahren für Polynome größeren Grades noch nicht bekannt sind, beschäftigen wir uns im Folgenden ausschließlich mit Base-m-Polynomen fünften Grades. Um diesen Unterabschnitt abzuschließen, sei noch erwähnt, wie man aus einigen Kandidatenpolynomen f1 , . . . , fn das bezüglich Größeneigenschaften beste ermittelt: Hierzu bietet es sich an, die Funktionen |F1 (X, Y )|, . . . , |Fn (X, Y )| über dem Siebraum zu integrieren und das Polynom mit dem kleinsten Ergebnis zu wählen. Anstelle der Beträge kann man auch über die Quadrate der Funktionen integrieren, was den zusätzlichen Vorteil einbrächte, dass Polynome, die über fast dem gesamten Siebraum kleine Werte annehmen mit Ausnahme einiger Ausreißer nach oben, bevorzugt werden gegenüber solchen, die konstant mittelgroße Werte produzieren. Dies entspricht unserer Intention, da die Wahrscheinlichkeit, dass einen Zufallszahl glatt ist, mit wachsender Größe dieser Zahl überproportional schnell abnimmt. Nullstellen-Eigenschaften Ist z eine Zufallszahl, dann hängt die Wahrscheinlichkeit, dass z glatt ist, einzig von der Größe von z ab. Ist z hingegen ein zufällig gewählter Wert eines Polynoms, dann ist dies nicht mehr der Fall, vielmehr sind zusätzlich noch die sogenanntan Nullstellen-Eigenschaften ( root-properties“) des Po” lynoms entscheidend. Diese können wir uns wie folgt veranschaulichen: Eine Primzahl p teilt den Wert F (a, b) genau dann, wenn die Klasse (a : b) ∈ P1 (Fp ) eine Nullstelle von F (X, Y ) modulo p repräsentiert. In diesem Fall gilt p | F (c, d) auch für alle c, d ∈ Z mit (c : d) = (a : b). Diese Beobachtung motiviert uns zu der Vermutung, dass ein Polynom F (X, Y ) dann besonders viele glatte Werte liefert, wenn F (X, Y ) viele Nullstellen modulo kleiner Primzahlen besitzt. Die kommenden Ausführungen werden diese Überlegungen untermauern und präzisieren. Definition 4.26 (p-Anteil des typischen F -Wertes) Seien p eine rationale Primzahl und z, z1 , z2 zufällig gewählte ganze Zahlen mit ggT(z1 , z2 ) = 1. In Übereinstimmung mit der Notation aus [Mur99] bezeichne contp (z) den erwarteten Wert von ordp (z) und contp (F ) entsprechend den erwarteten Wert von ordp (F (z1 , z2 )). Wir sagen, contp (F ) schätzt den p-Anteil des typischen F-Wertes. Die Untersuchung typischer f -Werte im Hinblick darauf, wie erfolgreich über die Bilder des Polynoms f (X) gesiebt werden kann, wurde auch schon zur Analyse des Quadratischen Siebes verwendet. In dem in Kapitel 1 vorgestellten Basisalgorithmus des Quadratischen Siebes ist das zum Sieben herangezogene √ Polynom mit Q(X) := (X + [ N ])2 − N zwar schon festgelegt, so dass sich ein Polynom-AuswahlProblem zunächst einmal nicht stellt. Manchmal scheint es aber effizienter zu sein, anstelle von N ein kleines Vielfaches kN zu faktorisieren. Dies ist dann der Fall, wenn es deutlich mehr Primzahlen p gibt, die quadratischer Rest modulo kN sind als dies für N der Fall ist, denn wir erinnern uns, dass 74 4.2 DIE WAHL EINES GUTEN POLYNOMS Q(X) ≡ 0 (p) keine Lösung besitzt, falls p kein quadratischer Rest modulo N ist. Mehr zu diesem Thema findet sich in [Boe97]. Als erstes werden wir die Größen contp (z) und contp (F ) bestimmen. Es wird sich zeigen, dass contp (F ) um so größer ist, je mehr Nullstellen modulo p das Polynom F (X, Y ) besitzt. Nach der Definition des Erwartungswertes können wir contp (z) berechnen als die unendliche Summe P i=0,...,∞ i · Wsk(ordp (z) = i). Für eine ganze Zahl z gilt ordp (z) = i genau dann, wenn die Teilbarkeitsrelationen pi | z und pi+1 - z erfüllt sind. Nach den Regeln der bedingten Wahrscheinlichkeit berechnet sich die Wahrscheinlichkeit, dass zwei Ereignisse A und B gleichzeitig eintreten als Produkt der Wahrscheinlichkeit von B mit der Wahrscheinlichkeit, dass A zutrifft unter der Zusatzvoraussetzung B gilt“. Da jede pk -te Zahl durch pk teilbar ist und von denen wiederum jede p-te zusätzlich ” durch pk+1 , gilt deshalb Wsk(ordp (z) = i) = p1i (1 − p1 ). Daher erhalten wir mit der Summenformel für die geometrische Reihe X X X k k 1 k contp (z) = k · Wsk(ordp (z) = k) = 1− = − k+1 pk p pk p k=0,...,∞ k=1,...,∞ k=1,...,∞ X X 1 1 1 1 = −1= −1= . (4.7) = k p−1 p pk 1 − p1 k=1,...,∞ k=0,...,∞ Um auf analoge Art und Weise den p-Anteil eines typischen F -Wertes abzuschätzen, müssen wir zunächst die Wahrscheinlichkeit bestimmen, dass eine Primzahlpotenz pk ein Teiler von F (z1 , z2 ) ist für zufällig gewählte teilerfremde ganze Zahlen z1 , z2 . Dies ist unproblematisch für diejenigen Primzahlen p, für die F (X, Y ) modulo beliebiger p-Potenzen die gleiche Anzahl von Nullstellen besitzt. Zuerst müssen wir präzisieren, was wir unter dem Passus Anzahl der Nullstellen von F (X, Y ) modulo einer ” Primzahlpotenz pk“ verstehen. Zu diesem Zweck können wir die Definition der projektiven Gerade über Fp geeignet verallgemeinern: Wir betrachten den (Z/pk Z)× -Vektorraum Vpk = {(Z/pk Z)× × (Z/pk Z)} ∪ {(Z/pk Z) × (Z/pk Z)× }. Die zu Vpk gehörige projektive Gerade P(Vpk ) erscheint dann als Quotient von Vpk nach der Äquivalenzrelation x ∼ y ⇔ es existiert c ∈ (Z/pk Z)× mit x = cy. Die Elemente von P(Vpk ) schreiben wir als Klassen (x : y). Alle Nullstellen von F (X, Y ) modulo pk , die auf dieselbe Nullstelle c von fα (X) modulo pk zurückgehen, finden sich dann in der Klasse (c : 1). Ist 0 eine Nullstelle von fα−1 (X) modulo pk , dann befinden sich alle hieraus resultierenden Nullstellen von F (X, Y ) modulo pk in der Klasse (1 : 0). Andere für uns relevante Nullstellen modulo pk besitzt F (X, Y ) nicht. Diese Sprechweise bedeutet, dass uns die trivialen Nullstellen der Form z1 , z2 mit pk | ggT(z1 , z2 ) nicht interessieren, da wir nur teilerfremde Paare (a, b) betrachten. Wenn wir im Folgenden von der Anzahl von Nullstellen von F (X, Y ) modulo einer Primzahlpotenz sprechen, meinen wir immer die Anzahl der entsprechenden Klassen und ignorieren insbesondere die trivialen Nullstellen. Wie bereits erwähnt, sind diejenigen Primzahlen p bei der Berechnung von contp (F ) unproblematisch, für die die Anzahl der Nullstellen von F (X, Y ) modulo beliebiger Primzahlpotenzen konstant ist. Um eine notwendige Bedingung hierfür herzuleiten, beweisen wir ein entsprechendes Kriterium zunächst für fα (X): Satz 4.27 (Anzahl der Nullstellen von fα (X) modulo einer Primzahlpotenz) Seien fα (X) und ω wie in Unterabschnitt 4.2.1 definiert. Des Weiteren seien pk eine beliebige Primzahlpotenz und qp die Anzahl der Nullstellen von fα (X) modulo p. Wenn p nicht die Diskriminante D(mω (X)) des Minimalpolynoms von ω teilt, dann besitzt fα (X) genau qp Nullstellen modulo pk . Beweis: Um die Nullstellen eines Polynoms h(X) modulo einer Primzahlpotenz pk iterativ aus denjenigen modulo p zu konstruieren, kann man das sogenannte Hensel-Lifting anwenden (siehe [NZ76], § 2.6; aber Vorsicht: Druckfehler!): Ist x1 eine Wurzel von h(X) modulo p, xk−1 eine solche von h(X) modulo pk−1 und vk−1 schließlich 75 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE eine Lösung der linearen Kongruenz vk−1 h0 (x1 ) ≡ −p−(k−1) h(xk−1 ) (p), dann ist xk−1 + vk−1 pk−1 eine Wurzel von h(X) modulo pk . Außerdem – und das ist für unsere Zwecke entscheidend – erhält man auf diese Art und Weise alle Nullstellen von h(X) modulo pk . Gilt also h0 (x1 ) 6≡ 0 (p) für alle Wurzeln x1 von h(X) modulo p, dann ist die in jedem Iterationsschritt erscheinende lineare Kongruenz stets eindeutig lösbar, was zur Folge hat, dass es zu jeder Nullstelle von h(X) modulo p genau eine Nullstelle von h(X) modulo einer beliebigen Primzahlpotenz gibt und insbesondere keine weiteren. Daher genügt es zum Beweis des Satzes zu zeigen, dass unter den gegebenen Voraussetzungen keine Wurzel von fα (X) modulo p auch eine Nullstelle von fα0 modulo p ist. Dazu befassen wir uns zunächst mit mω (X): Nach Satz 3.26 gilt D(mω (X)) = [Oα : Z[ω]]2 · ∆Q(α) . Nach Voraussetzung teilt p also weder den Index [Oα : Z[ω]] noch die Diskriminante ∆Q(α) . Insbesondere ramifiziert p nicht, denn die ramifizierten Primzahlen sind Teiler von ∆Q(α) (siehe [Mar77], Thm.24). Deshalb ist p das Produkt paarweise verschiedener Primideale. Aus Satz 3.9 wissen wir, dass jeder irreduzible Teiler von mω (X) modulo p mit einem Primidealteiler von p der gleichen Vielfachheit korrespondiert (um diesen Satz anwenden zu können, benötigen wir die Voraussetzung p - [Oα : Z[ω]]). Da in der Primidealzerlegung von p kein Faktor mehrfach auftritt, gilt dies somit auch für die Faktorisierung von mω (X) modulo p. Wir haben daher bewiesen, dass mω (X) modulo p nur einfache Nullstellen besitzt. Bereits im Beweis von Satz 3.21 haben wir ausgenutzt, dass x1 ∈ Fp genau dann eine mehrfache Nullstelle eines Polynom h(X) modulo p ist, wenn h0 (x1 ) ≡ 0 (p) gilt. Deshalb können mω (X) und m0ω modulo p keine gemeinsamen Nullstellen besitzen. Nach Definition gilt mω (X) = ad−1 fα (X/ad ). Man rechnet leicht nach, dass für d 0 (X/a ). Insbesondere können wir folgern: Ist x1 modulo f die formale Ableitung gilt: m0ω (X) = ad−2 d α d p eine gemeinsame Nullstelle von fα (X) und von fα0 (X), dann ist die Zahl ad x1 eine gemeinsame Nullstelle von mω (X) und m0ω (X). Daher kann es ein solches x1 nicht geben und die Behauptung ist bewiesen. Da sich die (Klassen der) Nullstellen von F (X, Y ) modulo pk auf die Wurzeln von fα (X) und fα−1 (X) modulo pk zurückführen lassen, können wir den letzten Satz auf F (X, Y ) verallgemeinern. Satz 4.28 (Anzahl der Nullstellen von F (X, Y ) modulo einer Primzahlpotenz) Seien pk eine beliebige Primzahlpotenz und qp die Anzahl der Nullstellen von F (X, Y ) modulo p. Wenn p weder die Diskriminante D(mω (X)), noch ggT(ad , ad−1 ) teilt, dann besitzt F (X, Y ) genau qp Nullstellen modulo pk . Beweis: Dieser Beweis beruht darauf, dass jede Klasse von P(Vpk ), die eine Nullstelle von F (X, Y ) modulo pk repräsentiert, entweder auf eine Wurzel von fα (X) modulo p oder auf die Nullstelle 0 von fα−1 (X) modulo p zurückgeht. Wir unterscheiden folglich zwei Fälle: Fall 1: fα−1 (0) 6= 0 (p) Ist 0 keine Wurzel von fα−1 (X) modulo p, dann gibt es eine 1:1-Beziehung zwischen den Nullstellen von fα (X) modulo p und den Klassen von P1 (Fp ), die Nullstellen von F (X, Y ) modulo p enthalten. Daher gibt es genau qp Wurzeln von fα (X) modulo p und nach Satz 4.27 ebensoviele modulo pk . Diese wiederum korrespondieren eineindeutig mit den Klassen von P(Vpk ), die Nullstellen von F (X, Y ) modulo pk repräsentieren, woraus die Behauptung folgt. Fall 2: fα−1 (0) ≡ 0 (p) In diesem Fall korrespondieren genau qp − 1 Klassen von P1 (Fp ) eineindeutig mit Nullstellen von fα (X) modulo p und wir können die Argumentation des ersten Falles analog durchführen. Es gibt daher genau qp − 1 Nullstellen-Klassen von P(Vpk ), die auf Wurzeln von fα (X) modulo p zurückgehen. Betrachten wir nun die Wurzel 0 von fα−1 (X) modulo p. Da diese existiert, teilt p die Zahl ad , den konstanten Term von fα−1 (X). Nach Voraussetzung ist p damit kein Teiler von ad−1 . Da ad−1 aber der konstante Term von fα0 −1 (X) ist, kann 0 keine Wurzel von fα0 −1 (X) modulo p sein. Wie im Beweis von Satz 4.27 folgt hieraus, dass es zu der Wurzel 0 gehörig für jede p-Potenz pk genau eine Nullstelle xk von fα−1 (X) modulo pk gibt. 76 4.2 DIE WAHL EINES GUTEN POLYNOMS Auch erkennen wir (aus der iterativen Konstruktionsvorschrift für Nullstellen), dass xk ≡ 0 (p) gelten muss und dass Wurzeln von fα−1 (X) modulo pk , die nicht durch p teilbar sind, auf andere Nullstellen von fα−1 (X) modulo p zurückgehen müssen. Ist also F (z1 , z2 ) ≡ 0 (pk ) mit p - z2 , dann gilt (z1 : z2 ) = (z1 z2−1 : 1) ∈ P(Vpk ) und die Klasse (z1 : z2 ) geht auf die Wurzel z1 z2−1 modulo p von fα (X) zurück, ist also eine der bereits hergeleiteten qp − 1 Klassen. Gilt hingegen F (z1 , z2 ) ≡ 0 (pk ) mit p | z2 und p - z1 , dann folgt (z1 : z2 ) = (1 : z1−1 z2 ) ∈ P(Vpk ) und die Klasse (z1 : z2 ) geht auf die Wurzel z1−1 z2 von fα−1 (X) modulo pk zurück. Wegen der Kongruenz z1−1 z2 ≡ 0 (p) korrespondiert jene mit der Wurzel 0 von fα−1 (X) modulo p. Insbesondere kann es daher nur eine Klasse (z1 : z2 ) ∈ P(Vpk ) mit F (z1 , z2 ) ≡ 0 (pk ) und p | z1 geben, so dass die Behauptung auch in diesem Fall erfüllt ist. Die Primzahlen, die den Bedingungen des letzten Satzes genügen, nennen wir gutartig (in der englischsprachigen Literatur heißen diese Primzahlen well behaved primes“ im Gegensatz zu den poorly ” ” behaved primes“). Da die Nullstellen von F (X, Y ) modulo p, die auf die Wurzel 0 von fα−1 (X) zurückgehen, eine Sonderstellung einnehmen, versehen wir jene mit einer gesonderten Bezeichnung: Definition und Satz 4.29 (Projektive Nullstelle) Sei p eine Primzahl, die den Leitkoeffizienten ad von fα (X) teilt. Dann gilt F (z1 , z2 ) ≡ 0 (p) für alle z1 , z2 mit (z1 : z2 ) = (1 : 0) ∈ P1 (Fp ). Die Klasse (1 : 0) nennen wir eine projektive Nullstelle modulo p. Zur Berechnung von contp (F ) benötigen wir noch folgendes Lemma: Lemma 4.30 Sei k eine positive natürliche Zahl. Dann enthält die projektive Gerade P(Vpk ) genau pk−1 (p + 1) Elemente. Beweis: Der Vektorraum Vpk besteht definitionsgemäß aus den p2k Paaren von (Z/pk Z)2 abzüglich der aus zwei Nichteinheiten von Z/pk Z gebildeten Paare. Von letzteren gibt es genau (pk − ϕ(pk ))2 = (pk−1 )2 Stück, so dass wir #Vpk = p2k − p2k−2 schließen können. Sei (x, y) ein Element von Vpk , und sei o.B.d.A. x nicht durch p teilbar. Die Produkte, die wir erhalten, wenn wir x mit den Elementen von (Z/pk Z)× multiplizieren, sind daher paarweise verschieden. Insbesondere enthält daher jede Äquivalenzklasse von P(Vpk ) genau #(Z/pk Z)× = ϕ(pk ) = pk−1 (p − 1) Elemente. Zusammenfassend folgt die Behauptung, denn es ist p2k − p2k−2 p2k−2 (p2 − 1) = k−1 = pk−1 (p + 1). k−1 p (p − 1) p (p − 1) Nach diesem Lemma beträgt die Wahrscheinlichkeit, dass ein modulo pk reduziertes zufällig gewähltes Paar (z1 , z2 ) teilerfremder ganzer Zahlen in eine festgelegte Klasse von P(Vpk ) fällt, gerade pk−11(p+1) . Ist p eine gutartige Primzahl und ist qp die Anzahl der Nullstellen von F (X, Y ) modulo p, dann besitzt F (X, Y ) nach Satz 4.28 auch genau qp Nullstellen modulo pk . Somit können wir die Wahrscheinlichkeit bestimmen, dass pk ein Teiler von F (X, Y ) ist, denn dies ist gleichbedeutend damit, dass das reduzierte Paar (z1 , z2 ) in eine der qp Nullstellen-Klassen fällt. Es gilt daher Wsk(pk | F (z1 , z2 )) = qp k−1 p (p + 1) . 77 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE Unter der Bedingung, dass pk | F (z1 , z2 ) bereits erfüllt ist, beträgt die Wahrscheinlichkeit dafür, dass auch pk+1 ein Teiler von F (z1 , z2 ) ist, natürlich p1 . Mit den Regeln für bedingte Wahrscheinlichkeit erhalten wir analog zur Berechnung von contp (z): qp 1 Wsk(ordp (F (z1 , z2 )) = k) = k−1 1− . p (p + 1) p Mit der Definition des Erwartungswertes erhalten wir schließlich für contp (F ): X X k · qp 1 qp 1 k contp (F ) = 1 − = 1 − pk−1 (p + 1) p p+1 p pk−1 k=0,...,∞ k=0,...,∞ −2 qp 1 1 = 1− 1− p+1 p p p p = qp = qp 2 . (p + 1)(p − 1) p −1 (4.8) (4.9) Um den zu 4.8 führenden Schritt nachvollziehen zu können, erinnern P P wir uns daran, dass das sogea und B := nannte Cauchyprodukt der Reihen A := k=0,...,∞ k k=0,...,∞ bk definiert ist als die P P Reihe C := a b . Sind die Faktorreihen absolut konvergent, dann auch ihr k=0,...,∞ i=0,...,k k−i i Cauchyprodukt und es gilt C = A · B (zum Cauchyprodukt siehe [For93], S.47). Daher können wir das Cauchyprodukt der geometrischen Reihe mit sich selbst berechnen und erhalten als Nachweis für (4.8): 2 −2 X X X 1 X k+1 X 1 1 k = 1− = = = . p p pk−i pi pk pk−1 k=0,...,∞ k=0,...,∞ i=0,...,k k=0,...,∞ k=1,...,∞ In [Mur99], Kapitel 3.2, findet sich die Auswertung einiger Experimente, die empirisch nachweisen, dass die gerade hergeleiteten Größen contp (z) und contp (F ) sehr gute Schätzungen sind. Um den p-Anteil eines typischen F -Wertes für nicht-gutartige Primzahlen zu prognostizieren, können wir eine brute-force“-Methode verwenden: Wir berechnen ordp (F (z1 , z2 )) für eine ausreichend große Anzahl ” von teilerfremden Paaren z1 , z2 ∈ Z und bilden den Durchschnitt. Nachdem wir Schätzungen für den p-Anteil von Zufallszahlen und von typischen F -Werten erarbeitet haben, werden wir nun diese Ergebnisse dazu verwenden, die Effizienz des Siebens über zufällig gewählte Zahlen mit der über die Werte eines Polynoms F (X, Y ) zu vergleichen. Zur Vereinfachung gehen wir zum einen davon aus, dass sich auch die nicht-gutartigen Primzahlen wie gutartige verhalten (d. h. wir verwenden (4.9) für alle Primzahlen p), zum anderen arbeiten wir mit einem idealisierten Siebmodell: Initialisieren wir einen Siebarray mit den Logarithmen der Zahlen F (a, b), wobei a und b den Siebraum durchlaufen, so erwarten wir, dass sich die Größe eines Eintrages durch das P Sieben um durchschnittlich p≤B2 contp (F ) · log p reduziert, wenn B2 die Schranke der algebraischen Faktorbasis ist. Entsprechend lässt sich der erwartete Siebeffekt auf eine Zufallszahl z mit P P p≤B2 contp (z) · log p = p≤B2 (1/(p − 1)) · log p beziffern. Der Parameter α(F ) ist dann definiert als Differenz dieser Größen: X X 1 p − qp 2 log p α(F ) := (contp (z) − contp (F )) log p = p−1 p −1 p≤B2 p≤B2 X p log p = 1 − qp . p+1 p−1 p≤B2 Wie lässt sich dieser Parameter interpretieren? Sieben wir über einen mit den Logarithmen von F -Werten F (z1 , z2 ) initialisierten Array, dann erwarten wir nach dem Sieben Einträge der Größe X X 1 α(F ) log F (z1 , z2 ) − contp (F ) · log p = log F (z1 , z2 ) · e − log p. p−1 p≤B2 78 p≤B2 4.2 DIE WAHL EINES GUTEN POLYNOMS Wir erkennen, dass wir Einträge dieser Größenordnung erwartet hätten, hätten wir den Array mit den Logarithmen von Zufallszahlen der Größe F (z1 , z2 ) · eα(F ) initialisiert. Daher ziehen wir folgendes Fazit: Die Werte F (z1 , z2 ) eines Polynoms F (X, Y ) verhalten sich beim Sieben genauso wie Zufallszahlen der Größe F (z1 , z2 ) · eα(F ) . Dies hat zur Konsequenz, dass wir nach Polynomen mit besonders kleinen α-Werten suchen müssen, denn jene versprechen die meisten glatten Funktionswerte zu liefern. So hat z. B. das zur Faktorisierung von RSA-140 herangezogene Polynom einen α-Wert von -7. Wegen e−7 ≈ 1/1000 können wir davon ausgehen, dass sich die Werte dieses Polynoms so verhalten, als besäßen sie nur ein Tausendstel ihrer wahren Größe. Analog zu α(F ) lässt sich auch die Größe α(f ) für ein Polynom f (X) ∈ Z[X] definieren. Ist qp die Anzahl der Nullstellen von f (X) modulo p, dann gilt für den p-Anteil eines typischen f -Wertes offensichtlich contp (f ) = qp /(p−1). Der α-Wert von f (X) ist wieder definiert als die Differenz zwischen der erwarteten Größe nach Durchlaufen des Siebprozesses einer Zufallszahl einerseites und eines typischen f -Wertes andererseits. Wieder erhalten wir das Ergebnis, dass sich typische f -Werte f (z) verhalten wie Zufallszahlen der Größe f (z) · eα(f ) . Man darf jedoch nicht erwarten, dass α(f ) und α(F ) übereinstimmen, wenn F (X, Y ) die homogenisierte Form von f (X) ist. Es gilt zwar, dass die homogenisierten Formen von Polynomen mit guten α-Werten ihrerseits gute α-Werte besitzen, umgekehrt muss dies jedoch nicht der Fall sein, da ein überdurchschnittlich kleiner α-Wert von F (X, Y ) möglicherweise nur auf das Vorhandensein vieler projektiver Nullstellen zurückzuführen ist. Diese haben jedoch keinen Einfluss auf die Größe α(f ). Um den Effekt, den α-Werte auf die tatsächliche Siebzeit haben, zu quantifizieren, führen wir die Größe Xf (α0 ) ein. Diese sei definiert als erwartete Anzahl glatter Funktionswerte, die ein Polynom f (X) über dem Siebraum annimmt, vorausgesetzt es gilt α(F ) = α0 . Sie beschreibt also die Güte eines Polynoms in Abhängigkeit von dessen α-Wert. Wir können Xf (α0 ) bestimmen, indem wir eine Abschätzung aus der analytischen Zahlentheorie über die Anzahl glatter Zahlen in einem Intervall verwenden. Dazu teilen wir den Graph von f (X) in Teilstücke [f (xi ), f (xi+1 )] ohne Wendepunkte und Extrema und können mithilfe jener Abschätzung die erwartete Anzahl glatter Funktionwerte dieses 0 0 Teilstückes abschätzen, indem wir für die Intervallgrenzen die Größen f (xi ) · eα (f ) und f (xi+1 ) · eα (f ) einsetzen. Für Details verweisen wir auf das vierte Kapitel aus [Mur99]. Dort lassen sich auch folgende Ergebnisse nachlesen: Die Größen Xf (α0 ) wurden für einige konkrete quadratische Polynome bestimmt und zueinander in Beziehung gesetzt. Der Wert α0 durchlief dabei das Intervall [−4, 0], was sich experimentell für quadratische Polynome als repräsentativ herausgestellt hat. Nach Auswertung des X (α0 ) Quotienten Q(α0 ) := Xff (0) für die getesteten Polynome und α-Werte zeigte sich, dass Q(α0 ) für α0 ≤ −3, 5 für alle getesteten Polynome größer als 2 ist. Dies bedeutet, dass man mehr als doppelt so viele glatte Funktionswerte erwarten darf als dies bei einem Polynom mit dem schlechteren α-Wert 0 der Fall wäre. Insbesondere hat dies eine Verkürzung der Siebzeit um mehr als die Hälfte zur Folge. Die Berechnung von XF (α0 ) für homogenisierte Polynome ist zwar ein wenig aufwendiger, liefert aber ähnliche Ergebnisse. Es bleibt noch anzumerken, dass für Polynome fünften Grades noch bessere αWerte als für quadratische Polynome erzielt werden können. So sind optimale α-Werte von −7 oder gar −8 möglich. Entsprechende Berechnungen zeigen, dass α(F ) = −7 die Güte eines Polynoms um den Faktor 4 verbessern kann. Letztendlich bezeugen auch einige in [Mur99] dokumentierte Siebexperimente, dass α-Werte zur Beurteilung von Number Field Sieve-Polynomen auch von praktischer Bedeutung sind: Ordnet man die getesteten Polynome nach ihren α-Werten, so erhält man weitgehend die Reihenfolge, die sich aus der tatsächlichen Anzahl glatter Polynomwerte über dem Siebraum ergibt. Die Testpolynome besitzen vergleichbare Größeneigenschaften, so dass man schließen kann, dass die Güteunterschiede wirklich nur auf die verschiedenen α-Werte zurückzuführen sind. 4.2.3 Die Konstruktion guter Polynome Jetzt möchten wir die Frage klären, wie sich die eben hergeleiteten Einsichten über die Güte von Number Field Sieve-Polynomen dazu verwenden lassen, Polynome mit hohen Gütewerten zu konstru79 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE ieren. Unser Ziel ist, ein irreduzibles ganzzahliges Polynom f (X) mit einer Nullstelle m modulo N zu finden, so dass F (X, Y ) möglichst gute Größen- und Nullstelleneigenschaften besitzt. Dabei werden wir unser Augenmerk nur auf Polynome fünften Grades richten. Die ersten Polynomwahl-Verfahren haben unter den Base-m-Polynomen solche mit außergewöhnlich kleinen Koeffizienten gesucht, d. h. man war ausschließlich bestrebt, die Größeneigenschaften zu optimieren. Erst als über Nullstelleneigenschaften mehr bekannt war, wurde – maßgeblich von P. L. Montgomery und B. Murphy – ein Verfahren entwickelt, welches jene ebenso berücksichtigt. Das Grundgerüst dieser Methode sieht wie folgt aus: Im ersten Schritt wird eine Kollektion vielversprechender Base-m-Polynome erzeugt. Dann werden diese modifizert, um Polynome mit sehr guten Größeneigenschaften zu erhalten. Die so erhaltenen Polynome werden nochmals variiert, diesmal mit dem Ziel, Nullstelleneigenschaften zu optimieren, ohne die guten Größeneigenschaften einzubüßen. Aus den derart gewonnenen Kandidaten werden diejenigen mit der besten Kombination von Nullstellen- und Größeneigenschaften ausgewählt. Üblicherweise enthält diese Auswahl einige Tausend Polynome, so dass abschließend noch eine exaktere als die vorher angestrengten Methoden zur Anwendung gelangt, um die Güte dieser Polynome genauer miteinander vergleichen zu können. Erst zu diesem Zeitpunkt werden Siebexperimente mit den 10 bis 20 dem Anschein nach besten Polynomen durchgeführt, um das Siegerpolynom“ zu küren. ” Die so gewonnenen Polynome besitzen nicht mehr ausschließlich kleine Koeffizienten, denn einige der vorgenommenen Manipulationen haben dazu geführt, dass zwar die drei führenden Koeffizienten noch klein sind, die restlichen drei können aber durchaus größer sein als das entsprechende m. In der Regel erhalten wir |a5 | < |a4 | . . . < |a1 | < |a0 |. Wegen des Bildes, welches die untereinanderstehenden Koeffizienten liefern, nennen wir derartige Polynome schräg ( skewed“). Der schrägen Polynomen am ” besten angepasste Siebraum ist nun nicht mehr länger quadratisch“, vielmehr wird durch eine recht” eckige Form (mit größerer X- als Y -Ausdehnung) eine möglichst geringe durchschnittliche Größe der Funktionswerte über der Siebregion erreicht. Wenn wir die Formen von Siebregionen ansprechen, so beziehen wir uns immer auf den rechten oberen Hauptquadranten, d. h. den Bereich, in dem X- und Y positiv sind. Dieser Teil der Siebregion ist für ein nichtschräges Polynom quadratisch. Auch der Wert s (der sogenannte Schrägheitskoeffizient), der den Quotient zwischen X- und Y -Ausdehnung eines schrägen Siebbereiches angibt, bezieht sich nur auf diesen Bereich. In der Praxis erstreckt sich der Siebraum natürlich auch auf den entsprechend an der Y -Achse gespiegelten Teil. Im Folgenden werden wir zunächst die wichtigsten Ideen des Polynomwahl-Verfahrens herleiten und schließen ab mit einer zusammenfassenden Beschreibung der Methode sowie Ergebnissen aus der Praxis. Vielversprechende Base-m-Polynome finden Wenn wir die Base-m-Methode zur Konstruktion eines Number Field Sieve-Polynoms anstrengen, wie können wir dann erreichen, dass die Koeffizienten dieses Polynoms möglichst klein sind? Wir beginnen mit folgenden Überlegungen: Es gilt offensichtlich N div m5 = c ⇔ ⇔ c · m5 ≤ N und (c + 1) · m5 > N 15 15 N N . <m≤ c+1 c (4.10) Für uns ergeben sich folgende Konsequenzen: Geben wir eine kleine natürliche Zahl a5 vor, dann finden wir immer eine Folge von m’s, so dass die Base-m-Darstellung von N fünften Grades ist und a5 1 als Leitkoeffizient besitzt. Aus (4.10) folgt auch, dass für aufsteigende m bei m = d(N/(a5 + 1)) 5 e der 1 Leitkoeffizient von a5 − 1 zu a5 wechselt und dann bis einschließlich m = b(N/a5 ) 5 c konstant bleibt. Es ist weiterhin klar, dass die Folge der Koeffizienten a4 für diese aufsteigenden m-Werte monoton 1 fallend ist und danach (für m = d(N/a5 ) 5 e) wieder einen Sprung nach oben macht. Wir können also den Leitkoeffizienten a5 so klein wie erforderlich festlegen und minimieren mit der Wahl $ 1 % N 5 m= (4.11) a5 80 4.2 DIE WAHL EINES GUTEN POLYNOMS den zweitgrößten Koeffizienten a4 . In der Praxis sieht es so aus, dass ein Intervall vorgegeben wird, um die Größe von a5 im Verhältnis zu m festzulegen, so z. B. χ1 ≤ am5 ≤ χ2 mit 0 < χ1 < χ2 < 1. Um nun alle m zu bestimmen, für die die Base-m-Darstellung von N einen dieser Vorgabe entsprechenden Leitkoeffizienten a5 und einen möglichst kleinen Koeffizienten a4 besitzt, so müssen wir die zuerst Ungleichung $ 1 % $ 1 % N 5 N 5 χ1 ≤ a5 ≤ χ2 a5 a5 nach a5 auflösen und dann aus den Lösungen für a5 mithilfe der Formel (4.11) die korrespondierenden m-Werte berechnen. Wegen a5 ∈ N und χ2 < 1 ignorieren wir die abrundenden Klammern und erhalten 15 15 χ1 aN5 ≤ a5 ≤ χ2 aN5 ⇔ log χ1 + 15 (log N − log a5 ) ≤ log a5 ≤ log χ2 + 51 (log N − log a5 ) ⇔ 5 log χ1 +log N 6 ≤ log a5 ≤ 5 log χ2 +log N . 6 Bis jetzt haben wir nur Größeneigenschaften berücksichtigt, es gibt aber eine einfache Möglichkeit, zu garantieren, dass das konstruierte Base-m-Polynom viele projektive Nullstellen besitzt. Wir erinnern uns, dass für eine Primzahlpotenz pk gilt: pk | a5 und pk | z2 =⇒ F (z1 , z2 ) ≡ 0 (pk ) für alle z1 ∈ Z. Daher verwenden wir nur jene a5 , die die oben hergeleitete Ungleichung erfüllen und zusätzlich möglichst viele kleine Primteiler besitzen. Diese können wir z. B. mit einem Siebverfahren ermitteln. Für jedes derartige a5 betrachten wir die aus der Formel (4.11) berechneten m-Werte und einige etwas kleinere. Wir wissen, dass in den korrespondierenden Base-m-Darstellungen die Koeffizienten a5 und a4 klein sind. Um a3 zu beurteilen, berechnen wir (N − a5 m5 )/m4 . Der ganzzahlige Anteil dieser Größe entspricht dem Koeffizienten a4 , die Zahl hinter dem Komma lässt sich auch schreiben als a3 /m + O(m−2 ). Nur diejenigen m, für die beides klein genug erscheint, werden weiter berücksichtigt. Zusammenfassend läßt sich sagen, dass die so gewonnenen Base-m-Polynome viele projektive Nullstellen modulo kleiner Primzahlen bzw. kleiner Primzahlpotenzen besitzen und ihre Koeffizienten a5 , a4 sowie a3 von geringer Größe sind. Sie bilden das Ausgangsmaterial unserer Polynomsuche. Modifikationen von Polynomen Ausgehend von einem Polynom f (X) ∈ Z[X] mit einer Nullstelle m modulo N , beschreiben wir zwei Möglichkeiten, eine Variante dieses Polynoms zu konstruieren, die ebenfalls eine kleine Nullstelle modulo N besitzt: 1. Verschiebung um t: Wir betrachten ft (X) := f (X + t) und mt := m − t. Dann ist offensichtlich ft (mt ) ≡ 0 (N ) erfüllt. Entscheidend ist, dass ft (X) dieselben Nullstelleneigenschaften besitzt wie f (X), denn diese hängen nur von der Anzahl der Nullstellen modulo den Primzahlen der Faktorbasis ab. Es ist jedoch zu beachten, dass die Anzahl der projektiven Nullstellen von Ft (X, Y ) nicht mehr notwendig derjenigen von F (X, Y ) entspricht, falls sich durch die Verschiebung der Leitkoeffizient geändert hat. Dies lässt sich jedoch vermeiden: Bei der im letzten Absatz beschriebenen PolynomKonstruktion haben wir die Größenordnung von m so gewählt, dass der Leitkoeffizient der Base-m-Darstellung für ein Intervall aufeinanderfolgender m-Werte konstant bleibt. Ausgewählt haben wir dann das maximale m eines solchen Intervalls, mit dem Ziel, die Größe von a4 zu minimieren. Dies hat zur Folge, dass eine ausreichend kleine Verschiebung m 7→ m − t den Leitkoeffizienten a5 unverändert lässt und insbesondere projektive Nullstellen nicht zerstört. Deshalb können wir schließen, dass durch geeignete Verschiebungen die Größeneigenschaften von F (X, Y ) manipuliert werden können, ohne die Nullstelleneigenschaften zu beeinträchtigen. 2. Rotation“ mit dem Polynom p(X): ” Wir betrachten fp (X) := f (X) + p(X) · (X − m). In diesem Fall ist m auch eine Nullstelle von 81 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE fp (X) modulo N . Wir werden ausschließlich lineare Polynome p(X) = j1 X − j0 mit |j1 | |j0 | zur Rotation heranziehen. Dies hat zur Folge, dass f (X) und fp (X) sich nur im linearen und im konstanten Koeffizienten unterscheiden. In der Regel werden diese (den Betrag betreffend) vergrößert, dies betrifft a0 in noch höherem Maße als a1 . Die Durchführung von Rotationen ist also auch dafür verantwortlich, dass wir ein schräges Polynom erhalten. Durch eine schon angesprochene Anpassung des Siebraumes (stärkere X- als Y -Ausdehnung) erreichen wir, dass die Größeneigenschaften von Fp (X, Y ) nicht schlechter sind als diejenigen von F (X, Y ). Die Rotation mit geeigneten p(X) kann also die Nullstelleneigenschaften von F (X, Y ) beeinflussen, ohne Größeneigenschaften maßgeblich zu verschlechtern. Wie finden wir mit Verschiebung und Rotation die bezüglich Größeneigenschaften beste Variante eines Polynoms? Gegeben sei ein ganzzahliges Polynom f (X) mit Nullstelle m modulo N . Unser Ziel ist es, die durch Verschiebung und Rotation erhaltene Variante von f (X) mit den besten Größeneigenschaften zu finden. Zuerst einmal müssen wir daher eine schnelle Methode finden, Polynome bezüglich iher Größeneigenschaften zu vergleichen. Bereits bei der Einführung der Größeneigenschaften haben wir erwähnt, dass die naheliegendste Methode zur Beurteilung derselben die Bestimmung des Integrals RR F (X, Y )2 dXdY über den Siebraum S ist. Dieses Verfahren lässt sich noch etwas beschleunigen: S Wir wissen, dass aus Homogenitätseigenschatften die Gleichheit F (cX, cY ) = cd F (X, Y ) folgt, wenn d der Grad von F (X, Y ) ist (siehe Lemma 4.19). Daher ist der Wert von F (X, Y ) auf einer durch den Ursprung gehenden Geraden bereits eindeutig bestimmt durch den Funktionswert eines einzigen Punktes (mit Ausnahme des Nullpunktes) auf dieser Geraden. Besonders gut lässt sich dies ausnutzen, wenn wir mit Polarkoordinaten arbeiten, dazu aber später mehr. Größeneigenschaften betreffend hat diese Beobachtung zur Konsequenz, dass im Prinzip das Integral über einen in X- und Y -Richtung gleichmäßig geschrumpften Siebraum bereits repräsentativ ist. Ist s der Quotient von X- und √ YAusdehnung einer Siebregion S, dann ist das Integral über das Rechteck mit den Seitenlängen s (jeweils in X-Richtung) und √1s (in Y -Richtung) eine Kenngröße für die Größeneigenschaften des Polynoms F (X, Y ) über diesem Siebraum. Auf diesen Grundlagen ist es klar, wie wir mithilfe der Manipulationen Verschiebung und Rotation die Größeneigenschaften eines Polynoms F (X, Y ) mit Nullstelle m modulo N optimieren: Ein untengestellter Index t bezeichne die Verschiebung einer Größe um t. Dann definieren wir ft,j1 ,j0 (X) := f (Xt ) + (j1 Xt + j0 )(Xt − mt ). Die Variablen t, j0 und j1 durchlaufen geeignete Intervalle reeller Zahlen. Eine Minimierung (in Abhängigkeit von s, t, j0 und j1 ) des Integrals √ Z s √ − s Z 0 1 √ s 2 Ft,j (X, Y )dXdY 1 ,j0 liefert uns die optimalen Werte für t, j0 , j1 . Diese werden zu ganzen Zahlen gerundet und gegebenenfalls müssen wir den besten s-Wert neu bestimmen. Wie finden wir mit Rotation die bezüglich Nullstelleneigenschaften beste Variante eines Polynoms? Jetzt gehen wir davon aus, dass wir bereits ein Polynom f (X) mit guten Größeneigenschaften gefunden haben. Um diese nicht zu beeinträchtigen, werden wir keine Verschiebungen mehr durchführen. Stattdessen wollen wir versuchen, aus einer Kollektion von durch Rotation ermittelten Varianten von f (X) diejenigen mit den besten Nullstelleneigenschaften zu ermitteln. Seien dazu J0 und J1 positive natürliche Zahlen mit J1 J0 . Wir definieren fj1 ,j0 (X) := f (X) + (j1 X − j0 )(X − m) für alle ganzrationalen j0 , j1 mit |j0 | ≤ J0 und |j1 | ≤ J1 . Jetzt beschreiben wir ein zweidimensionales Siebverfahren, 82 4.2 DIE WAHL EINES GUTEN POLYNOMS welches die α-Werte der Polynome Fj1 ,j0 (X, Y ) abschätzt. P Wir erinnern uns, dass der α-Wert eines homogenen Polynoms F (X, Y ) definiert ist als α(F ) = p≤B2 log p [1/(1 − p) − contp (F )], wobei B2 die Grenze der algebraischen Faktorbasis ist. Aus Aufwandsgründen werden wir im Folgenden nur alle Primzahlen bis zu einer Schranke B0 < B2 betrachten. Dadurch wird die Schätzung zwar etwas ungenauer, aber der Definition des α-Wertes entnehmen wir, dass dieser gerade durch die kleinen Primzahlen am entscheidendsten beeinflusst wird. Der Siebprozess gestaltet sich wie folgt: Wir initialisieren einen zweidimensionalen Array A[i, k] mit 0, wobei i von −J1 bis J1 und k von −J0 bis J0 läuft. Dann führen wir für alle p ≤ B0 folgende Schritte durch: 1. Schätze die Größe contp (Fj1 ,j0 ) mithilfe der Formel (4.9) für alle Kombinationen j0 , j1 mit 0 ≤ j0 ≤ p − 1 und 0 ≤ j1 ≤ p − 1. 2. Setze A[i, k] := A[i, k] + log p [1/(1 − p) − contp (Fj1 ,j0 )] für alle Positionen (i, k) mit i ≡ j1 (p) und k ≡ j0 (p). Nach Durchlaufen dieser Schleife über alle p enthält der Eintrag A[j1 , j0 ] eine Schätzung für den αWert von Fj1 ,j0 (X, Y ). Zur Korrektheit dieses Verfahrens eine Anmerkung: Die Verwendung eines Siebes ist möglich, weil contp (Fj1 ,j0 ) = contp (Fj1 +u·p,j0 +v·p ) für alle u, v ∈ Z erfüllt ist. Dies wiederum gilt, da contp (F ) außer von p nur von der Anzahl der Nullstellen modulo p des Polynoms F (X, Y ) abhängt. Wir erhalten diese Zahl, indem wir die Anzahl der Nullstellen modulo p von f (X) bestimmen und um 1 erhöhen, falls der Leitkoeffizient von f (X) durch p teilbar ist (denn dann besitzt F (X, Y ) eine projektive Nullstelle modulo p). Die Existenz einer projektiven Nullstelle modulo p eines homogenen Polynoms hängt also nur von dessen Leitkoeffizienten ab, und in dieser Hinsicht unterscheiden sich Fj1 ,j0 (X, Y ) und Fj1 +u·p,j0 +v·p (X, Y ) nicht (denn es gilt offensichtlich lc(Fj1 ,j0 ) = lc(F ) = lc(Fj1 +u·p,j0 +v·p )). Des Weiteren sind die Polynome fj1 ,j0 (X) und fj1 +u·p,j0 +v·p (X) modulo p kongruent, besitzen daher insbesondere dieselbe Anzahl von Wurzeln modulo p. Deshalb ist dies auch für Fj1 ,j0 (X, Y ) und Fj1 +u·p,j0 +v·p (X, Y ) der Fall. Bis jetzt sind wir in der Lage, sowohl Größen- als auch Nullstelleneigenschaften unabhängig voneinander zu bewerten. Es stellt sich jedoch die Frage, wie Größen- und Nullstelleneigenschaften interagieren. Wählt man besser ein Polynom mit herausragenden Größen- und lediglich guten Nullstelleneigenschaften oder ist ein anderes vorzuziehen, für das genau Umgekehrtes gilt? Die bisherigen Erfahrungen legen den Schluss nah, dass beiden Eigenschaften in etwa gleich stark zu gewichten sind, hier sind allerdings noch einige Fragen offen. Eine zuverlässigeres Beurteilungs-Werkzeug liefert die nachfolgend beschriebene Methode: Eine exakte Methode, die Güte von Polynomen zu vergleichen: Der E-Wert Größen und Nullstelleneigenschaften sind indirekte Methoden, die Güte eines Polynoms zu beurteilen. Der sogenannte E-Wert hingegen bewertet die Güte eines Polynoms direkt“, indem Ergebnisse aus ” der analytischen Zahlentheorie über die Verteilung glatter Zahlen verwendet werden. So ist für positive reelle Zahlen n und B die Funktion ψ(n, B) definiert als Anzahl B-glatter positiver ganzer Zahlen kleiner oder gleich n (siehe Abschnitt 1.4). Das asymptotische Verhalten dieser Funktion lässt sich mithilfe der sogenannten Dickman-Funktion ρ beschreiben, die für eine reelle Zahl u > 1 definiert ist als 1 ψ(n, n u ) . ρ(u) = lim n7→∞ n Mehr zur Dickman-Funktion findet sich in [Dic30]. Wählen wir n genügend groß, dann gilt demnach 1 ρ(u) ≈ ψ(n, n u )/n und daher log n ψ(n, B) ρ ≈ . log B n Deshalb interpretieren wir die Größe ρ(log n/ log B) als grobe Abschätzung für die Wahrscheinlichkeit, dass eine zufällig zwischen 0 und n gewählte Zahl B-glatt ist. Setzen wir für n eine geeignete Auswahl von F -Werten und für B die Schranke der Faktorbasis ein, dann ist die Güte von F (X, Y ) umso 83 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE höher einzuschätzen, je größer die so errechneten Werte sind. Seien X = r cos θ und Y = r sin θ die Polarkoordinaten des Punktes (X, Y ). Dann gilt F (X, Y ) = r5 F (cos θ, sin θ) wegen der Homogenität von F (X, Y ). Daher bilden die Bilder des Einheitshalbkreises (dem Siebraum entsprechend oberhalb der X-Achse) bereits die gesuchte repräsentative Auswahl von F -Werten, vorausgesetzt, man arbeitet mit einer quadratischen Siebregion. Da dies bei schrägen Polynomen nicht der Fall ist, verwenden √ wir hier die Bilder einer Halb-Ellipse mit den Halbachsen s und √1s , wobei s der Quotient von X- und Y - Ausdehnung des F (X, Y ) angepassten Siebraumes ist. Wir möchten nur endlich viele Punkte betrachten, deshalb zerlegen wir das Intervall [0, π] in K äquidistante Teilintervalle, so dass π θi := K i − 12 die Mitte des i-ten Teilintervalles bildet. Wir definieren: E(F ) := X ρ i=1,...,K ! √ log |F ( s cos θi , √1s sin θi )| + α(F ) log B . Dabei haben wir ausgenutzt, dass sich F (cos θi , sin θi ) wie eine Zufallszahl der Größe F (cos θi , sin θi ) · eα(F ) verhält. Es ist noch anzumerken, dass der E-Wert eines einzelnen Polynoms keinen Aussagewert besitzt, da es zum E-Wert keine physikalische Entsprechung“ gibt. E-Werte werden ausschließlich zu ” Vergleichszwecken herangezogen, d. h. um eine Auswahl von Polynomen ihren Güteeigenschaften nach zu listen. Dabei ist zu beachten, dass man auf diese Art und Weise nur Polynome gleichen Grades d korrekt miteinander vergleichen kann, da ausgenutzt wird, dass die Werte eines homogenen Polynoms entlang einer Geraden durch den Ursprung mit der d-ten Potenz der Entfernung vom Ursprung wachsen. Bemerkung 4.31 Eine noch genauere Vergleichsmethode erhält man, wenn man das lineare Polynom mitberücksichtigt. Ist F1 (X, Y ) das nichtlineare Polynom und F2 (X, Y ) = X − Y m das korrespondierende lineare, dann bewertet " ! √ # X log |F1 ( s cos θi , √1s sin θi )| + α(F1 ) log |F2 (cos θi , sin θi )| + α(F2 ) E(F1 , F2 ) := ρ ·ρ log B1 log B2 i=1,...,K die Wahrscheinlichkeit, dass N (a − bα) B1 -glatt und entsprechend a − bm B2 -glatt ist. Man sollte dann beide Polynome miteinbeziehen, wenn – wie es bei der Verwendung von schrägen Polynomen die Regel ist – die m-Werte der zu vergleichenden Polynompaare stark differieren. Andernfalls sind die Faktoren ρ ((log |F2 (cos θi , sin θi )| + α(F2 ))/ log B2 ) für alle betrachteten Polynompaare (F1 , F2 ) ähnlich groß und daher zu vernachlässigen. Leider ist die Auswertung der Dickman-Funktion (siehe z. B. [KP76] für entsprechende Algorithmen) sehr aufwendig, so dass die Berechnung des E-Wertes nur für eine relativ kleine Auswahl von Polynomen durchgeführt werden sollte. Zusammenfassung des Verfahrens Zum Abschluß dieses Abschnittes möchten wir den Polynomfindungs-Prozess noch einmal vollständig skizzieren: Schritt 1: Für geeignete Schranken χ1 , χ2 finde eine Menge vielversprechender Base-m-Polynome, für die χ1 ≤ a5 /m ≤ χ2 erfüllt ist, deren Koeffizienten a4 und a3 auch ausreichend klein sind und die viele projektive Nullstellen modulo kleiner Primzahlen besitzen. Schritt 2: Für jedes dieser Polynome bilde mithilfe von Verschiebung und Rotation die bezüglich Größeneigenschaften besten Varianten und ermittele den optimalen Siebraum. Verwende nur Verschiebungen, die klein genug sind, die projektiven Nullstellen nicht zu zerstören. Ist s der 84 4.2 DIE WAHL EINES GUTEN POLYNOMS Quotient von X- und Y -Ausdehnung der Siebregion einer so gefundenen Variante F (X, Y ), dann berechne s √ Z s Z √1 s I(F ) := log F 2 (X, Y )dXdY . √ − s 0 Verwerfe jene, für die dieser Wert zu groß erscheint. Schritt 3: Für jedes der übriggebliebenen Polynome F (X, Y ) führe einen Siebprozess durch, um die α-Werte der Rotationsvarianten Fj1 ,j0 (X, Y ) für alle |j0 | ≤ J0 und |j1 | ≤ J1 zu schätzen. Schritt 4: Da sich durch Rotation die Größeneigenschaften nicht wesentlich verändern, ist I(F ) ebenfalls ein Maß für die Größeneigenschaften der F -Varianten Fj1 ,j0 (X, Y ). Daher lässt sich die Summe I(F ) + α(Fj1 ,j0 ) als Kenngröße für die Güte des Polynoms Fj1 ,j0 (X, Y ) interpretieren. Alle Kandidaten, für die diese Summe einen zu großen Wert annimmt, verwerfe. Schritt 5: Für die übriggebliebenen Polynome berechne den E-Wert und wähle die 15 bis 20 mit den größten Ergebnissen aus. Schritt 6: Führe repräsentative Siebexperimente über den entsprechenden Siebräumen durch, um das Siegerpolynom zu küren. Es fällt auf, dass wir fast in jedem Schritt in der Pflicht sind, geeignete Akzeptanz-Schranken anzugeben, z. B. welche Polynome wir aufgrund ihrer Größeneigenschaften verwerfen. Diese Grenzen hängen in erster Linie davon ab, wie viel Zeit in die Polynomsuche investieren werden soll. Die Frage, wie lange man suchen muss, damit die Kosten (Aufwand der Suche) nicht den erzielten Nutzen (Verringerung der Siebzeit) überschreiten, ist schwierig zu beantworten. In seiner Dissertation beurteilt B. Murphy die Polynomsuche der RSA-155-Faktorisierung (tatsächlicher Aufwand: 100 MIPS-Jahre Suchen und 8000 MIPS-Jahre Sieben) unter diesem Gesichtspunkt und kommt zu dem Schluss, dass eine Verdoppelung der aufgewendeten Suchzeit eine Verkürzung der Siebzeit um 110 MIPS-Jahre erzielt hätte, d. h. alles in allem hätte man etwa 10 MIPS-Jahre gewonnen. Hätte man dagegen nur ein Zehntel des tatsächlichen Suchaufwandes investiert (d. h. 90 MIPS-Jahre eingespart), dann hätte dies einen Siebmehraufwand von 380 MIPS-Jahren zur Folge, der effektive Zusatzaufwand hätte also 290 MIPS-Jahre betragen. Beide Zahlen scheinen jedoch vernachlässigbar verglichen mit dem absoluten Siebaufwand von 8000 MIPS-Jahren, so dass eine nicht-optimale Suchzeit tolerierbar zu sein scheint, sofern die richtige Methode verwendet wird. Es sei jedoch darauf hingewiesen, dass die zitierten Abschätzungen von B. Murphy nicht sehr exakt sind, er selbst bezeichnet sie als über den Daumen gepeilt“ ( rule ” ” of thumb“). Erfahrungen aus der Praxis In der schon mehrfach angesprochenen Arbeit von B. Murphy [Mur99] wird die Mächtigkeit der oben beschriebenen Methode zur Polynomwahl anhand der Faktorisierungen von RSA-130 [CDEH+ 96], RSA-140 [CDL+ 99] und RSA-155 [CDL+ 00] illustriert. Dabei ist zu beachten, dass die Faktorisierung von RSA-130 zum Zeitpunkt des Entstehens jener Arbeit bereits abgeschlossen war und eine simplere“ Methode zur Polynomsuche verwendete. B. Murphy nutzt die Daten jener Faktorisierung, ” um diese einfache Methode mit den weiterentwickelten Prozeduren zu vergleichen. Das auf Seite 84 beschriebene Verfahren wurde parallel zur Faktorisierung von RSA-140 entworfen und hat sich dort als das erfolgreichste bewiesen, so dass es zur Faktorisierung von RSA-155 ohne Konkurrenz eingesetzt wurde. Im Folgenden fassen wir B. Murphys Ergebnisse zusammen: 1. RSA-130 Bei der Faktorisierung von RSA-130 wurden Base-m-Polynome ausschließlich nach einem Kriterium beurteilt: der Größe ihrer Koeffizienten. Zu Vergleichszwecken ist es sinnvoller, die Größe der Koeffizienten nicht absolut, sondern relativ zur Größe P von m anzugeben. Deshalb legen wir fest, dass eine Base-m-Darstellung von N der Form N = i=0,...,5 ai mi χ-klein heißt, wenn 85 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE |ai |/m < χ für alle ai , 0 ≤ i ≤ 5, erfüllt ist. Die 15 Polynome, die die RSA-130-Auswahlprozedur lieferte (wir bezeichnen sie als P -Polynome), waren 0,004-klein oder besser. B. Murphy weist jedoch nach, dass sie nur mittelmäßige bis schlechte Nullstelleneigenschaften vorzuweisen haben (13 besitzen einen positiven α-Wert, eines einen α-Wert von -0,01 und eines einen von -0,4). Es zeigt sich, dass das seinerzeit durch Siebexperimente ausgewählte und zur Faktorisierung herangezogene Polynom gerade dasjenige mit dem besten α-Wert gewesen ist. Um zu beweisen, dass man allein durch das Wissen um Nullstelleneigenschaften – ohne Manipulation derselben – die Suche erheblich hätte verbessern können, führt B. Murphy ein Suchverfahren durch, welches nur den ersten Schritt des auf Seite 84 beschriebenen Verfahrens (Konstruktion vielversprechender Base-m-Polynome) verwendet. Selbst auf die Bevorzugung glatter Leitkoeffizienten mit dem Ziel, viele projektive Nullstellen zu garantieren, wird verzichtet. Der wesentliche Unterschied zur früheren Suche besteht einzig in der Verwendung des E-Wertes zur Beurteilung der Polynome. Die so gefundenen Polynome mit den besten E-Werten nennen wir Q-Polynome. B. Murphy zeigt, dass diese eine 1,14 bis 1,47-fach bessere Güte (nachgewiesen durch Siebexperimente) aufweisen als das beste P -Polynom, obwohl die Suche nach ihnen nur einen Monat auf einem Prozessor kostete im Vergleich zu drei Monaten auf drei Prozessoren, um die P -Polynome zu finden. Abschließend wurden noch einmal etwa 36 Stunden auf einem Prozessor investiert, um eine Gruppe von Polynomen (die R-Polynome) mit derselben Methode wie die Q-Polynome, diesmal aber unter Einbeziehung der projektiven Nullstellen, zu konstruieren. Die Güte des besten R-Polynoms schließlich erweist sich als doppelt so groß wie die des besten P -Polynoms, obwohl ersteres deutlich größere Koeffizienten besitzt (χ-Wert von 0,011, aber α-Wert von -3,88). Dieses Ergebnis ist überzeugend, besonders wenn man die Aufwandsdifferenz betrachtet. Auch zeigen diese Experimente, dass in jeder der drei Proben dasjenige Polynom, welches nach Siebexperimenten als das beste ausgewählt wurde, jeweils den größten E-Wert besitzt. Ebenso wurden die restlichen Polynome einer jeden Probe mithilfe des E-Wertes zufriedenstellend, wenn auch nicht fehlerlos, eingeordnet. Dies ist ein Hinweis darauf, dass man dem E-Ranking“ Vertrauen schenken darf. ” Der E-Wert wird auch ausgenutzt, um zu Vergleichszwecken ein Durchschnittspolynom“ zu ” definieren: Aus dem Bereich, in dem die m-Werte der betrachteten Polynome liegen, werden per Zufall 100 gleichverteilte m’s ausgewählt und die E-Werte der entsprechenden Base-m-Repräsentationen berechnet. Wir nennen schließlich dasjenige Polynom, dessen E-Wert dem Mittelwert der Stichprobe am nächsten liegt, das Durchschnittspolynom. B. Murphy weist nach, dass die Güte des besten R-Polynoms 5,9 mal so groß ist wie die des Durchschnittspolynoms. 2. RSA-140 Zur Polynomsuche im Zuge der Faktorisierung von RSA-140 wurde zunächst das Verfahren verwendet, welches wir anlässlich der Konstruktion der R-Polynome von RSA-130 beschrieben haben. Auf diese Art und Weise wurde ein nicht-schräges Polynom mit χ-Wert von 0,011 und α-Wert von -4,2 gefunden, dessen Güte 5,9 mal so groß ist wie die Güte eines Durchschnittspolynoms. Daraufhin begann man, mit Verschiebungen und Rotationen zu experimentieren und fand 6 schräge Polynome mit α-Werten zwischen -5,00 und -7,01. Der χ-Wert ist natürlich nicht mehr geeignet, schräge Polynome zu bewerten. Der Kandidat mit dem kleinsten α-Wert stellte sich nach den Siebexperimenten als das beste Polynom heraus. Die diesem Polynom optimal angepasste Siebregion besitzt einen X, Y -Quotienten von s = 4000. In Anlehnung an das schon beschriebene Verfahren für nicht-schräge Polynome lässt sich auch ein schräges Durchschnittspolynom konstruieren. Es kann nachgewiesen werden, dass die Güte des ausgewählten Polynoms 7,8 mal größer ist als die eines schräges Durchschnittspolynoms. Im direkten Vergleich mit dem besten nicht-schrägen Polynom zeigt sich, dass das schräge Polynom eine um den Faktor 1,61 bessere Güte besitzt. Um den letzten Vergleich noch aussagekräftiger zu machen, wurde auch das jeweilige lineare Polynom miteinbezogen. Dies gab letztendlich den Ausschlag, schräge Polynome als den nicht-schrägen überlegen anzusehen, so dass für RSA-155 von Beginn an nur nach schrägen Polynomen gesucht wurde. 3. RSA-155 Die im August 1999 abgeschlossene Faktorisierung von RSA-155 bildet zur Zeit den Rekord für allgemeine Zahlen. Berücksichtigt man die oben dokumentierten Vergleiche zwischen den 86 4.3 QUADRATISCHE CHARAKTERE verschiedenen Polynomwahl-Verfahren, dann kann man schließen, dass jener Erfolg ohne die Weiterentwicklungen auf diesem Gebiet nicht möglich gewesen wäre, zumindest nicht zu einem so frühen Zeitpunkt. Ähnlich wie in der auf Seite 84 beschriebenen Prozedur fand man eine Auswahl von 8 Kandidaten mit α-Werten zwischen -5,43 und -6,83. Diesmal war das durch Siebexperimente bestimmte Siegerpolynom nicht dasjenige mit dem kleinsten α-Wert. Zwar besitzt es einen α-Wert von nur“ -6,25, aber dafür sind seine Größeneigenschaften klar die besten der ” Auswahl. Dies zeigt wieder, dass man Nullstellen- und Größeneigenschaften nie isoliert betrachten, sondern immer nach einer optimalen Kombination Ausschau halten sollte. Auffallend ist außerdem, dass das E-Ranking dieser 8 Kandidatenpolynome bis auf ein Vertauschen der letzten beiden Plätze mit der tatsächlichen Reihenfolge übereinstimmt. Dies ist ein weiterer Beleg für die Mächtigkeit jenes Werkzeugs, zumal die Güte der beurteilten Polynome kaum differiert und es daher um so schwieriger ist, sie korrekt untereinander zu vergleichen. Der Vollständigkeit halber seien noch die restlichen Daten des besten Polynoms aufgeführt: Der X, Y -Quotient des optimalen Siebraumes ist s ≈ 10800, der Leitkoeffizient besitzt 12 Primteiler (wichtig für projektive Nullstellen) und die Güte ist 13,5 mal so groß wie die eines schrägen Durchschnittspolynoms. Aus letzterem lässt sich schließen, dass das RSA-155-Polynom 13, 5/7, 8 ≈ 1, 6 mal besser ist als das RSA-140-Polynom. Dieser Fortschritt ist jedoch nicht auf algorithmische Weiterentwicklungen, sondern lediglich auf einen längeren Auswahlvorgang (100 gegenüber 60 MIPS-Jahren) zurückzuführen. Die Suche nach dem RSA-140-Polynom wurde frühzeitig abgebrochen, um die zur Weihnachtszeit niedrige Rechner-Auslastung für den Siebprozess ausnutzen zu können. Für alle weiteren Details (z. B. wie die Siebexperimente durchgeführt wurden oder wie man ein schräges Durchschnittspolynom findet) sei auf B. Murphys Dissertation [Mur99] verwiesen. 4.3 Quadratische Charaktere In diesem Abschnitt wenden wir uns endlich der letzten noch verbliebenden Schwierigkeit bei der Konstruktion des algebraischen Quadrates zu. Zur Erinnerung eine Standortbestimmung: Was haben wir bisher erreicht? P Wir gehen aus von einem nicht-normierten Polynom F (X, Y ) := i=0,...,d ai X i Y d−i , der homogenisierten Form von fα (X). Wie üblich sei m eine Nullstelle von fα (X) modulo N , α eine komplexe Wurzel von fα (X) und ω := ad α eine ganzalgebraische Zahl. Dann ist Q(α) der algebraische Zahlkörper, in dem wir arbeiten, und Oω = Oα dessen Ganzheitsring. Mithilfe von Siebverfahren und linearer Algebra modulo 2P sind wir nun in der Lage, eine Menge S von teilerfremden Zahlen zu finden, die Kriterium (4.4) : (a,b)∈S ep,(x0 :x1 ) (a, b) ≡ 0 (2) genügt. Dies ist notwendig dafür, dass die Größe Q (a,b)∈S (a − bα) das Quadrat einer algebraischen Zahl ist. Außerdem ist es zwar nicht hinreichend (dann wären wir bereits fertig), aber doch so stark, dass seine Erfüllung uns schon fast ans Ziel bringt. Zur Bewältigung des letzten Teilstückes werden wir ein probabilistisches Verfahren anwenden. Um die auf eine Arbeit von L. M. Adleman [Adl91] zurückgehende Idee transparent zu machen, beschreiben wir zunächst eine Vereinfachung für die ganzen Zahlen: Angenommen, wir möchten herausfinden, ob eine ganze Zahl z ein Quadrat ist, kennen aber weder das Vorzeichen noch die Primfaktorzerlegung von z. Finden wir eine ungerade Primzahl p - z, so dass z kein quadratischer Rest ist modulo p, ist z beweisbar kein Quadrat. Umgekehrt gilt, dass z ein Quadrat ist, wenn für alle ungeraden Primzahlen p, die z nicht teilen, z ein quadratischer Rest modulo p ist. Betrachten wir eine zufällig gewählte Primzahl p mit p - z und erkennen z als Quadrat, wenn z quadratischer Rest modulo p ist, so kann dies als einfacher stochastischer Test interpretiert werden. Diese Idee übertragen wir wie folgt: Sei q > B2 eine Primzahl und bezeichne ( nq ) das Legendre-Symbol, d. h. es gilt ( 1 n = q −1 falls n quadratischer Rest ist modulo q falls n quadratischer Nichtrest ist modulo q 87 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE für alle n ∈ Z, die kein Vielfaches von q sind. Für die Vielfachen von q ist das Legendre-Symbol nicht definiert. Des Weiteren sei (x0 : x1 ) ∈ R(q) mit q - x1 . Dann induziert α 7→ x−1 1 x0 mod q einen Homomorphismus von Z[α] nach Fq . Aus der Voraussetzung q > B2 folgt wegen der Größe von B2 in der Regel, dass q weder ein Teiler von ad noch ein Indexteiler (bezogen auf den Index [Oα : Z[ω]]) ist. Deshalb lässt sich der eben eingeführte Homomorphismus eindeutig auf Oα fortsetzen (nach Satz 3.4 ist ein Homomorphismus von Oα = Oω durch das Bild von ω = ad α eindeutig bestimmt und dieses wegen q - ad wiederum eindeutig durch das Bild von α). Sei q der Kern dieses mit ϕq bezeichneten Homomorphismus und seien νq , Bq , mq , sowie ϕq,B wie in Unterabschnitt 4.2.1 definiert. Insbesondere ist q das einzige zu dem Tupel (q, (x0 : x1 ) gehörige Primideal von Oα . P Wir konstruieren folgenden Test: Sei ρ := i=0,...,d ri αi ∈ Z[α] \ q. P i Dann bilden wir zunächst ρ mittels ϕq,B ab auf i=0,...,d ri (x−1 1 x0 ) mod q. Wegen der Voraussetzung P i ρ 6∈ qq = ker(ϕq ) ist q kein Teiler von i=0,...,d ri (x−1 1 x0 ) , so dass das q zugeordenete Legendresymbol für ϕq,B (ρ) definiert ist. Daher liefert die Abbildung ! P −1 i X X i=0,...,d ri (x1 x0 ) −1 i i ri α 7→ ri (x1 x0 ) 7→ q i=0,...,d i=0,...,d einen Homomorphismus von Z[α]\mq in die multiplikative Gruppe {−1, 1}, den wir mit χq bezeichnen. Jeden solchen Homomorphismus können wir als probabilistischen Quadrat-Test verwenden, denn es gilt: Satz 4.32 Seien q > B2 eine Primzahl und (x0 : x1 ) ∈ R(q) so gewählt, dass q kein Teiler von x1 · fω0 (ad x−1 0 x1 ) ist (wie üblich ist fω (X) das Minimalpolynom von ω bezüglich Q). Weiterhin sei S mit #S ≡ 0 (2) eine Menge von Paaren teilerfremder ganzer Zahlen a, b mit den Q Eigenschaften, dass die Größen F (a, b) B2 -glatt sind und dass (a,b)∈S (a − bα) ein Quadrat in Q(α)× ist. Q Dann gilt χq (a − bα) = 1. (a,b)∈S Q Beweis: Zunächst zeigen wir die Hilfsbehauptung (a,b)∈S (a − bα) ∈ Z[α] \ mq : Sei (a, b) ∈ S beliebig. Dann wissen wir, dass F (a, b) B2 -glatt ist. Hieraus folgt mit q > B2 , dass lq0 ,A (a − bα) = 0 gilt für das A-Primideal q0 := q ∩ A. Nach Korollar 4.6 muss somit νq (a − bα) = 0 erfüllt sein, denn wir haben bereits hergeleitet, dass q das einzige Oα -Primideal über q0 ist. Hieraus folgt die Hilfsbehauptung mit Lemma 4.15. Q Nach Voraussetzung ist (a,b)∈S (a − bα) ein Quadrat in Q(α)× , daher ist nach der Argumentation Q aus Unterabschnitt 4.1.2 die Größe a#S (a,b)∈S (a − bα) das Quadrat einer ganzalgebraischen Zahl d #S Q 0 2 und schließlich fω (ad α) · ad (a,b)∈S (a − bα) das Quadrat eines β ∈ Z[ω] ⊆ Z[α]. Weil q nach 0 Voraussetzung weder ein Teiler von ad noch von fω0 (ad x−1 1 x0 ) ist, sind auchad und fω (ad α) Elemente Q aus Z[α]\mq , und wir können χq auf β 2 anwenden. Angenommen, es gelte χq (a − bα) = −1. (a,b)∈S Dann könnten wir mit 2 | #S folgern: Y Y (a − bα) = χq (fω0 (ad α)2 ) · χq (a#S ) · χq (a − bα) χq (β 2 ) = χq fω0 (ad α)2 · a#S d | {z } | {zd } (a,b)∈S =1 =1 (a,b)∈S = −1 Dies ist ein Widerspruch zu χq (β 2 ) = (χq (β))2 = 1, daher ist die Behauptung bewiesen. Wir können daher den Exponentenvektor von (a, b) um einen Eintrag erweitern und diesen mit 1 belegen, falls χq (a − bα) = −1 gilt und mit 0 sonst. Damit haben wir die multiplikative in eine additive Struktur überführt und können im Lineare-Algebra-Schritt eine Menge S finden, so dass 88 4.3 QUADRATISCHE CHARAKTERE Q zusätzlich zu unseren üblichen Forderungen auch χq ( (a,b)∈S (a−bα)) = 1 erfüllt ist. Der aufmerksame Leser mag einwenden, dass dies Verfahren wieder nur ein notwendiges Kriterium liefert. Das ist zwar richtig, aber wir können so viele Tests durchführen, bis die Wahrscheinlichkeit, bei Bestehen all dieser Tests ein algebraisches Quadrat konstruiert zu haben, nahezu Eins ist. Denn da wir für jeden Test den Exponentenvektor nur um einen einzigen, schnell zu berechnenden Eintrag erweitern müssen, ist dieses Verfahren billig“ genug, um praktikabel zu sein. Mehr noch: Durch geeignete Auswahl der ” Testhomomorphismen“ χq kann sogar tatsächlich ein hinreichendes Kriterium definiert werden. ” Um dies zu erreichen, können wir wie folgt vorgehen: Zunächst definieren wir analog zu Unterabschnitt 4.1.2 den Ring V als Gesamtheit aller x ∈ Q(α)× mit der Eigenschaft, dass lp,A (x) für alle 2 A-Primideale p eine gerade Zahl ist. Elemente aus V können wir generieren, ein Element aus Q(α)× 2 brauchen wir. Daher betrachten wir wieder den F2 -Vektorraum V /Q(α)× . Man kann nachweisen, 2 dass die Testhomomorphismen χq auch auf V /Q(α)× wohldefiniert sind (zu zeigen ist, dass jedes 2 θ ∈ V eine Darstellung θ = θ1 · θ2 mit θ1 ∈ Z[α] \ mq und θ2 ∈ Q(α)× besitzt und dass χq (θ1 ) von dieser Darstellung unabhängig ist; dann setzt man χq (θ) := χq (θ1 )). Somit definiert jedes χq einen 2 2 Charakter von V /Q(α)× , d. h. einen nichttrivialen Homomorphismus des Vektorraums V /Q(α)× in 2 den zugrundeliegenden Körper F2 . Die Menge aller Homomorphismen von V /Q(α)× nach F2 bildet 2 ihrerseits einen F2 -Vektorraum, den dualen Raum von V /Q(α)× . Es ist bekannt, dass der duale Raum eines endlichdimensionalen K-Vektorraums W ebenfalls die Dimension dimK (W ) besitzt. Im α ∈ Oα 2 Fall haben wir die Abschätzung dimF2 V /Q(α)× < (log N )/ log 2 hergeleitet. Dort besitzt der duale 2 Raum von V /Q(α)× daher eine Basis mit weniger als (log N )/ log 2 Elementen. Wir gehen davon aus, dass eine vergleichbare Abschätzung auch für den allgemeinen Fall α 6∈ Oα gültig ist. Wählen wir die Testhomomorphismen so, dass sie eine Basis (oder zumindest ein Erzeugendensystem) des Dualraums bilden, dann gilt offenbar: Aus χq (x) = 1 für alle Testhomomorphismen χq folgt φ(x) = 1 für jeden 2 Charakter φ von V /Q(α)× , denn dieser ist ein nichttriviales Produkt der Testhomomorphismen. So haben wir endlich ein hinreichendes Kriterium zur Quadratkonstruktion gefunden. Wie jedoch erhal2 ten wir ein Erzeugendensystem des Dualraumes von V /Q(α)× ? In der ersten Beschreibung des GNFS [BLP93] wurde empfohlen, die Anzahl der Testhomomorphismen einfach so groß zu wählen, dass diese mit an Sicherheit grenzender Wahrscheinlichkeit den dualen Raum aufspannen. Daher schlagen die Autoren die Verwendung von (3 log N )/ log 2 Testhomomorphismen vor. Erste praktische Erfahrungen zeigten jedoch, dass diese Zahl viel zu groß gewählt war. In der ersten GNFS -Implementation [BL93] wurde daher mit 100 Testhomomorphismen gearbeitet, wobei nach Ansicht der Verfasser selbst 50 bereits ausreichend gewesen wären. Daher verfolgen wir den Dualraum-Ansatz nicht weiter und geben uns mit einem in der Praxis bewährten probabilistischen Testverfahren zufrieden. Um diesen Abschnitt abzuschließen, werden wir den GNFS -Exponentenvektor vollständig beschreiben. Zunächst müssen wir auf der Grundlage vorstehender Überlegungen die Faktorbasis geeignet erweitern: • Fr Den rationalen Teil der Faktorbasis, über dem die Größen a − bm zerfallen, bilden alle rationalen Primzahlen p ≤ B1 . • Fa1 Den Teil der algebraischen Faktorbasis, über dem die Größen F (a, b) zerfallen, bilden alle Tupel der Form (p, (x0 : x1 )), wobei p ≤ B2 eine rationale Primzahl und (x0 : x1 ) ein Element von R(p) ist. • Fa2 Der zweite Teil der algebraischen Faktorbasis, welcher benötigt wird für das Durchführen der oben entwickelten Tests, besteht aus ca. 100 Tupeln der Form (q, (x0 : x1 )), wobei q eine rationale Primzahl größer als B2 und (x0 : x1 ) ∈ R(q) so gewählt ist, dass q kein Teiler von x1 ·fω0 (ad x−1 0 x1 ) ist. Der Effizienz halber verwenden wir zur Konstruktion des letzten Teils möglichst kleine Primzahlen q. Seien nun a, b teilerfremde ganze Zahlen mit der Eigenschaft, dass die Größe a − bm B1 -glatt und 89 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE der Wert F (a, b) B2 -glatt ist. Der diesem Paar zugeordnete Exponentenvektor hat dann folgendes Aussehen: 1. Den ersten Eintrag bildet eine 1, um zu erreichen, dass die zu findende Menge S eine gerade Anzahl von Elementen besitzt. 2. Der zweite Eintrag ist 1, falls a − bm negativ, und 0, falls a − bm positiv ist. Dieser garantiert, dass das zu konstruierende rationale Produkt positiv ist. 3. Die nächsten #Fr = π(B1 ) Einträge berechnen sich als ordp (a − bm) mod 2 für jedes p ∈ Fr . 4. Die folgenden #Fa1 Einträge belegen wir für jedes Tupel (p, (x0 : x1 )) ∈ Fa1 mit der modulo 2 reduzierten Größe ep,(x0 :x:1) (a, b). 5. Die letzten #Fa2 Einträge werden für jedes Tupel (q, (x0 : x1 )) ∈ Fa2 mit 0 belegt, falls χq (a − bα) = 1 gilt und mit 1, falls χq (a − bα) = −1 erfüllt ist. In der Regel ist die Zahl m größer als die X-Ausdehnung des Siebbereiches. In diesem Fall ist die Größe a − bm für b > 0 immer negativ und wir können auf einen der ersten beiden Einträge verzichten, weil diese identisch sind. 4.4 Das Lattice Sieve Nach den ersten Erfolgen des SNFS hat es viele Ansätze gegeben, die verwendeten Siebalgorithmen zu verbessern. Grundlage der wichtigsten Neuerung, des Lattice Sieve, ist die Arbeit [Pol93b] von J. M. Pollard. Diese Technik wurde zwar für das SNFS entwickelt, aber in der Praxis erstmalig für das GNFS implementiert und eingesetzt, deshalb besprechen wir sie im vorliegenden Kapitel. Im Wesentlichen macht sie von zwei Ideen Gebrauch, die wir nachfolgend im Einzelnen vorstellen werden. Den Abschluss dieses Abschnittes bildet dann die vollständige Beschreibung des Lattice-Sieve, welches beide Ideen geschickt kombiniert. 4.4.1 Sieben mit Special-q Pollards erste Idee entstand aus der Überlegung, dass eine B-glatte Zahl mit großer Wahrscheinlichkeit einen Primfaktor im oberen Bereich des Intervalls (0, B ] besitzt, denn die ψ-Funktion, die die Anzahl B-glatter Zahlen unterhalb einer Schranke n angibt, fällt außerordentlich schnell mit abnehmendem n. Daher schlägt Pollard vor, bei der Suche nach guten Paaren (a, b) ausschließlich jene zu berücksichtigen, für die die Größe a − bm wenigstens einen Primteiler oberhalb einer geeignet gewählten Schranke B0 < B1 besitzt (wie üblich bezeichnet B1 die Grenze der rationalen Faktorbasis). Der Siebprozess gliedert sich dann in verschiedene Schritte, wobei in jedem Schritt ein q zwischen B0 und B1 (ein sogenanntes Special-q) bearbeitet wird. Pro q-Schritt“ werden genau diejenigen Paare (a, b) betrach” tet, für die die Größe a − bm durch q teilbar ist; nur jene durchlaufen dann die zwei üblichen Siebe (rationales und algebraisches). Dabei ist zu beachten, dass auf rationaler Seite nur mit den Primzahlen p < q gesiebt wird, damit man jedes gute Paar nur einmal erhält (ist q der größte Primfaktor von a − bm, dann gewinnen wir das Paar (a, b) im q-Schritt). Die Intention dieses Vorgehens ist, möglichst viele Paare (a, b) von Vorneherein aus dem Siebprozess auszuschließen, ohne eine zu große Anzahl guter Paare zu verlieren. Folgende Überlegungen sollen dies untermauern: • Um zu demonstrieren, wie viel Arbeit gespart wird, bilden wir eine einfache obere Abschätzung für die Wahrscheinlichkeit, dass eine Zufallszahl einen Primteiler zwischen B0 und B1 besitzt: W := X B0 ≤q≤B1 90 1 . q 4.4 DAS LATTICE SIEVE W entspricht dann dem Anteil der noch zu betrachtenden Paare – sofern wir auf jene verzichten, für die a − bm keinen Primteiler zwischen B0 und B1 besitzt – bezogen auf alle Paare des Siebraums. Ist z. B. W = 1/10, dann haben wir 90% der Arbeit gespart. • Der zu zahlende Preis ist der Verlust jener Paare (a, b), für die die Größe a − bm sogar B0 glatt ist. Um dessen Ausmaß abzuschätzen, bestimmen wir die Wahrscheinlichkeit, dass eine Zahl der Größenordnung a − bm, von der wir wissen, dass sie B1 -glatt ist, darüber hinaus noch B0 -glatt ist. Dieser mit L bezeichnete Wert gibt den Anteil der verlorenen guten Paare bezogen auf die Gesamtheit aller guten Paare wieder. Wir verwenden abermals die Formel für bedingte Wahrscheinlichkeiten, die lautet Wsk(A|B) = (Wsk(A ∩ B))/Wsk(A), und beachten, dass die Wahrscheinlichkeit, dass eine Zahl B0 - und B1 -glatt ist identisch ist mit der Wahrscheinlichkeit, dass sie B0 -glatt ist. Des Weiteren bemühen wir die schon in Unterabschnitt 4.2.3 eingeführte Dickman-Funktion, indem wir die Wahrscheinlichkeit, dass eine ganzrationale Zahl z B-glatt ist, mit ρ(log z/ log B) beziffern. So erhalten wir schließlich L := ρ(log(a − bm)/ log B0 ) . ρ(log(a − bm)/ log B1 ) J. M. Pollard hat die Größen W und L für Faktorisierung von F9 und verschiedene Schranken B0 berechnet und kommt zu dem Schluss, dass man bei optimaler Wahl von B0 (B0 ≈ 0, 3 · B1 ) lediglich 8, 6% der Arbeit hätte leisten müssen, um 83% der guten Paare zu gewinnen. Obwohl die verwendeten Abschätzungen nur sehr grob sind, ist dies ein deutlicher Hinweis auf die Nützlichkeit der Special-qMethode. Intuitiv ist klar, dass für feste Schranken B0 < B1 der Wert L abnimmt, wenn a−bm durch eine größere Zahl ersetzt wird. Im Gegensatz zum SNFS nimmt beim GNFS das nichtlineare Polynom die größeren Werte über dem Siebraum an. Deshalb ist es beim GNFS üblich, auf der algebraischen statt auf der rationalen Seite zu filtern, d. h. es werden nur jene Paare (a, b) betrachtet, für die F (a, b) durch eines der Special-q teilbar ist (siehe z. B. die zur Faktorisierung von RSA-130 verwendete Implementierung [GLM94]). Diesen Ansatz möchten wir nun weiterentwickeln. 4.4.2 Sieben im Gitter Die zweite Idee, die auch zur Realisierung der ersten benötigt wird, beruht auf der Tatsache, dass das in Abschnitt 3.6 beschriebene klassische“ Siebverfahren noch nicht die optimale Anpassung an die ” vorliegende Situation darstellt. Jene, aus dem Sieb des Erathostenes hervorgegangene Methode findet die durch eine Primzahl teilbaren Werte eines einstelligen ganzrationalen Polynoms. Im Number Field Sieve arbeiten wir hingegen mit zweistelligen Polynomen. Anstatt das Verfahren geeignet weiterzuentwickeln, haben wir aus Zweidimensionalität künstlich (durch Festhalten einer Komponente) Eindimensionalität geschaffen. Dies stellte die einfachste Problemlösung dar und war für die ersten Einsätze des SNFS auch durchaus ausreichend. Im Folgenden beschreiben wir eine deutlich effizientere Möglichkeit, die darauf beruht, dass die von einem algebraischen Faktorbasiselement (p, (x0 : x1 )) geteilt“ werdenden Paare (a, b) ein Gitter in Z2 bilden. Genauer gesagt: ” Definition 4.33 (Das Gitter Lp,(x0 :x1 ) ) Für (x0 : x1 ) ∈ P1 (Fp ) bezeichne Lp,(x0 :x1 ) die Gesamtheit aller Paare (a, b) ∈ Z2 mit ax1 ≡ bx0 (p). Auf das Number Field Sieve bezogen hat dies folgende Konsequenz: Um die rationale und die algebraische Seite einheitlich behandeln zu können, versehen wir jedes Element p der rationalen Faktorbasis Fr mit dem zusätzlichen Eintrag (m mod p : 1), der die einzige Nullstelle des linearen homogenen Polynoms G(X, Y ) := X − mY modulo p repräsentiert. Ist dann (p, (x0 : x1 )) ∈ Fr , dann enthält das Gitter Lp,(x0 :x1 ) offensichtlich alle Paare (a, b), für die die Größe a − bm durch p teilbar ist. Gilt (p, (x0 : x1 )) ∈ Fa1 , dann besteht das Gitter Lp,(x0 :x1 ) aus allen zu diesem Faktorbasis-Element 91 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE gehörigen Paaren (a, b) mit p | F (a, b) (genauer gesagt enthält es alle a, b mit a : b = x0 : x1 oder p | ggT(a, b)). Die für unsere Zwecke entscheidende Eigenschaft eines Gitters ist die Tatsache, dass es eine Gitterbasis besitzt; d. h. wir können zwei Basisvektoren angeben mit der Eigenschaft, dass sich alle Elemente des Gitters Lp,(x0 :x1 ) als Z-Linearkombinationen dieser Vektoren darstellen lassen. Um hieraus einen praktischen Nutzen zu ziehen, müssen wir die entsprechenden Basisvektoren berechnen können. Dazu folgender Satz: Satz 4.34 (Basisvektoren von Lp,(x0 :x1 ) ) Sei (p, (x0 : x1 )) ein Element der Faktorbasis. Dann gilt: a) Ist p kein Teiler von x1 , dann bilden die Vektoren V1 := (p, 0) und V2 := ( xx10 mod p, 1) eine Basis des Gitters Lp,(x0 :x1 ) . b) Andernfalls (d. h. wenn (x0 : x1 ) eine projektive Nullstelle von F (X, Y ) modulo p ist), bilden die Vektoren V1 := (0, p) und V2 := (1, 0) eine Basis des Gitters Lp,(x0 :x1 ) . Beweis: zu a) Lp,(x0 :x1 ) ⊆ ZV1 + ZV2 : Sei (a, b) ∈ Lp,(x0 :x1 ) , d. h. es gelte ax1 ≡ bx0 (p). Da p kein Teiler von x1 ist, können wir x1 modulo p invertieren und es folgt: a = b( xx10 mod p) + kp für ein k ∈ Z. Wie man leicht nachrechnet, gilt dann (a, b) = kV1 + bV2 . ZV1 + ZV2 ⊆ Lp,(x0 :x1 ) : Seien z1 , z2 ∈ Z beliebig, dann gilt z1 V1 + z2 V2 = (z1 p + z2 ( xx01 mod p), z2 ). Wegen (z1 p + z2 x0 x−1 1 )x1 ≡ z2 x0 (p) folgt daher z1 V1 + z2 V2 ∈ Lp,(x0 :x1 ) . zu b) Lp,(x0 :x1 ) ⊆ ZV1 + ZV2 : Sei (a, b) ∈ Lp,(x0 :x1 ) , d. h. es gelte ax1 ≡ bx0 (p). Da p ein Teiler von x1 , aber nach Definition von P1 (Fp ) kein Teiler von x0 ist, folgt b = kp für ein k ∈ Z. Wie man leicht nachrechnet, gilt dann (a, b) = kV1 + aV2 . ZV1 + ZV2 ⊆ Lp,(x0 :x1 ) : Seien z1 , z2 ∈ Z beliebig, dann gilt z1 V1 + z2 V2 = (z2 , z1 p). Wegen 0 ≡ z2 x1 ≡ z1 px0 (p) folgt daher z1 V1 + z2 V2 ∈ Lp,(x0 :x1 ) . Anstatt nun – wie beim klassischen Sieben üblich – den a, b-Raum Zeile für Zeile eindimensional zu bearbeiten, sind wir nun in der Lage, die komplette Siebregion gleichzeitig“ zu behandeln, was ” einen deutlichen Zeitgewinn mit sich bringt. Allerdings soll auch nicht verschwiegen werden, dass das Gittersieben offensichtlich wesentlich mehr Speicherplatz benötigt als das klassische, deshalb ist letzteres nach wie vor im Gebrauch. 4.4.3 Der neue Siebalgorithmus Jetzt zeigen wir, wie sich die zuvor entwickelten Ideen zu einem neuen Siebverfahren kombinieren lassen. Dabei orientieren wir uns an der zur Faktorisierung von RSA-130 entwickelten Implementierung [GLM94], die auch noch bei der aktuellen Rekordfaktorisierung von RSA-155 [CDL+ 00] zur Anwendung gelangte (obwohl es nach Ansicht der Autoren von [CDL+ 00] besser gewesen wäre, den Algorithmus zu überarbeiten). Für technische Details, Beispiele und Möglichkeiten der Parallelisierung sei auf [GLM94] verwiesen. Zuerst legen wir die Schranken Bq1 und Bq2 fest, die die Größe der Special-q angeben. Für jedes algebraische Faktorbasis-Element (q, (x0 : x1 )) mit Bq1 ≤ q ≤ Bq2 finden wir kurze Basisvektoren V1 := (a1 , b1 ) und V2 = (a2 , b2 ) von Lq,(x0 :x1 ) , indem wir einen Gitterbasis-Reduktionsalgorithmus auf die in Satz 4.34 konstruierten Vektoren anwenden. Sind keine Verwechslungen zu befürchten, dann schreiben wir Lq anstelle von Lq,(x0 :x1 ) . Anstatt den kompletten a, b-Raum zu betrachten, sieben wir 92 4.4 DAS LATTICE SIEVE im Folgenden nur in den Special-q-Gittern Lq , wir testen somit ausschließlich Paare (a, b), für die F (a, b) durch ein q zwischen Bq1 und Bq2 teilbar ist. Der eigentliche Siebprozess besteht dann aus zwei ineinandergeschachtelten Schleifen, wobei die äußere über alle Special-q und die innere über alle übrigen Faktorbasis-Elemente läuft, mit folgender Einschränkung: Damit wir gute Paare (a, b) nicht mehrfach erhalten, sieben wir auf der algebraischen Seite nur noch mit den Faktorbasis-Elementen, die kleiner als das aktuelle Special-q sind. Zu diesem Zweck müssen wir zunächst einmal eine totale Ordnung auf den Faktorbasis-Elementen einführen: Einen Tupel der Form (q, (x0 : x1 )) repräsentieren wir als (q, x0 x−1 1 mod q), falls q kein Teiler von x1 ist und als (q, ∞) sonst. Ist dann ≤Z die übliche Ordnung auf Z und ≤0 die natürliche Ordnung auf Fq ∪ ∞, dann sei ≤ definiert als die lexikograpische Kombination von ≤Z mit ≤0 , d. h.: (p1 , c1 ) ≤ (p2 , c2 ) ⇔ p1 <Z p2 oder p1 = p2 und c1 ≤0 c2 . 93 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE Sei jetzt also (q, (x0 : x1 )) ein Special-q und (p, (y0 : y1 )) ein weiteres Element der Faktorbasis (mit der Eigenschaft (p, (y0 : y1 )) < (q, (x0 : x1 )) im Fall (p, (y0 : y1 )) ∈ Fa2 ). Im Rumpf der innerern Schleife wird das Sieben mit all diesen weiteren Faktorbasis-Elementen durchgeführt: Mit Lq,p sei der Schnitt der Gitter Lq und Lp bezeichnet. Um alle Paare des Siebraumes, die Element von Lq,p sind, zu finden, arbeiten wir direkt im Gitter Lq . Wir benötigen daher eine Basis von Lq,p als Untergitter von Lq betrachtet, d. h. bezogen auf eine Basis von Lq . Dabei hilft uns der folgende Satz: Satz 4.35 (Basisvektoren von Lq,p ) Seien (q, (x0 : x1 )) > (p, (y0 : y1 )) Elemente der Faktorbasis Ist V1 := (a1 , b1 ), V2 := (a2 , b2 ) eine Basis von Lq , dann gilt a) Im Fall p | (b1 y0 − a1 y1 ) bilden die Vektoren U1 := (1, 0) = V1 und U2 := (0, p) = pV2 eine Basis von Lq,p . −b2 y0 b) Im Fall p - (b1 y0 − a1 y1 ) bilden die Vektoren U1 := (p, 0) = pV1 und U2 := ( ba12yy01−a mod p, 1) = 1 y1 −b2 y0 ( ab12yy01−a mod p)V1 + V2 eine Basis von Lq,p . 1 y1 Beweis: Sei (a, b) = cV1 + eV2 = (ca1 + ea2 , cb1 + eb2 ) ein Element von Lq . Dann gilt: (a, b) ∈ Lp ⇔ ⇔ (ca1 + ea2 )y1 ≡ (cb1 + eb2 )y0 (p) c(a1 y1 − b1 y0 ) + e(a2 y1 − b2 y0 ) ≡ 0 (p) (4.12) Hieraus folgt sofort, dass in beiden Fällen die angegebenen Vektoren U1 und U2 Elemente des Gitters Lq,p sind. Daher bleibt nur noch zu zeigen, dass sie Lq,p erzeugen. Sei also cV1 + eV2 ∈ Lq,p . zu a) Aus p | (b1 y0 − a1 y1 ) folgt direkt V1 ∈ Lp . Angenommen, es gelte p | (a2 y1 − b2 y0 ). Dann könnten wir analog V1 ∈ Lp folgern, insbesondere wäre dann Lq ⊆ Lp erfüllt. Da dies im Widerspruch zu (q, (x0 : x1 )) > (p, (y0 : y1 )) steht, muss daher p - (a2 y1 − b2 y0 ) gelten. Mit (4.12) folgt hieraus p | e, d. h. e = kp für ein k ∈ Z. Man rechnet sofort nach, dass cV1 + eV2 = cU1 + kU2 erfüllt ist. −b2 y0 zu b) Mit (4.12) folgt hieraus c = −e aa12 yy11 −b mod p + kp für ein k ∈ Z. Man rechnet nach, dass 1 y0 dann cV1 + eV2 = kU1 + eU2 erfüllt ist. Auf die so gefundenen Basisvektoren können wir wieder ein Reduktionsverfahren anwenden und erhalten dann alle Elemente des Gitters Lq,p als Z-Linearkombinationen dieser Vektoren. So können wir das Sieben mit dem Faktorbasiselement (p, (y0 : y1 )) effizient realisieren. Zu besseren Übersicht fassen wir das Verfahren noch einmal zusammen: (a) Lege die Schranken Bq1 < Bq2 fest. (b) Für jedes algebraische Faktorbasis-Element (q, (x0 : x1 )) mit Bq1 < q ≤ Bq2 führe folgende Schritte durch: (b1) Bestimme kurze Basisvektoren V1 := (a1 , b1 ) und V2 := (a2 , b2 ) von Lq,(x0 :x1 ) = Lq . (b2) Initialisiere einen zweidimensionalen Array Aq mit Null. Das Array-Element Aq [x, y] repräsentiert das Paar (a, b) = xV1 + yV2 = (xa1 + ya2 , xb1 + yb2 ) des Gitters Lq . Daher muss der Array so groß gewählt werden, dass er den Schnitt der Siebregion mit Lq vollständig abdeckt. (b3) Für jedes algebraische Faktorbasis-Element (p, (y0 : y1 )) < (q, (x0 : x1 )) führe folgende Schritte durch: i. Bestimme kurze Basisvektoren U1 := (c1 , e1 ) und U2 = (c2 , e2 ) von Lq,p . 94 4.4 DAS LATTICE SIEVE ii. Für alle Tupel (c, e) ∈ ZU1 + ZU2 mit der Eigenschaft, dass cV1 + eV2 Element des Siebraumes ist, setze Aq [c, e] := Aq [c, e] + log p. iii. Verwerfe alle (c, e), für die der entsprechende Arrayeintrag A[c, e] zu stark differiert von der Größe log[F (ca1 + eb1 , ca2 + eb2 )/q] und setze die übrigen Arrayeinträge zurück auf Null. (b4) Für jedes rationale Faktorbasis-Element (p, (y0 : y1 )) siebe die nicht verworfenen Arrayelemente analog zu dem in Schritt (b3) beschriebenen Verfahren. (b5) Bestimme diejenigen (c, e), für die der entsprechende Arrayeintrag nicht zu stark von der Größe log[ca1 + eb1 − (ca2 + eb2 )m] abweicht und gib das Paar (a, b) = (ca1 + eb1 , ca2 + eb2 ) zurück, falls es teilerfremd ist. Es ist noch Folgendes anzumerken: 1. Wir sieben zuerst mit den algebraischen Faktorbasis-Elementen, da zu erwarten ist, dass die Bedingung F (a, b) soll B2 -glatt sein“ schwieriger zu erfüllen ist als das Analogon für a − bm. ” Dies ist im SNFS nicht der Fall (wegen der geschickteren Wahl von F (X, Y )), dort ist dann die Reihenfolge umzukehren. 2. Man kann versuchen, die Vektoren V1 und V2 so zu bestimmen, dass sie besonders gut an einen schrägen Siebraum angepasst sind. Zu diesem Zweck sorgt man dafür, dass die euklidische Länge des mehr in X-Richtung liegenden Vektors deutlich größer ist als diejenige des anderen. 3. Das in Schritt (b3)iii geforderte Verwerfen“ bestimmter Array-Elemente lässt sich analog zu dem ” in Abschnitt 3.6 beschriebenen Verfahren durch einen parallel initialisieten Bit-Array realisieren, indem die Bits korrespondierend mit nachweislich schlechten Paaren auf Null gesetzt werden. 4. Es ist auch möglich, bereits in Schritt (b3)iii nicht teilerfremde Paare (c, e) zu verwerfen, denn die entsprechenden Paare (a, b) wären dann ebenfalls nicht teilerfremd, wie sich durch Einsetzen verifizieren lässt. 5. Das oben beschriebene Verfahren ist insofern idealisiert, als dass man in der Praxis nie genügend Speicherplatz zur Verfügung haben wird, um es in der dargestellten Form zu realisieren. Vielmehr wird man das Gitter Lq aufteilen müssen. Für Details sei auf [GLM94] verwiesen. Des Weiteren ist es angebracht, in bestimmten Fällen das Gitter Lq doch zeilenweise zu bearbeiten. Solche Fälle treten z. B. auf, wenn für eine Primzahl p das Gitter Lqp Basisvektoren der Form (1, 0) und (0, p) bzw. (p, 0) und (0, 1) besitzt (in der Schreibweise von Satz 4.35 gilt dies, wenn p ein Teiler ist von (a2 y1 − b2 y0 )(a2 y1 − b2 y0 )). Denn dann müssen wir in Lq,p nur jede p-te Spalte, bzw. Zeile betrachten. Es ist jedoch zu beachten, dass sich die Ausdrücke Zeile“ ” und Spalte“ auf den (c, e)-Raum beziehen, d. h. sie sind parallel zu den Basisvektoren von Lq , ” nicht notwendig zu den Koordinatenachsen. Dieses Verfahren funktioniert analog zu dem in Abschnitt 3.6 beschriebenen klassischen Sieben, kombiniert mit der Special-q-Methode, d. h. statt im a, b-Raum arbeiten wir im Gitter Lq . In der Literatur heisst dieses Vorgehen sieving by lines“ ” im Gegensatz zum sieving by vectors“. Möglicherweise erzwingt Speichplatzbeschränkung auch ” sieving by lines“ in weiteren Fällen, dann ist zu beachten, dass das Zeilensieben des Gitters Lq ” mit einem Faktorbasis-Element (p, (x0 : x1 )) umso ineffizienter ist, je größer p ist (denn dann gibt es viele Zeilen im Siebraum mit nur sehr wenigen oder gar keinen Treffern). Mithilfe der Vektoren U1 und U2 lassen sich die Übergänge von einer Zeile zur nächsten berechnen. 6. Natürlich kommen viele der in Abschnitt 3.6 beschriebenen Verfahren zur Zeitgewinnung (wie z. B. der Verzicht auf das Sieben mit kleinen Faktorbasis-Elementen) auch im Lattice-Sieve zur Anwendung. 7. Wie die Arbeit [GLM94] aufzeigt, ist es auch möglich, durch eine Modifikation des obigen Verfahrens die im Anschluss an den Siebvorgang notwendigen Probedivisionen (um fehlerhafte Paare zu eliminieren und um die Exponentenvektoren zu erstellen) effizient durchzuführen. Zu diesem 95 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE Zweck speichern wir die zu den Faktorbasis-Elementen gehörigen Primzahlen an den entsprechenden Stellen des Arrays Aq , anstatt lediglich ihre Logarithmen aufzusummieren. Da dies selbstverständlich erst nach Durchlaufen der Siebe ausschließlich für die gefundenen (vermeintlich) guten Paare (a, b) durchgeführt wird, ist der Speicherplatzbedarf überschaubar. 8. In der Praxis wird das Number Field Sieve ausschließlich in der Large-Prime-Variante eingesetzt. Oft werden dann Large Primes als Special-q verwendet (d. h. wir wählen Bq1 > B2 ). Auf diese Art und Weise erhalten wir viele Relationen mit derselben Large Prime, die sich miteinander kombinieren lassen, um diese Large Prime wieder zu eliminieren (siehe die Abschnitte 3.9 und 4.5). Allerdings gibt es auch einen Nachteil: Bei der (heute üblichen) Verwendung mehrerer Large Primes ist es möglich, dass Relationen mehrfach gefunden werden (denn eine Relation mit den Large Primes q1 und q2 kann sowohl in dem q1 -ist-Special-q-Schritt“ als auch in dem q2 -ist” ” Special-q-Schritt“ entdeckt werden). Wie sich diese wieder entfernen lassen, wird im nächsten Abschnitt beschrieben. 4.5 Verbesserungen des Matrix-Schrittes Gehen wir davon aus, dass wir eine sehr große Zahl, wie beispielsweise RSA-140 faktorisieren wollen. Wie in Abschnitt 3.8 bereits angedeutet, bereitet der Matrix-Schritt zunehmend Schwierigkeiten, weil sich die Lösung des linearen Gleichungssystems nicht parallelisieren lässt (aber siehe hierzu Abschnitt 5.3). Um überhaupt genügend Relationen zu erhalten, erlauben moderne Implementierungen bis zu 3 Large Primes auf jeder Seite. Es ist jedoch aus Aufwandsgründen nicht möglich, alle so erhaltenen partiellen Relationen zu vollen Relationen zu kombinieren, wie es bei der in Abschnitt 3.9 beschriebenen Variante (eine Large Prime pro Seite) praktiziert wird. Andererseits ist die aus allen gefundenen Relationen und allen Primelementen (also auch den Large Primes) bestehende Matrix so groß, dass allein ihre Speicherung völlig ausserhalb der praktischen Möglichkeiten liegt. An dieser Stelle setzen sogenannte Filterstrategien an; hiermit werden Techniken bezeichnet, die aus großen dünnbesetzten Systemen kleinere, aber dafür dichtere generieren. Ausgangspunkt ist die Matrix, die alle gefundenen Relationen (auch die partiellen) und alle Primelemente (auch die Large Primes) enthält. Im Unterschied zu dem in Abschnitt 3.9 verwendeten Verfahren werden nicht mehr alle Large Primes entfernt, sondern nur so viele, dass die Dichte der entstehenden Matrix nicht zu hoch wird. Die speziell für das Number Field Sieve eingesetzten Filterstrategien sind in [Cav00] beschrieben. Der Hauptunterschied zu zugrundeliegenden älteren Techniken (siehe [LO91] und [PS92]) ist, dass die Number Field SieveMethode den Gewichtszuwachs der Matrix kontrolliert und möglichst gering hält. Das war früher nicht notwendig, weil das resultierende Gleichungssystem mittels Gauß-Elimination gelöst wurde. Der im Number Field Sieve verwendete Block-Lanczos-Algorithmus hingegen profitiert von möglichst schwach besetzten Matrizen. Im Folgenden skizzieren wir die unter anderem zur Faktorisierung von RSA-140 und RSA-155 eingesetzte Methode. Die Grundidee des Verfahrens ist es, große und kleine Primelemente zu unterscheiden und möglichst viele große Primelemente durch Multiplikation von Relationen zu eliminieren. Da auch die jene Primelemente enthaltenden Relationen entfernt werden, wird so die Matrix um Zeilen und Spalten verkleinert. Wir verwenden den Ausdruck Primelement auf der rationalen wie auf der algebraischen Seite, wobei die Größe eines algebraischen Primelementes der Norm des zugehörigen A-Primideals entspricht. Als große Primelemente werden nicht notwendig alle Primelemente oberhalb von B1 bzw. B2 bezeichnet, oft ist die Schranke etwas kleiner gewählt (in der Faktorisierung von RSA-155 gilt beispielsweise B1 = B2 ≈ 1, 6 · 107 , groß“ heißen alle Primelemente ab 107 ). Aus diesem Grund verwenden wir im ” Folgenden die Bezeichnung großes Primelement anstelle von Large Prime. Der Sinn der Differenzierung nach Größe liegt darin, die kleinen Primelemente, die naturgemäß besonders häufig vorkommen, nicht in den Filterprozess einzubeziehen, denn es ist klar, dass an vielen Realtionen beteiligte Primelemente sich nicht so einfach eliminieren lassen wie seltene. In der Terminologie von Abschnitt 3.9 gesprochen arbeiten wir formal ausschließlich mit Zweierzyklen, allerdings mit den beiden Unterschieden, dass zum Einen zur Zyklenbildung nicht nur einzelne Re96 4.5 VERBESSERUNGEN DES MATRIX-SCHRITTES lationen, sondern auch Produkte von Relationen (sogenannte Relationenmengen) verwendet werden können und zum Anderen die an einem Zykel beteiligten Partner multipliziert und nicht dividiert werden. Letzteres ist im Gegensatz zum in Kapitel 3 beschriebenen SNFS praktikabel, weil für den Quadratwurzel-Schritt nicht mehr Erzeuger aller beteiligten großen Primideale bekannt sein müssen. Hierdurch wird das Verfahren deutlich vereinfacht, weil Multiplikation kommutativ ist, es daher nicht mehr auf die Reihenfolge der Bearbeitung der Relationenmengen ankommt. Aus Abschnitt 3.9 wissen wir, dass sich aus k Relationen, die ein gemeinsames großes Primelement besitzen, genau k − 1 linear unabhängige Zweierzyklen gewinnen lassen. Diese resultierenden k − 1 Relationenpaare bezeichnen wir als (k-)Merge, den Vorgang als (k-)Merging. Eine einzelne Relation oder ein Element eines Merges nennen wir eine Relationenmenge ( relationset“). Relationenmengen ” werden wie einfache Relationen behandelt (d. h. sie werden mit dem Produkt ihrer Elementrelationen identifiziert), insbesondere können sie auch zu einem neuen Merge beitragen. Jeder Relationenmenge ist eine Spalte der Matrix zugeordnet und umgekehrt. Ein Primelement, welches in allen Relationenmengen nur in gerader Potenz vorkommt, nennen wir balanciert. Das Ziel eines Mergings ist es, ein großes Primelement zu balancieren. Die mit balancierten Primelementen korrespondierenden Zeilen der Matrix verschwinden modulo 2, daher verkleinert ein erfolgreich durchgeführtes k-Merging die Matrix um eine Zeile und eine Spalte (die k Relationenmengen werden ersetzt durch k − 1 aus jeweils 2 von jenen neu kombinierten Relationenmengen). Der zu zahlende Preis ist die durch den Spaltentausch dichter werdende Matrix (ausgenommen k = 2). Der komplette Merging-Prozess wird durch eine anfangs erstellte und immer wenn notwendig aktualisierte Primtabelle kontrolliert, die alle großen Primelemente und deren Häufigkeiten enthält (Häufigkeit bedeutet Anzahl der das Element enthaltenden Relationenmengen, nicht diejenige der ursprünglichen Relationen). Bevor jedoch mit Merging begonnen werden kann, müssen zunächst nutzlose Relationen und Primelemente entfernt werden. Auf die Relationen bezogen bedeutet dies die Identifizierung und Beseitigung mehrfach vorhandener Relationen. Jene können entstanden sein durch parallele Verwendung von klassischem und Gitter-Sieben, durch abgebrochene und wieder neu gestartete Siebprozesse sowie durch Gittersieben mit mehreren zugelassenen Large Primes (siehe die letzte Anmerkung des vorangegangenen Abschnittes). Bereits in Abschnitt 3.8 haben wir beschrieben, wie ein Hashverfahren zu diesem Zweck eingesetzt werden kann. Genaueres zur Wahl geeigneter Hashfunktionen findet sich in [Cav00]. Nutzlose Primelemente sind offensichtlich solche, welche nur in einer einzigen Relationenmenge auftauchen, d. h. Primelemente der Häufigkeit Eins. In der Literatur spricht man von Singeltons. Nach jeder Aktualisierung der Primtabelle (also auch nach jedem Merging-Lauf) werden diese und die entsprechenden Relationenmengen entfernt. Weil durch die Beseitigung der Relationenmengen eine Aktualisierung der Primtabelle notwendig wird und daher neue Singletons entstehen können, sind ggf. mehrere Durchläufe erforderlich, um alle Singletons zu eliminieren. Im Anschluss hieran werden die freien Relationen gebildet (siehe Abschnitt 3.7). Verwendbare freie Relationen erhalten wir für jede Primzahl p mit der Eigenschaft, dass f (X) modulo p vollständig in Linearfaktoren zerfällt und noch keines der beteiligten Primelemente verworfen wurde. Weil Letzteres sich im Verlauf des Filterprozesses ändern kann, werden die freien Relationen vor jedem Merging-Lauf neu ermittelt. Jetzt erst können wir beurteilen, ob wir bereits über genügend Relationen verfügen. Zu diesem Zweck schätzen wir die Anzahl der kleinen Primelemente, addieren diese Zahl zu den verbliebenen großen Primelementen und vergleichen die Summe mit der Anzahl der Relationen (nicht verworfene gesiebte und freie). Zeigt es sich, dass zuwenig Relationen vorhanden sind, muss weiter gesiebt werden. Es kann aber auch der Fall eintreten, dass ein großer Überschuss an Relationen vorliegt. Dann ist es sinnvoll, jene Relationen, die die Matrix besonders belasten“, zu entfernen. Zum Einen sind dies natürlich ” Relationen mit besonders vielen Primelementen, denn deren Exponentenvektoren besitzen sehr viele Einträge. Eine andere Überlegung zeigt, dass die Entfernung von Relationen, die viele Primelemente der Häufigkeit 2 besitzen, sinnvoll ist, denn in diesem Fall können die entsprechenden Primelemente ebenfalls verworfen werden, was die Matrix weiter verkleinert. Beseitigen wir eine Relation und ein enthaltenes Primelement der Häufigkeit 2, dann müssen wir natürlich auch die andere dieses Primelement enthaltende Relation entfernen. Wie bereits Abschnitt 3.9, so erweist sich auch hier ein Graph-Algorithmus als nützlich, um alle der 97 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE obigen Überlegungen zu realisieren: Wir erzeugen einen Graphen, dessen Knoten die Relationen bilden. Zwischen 2 Knoten verlaufe eine Kante genau dann, wenn die entsprechenden Relationen sich ein Primelement der Häufigkeit 2 teilen. Die Zusammenhangskomponenten des so aufgebauten Graphen lassen sich mithilfe eines Cliquenalgorithmus ermitteln. Die Relationen einer jeden Zusammenhangskomponente können mitsamt den zugehörigen Primelementen der Häufigkeit 2 entfernt werden, ohne dass neue Singletons entstehen. Um zu entscheiden, die Beseitigung welcher Zusammenhangskomponenten den größten Nutzen liefert, bewerten wir diese wie folgt: Wir gehen aus von der Anzahl der beteiligten Relationen (d. h. der Knoten). Für jede freie Relation ziehen wir 0,5 ab. Schließlich addieren wir noch für jede beteiligte Relation r die Größe wr : Ist ein großes Primelement der Häufigkeit f > 2 in r vorhanden, dann berechnen wir den Wert 0, 5f −2 . Die Summe dieser Größen über alle in r vorkommenden großen Primelemente bildet wr . Die Ausgangsgröße der Bewertung (Anzahl der Knoten) soll die beteiligten kleinen Primelemente repräsentieren. Dabei werden freie Relationen nur halb gezählt, weil sie nur wenige, genauer gesagt d + 1 Einträge besitzen. Bei der Berechnung der Größe wr zählen häufige Primelemente weniger als seltene. Hiermit soll erreicht werden, dass bevorzugt Relationen mit vielen seltenen Primelementen gelöscht werden. Die Häufigkeit der betroffenen Primelemente wird dadurch nochmals herabgesetzt und somit die Chance erhöht, sie während der Merging-Phase vollständig zu eliminieren. Nachdem wir die Zusammenhangskomponenten gemäß der gerade definierten Bewertung geordnet haben, können wir diejenigen mit den größten Ergebnissen entfernen, soweit es der Relationen-Überschuss erlaubt. Die Ermittlung und Beseitigung von Mehrfachrelationen, Singletons und ggf. Überschuss wird in der Literatur unter dem Begriff Pruning ( Zurecht-Stutzen“) zusammengefasst. ” Im Anschluss an den Pruning-Schritt folgen die k-Mergings von k = 2 bis zu einer von der Anzahl der Relationen und Primelementen abhängigen Schranke. Bei der Faktorisierung von RSA-140 kamen 2und 3-Merges, für RSA-155 bereits 2- bis einschließlich 8-Merges zum Einsatz. Das größte Problem bei der Erstellung eines k-Merges ist es, aus den möglichen k2 die besten k − 1 unabhängigen Paare auszuwählen, wobei der optimale Merge derjenige ist, der das Gewicht der Matrix am wenigsten anwachsen lässt. Bestehen alle k zu bearbeitenden Relationenmengen aus einfachen Relationen, dann scheint die in dieser Hinsicht erfolgversprechendste Wahl die Kombination der leichtesten Relation mit allen k − 1 anderen Relationen zu sein. Diese an allen Paarbildungen beteiligte leichteste Relation nennen wir ein Pivot-Element. Das sogenannte Pivoting kann jedoch auch zu sub-optimalen Ergebnissen führen, wenn durch andere Paarbildungen ggf. noch weitere Primelemente zusätzlich zu dem allen k Relationen gemeinsamen großen Primelement balanciert werden können. Noch komplexer ist die Situation, wenn einige der Relationenmengen bereits aus kombinierten Relationen bestehen. Wieder hilft uns Graphentheorie: Wir definieren einen vollständigen Graphen, dessen Ecken die k Relationen repräsentieren. Sind r1 und r2 Relationenmengen, dann sei die Kante zwischen den entsprechenden Ecken mit dem Gewicht der Produktrelation r1 · r2 behaftet. Jeder spannende Baum dieses Graphen repräsentiert einen möglichen Merge. Mithilfe eines minimal-spanning-tree“-Algorithmus können wir ” daher den optimalen k-Merge bestimmen. In der Praxis werden noch zusätzliche Kontrollstrukturen eingesetzt, z. B. um zu verhindern, dass ein zu viele einzelne Relationen enthaltender Merge ausgewählt wird. Hierfür und für weitere Details verweisen wir auf [Cav00]. Das Ergebnis des Merging-Schrittes ist eine kleinere, aber auch moderat dichtere Matrix. Die folgende Anwendung des Block-Lanczos-Algorithmus können wir noch weiter beschleunigen, indem wir besonders schwere Zeilen der Matrix entfernen. In der Praxis sind dies die zu den Quadratischen Charakteren sowie die zu den kleinsten Primelementen gehörigen Zeilen (in der Faktorisierung von RSA-155 wurde auf die Primelemente kleiner oder gleich 40 verzichtet). Die mit einer derart geschrumpften Matrix ermittelten Lösungen sind natürlich nur Pseudo“-Abhängigkeiten. Um algebrai” sche Quadrate zu erhalten, müssen wir die quadratischen Charaktere wieder hinzuziehen: Für jede Block-Lanczos-Lösung berechnen wir (aus den beteiligten Exponentenvektoren per Addition modulo 2) die Ergebnisse der Charakter-Tests und erstellen hieraus eine neue, dichte Matrix (Beispiel RSA155: Der Block-Lanczos-Algorithmus fand 64 unabhängige Lösungen. Da 100 quadratische Charaktere verwendet wurden, führten die anschließenden Charaktertests zu einer dichten 100×64-Matrix). Dieses homogene Gleichungssystem lässt sich mittels Gauß-Elimination modulo 2 effektiv lösen. Jede der so 98 4.6 DER QUADRATWURZEL-SCHRITT UND DIE FINALE KONGRUENZ gefundenen unabhängigen Lösungen definiert eine Linearkombination der Pseudo“-Abhängigkeiten, ” welche schließlich zu einem algebraischen Quadrat führt (bei guter Wahl der Parameter). 4.6 Der Quadratwurzel-Schritt und die finale Kongruenz Mittels der in den vorhergehenden 2 Abschnitten beschriebenen Methoden Q gewinnen wir eine (bzw. mehrere) Mengen S mit der Eigenschaft, dass die algebraische Zahl θ := (a,b)∈S (a − bα) ein Quadrat in Q(α)× ist. Da wir – anders als im SNFS und auf der rationalen Seite – die guten Paare nicht gefunden haben, indem wir die Ausdrücke a − bα in ein Produkt aus Einheiten und Primelementen zerlegt haben, können wir die Quadratwurzel von θ nicht wie zuvor ad hoc bestimmen. Die konventionellen Verfahren zur Ermittlung einer algebraischen Quadratwurzel (Faktorisierung des Polynoms X 2 − θ in Q(α)[X]) setzen voraus, dass die Zahl θ in einer geeigneten Repräsentation, z. B. als Polynom vom Grade d − 1 in α, vorliegt. Doch selbst der trivial erscheinende Schritt, die Koeffizienten von θ bezüglich dieser Darstellung zu berechnen, indem die Faktoren ausmultipliziert und geeignet zusammenfasst werden, ist in der vorliegenden Situation nicht praktikabel, da aufgrund der enormen Größe von S diese Berechnungen allein die Laufzeit des GNFS dominieren können. Die ersten Ansätze zur Behebung dieser Schwierigkeit machten von modularer Arithmetik Gebrauch [BLP93]; dies ist möglich, da das Produkt fω0 (ω)2 a#S d θ das Quadrat einer Zahl β ∈ Z[ω] ist. Ist nun q eine rationale Primzahl mit der Eigenschaft, dass fω (X) irreduzibel ist modulo q, dann ist q := qZ[ω] ein Primideal von Z[ω] (siehe Abschnitt 3.2). Des Weiteren ist Fq [X]/fω (X) ein Körper, der in natürlicher Weise P isomorph ist zu dem Restklassenring Z[ω]/q. Die Elemente von q sind gerade diejenigen g(ω) := i=0,...,d−1 zi ω i ∈ Z[ω], für die alle Koeffizienten zi durch q teilbar sind (denn es ist g(ω) ∈ q äquivalent zu fω (X) | g(X) in Fq [X]). Aus der Irreduzibilität von fω (X) modulo q folgt fω0 (ω) 6∈ q (Beweis: Angenommen, es gelte fω0 (ω) ∈ q. Dann teilt q jedes Produkt von einem Koeffizienten des Polynoms fω (X) mit dem dazugehörigen Exponenten, denn dies sind die Koeffizienten von fω0 (X). Da fω (X) normiert ist, kann q nicht alle Koeffizienten des Polynoms fω (X) teilen, daher muss X q in Fq [X] ein Faktor von fω (X) sein, was ein Widerspruch zur Voraussetzung ist.). Wird zusätzlich #S q - ad vorausgesetzt, dann ist auch β 2 = fω0 (ω)2 a#S d θ kein Element von q, da alle Faktoren von ad θ von der Form ad a − bω für teilerfremde Zahlen a und b sind. Deshalb ist es möglich, die gesuchte Quadratwurzel im Körper Fq [X]/fω (X) zu berechnen und das Ergebnis wieder nach Z[ω] abzubilden. Man erhält eine ganzrationale Zahl, deren Koeffizienten modulo q kongruent sind zu denen der zu bestimmenden Quadratwurzel β. Mithilfe einer Variante des Hensel-Liftings ist es möglich, iterativ Lösungen modulo größerer Potenzen von q zu generieren. Damit aber schließlich die Lösung modulo einer q-Potenz identisch mit der gesuchten Lösung β ist, muss diese q-Potenz alle Koeffizienten von β übersteigen, was das Verfahren für große Zahlen inpraktikabel macht. Das erste auch in der Praxis erfolgreiche Verfahren stammt von J.-M. Couveignes [Cou93]; es arbeitet mit mehreren paarweise verschiedenen Moduli und bestimmt die Quadratwurzel β anschließend mithilfe des Chinesischen Restsatzes. Zwar wird β in Form eines Produktes konstruiert, so dass die gigantischen Koeffizienten nicht explizit berechnet werden müssen (man benötigt schließlich nur das Bild von β unter φ), dennoch leidet auch diese Methode an der enormen Größe dieser Zahlen, weil so viele Moduli verwendet werden müssen, dass deren Produkt größer ist als jeder einzelne Koeffizient. Eine weitere Schwierigkeit erwächst aus der Tatsache, dass in einem Körper ein Quadrat immer zwei Wurzeln besitzt, so dass man vor der Anwendung des Chinesischen Restsatzes dafür Sorge tragen muss, dass die ausgewählten Wurzeln bezüglich der verschiedenen Moduli alle zu derselben Wurzel von β 2 kongruent sind. Ist der Grad d von fα (X) eine ungerade Zahl, dann besitzt wegen N (−x) = N (−1)N (x) = (−1)d N (x) = −N (x) genau eine Quadratwurzel positive Norm und man kann die Schwierigkeit mithilfe dieses Kriteriums überwinden. Dies hat allerdings zur Folge, dass Couveignes’ Methode einen ungeraden Grad von fα (X) voraussetzt. Ist dies gegeben, dann ist diese MeQ thode geeignet, die Zahl β mit β 2 = fω0 (ω)2 a#S (a,b)∈S (a − bα) zu bestimmen. Da β ein Element von d P Q Z[ω] ist, gibt es eine Darstellung β = i=0,...,d−1 bi ω i . Natürlich gilt wie üblich (a,b)∈S (a − bm) = z 2 für ein z ∈ Z. Für die finale Kongruenz bedienen wir uns wie üblich des durch ω 7→ ad m mod N 99 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE #S induzierten Homomorphismus φ: Mit X := fω0 (ad m) · ad 2 · z und Y := i i=0,...,d−1 bi m P X2 Y ≡ fω0 (ad m)2 · a#S d (a − bm) ≡ φ fω0 (ad α)2 · a#S d (a,b)∈S | 2 2 ≡ φ(β ) ≡ (φ(β)) ≡ Y gilt Y (a − bα) (a,b)∈S {z =z 2 2 } (N ). Der Durchbruch schließlich gelang (wieder einmal) P. L. Montgomery, der ein iteratives Verfahren 2 entwickelte, um das Problem, die Quadratwurzel von θ ∈ Q(α)× zu bestimmen, auf ein mit schon bekannten Mitteln zu bewältigendes Problem zu reduzieren: Ausgehend von der Pimidealzerlegung von θ wird eine Folge von Q ganzrationalen Zahlen δl und zugehörigen Vorzeichen“ sl ∈ {−1, 1} konstruiert, so dass θ = θL l=1,...,L−1 δl2sl erfüllt ist. Dabei ist ” Q θL eine ganzalgebraische Zahl, insbesondere √ ein Quadrat, da θ und l δl2sl Quadrate sind. Man kann √ Q θL als Fehler bei der Approximation von θ durch das Produkt l δlsl interpretieren. Sinnvollerweise ist der Iterationsprozess so gestaltet, dass θL in jedem Schritt auf eine noch zu definierende Art und Weise vereinfacht wird. Ist der Fehler θL in Schritt L schließlich klein“ genug, werden ” konventionelle √ √ Q Methodensl bemüht, um die Quadratwurzel von θL zu bestimmen. Hiermit erhält man θ = θL l=1,...,L−1 δl . Es ist zu beachten, dass auch dieses Verfahren die Quadratwurzel als ein Produkt bestimmt, so dass die Arbeit mit extrem großen Zahlen vermieden wird. Eine weitere Komplexitätsverbesserung wird erreicht, indem die Zahl θ vor Durchlaufen des Approximationsprozesses ausgehend von ihrer Primidealzerlegung geeignet vereinfacht wird, so dass sich schließlich folgendes Schema ergibt: 1. Für jedes Paar (a, b) ∈ S bestimme die Primidealzerlegung der Größe a − bα und damit insbesondere die Primidealzerlegung von θ. 2 2. Konstruiere θ0 ∈ Q(α)× als Vereinfachung von θ. √ Q 3. Approximiere θ0 iterativ durch l δlsl für δl ∈ Oα , sl ∈ {−1, 1}, bis die ganzalgebraische Zahl Q θL , gegeben durch θ0 = θL l=1,...,L−1 δl2sl , ausreichend einfach ist. 4. Berechne die Quadratwurzel des Approximationsfehlers θL . Eine erste Beschreibung des Verfahrens findet sich in der Arbeit [Mon94], durch Beweise und ein Beispiel ergänzt in [Mon95b]. Drei Jahre später veröffentlichte P. Nguyen eine ausführlichere Abhandlung über diese Methode [Ngu98], wobei er einige kleinere Modifikationen vornahm (u. A. bei der Bestimmung der Primidealzerlegungen). Da letztere Variante auf der Grundlage der in dieser Arbeit bereits entwickelten Theorie leichter verständlich und außerdem besser dokumentiert ist, beschreiben wir im Folgenden diesen Algorithmus, gegliedert in die oben aufgezählten Teilschritte. 4.6.1 Die Vereinfachung des Quadrates θ Zuerst präzisieren wir den Begriff Vereinfachung“, d. h. wir definieren ein Maß für die Schwierigkeit“ ” ” einer algebraischen Zahl. Ist x ∈ Q(α)× , dann können wir x mit dem durch x erzeugten gebrochenen Ideal xOα identifizieren. Im Folgenden werden wir den Begriff der Komplexität eines (gebrochenen) Ideals definieren, der vermöge jener Identifikation auf Q(α)× fortgesetzt werden kann. Mithilfe der hieraus resultierenden Ordnung kontrollieren wir die Termination des später beschriebenen Approximationsprozesses. Es ist bekannt, dass die Primideale von Oα die multiplikative Gruppe der gebrochenen Ideale von Oα frei erzeugen, d. h. jedes gebrochene Oα -Ideal besitzt eine bis auf die Reihenfolge der Faktoren eindeutige Darstellung in ein endliches Produkt von Oα -Primidealen mit Exponenten aus Z (siehe z. B. Thm. 5.5 und die anschließende Diskussion in [ST87]). Auf diese Darstellung bezieht sich folgende Definition: 100 4.6 DER QUADRATWURZEL-SCHRITT UND DIE FINALE KONGRUENZ Definition 4.36 (Zähler, Nenner und Komplexität eines gebrochenen Ideals) Q Sei a = i pei i die Primidealzerlegung des gebrochenen Ideals a. Q Q Dann nennen wir das Ideal ei >0 pei i den Zähler und entsprechend das Ideal ei <0 pei i den Nenner von a. Als Komplexität von a definieren wir das Produkt C(a) := N (Zähler(a)) · N (Nenner(a)). × Ist x ∈ Q(α) eine algebraische Zahl, dann beziehen sich die Ausdrücke Zähler, Nenner und C(x) wie bereits erwähnt auf das von x erzeugte Oα -Ideal xOα . Unser Ziel ist es, aus θ ein Quadrat θ0 mit C(θ0 ) < C(θ) zu konstruieren, wobei auch das Bild von √ rationaler Seite ein Quadrat sein soll. In diesem Fall können wir in der finalen Kongruenz θ θ0 auf √ Q durch θ0 ersetzen. Wir nutzen aus, dass – da θ = (a,b)∈S (a − bα) ein Quadrat ist – selbiges auch Q für jedes Produkt (a,b)∈S (a − bα)sa,b gilt, sofern die sa,b aus {−1, 1} gewählt werden. Dies erkennen wir, wenn wir folgende Äquivalenz auf die Exponenten der Primidealzerlegung von θ anwenden: für beliebige ganzrationale Zahlen z1 , z2 gilt 2 | z1 + z2 ⇔ 2 | z1 − z2 . Durch geschickte Wahl der sa,b können wir erreichen, dass die Komplexität der neu konstruierten algebraischen Zahl diejenige von θ deutlich unterschreitet, denn als Konsequenz des Siebens besitzen fast alle Faktoren (a − bα) Q gemeinsame Primidealteiler. Auf der rationalen Seite ersetzen wir den Ausdruck (a,b)∈S (a − bm) Q durch (a,b)∈S (a − bm)sa,b , der das Quadrat einer rationalen Zahl ist. Um die Q besten Werte für die sa,b herauszufinden, müssen wir die Komplexität von Ausdrücken der Form (a,b)∈S (a − bα)sa,b bestimmen. Hierfür können wir die bereits bekannte Primfaktorzerlegung der Größen F (a, b) ausnutzen: Unmittelbar aus der Definition der Komplexität folgt C Y sa,b (a − bα) = Y N (q)| P (a,b)∈S sa,b νq (a−bα)| , (4.13) q (a,b)∈S wobei q über alle Oα -Primideale läuft. Leider beziehen sich die Kenntnisse, die wir über die Zerlegung“ ” der Größen a − bα besitzen, nur auf Primideale der Ordnung A. Von besonderem Interesse für uns sind daher die Oα -Primideale, die in einer bijektiven Beziehung zu A-Primidealen stehen. Derartige Primideale heißen regulär und sind definiert als diejengen, die in Oα bzw. in A teilerfremd zum Führer f von A sind. Der Führer einer Ordnung O ist definiert als der größte gemeinsame Teiler aller vollständig in O enthaltenen Oα -Ideale. Da diese Eigenschaft insbesondere das von dem Index [Oα : A] erzeugte Oα -Ideal innehat, wird dieses von f geteilt, d. h. es gilt [Oα : A] ∈ f. Ist p daher kein Teiler des Index [Oα : A], dann sind alle über p liegenden Primideale p regulär, denn andernfalls wäre f ein Teiler von p, d. h. [Oα : A] ∈ f ⊆ p, was ein Widerspruch zu p ∩ Z = pZ und p - [Oα : A] wäre. Näheres zu regulären Idealen findet sich z. B. in [Coh78], S.89 f. Nehmen wir zunächst einmal an, dass in obigem Produkt ausschließlich reguläre Primideale erscheinen, dann folgt aus Satz 4.23 und Korollar 4.6, dass jedes Oα -Primideal q mit νq (a − bα) 6= 0 über einem A-Primideal ersten Grades liegen muss. Da ein reguläres A-Ideal p und das korrespondierende Oα -Ideal q = pOα stets denselben Grad besitzen, folgt mit Korollar 4.6 insbesondere lp (a − bα) = νq (a − bα). Die Primideale ersten Grades von A werden nach Satz 4.22 repräsentiert durch Tupel der Form (p, (x0 : x1 )). Bezeichnen wir das korrespondierende Oα -Ideal mit qp,(x0 :x1 ) , dann können wir obiges Produkt wie folgt vereinfachen: C Y (a − bα)sa,b = (a,b)∈S Y N (qp,(x0 :x1 ) )| P (a,b)∈S sa,b νq (a−bα)| p,(x0 :x1 ) = Y p| P (a,b)∈S sa,b lp,(x0 :x1 ) (a−bα)| . (4.14) p,(x0 :x1 ) 101 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE Mit Satz 4.24 erhalten wir schließlich Y C (a − bα)sa,b = (a,b)∈S Y p| P (a,b)∈S sa,b ep,(x0 :x1 ) (a,b)| p,(x0 :x1 ) p-x1 Y p| P (a,b)∈S sa,b ep,(x0 :x1 ) (a,b)−ordp (ad )| . p,(x0 :x1 ) p | x1 Unglücklicherweise haben wir es nicht nur mit regulären Primidealen zu tun und obige Berechnungsvorschrift kann zu kleine Ergebnisse liefern, wenn nicht reguläre Primideale im Spiel sind (denn es ist möglich, dass sich verschiedene Oα -Ideale q1 , q2 über demselben A-Ideal p bei der Komplexitätsberechnung irrtümlich aufheben, da beim Übergang von 4.13 zu 4.14 die gegebenenfalls unterschiedlichen Größen νq1 (a − bα) und νq2 (a − bα) durch ein und dieselbe Größe lp (a − bα) ersetzt werden). Nichtsdestotrotz wird die hergeleitete Berechnungsvorschrift in der Regel eine akzeptable Abschätzung für die tatsächliche Komplexität liefern, da fast alle auftretenden Pimideale regulär sind (siehe hierzu auch den folgenden Unterabschnitt). Um schließlich möglichst gute Werte für die sa,b zu bestimmen, kann ein Greedy-Verfahren verwendet werden, d. h. die Paare (a, b) werden nacheinander abgearbeitet und sa,b wird jeweils so belegt, dass die Komplexität des bereits konstruierten Teilproduktes mit dieser Wahl minimiert wird. Für ein wahrscheinlich noch besseres Vorgehen sei auf [Ngu98] verwiesen. 4.6.2 Die Primidealzerlegung von θ0 Q sa,b Sei nun θ0 = das vereinfachte Quadrat. Wir bestimmen die Primidealzerle(a,b)∈S (a − bα) gung jedes Faktors a − bα, indem wir ähnlich wie im Unterabschnitt zuvor die bekannten Größen ep,(x0 :x1 ) (a, b) verwenden. Hieraus erhalten wir dann die Primidealzerlegung von θ0 . Sei also (a, b) ∈ S. Ist ep,(x0 :x1 ) (a, b) 6= 0 für ein p, das nicht den Index [Oα : A] teilt, dann gibt es – wie im vorausgegangenen Unterabschnitt hergeleitet – genau ein Oα -Primideal q über dem A-Primideal pp,(x0 :x1 ) und es gilt νq (a − bα) = lp,(x0 :x1 ) (a − bα). Für den überwiegenden Teil der Primidealteiler q von a − bα können wir daher die q-adische Bewertung vermöge Satz 4.24 unmittelbar aus den bekannten Größen ep,(x0 :x1 ) (a, b) bestimmen. Um diese teilweise Faktorisierung von a − bα zu komplettieren, geben wir Erzeuger dieser Primideale an: Satz 4.37 (Erzeuger regulärer Primideale) Mit den Bezeichnungen aus Unterabschnitt 4.2.1 sei pp,(x0 :x1 ) ein reguläres Primideal von A und q das eindeutige Oα -Primideal über pp,(x0 :x1 ) . Dann gilt q = pOα + (β0 − ϕq,B (β0 ))Oα + · · · + (βd−2 − ϕq,B (βd−2 ))Oα . Beweis: Es ist bekannt, dass q dem Oα -Erzeugnis von pp,(x0 :x1 ) entspricht (siehe [Coh78], Thm. 10.19). Daher genügt es zu zeigen, dass die Elemente p, β0 − ϕq,B (β0 ), . . . , βd−2 − ϕq,B (βd−2 ) ein ZErzeugendensystem von pp,(x0 :x1 ) bilden. Wir beweisen pp,(x0 :x1 ) = pZ + (β0 − ϕq,B (β0 ))Z + · · · + (βd−2 − ϕq,B (βd−2 ))Z: ⊆“ Sei γ ∈ pp,(x0 :x1 ) . Insbesondere gilt γ ∈ A und daher existieren ganzrationale Zahlen z, z0 , . . . , zd−2 ” mit γ = z + z0 β0 + · · · + zd−2 βd−2 = z0 (β0 − ϕq,B (β0 )) + · · · + zd−2 (βd−2 − ϕq,B (βd−2 )) + z + z0 ϕq,B (β0 ) + · · · + zd−2 ϕq,B (βd−2 ) {z } | ≡ϕq,B (γ)≡0 (p) Da der unterklammerte Summand von γ ein Element aus pZ ist, folgt die Behauptung. ⊇“ Folgt direkt aus pp,(x0 :x1 ) = ker(ϕq,B ) ∩ A. ” 102 4.6 DER QUADRATWURZEL-SCHRITT UND DIE FINALE KONGRUENZ Jetzt müssen lediglich noch die q-adischen Bewertungen von a − bα für einige wenige Primideale q berechnet werden, genauer gesagt für Primideale über jenen rationalen Primzahlen, die sowohl die Norm von a − bα als auch den Index [Oα : A] teilen. Diese Problematik haben wir bereits ausführlich in Abschnitt 3.10 behandelt, daher gehen wir jetzt nicht weiter ins Detail. In Abschnitt 3.10 haben wir auch skizziert, wie sich eine Ganzheitsbasis ω1 , . . . , ωd von Oα konstruieren lässt. Wurden in Abschnitt 3.10 teilweise Voraussetzungen bemüht, die hier nicht gegeben sind, so lassen sich allgemeinere Lösungsansätze in [Coh96] finden. Daher können wir davon ausgehen, dass uns eine Ganzheitsbasis ω1 , . . . , ωd vorliegt. Für die Herleitung der finalen Kongruenz ist es notwendig, dass die Bilder dieser Basiselemente unter dem durch α 7→ m mod N induzierten Homomorphismus definiert sind; eine Forderung, die in der Praxis aufgrund der Größe von N immer erfüllt sein wird. 4.6.3 Die Approximation der Quadratwurzel Q Sei nun also die Zerlegung θ0 = i qei i vollständig bekannt. Nach Konstruktion sind die Exponenten ei durch zwei ganzrationale Zahlen. Unser Ziel ist die Bestimmung eines ganzalgebraischen Er√ teilbare Q ei /2 0 zeugers θ von i qi . Da die gebräuchlichen Verfahren, Erzeuger von Hauptidealen zu berechnen, nicht gut genug √ sind, um auf ein so großes Ideal direkt angewendet werden zu können, müssen wir die Faktoren von θ0 Schritt für Schritt bearbeiten. Um die Idee des iterativen Prozesses zu verdeutlichen, stellen wir zunächst einmal vor, Oα sei ein Hauptidealring. Angenommen, das Erzeuger-Suchverfahren wäre in der Lage, Hauptideale maximal der Norm k zu bearbeiten. Dann könnten wir folgendes iterative Verfahren durchführen: Wir vereinfachen abwechselnd den Zähler und den Nenner von θ0 , dies wird durch die Variable sl ∈ {±1} kontrolliert, die während der Bearbeitung des Zählers den Wert 1 und andernfalls den Wert −1 innehat. Wollen wir in Schritt l den Zähler bzw. Nenner vereinfachen, dann wählen wir aus dem Zähler bzw. Nenner des noch unbearbeiteten Restes von θ0 eine Menge Q e /2 von Primidealen qi , i ∈ Ml , die so groß ist, wie es die Einschränkung i∈Ml N (qi i ) ≤ k erlaubt. Q e /2 Daraufhin bestimmen wir den Erzeuger δl des Produktes Il := i∈Ml qi i . Zu jedem Zeitpunkt gilt dann Y Y 2s θ0 = qei i δl l . i6∈M1 ∪···∪Ml | {z 2 =:θl ∈Oα l } √ Das Produkt l δlsl ist die gesuchte Annäherung an θ0 und wir können den Prozess so lange fortführen, bis sich die Quadratwurzel des Restes θl direkt“ bestimmen lässt. ” Im allgemeinen ist Oα natürlich kein Hauptidealring, so dass Erzeuger der Ideale Il nicht notwendig existieren. Stattdessen bestimmen wir δl so, dass Il ein Teiler von δl ist. Da in Oα Teilbarkeit gleichbedeutend ist mit Inklusion (in umgekehrter Richtung), heißt dies, ein δl ∈ Il zu finden. Jedes Nichtnull-Ideal kann als Gitter interpretiert werden, weil es eine d-elementige Z-Basis besitzt. Deshalb können wir den bekannten Polynomialzeit- LLL-Gitterreduktionsalgorithmus (siehe z. B. [Coh96], Kap.2.6) verwenden, um einen (bezüglich der Euklidischen Norm) kurzen Vektor“ δl ∈ Il zu konstru” ieren. Die in der Hauptidealring-Version die Größe von Il begrenzende Konstante k ersetzen wir durch LLLmax , gegeben durch die größtmögliche Norm, für die der LLL-Algorithmus noch effizient arbeitet. Ist Il ein Hauptideal, so können wir hoffen, auf diese Weise sogar einen Erzeuger zu erhalten, andernfalls soll durch die Gitterreduktion erreicht werden, dass das durch δl = Il Hl+1 definierte Störideal“ ” Hl+1 nicht zu groß ist. Mehr formal gesprochen: Wir suchen eine ganzalgebraische Zahl δl , deren Norm der Norm von Il möglichst nahe kommt. Wegen |N (δl )| = N (Il ) · N (Hl+1 ) bedeutet dies nichts anderes, als die Norm des Störideals Hl+1 zu minimieren. In der Tat lässt sich zeigen, dass bei geschickter Anwendung des LLL-Algorithmus eine berechenbare Konstante C existiert, so dass in jedem Schritt die Norm des Störideals durch C nach oben beschränkt ist. Diese Konstante ist nur von Q(α) abhängig, nicht jedoch von N (Il ) (Details und Beweis siehe [Ngu98], Thm. 3). Wie wir noch sehen werden, folgt aus dieser Aussage die Termination des Approximationsprozesses (falls C klein genug ist). Doch selbst wenn das in jedem Schritt auftretende Störideal nicht groß ist, so könnte es sich doch nach einigen Iterationen zu einem Problem akkumulieren. Um dies zu vermeiden, greifen wir zu einem Trick: Das in Schritt l auftretende Störideal Hl+1 löschen wir sofort im folgenden Schritt wieder aus, Q 103 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE indem wir es bei der Konstruktion von Il+1 als Faktor berücksichtigen. Die ganzalgebraische Zahl δl+1 sl+1 ist dann ein Vielfaches von Hl+1 , so dass Hl+1 sich in dem Produkt δlsl · δl+1 herauskürzt (denn es gilt sl+1 = −sl ). Das vollständige Verfahren lässt sich dann wie folgt beschreiben: Schritt 0 (Initialisierung): • Setze θ1 := θ0 , s1 := 1, falls N (θ0 ) ≥ 1 gilt und −1 sonst, H1 := Oα und G1 := √ θ 0 Oα . • Gehe zu Schritt 1. Schritt l: • Wähle Il als Produkt von Hl mit einem möglichst großen Teiler des Zählers (falls sl = 1) bzw. Nenners von Gl (falls sl = −1), so dass N (Il ) < LLLmax erfüllt ist. • Mithilfe von Gitterreduktionen konstruiere eine ganzalgebraische Zahl δl ∈ Il mit der Eigenschaft N (δl Oα · Il−1 ) < C. • Aktualisiere folgende Größen: θl+1 := θl · δl−2sl , Gl+1 := Gl · (Il /Hl )−sl , Hl+1 := δl Oα · Il−1 und sl+1 = −sl . • Gehe zu Schritt l + 1. Diese Schritte führen wir so lange durch, bis ein Gl die Komplexität Eins besitzt. Bevor wir auf die Termination näher eingehen, veranschaulichen wir tabellarisch, wie eine Anwendung dieses Iterationsverfahrens aussehen könnte. Der Übersichtlichkeit wegen wählen wir für die Primidealteiler des Zählers von θl die Buchstaben p, für die Nennerideale hingegen q. Die Störideale werden mit r bezeichnet und nicht weiter in Primideale zerlegt. Von δl geben wir lediglich die Zerlegung in Ideale an, in der Praxis müssen natürlich die Koeffizienten eines jeden δl bezüglich der gewählten Ganzheitsbasis gespeichert werden. l 1 2 3 4 5 6 θ l Oα p41 p22 p63 p24 q61 q42 q23 p63 p24 q61 q42 q23 r21 p63 p24 r22 q42 q23 p23 4 q2 q23 r23 p23 r24 1 1 r25 sl 1 −1 1 Gl p21 p2 p33 p4 q31 q22 q3 p33 p4 q31 q22 q3 p33 p4 q22 q3 Hl Il δ l Oα Oα p21 p2 p21 p2 r1 r1 r1 q31 r1 q31 r2 r2 r2 p23 p4 r2 p23 p4 r3 −1 p3 q22 q3 r3 r3 q22 q3 r3 q22 q3 r4 1 p3 1 r4 r4 p 3 r4 p 3 r5 −1 Oα r5 r5 r5 r6 Abschließend noch einige Erläuterungen: 1. Falls, wie es auch im vorliegenden Beispiel der Fall ist, das Abbruchkriterium C(GL ) = 1 in einem Schritt L mit sL = −1 erreicht wird, muss noch eine letzte Iteration mit IL = HL durchgeführt werden, um zu gewährleisten, dass θL+1 eine ganzalgebraische Zahl ist (und nicht das Inverse einer solchen). Q 2. Wie man sieht, ist die Invariante des Verfahrens θ0 = θl i=1,...,l−1 δi2si . 3. Gilt in einem Schritt L schließlich C(GL ) = 1 und sL = 1, dann ist der Fehlerterm θL ein Erzeuger von HL2 , insbesondere ist die Norm von θL durch C 2 nach oben beschränkt. Unglücklicherweise ist eine den Betrag betreffend kleine Norm nur eine notwendige, keine hinreichende Bedingung 104 4.6 DER QUADRATWURZEL-SCHRITT UND DIE FINALE KONGRUENZ dafür, dass eine ganzalgebraische Zahl kleine Koeffizienten besitzt (denn die Normabbildung ignoriert Einheiten). Dass dies auf θL trotzdem zutrifft, ist eine Konsequenz der geschickten Anwendung des LLL-Reduktionsalgorithmus. Dieser wird in jedem Schritt l zweimal herangezogen, zuerst, um eine reduzierte Basis von Il zu konstruieren und ein weiteres Mal mit dem Ziel, die Koeffizienten von θl+1 zu begrenzen. Für technische Details verweisen wir auf [Ngu98]. 4. Eine notwendige Voraussetzung für die Durchführbarkeit des beschriebenen Algorithmus ist offensichtlich LLLmax >> C, denn andernfalls ist es nicht möglich, die Ideale Il für l > 1 so zu bestimmen, dass der LLL-Algorithmus angewendet werden kann. Ist diese Ungleichung erfüllt, lässt sich die Termination des Prozesses einfach herleiten: Wie man sieht, wird die Komplexität des gebrochenen Ideals Gl in jedem Schritt l um den Faktor C(Il Hl−1 ) verringert. Weil nach Konstruktion das ganze Ideal Hl ein echter Teiler des ganzen Ideals Il ist, gilt C(Il Hl−1 ) = C(Il )/C(Hl ) = N (Il )/N (Hl ). Diese Normen schließlich können wir abschätzen, denn nach Wahl von Il gilt N (Il ) ≈ LLLmax und nach Definition von C außerdem N (Hl ) < C. Daher wird die Komplexität von Gl in jedem Schritt echt kleiner, so dass C(GL ) = 1 nach endlich vielen Schritten erreicht werden muss. Sind Zähler und Nenner von θ0 die Norm betreffend ungefähr gleich groß, dann können wir davon ausgehen, dass bis zum letzten Schritt jeweils Zähler bzw. Nenner um ein Ideal reduziert werden, dessen Norm fast LLLmax /C erreicht (andernfalls ist der Zähler der Nenner zu früh aufgebraucht“). Induktiv lässt sich √ oder ” l−1 0 O ) zeigen, d. h. die Anzahl θ der benötigten Iterationen ist dann C(Gl ) ≈ (C/LLL ) C( α √ 0 max logarithmisch in C( θ Oα ). 5. Die ganzen Ideale (z. B. Il und die Primidealteiler von θ0 ) werden am besten als Matrizen in Hermitscher Normalform (siehe hierzu Abschnitt 3.10) repräsentiert. 6. Um bei der Wahl von Il die erlaubte Norm möglichst vollständig auszuschöpfen, können wir ein Greedy-Verfahren verwenden, indem wir die zur Verfügung stehenden Ideale der Norm nach ordnen, mit HL starten und dann bis zum Erreichen der Schranke LLLmax das jeweils größtmögliche Ideal dazumultiplizieren. Da θ0 als Konsequenz des Siebens sehr viele kleine Primidealteiler besitzt, funktioniert diese einfache Methode sehr gut. 7. Es ist nicht notwendig, Gl+1 in jedem Schritt neu zu berechnen, vielmehr geht man von der Primidealzerlegung von Gl aus und passt die Exponenten parallel zur Konstruktion von Il geeignet an. 4.6.4 Die Berechnung von √ θL Q Es gelte θ0 = θL l=1,...,L−1 δl2sl für ein ganzalgebraisches Quadrat θL mit kleinen Koeffizienten bezüglich der Ganzheitsbasis ω1 , . . . , ωd . Wir zeigen zunächst, wie sich mithilfe modularer Arithmetik diese Koeffizienten berechnen lassen. Zu diesem Zweck benötigen wir einige sogenannte träge Primzahlen q, d. h. wir fordern, dass fω (X) modulo q irreduzibel sein soll. Des Weiteren darf q weder eine der Größen N (δl )/N (Il ) für l = 1, . . . , L − 1, noch ad teilten. Sei nun q ein Oα -Primideal über qZ[ω]. Die Q Q Forderungen an qQgarantieren, dass kein Faktor der 0 Darstellung θL = θ −1 l=1,...,L−1 δl−2sl = (a,b)∈S (a − bα)−sa,b l=1,...,L−1 δl−2sl in dem maximalen Ideal mq (aus Definition 4.14) enthalten ist. Dies sehen wir wie folgt: Da fω (X) irreduzibel modulo q ist, also insbesondere modulo q keine Nullstellen besitzt, gibt es über q keine Primideale ersten Grades von A ⊇ Z[ω]. Deshalb gibt es auch kein zu q gehöriges Element der Faktorbasis Fa1 . Nach Konstruktion der Paare (a, b) gilt jedoch, dass alle Oα -Primideale p mit νp (a − bα) 6= 0 über jenen Faktorbasis-Primzahlen liegen. Dies zeigt a − bα 6∈ mq für alle (a, b) ∈ S. Die ganzalgebraischen Zahlen δl wiederum sind ausschließlich zusammengesetzt aus Oα -Primidealen p mit νp (a − bα) 6= 0 sowie den Idealen Hl . Wegen q - N (δl )/N (Il ) = N (Hl ) folgt analog δl 6∈ mq für l = 1, . . . , L − 1. Daher ist die Behauptung gezeigt. Diese Tatsache nutzen wir aus, um die gesuchten Koeffizienten von θL bezüglich der Ganzheitsbasis ω1 , . . . , ωd modulo q zu bestimmen: 105 KAPITEL 4 DAS GENERAL NUMBER FIELD SIEVE P P Offensichtlich ist die durch i=1,...,d zi ωi 7→ i=1,...,d (zi mod q)ωi definierte Reduktionsabbildung ein Homomorphismus. Aus ad (a − bα) ∈ P Oα folgt a − bα = x/ad für ein x ∈ Oα . Daher existieren ganzrationale Zahlen xi mit a − bα = ( i=1,...,d xi ωi )/ad . Weil q kein Teiler von ad ist, ist das Bild (x1 /ad mod q)ω1 + · · · + (xd /ad mod q)ωd von a − bα unter dem Reduktionshomomorphismus modulo q definiert. Wir diesen Reduktionshomomorphismus auf alle Faktoren von θL = Q Q können also −2sl −sa,b (a − bα) δ anwenden. Wegen (a − bα) 6∈ mq für alle (a, b) ∈ S und δl 6∈ mq (a,b)∈S l=1,...,L−1 l für alle l liegt keine dieser Größen im Kern des Reduktionshomomorphismus, der in mq enthalten ist. Deshalb können wir effizient die Koeffizienten von θL bezüglich ω1 , . . . , ωd modulo q bestimmen, obwohl einige Faktoren negative Exponenten besitzen. Diese Vorgehensweise wiederholen wir für einige träge Primzahlen qi . Ist das Produkt über alle qi größer als alle unreduzierten Koeffizienten von θL , dann können wir diese mithilfe des Chinesischen Restsatzes berechnen. Weil wir wissen, dass diese Koeffizienten nicht zu groß sind, ist das Verfahren praktikabel. Anschließend wenden wir konventionelle Methoden an, um die Quadratwurzel von θL durch Faktorisierung des Polynoms X 2 − θL in Q(α) bestimmen (z. B. den Algorithmus 3.6.4 aus [Coh96]). 4.6.5 Die Herleitung der finalen Kongruenz √ √ Q Wir erhalten schließlich θ0 = θL l=1,...,L−1 δlsl , wobei die Darstellungen der ganzalgebraischen √ Zahlen θL und δl bezüglich der Ganzheitsbasis ω1 , . . . , ωd bekannt sind. Sei φ wie üblich der durch α 7→ m mod N induzierte Homomorphismus. Indem wir die Bilder √ φ(ωi ) berechnen (nach Voraussetzung an die Ganzheitsbasis sind diese definiert), können wir auch φ( θL ) und φ(δl ) für l = 1, . . . , L−1 schnell bestimmen.√Unter der Bedingung, dass die Größen φ(δl ) mit sl = −1 Einheiten in Z/N Z sind, können wir φ auf θ0 fortsetzen. Da N sehr groß ist und die δl nach Konstruktion kleine“ ganz” algebraische Zahlen sind, ist dies jedoch eine natürliche Forderung, d. h. ein φ(δl ) 6∈ Z/N Z× liefert mit √höchster Wahrscheinlichkeit einen nichttrivialen Teiler von N . Deshalb können wir ein Y ∈ Z mit φ( θ0 ) = Y mod N bestimmen. Eine ähnliche Q Argumentation ist auf der algebraischen Seite möglich. Wir betrachten das rationale Quadrat (a,b)∈S (a − bm)sa,b , wobei die sa,b ∈ {−1, 1} aus der Vereinfachung des algebraischen QuaQ drates θ0 = (a,b)∈S (a−bα)sa,b resultieren. Nach Konstruktion sind die Ausdrücke a−bm für (a, b) ∈ S glatt bezüglich der Schranke B1 Q der rationalen Faktorbasis, deshalb existieren ganzrationale Zahlen Q e(p) mit (a,b)∈S (a − bm)sa,b = p≤B1 pe(p) und e(p) ≡ 0 (2). Die Division modulo N ist nur dann undefiniert, wenn eine zu N nicht teilerfremde Zahl invertiert werden muss. Aufgrund der Größe von N sind die Primzahlen p ≤ B1 keine Vielfachen von N , so dass das Scheitern einer Division modulo N dem Finden eines nichttrivialen Teilers von N gleichzusetzen Q Q e(p) e(p) ist. Deshalb können wir ein X ∈ Z mit φ( p≤B1 p 2 ) = p≤B1 φ(p 2 ) = X mod N bestimmen. Die finale Kongruenz ist daher gegeben durch Y Y Y X2 ≡ φ (a − bm)sa,b ≡ φ(a − bm)sa,b ≡ φ(a − bα)sa,b (a,b)∈S ≡ φ (a,b)∈S (a,b)∈S Y (a − bα)sa,b ≡ φ(θ0 ) ≡ Y 2 (N ) (a,b)∈S Wie im ersten Kapitel gezeigt, sind ggT(X − Y, N ) und ggT(X + Y, N ) mit mindestens 50-prozentiger Wahrscheinlichkeit nichttriviale Teiler von N . 106 Kapitel 5 Ausblick Seit der Faktorisierung der 512-Bit-Zahl RSA-155 im August ist es vergleichsweise still geworden. Der aktuellste Rekord ist die Faktorisierung eines 158-stelligen Faktors von 2953+, bekanntgegeben am 19.1.2002 [Fra02]. Dieses Ereignis hat jedoch nicht im Mindesten so viel Aufmerksamkeit erfahren wie die Zerlegung von RSA-155. Der Grund hierfür ist darin zu sehen, dass jene Faktorisierung wegen der großen weltweiten Verbreitung von 512-Bit-RSA-Schlüsseln einen Meilenstein darstellte. Ein vergleichbar großes öffentliches Interesse ist erst wieder bei der Faktorisierung einer 768-Bit-Zahl zu erwarten. Daher werden wir in diesem Kapitel im Hinblick auf die mögliche Faktorisierung einer 768-Bit-Zahl die aktuellsten Forschungsergebnisse referieren. Zuvor wird kurz die Frage nach sicheren RSA-Schlüsseln diskutiert werden. 5.1 Welche Auswirkungen hat die RSA-155-Faktorisierung auf die Sicherheit von RSA? Die in der Überschrift angesprochene im August 1999 vollendete Faktorisierung einer schweren 512Bit-Zahl (eine schwere RSA-Zahl ist das Produkt zweier verschiedener ähnlich großer Primzahlen) hat die unterschiedlichsten Reaktionen hervorgerufen. Das Spektrum reichte von Verharmlosung zu Panikmache, je nach Wissensstand und Interesse des Autors. Mit Sicherheit lässt sich jedoch festhalten, dass kein Grund besteht, den Niedergang von RSA zu verkünden, denn anders als beispielsweise DES arbeitet die RSA-Verschlüsselung mit variabler Schlüssellänge. Auf seriöser Basis ist daher vor dem Hintergrund der RSA-155-Faktorisierung nur über die Sicherheit oder Unsicherheit von 512-Bit-Schlüsseln zu diskutieren. Fakt ist jedoch, dass das Knacken eines 512-Bit-Schlüssels keine unerwartete Überraschung darstellte, der Sensationsgehalt jener Faktorisierung war nicht zu vergleichen z. B. mit der Faktorisierung von F9 . Der verwendete Algorithmus (GNFS ) war seit Jahren bekannt und es gab auch keine spektakulären Neuerungen seit der GNFSFaktorisierung von RSA-130 im April 1996. Natürlich hat das GNFS – wie wir im letzten Kapitel gesehen haben – eine Reihe von kleineren und mittleren Verbesserungen erfahren, diese jedoch waren zu erwarten. Überraschender wäre es vielmehr gewesen, hätte es in einem halben Jahrzehnt keine algorithmischen Fortschritte auf einem zur Zeit so intensiv erforschten Gebiet wie der Faktorisierung großer Zahlen gegeben. Schon Mitte 1995 hat A. Odlyzko darauf hingewiesen, dass eine GNFS -512Bit-Faktorisierung möglich sei, man müsse weder auf neue Algorithmen, noch auf schnellere Computer warten, lediglich genügend Helfer (die Rechenleistung zur Verfügung stellen) seien notwendig [Odl95]. So ist der bei Uneingeweihten möglicherweise vorherrschende Eindruck, 512-Bit-Schlüssel seien plötzlich über Nacht unsicher geworden, absolut falsch. B. Schneier, der Inhaber der Kryptographie-Firma Counterpane, bemerkt hierzu ([Sch99], September 1999): If 512-bitkeys are insecure today, they were ” just as insecure last month.[...] It’s tiring when people don’t listen to cryptographers when they say that something is insecure, waiting instead for someone to actually demonstrate the insecurity.“ 107 KAPITEL 5 AUSBLICK Um den Zeitaufwand abzuschätzen, den GNFS -Faktorisierungen von 768- bzw. 1024-Bit Zahlen erfordern, können wir die in Kapitel 1 hergeleitete Formel für die asymptotische Laufzeit des GNFS und schon bekannte Ergebnisse bemühen: Da 8400 MIPS-Jahre zur Faktorisierung von RSA-155 notwendig 1 waren und wir für beliebiges N eine Laufzeit von LN [1/3, (64/9) 3 ] erwarten, beträgt der geschätzte Aufwand zur GNFS -Faktorisierung von N in MIPS-Jahren: h i 1 LN 1/3, (64/9) 3 h i. 8400 · 1 LRSA−155 1/3, (64/9) 3 Wenn wir dies zugrunde legen, erhalten wir als Richtlinie für den Aufwand einer 768-Bit-Zahl (repräsentiert durch 2768 ) eine erwartete Siebdauer von 41 · 106 MIPS-Jahren (dies entspricht einem Faktor von 4900 verglichen mit RSA-155), für eine 1024-Bit-Zahl (21024 ) sogar von 72 · 109 MIPSJahren (Faktor 8, 6 · 106 ). Gerade im Hinblick auf die Faktorisierung sehr großer Zahlen muss jedoch darauf hingewiesen werden, dass mit obiger Formel lediglich der Aufwand der Siebphase abgeschätzt wird, das eigentliche Problem dürfte in der Zukunft aber in der Beherrschung des Matrixschrittes liegen. Des Weiteren ist anzumerken, dass Schätzungen dieser Art bisher immer zu überhöhten Werten geführt haben. So waren beispielsweise die 8400 MIPS-Jahre für RSA-155 nur die Hälfte, bzw. ein Viertel dessen, was auf der Grundlage des Aufwandes für RSA-140, bzw. RSA-130 erwartet werden konnte. Dieses überraschend gute Abschneiden von RSA-155 ist in erster Linie auf die verbesserte Polynomwahl-Phase zurückzuführen. Aufgrund der Manipulationen während des Filter-Schrittes ist es schwierig, präzise Vorhersagen für die Größe der Matrix und damit für den Speicherbedarf anzugeben. Aus Satz 1.5 lässt sich zumindest ableiten, dass der Zeitbedarf ungefähr quadratisch mit der Größe der optimalen Faktorbasis wächst √ √ (denn es gilt Lx [1/2, 2 + o(1)] = (Lx [1/2, 2/2 + o(1)])2 ). Erwarten wir daher eine 4900 mal längere Siebphase zur Faktorisierung einer 768-Bit-Zahl verglichen mit RSA-155, so ist die optimale Faktorbasis grob geschätzt 70 mal so groß wie die für RSA-155 benötigte. Für eine 1024-Bit-Zahl erhalten wir analog den Faktor 2900. Auf der Grundlage dieser Zahlen und der Annahme, der notwendige Speicherplatz wachse proportional mit der Faktorbasisgröße, erwartet R. D. Silverman einen Speicherbedarf von 160 Giga-Bytes für eine 768-Bit-Zahl und die unvorstellbare Größe von 10 Tera-Bytes für eine 1024-Bit-Zahl [Sil99]. Diese Betrachtungen zeigen, dass mit heutigen Mitteln sowohl 768-Bit-, als auch 1024-Bit-Schlüssel als sicher gelten dürfen. Wer jedoch gegen unvorhersehbare algorithmische Fortschritte abgesichert sein und seine Daten über einen längeren Zeitraum schützen will, der sollte über die Verwendung von 1024-Bit oder sogar 2048-Bit-Schlüsseln nachdenken. An dieser Stelle soll nochmals betont werden, dass auch die Faktorisierung eines 512-Bit-Schlüssels einen gigantisch großen Aufwand benötigt; praktisch unbrauchbar (auch für weniger wichtige Daten) werden RSA-Schlüssel dieser Länge daher erst werden, wenn wesentlich bessere Methoden zur Verfügung stehen. Die folgenden beiden Abschnitte bieten einen Ausblick auf möglicherweise zu erwartende Fortschritte. 5.2 Shamirs TWINKLE-Zylinder Am Rand der CHES 1999 stellte der israelische Mathematiker A. Shamir (das S“ aus RSA) eine inno” vative Vorrichtung vor, die die Siebpase sieborientierter Faktorisierungs-Algorithmen revolutionieren soll. Noch ist das letzte Wort ob der Realisierbarkeit dieser Erfindung noch nicht gesprochen, schon hat sie eine neue Forschungsrichtung hervorgebracht: Croptography“, eine Zusammensetzung aus ” Cryptography“ und Optic“. Die auf Opto-Elektronik basierende Idee ist bestechend einfach: Man ” ” stelle sich einen lichtundurchlässigen Zylinder vor, auf dessen Bodenplatte sich zu jeder Primzahl einer Faktorbasis eine Leuchtdiode (LED) befinde und dessen Deckel innen eine Photozelle enthalte. Die gesamte Vorrichtung arbeitet mit einer hohen Taktrate derart, dass die mit der Primzahl p assoziierte Leuchtdiode genau zu jedem p-ten Takt aufleuchtet, und zwar in einer zu log p proportionalen Helligkeit. Die Photozelle misst dann im Takt t eine Gesamthelligkeit, die der Helligkeit des 108 5.2 SHAMIRS TWINKLE-ZYLINDER TWINKLE-Zylinder Einzelne Zelle Photozelle, die Lichtblitze sammelt Lichtblitze ........ ........ Register A (enthält Primzahl p) LED (Stärke proprtional zu log p) Register B (enthält Verschiebung) Wafer mit Zellen Abbildung 5.1: Veranschaulichung der TWINKLE-Grundidee größten vollständig über der durch die LEDs repräsentierten Faktorbasis zerfallenden Teilers von t entspricht. Einfacher gesagt: Die glatten Zahlen sind die hellsten. Natürlich lässt sich auch das Sieben über aufeinanderfolgende Werte eines ganzrationalen Polynoms f (X) realisieren, indem die LEDs den Faktorbasiselementen (p, c) mit f (c) ≡ 0 (p) zugeordnet werden und mit einer aus c und dem Startwert des Siebintervalls berechneten Verzögerung regelmäßig in p-Abständen zu blinken beginnen. Abbildung 5.1 illustriert die Grundidee der TWINKLE-Vorrichtung. Diese Idee stellt den bekannten Siebvorgang auf den Kopf: Beim klassisches Sieben werden alle zu siebenden Werte in den Speicher geschrieben und der eigentliche Siebvorgang ist eine Schleife über alle Primzahlen der Faktorbasis. Shamirs Sieb hingegen speichert“ die Primzahlen und die zu siebenden Werte durchlaufen die Schleife. ” Shamir nennt seine Erfindung TWINKLE“ (übersetzt blitzen“), ein Akronym aus The Weizmann ” ” ” INstitute Key Locating Engine“. Folgende Vorteile des TWINKLE-Zylinders scheinen überzeugend: • Leuchtdioden lassen sich schneller takten als Mikrochips, in der ersten TWINKLE-Beschreibung [Sha99] hält Shamir eine Taktrate von 10 Gigahertz für möglich. • Es entfällt der immense Speicheraufwand, der beim klassischen Sieben notwendig ist, um die zu siebenden Größen zu speichern. • Shamir geht davon aus, dass ein TWINKLE-Zylinder nicht mehr als 5000 Dollar kosten wird, vorausgesetzt, es wird eine ausreichend große Anzahl produziert. Dies ist weit weniger, als für eine dieselbe Siebleistung erbringende Kollektion konventioneller Computer aufgewendet werden müsste. In den 5000 Dollar sind natürlich die Kosten für Design und Entwicklung eines Prototyps nicht enthalten. Leider hat sich gezeigt, dass einige von Shamirs Annahmen doch zu optimistisch waren, so dass Shamir auf der EUROCRYPT 2000 zusammen mit A. Lenstra eine leicht veränderte Version des TWINKLEZylinders vorstellte [LS00]. Auch zu jenem Zeitpunkt existierte jedoch noch kein Prototyp, bis heute (soweit bekannt) ist der TWINKLE-Zylinder lediglich ein gedankliches Konstrukt. Bevor wir den tatsächlichen Gewinn analysieren, beschreiben wir zunächst den auf das Number Field Sieve zugeschnittetenen TWINKLE-Zylinder näher. Für alle Details und insbesondere eine Möglichkeit, das Gittersieben für TWINKLE zu adaptieren, sei auf [LS00] und (mit Einschränkungen) auf [Sha99] verwiesen. Der Zylinder besitzt eine Höhe von ca. 25 cm und einen Durchmesser von ca. 15 cm. Der Durchmesser ist so gewählt, dass der Zylinder einen Wafer mit 105 einzelnen Zellen aufnehmen kann. Eine Zelle repräsentiert eine Primzahl der Faktorbasis, später werden wir mehr ins Detail gehen. Die Höhe von 25 cm wurde urprünglich festgelegt um zu gewährleisten, dass der Weg des Lichts von jeder einzelnen Zelle zur Photozelle des Deckels nicht zu stark variiert (denn bei der ursprünglich vorgesehenen Taktrate von 10 Gigahertz legt das Licht pro Takt ca. 3 cm zurück. Um eindeutig zugeordnet werden zu 109 KAPITEL 5 AUSBLICK können, müssen die Lichtblitze aller zu einem Takt t gleichzeitig leuchtenden LEDs innerhalb eines Zeitfensters die Photozelle erreichen, das die Länge eines Taktes deutlich unterschreitet. In diesem Zusammenhang bezieht sich Zeitfenster auf die Differenz zwischen der Ankunft des ersten und des letzten zu t gehörigen Lichtblitzes.). Der modifizierte Zylinder aus [LS00] macht von einer konkaven Linse Gebrauch, um die Lichtstrahlen zu bündeln und die Wege des Lichts zu vereinheitlichen. Daher ist wahrscheinlich ein niedrigerer Zylinder denkbar. Die LEDs können als Folge hiervon schwächer gewählt werden, was auch den Stromverbrauch reduziert (der zu einem Zeitpunkt fließende Maximalstrom darf nicht zu hoch sein, um ein Schmelzen des Wafers zu verhindern). Um eine möglichst exakte Synchronisation zu erreichen, werden die LEDs ihrerseits auch mithilfe von Lichtblitzen getaktet. Dies wird duch eine einzelne LED im Deckel des Zylinders und deren Lichtsignale empfangende Photozellen in jeder einzelnen Zelle des Wafers realisiert. Kommen wir nun zum Design einer solchen Zelle: Sei p ≤ max(B1 , B2 ) eine Primzahl und R(p) die Menge der Nullstellen von F (X, Y ) modulo p. Zu p gehörig gibt es dann ein rationales und #R(p) algebraische Faktorbasiselemente. All diese Faktorbasiselemente werden in einer Zelle repräsentiert. Diese Zelle enthält eine LED für das rationale Faktorbasiselement, eine LED für die algebraischen Faktorbasiselemente, eine Photozelle, die die Lichtsignale der taktenden LED empfängt, ein zu p gehöriges Register A und #R(p) + 1 zu den benötigten Verschiebungen gehörige Register B1 , . . . , Bk+1 (mit k := #R(p)). Diese Verschiebungen werden aus dem Startwert“ des zu siebenden Intervalls und den ” Nullstellen modulo p berechnet. Es ist zu beachten, dass das Ereignis p | F (a, b) genau einem Element von R(p) eindeutig zuzuordnen ist, daher können sich alle algebraischen Faktorbasiselemente eine einzelne LED teilen. Um algebraische und rationale Signale unterscheiden zu können, müssen unterschiedliche Wellenlängen für die beiden LEDs einer Zelle verwendet werden. Dementsprechend enthält der Zylinderdeckel auch zwei Photozellen. Der Siebprozess läuft dann wie folgt ab (vereinfacht): Pro Takt werden die Register Bi für i = 1, . . . , k + 1 dekrementiert. Enthält eines dieser Register Null, dann erhält die entsprechende LED (rational oder algebraisch) den Befehl zu blitzen und das Register wird mit dem Wert p des Registers A geladen. So wird fortgefahren, bis das Siebintervall abgearbeitet ist. Technisch gesehen sind die Register Addierer, die so initialisiert werden, dass genau nach der gewünschten Taktzahl (erstmalig die entsprechende Verschiebung, dann immer p) ein vordefinierter Endzustand erreicht ist, bei dem der Befehl zu Blitzen erteilt wird. So enthält z. B. das Register A in der Realität nicht die Binärdarstellung von p und der Endzustand entspricht nicht der Null. Um schließlich die Skalierung der verschiedenen Zellen in Abhängigkeit von log p zu realisieren, kann ein grauer Verlaufsfilter verwendet werden, der im Zylinder oberhalb der Zellen angebracht wird. Die Verteilung der Zellen auf dem Wafer muss dann entsprechend angepasst werden. Natürlich wird auf diese Art und Weise nur eine sehr grobe Approximation an die Logarithmen der Primelemente erreicht, dies ist aber bei konventionellen Implementierungen auch nicht anders (wie wir gesehen haben, werden zur Effizienzsteigerung alle Logarithmen zu ganzen Zahlen gerundet). Damit ist die Beschreibung des TWINKLE-Zylinders vorläufig abgeschlossen. Betrachtet man das Echo auf die erste TWINKLE-Veröffentlichung [Sha99], dann sind besonders die großen Diskrepanzen bei der Beurteilung des zu erzielenden Vorteils auffällig. Die Angaben für den Geschwindigkeitsfaktor gegenüber einer konventionellen Computer-Implementierung reichen von 3,3 bis 1000. Diese Unterschiede lassen sich jedoch einfach erklären: Die Zahl 1000 stammt von Shamir selbst. Sie resultiert aus einem auf die Siebphase beschränkten Vergleich des ersten TWINKLE-Entwurfs (Taktrate 1 Gigahertz, ausgelegt auf ein Siebintervall von 108 Paaren und die Aufnahme von 200000 Primzahlen) mit einem einzelnen Rechner, der über Busse mit der Standardgeschwindigkeit von 100 Megahertz verfügt (bei Siebprozessen hängt die Rechendauer nicht in erster Linie von der Taktfrequenz des Prozessors, sondern von der Busanbindung an den Hauptspeicher ab). R. D. Silverman (Mitarbeiter der RSA-Laboratories) hingegen vergleicht vollständige Faktorisierungen, einmal mit Computer-, einmal mit TWINKLE-unterstützter Siebphase (siehe [Sil99]). Als Demonstrationsbeispiel wählt er die seinerzeit aktuellste Rekordfaktorisierung von RSA-140. Er kommt zu dem Schluss, dass 7 TWINKLE-Zylinder die Siebarbeit in sechs Tagen hätten bewältigen können (die Anzahl 7 leitet er aus der 1,5 Millionen Einträge besitzenden Faktorbasis und der TWINKLEKapazität von ca. 200000 Faktorbasiselementen ab). Die Siebphase der Originalfaktorisierung hingegen benötigte 29 Tage mit 125 SGI bzw. Sun Workstations und 60 PCs. Dies ergäbe einen Faktor von 110 5.2 SHAMIRS TWINKLE-ZYLINDER 29/6 ≈ 4, 8. Bezieht man aber den vier Tage dauernden Matrixschritt mit ein, so reduziert sich der Faktor auf 33/10 = 3, 3. Dies ist eine Konsequenz des Amdahlschen Gesetzes, welches vereinfacht aussagt, dass die Möglichkeiten, einen parallelen Algorithmus zu beschleunigungen, immer durch die seriellen Teile des Algorithmus eingeschränkt werden. Beide oben genannten Analysen beziehen sich jedoch auf den ersten TWINKLE-Entwurf. Interessanter scheint Shamirs und Lenstras Analyse der modifizierten Version zu sein (siehe [LS00]). Zwei neue Betrachtungsweisen sind entscheidend: Zum einen erscheint eine Taktrate von 10 Gigahertz nicht mehr realistisch. Es ist zwar wahr, dass mittels Gallium-Arsenid-Technologie derartig hoch getaktete LEDs hergestellt werden können, ob dies jedoch in einer so großen Anzahl wie erforderlich der Fall ist, scheint fraglich. Außerdem dürfen die für einen TWINKLE-Zylinder verwendeten LEDs nur sehr geringen Fertigungs-Schwankungen unterliegen, um die durch einen Graufilter erreichte ohnehin nur sehr ungenaue Proportionalitätsbeziehung zwischen Lichtintensität und Primzahl-Logarithmus nicht noch mehr zu verfälschen. Auch dies ist mit moderaten Taktraten einfacher zu realisieren. Als Konsequenz arbeitet der modifizierte TWINKLEEntwurf mit einer Taktrate von einem Gigahertz, die 10-Gigahertz-Version bleibt ein Zukunftsziel. Der andere Punkt, der in ersten Analysen unterschlagen wurde, ist die Tatsache, dass der TWINKLEZylinder keine unabhängige Sieb-Hardware darstellt, d. h. er ist nutzlos ohne ihm parallel zuarbeitende Computer. Diese werden z. B. benötigt, um beim Siebübergang von einem b-Wert zu dem nächsten die neuen Verschiebungen für die Register Bi zu berechnen, um Probedivisionen für die vermeintlich guten Paare durchzuführen und bei Verwendung mehrerer Large Primes die nicht glatten Anteile der Größen F (a, b) und a−bm zu faktorisieren. In seiner ersten Veröffentlichung (die nur einen TWINKLE-Entwurf für das Quadratische Sieb vorstellte) ging Shamir davon aus, dass ein parallel arbeitender Computer ohne Zeitverlust alle notwendigen Berechnungen durchführen könne, weil die gute Paare anzeigenden Treffer ein so seltenes Ereignis seien. Diese Annahme kann leider nicht aufrecht erhalten werden, da Treffer beim Number Field Sieve weit häufiger auftreten. Aber auch beim Quadratischen Sieb in der üblichen Multiple-Polynomial-Variante ist deutlich mehr Computer-Arbeit notwendig als zuerst vermutet, nämlich die ständige Berechnung neuer Polynome. In der Tat scheint es so zu sein, dass die flankierenden Computer-Berechnungen der Flaschenhals des TWINKLE-unterstützten Siebens sind. Die notwendigen Probedivisionen einer Number Field Sieve-Siebphase kosten sogar so viel Zeit, dass ohne eine weitere Modifikation des TWINKLE-Zylinders dieser sich für jenen Zweck als gänzlich unbrauchbar erweist. Die Idee der notwendigen Modifikation ist es, die an einem Treffer beteiligten Primelemente den parallel arbeitenden Rechnern zu übermitteln (über die Ein-/Ausgabe-Leitungen des Wafers), so dass Probedivisionen nicht mit allen Primzahlen der Faktorbasis, sondern nur mit den tatsächlich beteiligten durchgeführt werden müssen. Dieses Prinzip haben wir auch schon beim konventionellen Gittersieben kennengelernt. Da aber aufgrund der begrenzten Geschwindigkeit der Ein-/Ausgabe-Leitungen nicht jede LED jedes Aufblitzen melden kann, muss gewährleistet werden, dass eine Meldung nur bei einem tatsächlichen Treffer erfolgt. Zu diesem Zweck kann im Zylinderdeckel eine weitere LED angebracht werden, die genau dann aufleuchtet, wenn die Photozellen des Deckels einen Treffer anzeigen. Jede einzelne Zelle des Wafers muss dementsprechend natürlich auch mit einer zusätzlichen Photozelle ausgestattet sein, um jene Signale empfangen und ggf. den Befehl Primzahl ” übermitteln“ geben zu können. Um Kollisionen zu vermeiden, muss wieder eine andere Wellenlänge verwendet werden. Abbildung 5.2 illustriert diesen erweiterten TWINKLE-Entwurf. Die Tatsache, dass die beteiligten Computer den Flaschenhals des TWINKLE-unterstützten Siebens darstellen, ist auch der Grund für die kurios anmutende Feststellung, dass es für den Ausgang des Effizienzvergleiches zwischen TWINKLE- und Computer-unterstützter Siebphase kaum relevant ist, ob der TWINKLE-Zylinder mit einem oder mit zehn Gigahertz getaktet ist. Wir erläutern dies an der Number Field Sieve-Faktorisierung einer 512-Bit-Zahl: Eine mit einem 10-Gigahertz TWINKLE-Zylinder durchgeführte Siebphase benötigt 44 PCs, um die oben angesprochenen Zusatzaufgaben während der TWINKLE-Siebzeit zu übernehmen. Daher ist es nur konsequent, die abgeschätzte Siebdauer von weniger als 3 Wochen mit der Zeit zu vergleichen, die eben jene 44 PCs für denselben Siebvorgang benötigen. Für Letzteres werden 21 Wochen veranschlagt, so dass sich ein Verbesserungsfaktor von ungefähr 8 ergibt. Eine analoge Betrachtung für einen mit einem Gigahertz getakteten TWINKLEZylinder kommt zu dem Ergebnis, dass 5 flankierende PCs für das TWINKLE-Sieben benötigt werden und dieses dann 27 Wochen dauert. Die 5 PCs auf sich allein gestellt sieben 27 Wochen; der resultie111 KAPITEL 5 AUSBLICK Einzelne Zelle TWINKLE-Zylinder Photozelle, die rationale Lichtblitze sammelt Photozelle, die algebraische Lichtblitze sammelt LED, die den Takt vorgibt LED, die blitzt, um einen Treffer anzuzeigen Konkave Linse, die Lichtblitze bündelt A B1 B2 B k+1 grauer Verlaufsfilter Register A (enthält Primzahl p) Register B i (enthalten Verschiebungen) rationale LED algebraische LED Photozelle, die Treffersignal empfängt Photozelle, die Taktrate empfängt Wafer mit Zellen Abbildung 5.2: Veranschaulichung der modifizierten TWINKLE-Vorrichtung rende Faktor ist also 7 (für Details dieser Vergleiche sei auf [LS00] verwiesen). Zusammenfassend lässt sich sagen, dass mit Shamirs TWINKLE-Zylindern zwar eine deutliche Verkürzung der Siebzeit erzielt werden kann, bevor jedoch von einer ernsthafte Gefahr für die Sicherheit von 768-Bit-RSA-Moduli ausgegangen werden kann, muss zunächst das Matrix-Problem gelöst werden. 5.3 Ein paralleler Block-Lanczos-Algorithmus Wie wir im letzten Abschnitt bereits angedeutet haben, wird der Matrix-Schritt in Zukunft das größte Problem bei der Jagd nach neuen Faktorisierungsrekorden darstellen. Je schneller gesiebt werden kann, umso mehr macht sich die Laufzeit der Lineare-Algebra-Teile negativ im Gesamtaufwand einer Faktorisierung bemerkbar. Schon heute ist es bereits so, dass aufgrund der Parallelisierung der Siebphase der Anteil des Matrix-Schrittes an der Gesamt-CPU-Zeit zwar nur einen Bruchteil, an der tatsächlich benötigten Zeit jedoch einen durchaus relevanten Teil ausmacht. Deshalb scheinen die in letzter Zeit unternommenen Anstrengungen, die Lösung des linearen Gleichungssystem zu parallelisieren, die einzige Möglichkeit zu sein, jemals beispielsweise eine 768-Bit-Zahl zu zerlegen (zumindest mit dem Number Field Sieve, die Entwicklung einer gänzlich neuen Faktorisierungsmethode darf nie übersehen werden). P. L. Montgomery hat u. a. auf der ECC 2000 seine neuesten Ergebnisse eine parallele Block-Lanczos-Implementierung betreffend vorgestellt [Mon00]. Leider ist es bislang erst gelungen, die Berechnungen auf 3 Rechner zu verteilen. Bei ihrer Prognose, mithilfe einer TWINKLE-unterstützten GNFS-Implementierung sei die Faktorisierung einer 768-Bit-Zahl in 6 Monaten möglich, gehen Shamir und Lenstra allerdings davon aus, der Matrix-Schritt könne auf beliebig viele (im konkreten Fall 80000) verschiedene Rechner verteilt werden. Daher ist diese Schätzung sehr optimistisch. Als RSA-Mitarbeiter die Gegenseite“ vertretend hält es R. D. Silverman für unmöglich, mit heutiger ” Technologie 80000 Prozessoren auch nur zu koppeln, selbst wenn die Verteilung des Block-LanczosAlgorithmus theoretisch möglich wäre (siehe hierzu das Bulletin Nr. 13 der RSA-Laboratories vom 13.4.2000 [Sil00]). Relevante Auswirkungen auf die Größe des zu lösenden Gleichungssystems können auch aus verbesserten Filter-Strategien und nicht zuletzt aus optimierter Polynomwahl resultieren, daher ist auch auf diesen Gebieten (weitere) intensive Forschung sinnvoll. Welche algorithmische Entwicklung letzten Endes den Ausschlag für eine erfolgreiche 768-Bit-Faktorisierung geben wird und wann dies der Fall sein wird, kann nur die Zukunft zeigen. 112 Anhang A Bedienungshinweise für die beigelegten Programme Die dieser Arbeit beigelegte Diskette enthält einfache Implementierungen des Special und des General Number Field Sieve. Verwendet wurde Version 2.1.1 des auf algebraische Zahlentheorie spezialisierten Computeralgebrasystems Pari-GP. Dieses wurde zu Forschungszwecken an der Universität Bordeaux entwickelt und läuft auch auf kleinen PCs. Es ist zusammen mit einer ausführlichen Dokumentation frei erhältlich unter http://www.parigp-home.de/. Pari kann sowohl im Interpreter-Modus (hierfür steht das Suffix GP ) als auch als Bibliothek genutzt werden. Die vorliegenden Programme sind für den Interpreter-Modus geschrieben, so dass außer Pari-GP kein weiterer Interpreter oder Compiler notwendig ist, um sie zu verwenden. Sie stellen ein Werkzeug zur Verfügung, mit dessen Hilfe nichttriviale Number Field Sieve-Beispiele erstellt werden können. Auch soll der Leser ermutigt werden, eigene Experimente durchzuführen, um das Verständnis für das Number Field Sieve zu vertiefen. Zweck dieser Programme ist es ausdrücklich nicht, besonders schnell große Zahlen zu faktorisieren. Ein auf Schnelligkeit angelegtes Programm hätte z. B. nicht für den Interpreter geschrieben werden dürfen. Auch ist an einigen Stellen bewusst die Effizienz zugunsten der Durchschaubarkeit des Programmcodes vernachlässigt worden. Pari-GP besitzt eine einfache, PASCAL-ähnliche Syntax, so dass auch der im Programmieren unerfahrene Leser in der Lage sein sollte, die sehr ausführlich kommentierten Pogramme nachzuvollziehen. Die folgenden Abschnitte sollen zeigen, wie mit den verschiedenen Funktionen gearbeitet werden kann. Wie werden die beigelegten Pari -Programme eingespielt? Die beiliegende Diskette enthält zwei Text-Dateien mit den Namen SNFS.gp und GNFS.gp, die in einem Editor angesehen werden können. Zu diesem Zweck besonders empfehlenswert ist Emacs, weil dieser so konfiguriert werden kann, dass er die Ausgabe von Pari -Programmen unterstützt. Mit dem Befehl Meta-x hilit-highlight-buffer lässt sich dann z. B. erreichen, dass einige Programmkonstrukte farbig hervorgehoben werden. Wie der Name schon sagt, enthält SNFS.gp Funktionen, die für das Special, und GNFS.gp Funktionen, die für das General Number Field Sieve benötigt werden. Nachdem Pari gestartet wurde (mit dem Befehl gp), kann man mit der Anweisung \r <Dateiname> alle Funktionen laden, die die Datei des Namens <Dateiname> enthält, z. B. können nach Eingabe des Befehls \r GNFS.gp alle 51 GNFSFunktionen aufgerufen werden, sofern sich die Datei GNFS.gp im aktuellen Verzeichnis befindet. Vor den ersten Versuchen ist es angeraten, sich wenigstens grob mit dem Pari -System vertraut zu machen. Hierzu ist unter oben genannter Adresse genügend Material (unter anderem ein Tutorium) abrufbar. Es ist auch eine online-Hilfe verfügbar, so kann z. B. mit der Eingabe von ??<Befehlsname> eine ausführliche Beschreibung des Befehls Befehlsname abgerufen werden. Das Wichtigste in Kürze ist im nächsten Abschnitt zusammengefasst. Die Arbeit mit Pari-GP Wie bereits erwähnt, ist Pari-GP ein Interpreter, d. h. jeder eingegebene und mit Return abgeschlossenen Befehl wird unmittelbar ausgeführt und das Ergebnis auf den Bildschirm ausgegeben. Ein Befehl kann aus einem einzelnen oder mehreren durch Semikolons getrennten Pari -Befehlen bestehen, kann 113 ANHANG A aber auch der Aufruf einer selbstgeschriebenen Funktion sein. Die von Pari im Verlauf einer Sitzung berechneten Ergebnisse werden durchnummeriert, jeder Nummer ist ein Prozentzeichen vorangestellt. Mit dem Ausdruck %<Nummer> kann auf ein zurückliegendes Ergebnis zugegriffen werden. Das Prozentzeichen ohne Nummer steht immer für das jeweils letzte Ergebnis. Schließt man eine Eingabe mit einem Semikolon ab, so wird die Bildschirmausgabe des Ergebnisses unterdrückt, es wird jedoch in die Nummerierung mitaufgenommen und ist mit dem Befehl %<Nummer> jederzeit abrufbar. Bei einigen der vorliegenden Siebfunktionen wird dringend empfohlen, die Bildschirmausgabe zu unterdrücken, da die berechneten Ergebnisse mehrere Tausend Zeilen lang sein können. Nach Aufruf von Pari erscheint folgendes Bild: katja@samoa:~/pari > gp Reading GPRC: /home/katja/.gprc ...Done. GP/PARI CALCULATOR Version 2.1.1 (released) i686 running linux (ix86 kernel) 32-bit version (readline v2.2 enabled, extended help available) Copyright (C) 2000 The PARI Group PARI/GP is free software, covered by the GNU General Public License, and comes WITHOUT ANY WARRANTY WHATSOEVER. Type ? for help, \q to quit. Type ?12 for how to get moral (and possibly technical) support. realprecision = 28 significant digits seriesprecision = 16 significant terms format = g0.28 parisize = 4000000, primelimit = 500000 (17:10) gp > Das Zeichen gp > ist der Pari -Prompt. Die Zahlen 4000000 und 500000 in der vorletzten Zeile stehen für die Größe des von Pari verwendeten Stacks, bzw. für die Grenze der in einer Tabelle gespeicherten Primzahlen. Es wird dringend empfohlen, die Größe des Pari -Stacks so groß zu wählen, wie der Speicher es erlaubt. Stehen beispielsweise 10 Megabytes zur Verfügung, so erreicht man durch den Befehl default(parisize,10M), dass dieser Speicher Pari zur Verfügung gestellt wird. Analog dazu kann man mit dem Befehl default(primelimit,6M) erreichen, dass Pari alle Primzahlen bis zur Grenze 6000000 zur Verfügung stellt (der Quadratwurzel-Schritt des GNFS benötigt einige Primzahlen oberhalb der algebraischen Large-Prime-Schranke). Da die Primzahlen auch Speicherplatz benötigen, sollte man sich nur so viele berechnen lassen, wie tatsächlich benötigt werden. (17:10) gp > default(parisize,10M) parisize = 10000000 Die beiliegenden Number Field Sieve-Funktionen lassen es zum Teil zu, dass sie nicht mit allen bei der Definition angegebenen Parametern aufgerufen werden. Für die nicht angegebenen Parameter werden Default-Werte vergeben. Beispiel 5.1 (Vergabe von Default-Werten) Die Funktion snfs_suche_polynom bestimmt das zur SNFS -Faktorisierung von N notwendige Polynom, vorausgesetzt, N liegt in der Form kN = rt − s für geeignete ganze, bzw. natürliche Zahlen k, r, t und s vor (siehe Abschnitt 3.1). Der Funktionskopf dieser Funktion ist von der Form 114 A BEDIENUNGSHINWEISE FÜR DIE BEIGELEGTEN PROGRAMME snfs_suche_polynom(N,k=1,r,t,s,d). Hieraus ist ersichtlich, dass diese Funktion normalerweise mit 6 Parametern aufgerufen wird, für den Parameter k jedoch der defaut-Wert 1 eingesetzt wird, falls beim Aufruf k nicht belegt wird. Zusätzlich zu k kann auch für den Grad d ein Default-Wert berechnet werden, dieser ist jedoch von N abhängig und wird erst im Funktionsrumpf bestimmt. Mit diesem Wissen gibt es für den Funktionsaufruf von snfs_suche_polynom verschiedene Möglichkeiten: Angenommen, wir möchten für N = 241 − 1 ein geeignetes SNFS -Polynom bestimmen. Dann können wir den Befehl N=2^41-1;snfs_suche_polynom(N,1,2,41,1) eingeben, woraufhin ein Polynom dritten Grades gesucht wird, denn für N in dieser Größenordnung ist d = 3 der Default-Wert: (17:12) gp > \r SNFS.gp (17:13) gp > N=2^41-1 %1 = 2199023255551 (17:13) gp > snfs_suche_polynom(N,1,2,41,1) Funktion: f= x^3 - 2 passendes m: m= 16384 Weil k = 1 dem Default-Wert entspricht, liefert der Befehl snfs_suche_polynom(N,,2,41,1) dasselbe Ergebnis. Wichtig ist jedoch, dass die einen fehlenden Aufrufparameter flankierenden Kommata nicht weggelassen werden dürfen (es sei denn, es handelt sich um die letzten Parameter eines Funktionsaufrufes). Der Aufruf snfs_suche_polynom(N,2,41,1) liefert eine Fehlermeldung, weil Pari in diesem Fall 2 an k, 41 an r, 1 an t und 0 an s bindet (jeder nicht-angegebene Parameter wird zunächst mit 0 initialisiert). (17:14) gp > snfs_suche_polynom(N,,2,41,1) Funktion: f= x^3 - 2 passendes m: m= 16384 (17:14) gp > snfs_suche_polynom(N,2,41,1) Es muss k*N=r^t-s erfuellt sein! Möchten wir ein quadratisches Polynom finden, so geben wir Folgendes ein: (17:15) gp > snfs_suche_polynom(N,1,2,41,1,2) Funktion: f= x^2 - 2 passendes m: m= 2097152 Bevor wir die Pari -Beispielsitzung fortführen, beschreiben wir zunächst die wichtigsten auf der Diskette enthaltenen Funktionen. Abbildung A zeigt exemplarisch die Aufrufhierarchie und den Datenfluss der Funktion nfs. Entsprechende Diagramme zu den restlichen 8 Hauptfunktionen enthält die Datei hierarchien.txt der beiliegenden Diskette. Beschreibung der Hauptfunktionen Jede dieser Hauptfunktionen wird wie folgt beschrieben: Zuerst skizzieren wir die Arbeitsweise der Funktion, z. B. welche Unterfunktionen sie zu welchem Zweck aufruft. Alle Details jedoch sind direkt den Funktions-Kommentaren zu entnehmen. Dann legen wir dar, wie der Kopf der Funktion aussieht, d. h. mit welchen Parametern die Funktion aufgerufen wird. An dieser Stelle geben wir auch an, für welche der Parameter ggf. Default-Werte vergeben werden, so dass jene beim Aufruf weggelassen werden können. Die Bedeutung der einzelnen Parameter ist auf der beiliegenden Diskette ausführlich erläutert. Zuerst beschreiben wir die GNFS -Hauptfunktionen, die in der Datei GNFS.gp enthalten sind: 115 ANHANG A nfs erstelleAlgprimTab erststelleRatprimTab erzeugeCharaktere sieben_bIntervall_verteilt sieben_bIntervall sieben_bVektor sieben_rat sieben_alg sortiereRelationen erzeugeZyklen_alg erzeugeZyklen_rat erzeugeMatrix Exponentenvektor Charakter Exponentenvektorpf Exponentenvektor Charakter Exponentenvektorfp Exponentenvektor Charakter ker_mod_p erzeugeInert berechne_zwei_Teiler / berechneTeiler erzeugek_l berechne_ratWurzel erzeugeN_l erzeugeGamma_l erzeugebeta_l berechneZ_i berechneS_i berechneY Abbildung 5.3: Aufrufhierarchie und Datenfluss der Funktion nfs 116 A BEDIENUNGSHINWEISE FÜR DIE BEIGELEGTEN PROGRAMME • suche_polynom Diese Funktion realisiert einige Elemente der in Abschnitt 4.2.3 beschriebenen Polynomsuche. Zuerst wird ein in Abhängigkeit von χ1 und χ2 bestimmtes Intervall möglicher Leitkoeffizienten durchsiebt, um Leitkoeffizienten zu erhalten, die viele kleine Primteiler besitzen (Unterfunktion lcpotenzsieben_verteilt). Hierdurch ist das Vorhandensein vieler projektiver Nullstellen garantiert. Die Größe der Leitkoeffizienten ad ist eingeschränkt durch die Bedingung χ1 <= ad /m <= χ2 . Zu den gefundenen glatten Leitkoeffizienten werden ein Polynom und eine dazugehörige Nullstelle m modulo N so bestimmt, dass der Koeffizient ad−1 mit dieser Wahl minimiert wird (Unterfunktion erzeuge_madischeDarstellung). Diese Polynome werden daraufhin aufgrund ihrer Nullstellen- (Unterfunktion erstelle_alphaRanking) und Größen-Eigenschaften (Unterfunktion erstelle_GroessenRanking) gelistet. Aus der Kombination dieser Beurteilungen wird abschließend eine endgültige Reihenfolge bestimmt (Unterfunktion erstelle_KombiRanking) und die Siegergrößen werden ausgegeben. Der Kopf dieser Funktion hat folgendes Aussehen: suche_polynom(N,d=3,chi1,chi2,schritte,schranke=0,primgrenze,potenzgrenze, bSchranke,grenzealpha,agrenzegroesse,bgrenzegroesse,gewichtalpha=0.5, gewichtgroesse=0.5). Bis auf N können für alle Parameter Default-Werte vergeben werden, so dass ein Funktionsaufruf suche_polynom(N) möglich ist. • nfs Diese Funktion realisiert die komplette GNFS -Faktorisierung in Anlehnung an den in Kapitel 4 beschriebenen Algorithmus. Zuerst wird der Siebraum zeilenweise durchsiebt (klassisches logarithmisches Sieben, eine Zeile entspricht einem b-Wert). Dabei ist auf jeder Seite eine Large Prime zugelassen. Aus Effizienzgründen werden alle benötigten Primelemente zusammen mit ihren Kenngrößen vor der Siebphase berechnet und in Tabellen abgelegt (Unterfunktionen erstelleAlgprimTab und erstelleratprimTab). Kenngrößen sind jeweils die gerundeten Logarithmen der Primzahlen p und auf der algebraischen Seite zusätzlich die Nullstelle von F (X, Y ) modulo p, zu der das entsprechende Primelement korrespondiert. Um Speicher zu sparen, wird das b-Intervall in Abschnitte aufgeteilt, die nacheinander abgearbeitet werden (Unterfunktion sieben_bIntervall_verteilt). Diese Phase kann auch parallelisiert werden, wenn die Funktion sieben_bIntervall auf verschiedenen Rechnern mit den entsprechenden Intervallgrenzen gestartet wird. Das Ergebnis dieser Funktion ist die Menge vermeintlich guter Paare des Siebraumes. Hieraus ermittelt die Unterfunktion sortiereRelationen durch Probedivisionen die Einteilung in volle Relationen, partielle Relationen mit einer algebraischen und partielle Relationen mit einer rationalen Large Prime. Aus den partiellen Relationen berechnen die Unterfunktionen erzeugeZyklen_alg und erzeugeZyklen_rat die entsprechenden Zweierzyklen. Es ist jedoch zu beachten, dass nur so viele Relationen bearbeitet werden, bis ca. 110 Prozent der Faktorbasisgröße gefunden sind; d. h. unter Umständen werden die Zweierzyklen gar nicht oder nur teilweise erstellt. So wird verhindert, dass die Matrix unnötig groß wird. Reichen die verwendeten Relationen wider Erwarten nicht aus, um N zu faktorisieren, dann kann man von Hand noch welche hinzufügen, denn die Variable vvgutePaare, die das Ergebnis von sortiereRelationen enthält, ist nach Beendigung der Funktion noch sichtbar. Die Unterfunktion erzeugeMatrix schließlich erstellt die Matrix mexpo, die die Exponentenvektoren als Spalten enthält. Zu diesem Zweck bestimmt die Unterfunktion Exponentenvektor den Exponentenvektor einer vollen Relation wie in Abschnitt 4.3 beschrieben. Die Exponentenvektoren von Zweierzyklen werden berechnet, indem die Exponentenvektoren der beteiligten partiellen Relationen addiert werden (Unterfunktionen Exponentenvektorpf und Exponentenvektorfp). Mithilfe des Pari -Befehls ker_mod_p(mexpo,2) wird die Basis des Kerns modulo 2 von mexpo bestimmt. Um diesen Befehl verwenden zu können, muss vor Durchführung der Funktion nfs install(ker_mod_p,GG) aufgerufen werden. Dieser Befehl ist in der Funktion nfs auskommentiert, weil Pari andernfalls jedesmal eine Warnung ausgibt, dass ker_mod_p bereits installiert ist. Zuletzt berechnet die Unterfunktion berechneTeiler, bzw. berechne_zwei_Teiler die Teiler von N , sofern alles geklappt hat. Die Variante berechne_zwei_Teiler ist schneller, denn sie stoppt nach dem ersten gefundenen Teiler und gibt diesen sowie den Ko-Teiler aus. berechneTeiler hingegen 117 ANHANG A gibt alle gefundenen Teiler aus, führt Primzahltests durch, speichert die Primteiler und stoppt erst, wenn das Produkt aller Primteiler mit N identisch ist oder alle Kernvektoren verbraucht sind. Achtung: Primteiler von N , die in höherer als erster Potenz vorkommen, werden nicht gefunden. Dies ist eine Konsequenz aus Satz 1.3. Lediglich die Primteiler-Potenz kann entdeckt werden, daher läuft die Funktion berechneTeiler in diesem Fall so lange, bis alle Kernvektoren verarbeitet sind. Welche Version ausgewählt werden soll, wird der Funktion nfs durch den Aufrufparameter flag mitgeteilt. Die algebraische Wurzel schließlich wird nach Couveignes Methode bestimmt, die voraussetzt, dass der Grad von f ungerade ist (Beschreibung in [BL93]). Der Kopf der Funktion nfs hat folgendes Aussehen: nfs(N,f,m,flag=0,aSchranke,bSchranke,schritte,primgrenzerat,primgrenzealg, anzinert,lprimgrenzerat,lprimgrenzealg,anzchar=25). Bis auf N, f und m können für alle Parameter Default-Werte vergeben werden, so dass ein Funktionsaufruf nfs(N,f,m) möglich ist. • zaehlendes_sieben_bIntervall_verteilt Diese Funktion realisiert ein Zählvariante der Siebphase, d. h. während des Siebens laufen Zähler für die gefundenen Relationen mit. Der Siebprozess stoppt, wenn ausreichend viele Relationen (ca. 110 Prozent der Faktorbasisgröße) gefunden sind. Diese Variante sucht nicht zuerst alle vermeintlich guten Paare, um sie anschließend zu sortieren, vielmehr wird jedes gefundene gute Paar durch die Unterfunktion sortiere_einRelation unmittelbar einsortiert (volle Relation/ partielle Relation mit algebraischer Large Prime/ partielle Relation mit rationaler Large Prime). Die vollen Relationen können so direkt gezählt werden. Um die Zweierzyklen zählen zu können, ohne sie bereits zu erstellen (dies ist aus Effizienzgründen erst am Ende des Siebprozesses sinnvoll), werden Hashtabellen verwendet: Die Idee des Verfahrens ist die Tatsache, dass sich aus k Relationen mit gemeinsamer Large Prime genau k − 1 unabhängige Zweierzyklen kombinieren lassen. Jede gefundene Large Prime wird in eine Hashtabelle eingetragen, sofern sie dort noch nicht vorhanden ist. Im letzten Fall ist ein neuer Zweierzykel gefunden, der entsprechende Zähler wird inkrementiert und die Large Prime nicht aufgenommen. Die Funktion zaehlendes_sieben_bIntervall_verteilt berechnet auch, zu wie viel Prozent die Hashtabellen gefüllt sind und wie viel Prozent aller Hash-Zugriffe zu Kollisionen geführt haben. Aus Effizienzgründen sollte eine 70-prozentige Füllung nicht überschritten werden. Der Rückgabewert dieser Funktion sind die 3 Vektoren der einsortierten guten Paare, der Aufruf sollte daher mit Semikolon abgeschlossen werden. Der Kopf dieser Funktion hat folgendes Aussehen: zaehlendes_sieben_bIntervall_verteilt(N,f,m,aSchranke,primgrenzerat, primgrenzealg,laenge=2,lhashrat,lhashalg,lprimgrenzerat,lprimgrenzealg,anzchar). Bis auf N, f und m können für alle Parameter Default-Werte vergeben werden, so dass ein Funktionsaufruf zaehlendes_sieben_bIntervall_verteilt(N,f,m) möglich ist. • nfs_zaehlend Diese Funktion arbeitet wie nfs, die Siebphase verwendet jedoch die Zählvariante zaehlendes_sieben_bIntervall_verteilt anstelle von sieben_bIntervall_verteilt. Für nfs_zaehlend muss die Größe b-Schranke nicht vorher bekannt sein, deshalb ist diese Funktion bei wenig Erfahrung in der Parameterwahl der Funktion nfs vorzuziehen. Dem stehen zwei Nachteile gegenüber: Zum Einen ist diese Variante wegen der Arbeit mit den Hashtabellen langsamer, zum Anderen ist eine Parallelisierung nicht mehr so einfach möglich, denn die einzelnen Prozesse müssten miteinander kommunizieren, um die gefundenen Relationen korrekt zählen zu können. Der Kopf der Funktion nfs_zaehlend hat folgendes Aussehen: nfs_zaehlend(N,f,m,flag=0,aSchranke,primgrenzerat,primgrenzealg,laenge=2, lhashrat,lhashalg,anzinert,lprimgrenzerat,lprimgrenzealg,anzchar=25). Bis auf N, f und m können für alle Parameter Default-Werte vergeben werden, so dass ein Funktionsaufruf nfs_zaehlend(N,f,m) möglich ist. • test_sieben_bIntervall_verteilt Diese Funktion wird verwendet, um Parameter (in erster Linie die Grenzen des Siebraumes, die Größe der Faktorbasen und die Large-Prime-Schranken) zu testen. Das Sieben mit den 118 A BEDIENUNGSHINWEISE FÜR DIE BEIGELEGTEN PROGRAMME übergebenen Parametern wird durchgeführt, ohne gefundenen Relationen zu speichern, lediglich verschiedene Zähler laufen mit. Anhand der ausführlichen Statistik, die auf den Bildschirm ausgegeben wird, können die gewählten Parameter beurteilt werden. Diese Funktion speichert zwar nicht die gefundenen guten Paare, wohl aber Häufigkeitsverteilungen der a-Werte. Diese 3 Vektoren (beteiligte a an vollen Relationen/ an algebraischen Zweierzyklen/ an rationalen Zweierzyklen) bilden den Rückgabewert, der Aufruf sollte daher mit Semikolon abgeschlossen werden. Der Kopf der Funktion test_sieben_bIntervall_verteilt hat folgendes Aussehen: test_sieben_bIntervall_verteilt(N,f,m,aSchranke,bSchranke,primgrenzerat, primgrenzealg,schritte,lhashrat,lhashalg,lprimgrenzerat,lprimgrenzealg,flag=1). Bis auf schritte und flag werden für keine Parameter Default-Werte vergeben, da der Zweck dieser Funktion gerade im Test der übergebenen Parameter liegt. • berechne_aHaeufigkeiten Diese Funktion wertet das Ergebnis der Funktion test_sieben_bIntervall_verteilt zu einer Statistik der a-Werte aus. Ihr Kopf hat folgendes Aussehen: berechne_aHaeufigkeiten(vvahaeufig,k,flag=1). Der Parameter k gibt die Anzahl der Abschnitte an, in die das a-Intervall für die Statistik aufgeteilt werden soll. Zu dem Parameter flag: wird flag=1 (Default) übergeben, dann wird die Häufigkeitsverteilung der vollen Relationen berechnet, bei flag=2 die der algebraischen und bei flag=3 die der rationalen Zweierzyklen. Die SNFS -Funktionen der Datei SNFS.gp arbeiten weitgehend analog, so dass wir uns im Folgenden auf die Beschreibung der Unterschiede beschränken. • snfs_suche_polynom Diese Funktion ist bereits in Beispiel 5.1 ausführlich vorgestellt worden. Zu ergänzen ist, dass sie immer eine irreduzible Funktion ausgibt. Im Reduzibilitätsfall wird getestet, ob nichttriviale Teiler von f (X) zu ebensolchen Teilern von N führen. Ist dies nicht der Fall, dann wird ein geeigneter irreduzibler Teiler ausgewählt. Außerdem wird getestet, ob der Unterring Z[α] des erzeugten Zahlkörpers faktoriell ist, denn die vorliegende SNFS -Implementierung setzt dies voraus. • snfs Diese Funktion realisiert eine einfache Version des in Kapitel 3 beschriebenen SNFS. Der grobe Aufbau ist vergleichbar mit der Funktion nfs, Unterschiede finden sich im Detail: Für die Elemente der algebraischen Faktorbasis müssen zusätzlich zu den oben beschriebenen Kenngrößen noch die Erzeuger der jeweiligen Primideale berechnet werden. Dies leistet die Unterfunktion snfs_erstelleAlgprimTab, die anstelle von erstelleAlgprimTab zum Einsatz gelangt. Die Siebfunktionen unterscheiden sich einzig in der Tatsache, dass sie die so konstruierte snfs_malgprimTabelle statt malgprimTabelle verwenden. Deutliche Unterschiede gibt es dagegen wieder bei der Erstellung der Exponentenvektoren: Außer über den Primelementen der Faktorbasen müssen die Relationen auch über der Einheitenbasis von Oα zerlegt werden. Zu diesem Zweck werden die in snfs_malgprimTabelle gespeicherten Erzeuger algebraischer Primideale erstmals benötigt, denn aus der Größe a − bα wird während der Erstellung der Primidealzerlegung jeder gefundene Faktor herausdividiert (Division in Oα ). Was übrig bleibt, muss eine Einheit sein und wird über den Fundamentaleinheiten und dem Erzeuger der Einheitswurzeln zerlegt. Auf diese Art und Weise wird der Exponentenvektor einer vollen Relation erstellt. Den Exponentenvektor eines Zweierzykels erhalten wir, indem wir die beiden Exponentenvektoren der beteiligten partiellen Relationen bilden und voneinander subtrahieren. Auch dies ist ein Unterschied zur Funktion nfs, dort haben wir die einzelnen Exponentenvektoren addiert, weil der Quadratwurzelschritt es so verlangte. Des Weiteren sind im SNFS natürlich keine Charaktertests notwendig. Wie bei der Funktion nfs werden nur so viele Relationen für die Matrix verwendet, wie es notwendig scheint, d. h. unter Umständen wird auf die Erstellung von Zweierzyklen ganz oder teilweise verzichtet. 119 ANHANG A Zuletzt ist die Berechnung der algebraischen Quadratwurzel deutlich einfacher als im GNFS, denn sie erfolgt analog zur Berechnung des rationalen Quadrates unmittelbar aus den algebraischen Primelementen und der Menge S von Relationen, die durch den entsprechenden Kernvektor definiert wird. Die Unterfunktionen snfs_berechne_zweiTeiler bzw. snfs_berechneTeiler sind daher sehr viel weniger komplex als ihre Pendants im GNFS. Der Kopf von snfs hat folgendes Aussehen: snfs(N,f,m,flag,aSchranke,bSchranke,schritte,primgrenzerat,primgrenzealg, lprimgrenzerat,lprimgrenzealg). Bis auf N, f und m können für alle Parameter Default-Werte vergeben werden, so dass ein Funktionsaufruf snfs(N,f,m) möglich ist. • snfs_zaehlendes_sieben_bIntervall_verteilt Diese Funktion realisiert analog zur Funktion zaehlendes_sieben_bIntervall_verteilt eine Zählvariante der Siebphase. Der Kopf hat folgendes Aussehen: snfs_zaehlendes_sieben_bIntervall_verteilt(N,f,m,aSchranke,laenge=2,lhashrat, lhashalg,primgrenzerat,primgrenzealg,lprimgrenzerat,lprimgrenzealg). Bis auf N, f und m können für alle Parameter Default-Werte vergeben werden, so dass ein Funktionsaufruf snfs_zaehlendes_sieben_bIntervall_verteilt(N,f,m) möglich ist. Wie bei der Funktion zaehlendes_sieben_bIntervall_verteilt ist der Rückgabewert der dreiteilige Vektor der sortierten guten Paare, so dass der Aufruf der Funktion mit einem Semikolon abgeschlossen werden sollte. • snfs_zaehlend Diese Funktion realisiert analog zur Funktion nfs_zaehlend eine Zählvariante der vollständigen Faktorisierung. Die Unterschiede sind identisch mit den oben beschriebenen Unterschieden zwischen den Funktionen snfs und nfs. Der Kopf der Funktion snfs_zaehlend hat folgendes Aussehen: snfs_zaehlend(N,f,m,flag,aSchranke,lhashrat,lhashalg,laenge=2,primgrenzerat, primgrenzealg,lprimgrenzerat,lprimgrenzealg). Bis auf N, f und m können für alle Parameter Default-Werte vergeben werden, so dass ein Funktionsaufruf snfs_zaehlend(N,f,m) möglich ist. • snfs_test_sieben_bIntervall_verteilt und berechne_aHaeufigkeiten Es bestehen keine Unterschiede zu den oben beschriebenen in der Datei GNFS.gp enthaltenen Funktionen. Beispiele für die Anwendung der Funktionen Jetzt setzen wir die begonnene Pari -Sitzung fort: (17:16) gp > \r GNFS.gp (17:16) gp > N=nextprime(10^7)*nextprime(10^8) %2 = 1000001970000133 (17:16) gp > suche_polynom(N) Verwendete Parameter: d= 3 lc1= 1 lc2= 5623 schritte= 2 schranke= 0 primgrenze= 34 potenzgrenze= 5 bSchranke= 150 grenzealpha= 1342 agrenzegroesse= 1342 120 A BEDIENUNGSHINWEISE FÜR DIE BEIGELEGTEN PROGRAMME bgrenzegroesse= 150 gewichtalpha= 0.500000000 gewichtgroesse= 0.500000000 Sieben: 50 Prozent Sieben: 100 Prozent Jetzt alpha-Ranking erstellen Jetzt Groessen-Ranking erstellen Jetzt kombiniertes Ranking erstellen Siegerfunktion: 672*x^3 + 1585*x^2 - 3436*x + 4837 passendes m: 11416 alpha-Wert: -0.645082811 alpha-Platzierung: 7 Groessen-Wert: 203336018549 Groessen-Platzierung: 4 Zuerst wurden die GNFS -Funktionen eingelesen, dann haben wir ein 16-stelliges N eingegeben und das beste Polynom berechnen lassen. Ausgegeben werden alle verwendeten Parameter, die in diesem Fall von der Funktion selbst bestimmt wurden (Default-Werte). Außerdem wurde von der Funktion die Variable f mit der ausgegebenen Siegerfunktion und die Variable m mit dem passenden m belegt, so dass wir jetzt die Funktion nfs_zaehlend mit diesen Variablen aufrufen können. Damit nicht zu viele Zwischenergebnisse auf den Bildschirm geschrieben werden, setzten wir den Parameter laenge auf 5. Dies bedeutet, dass jeweils nach 5 getesteten b-Werten die Anzahl der bislang gefundenen Relationen ausgegeben wird. Zuerst müssen wir jedoch die Funktion ker_mod_p installieren, die für die Teilersuche benötigt wird. (17:19) gp > install(ker_mod_p,GG) (17:19) gp > nfs_zaehlend(N,f,m,,,,,5) *** not enough precalculated primes (17:21) gp > default(primelimit,4M) primelimit = 4000000 (17:21) gp > nfs_zaehlend(N,f,m,,,,,5) Verwendete Parameter: aSchranke= 1476 primgrenzerat= 1074 primgrenzealg= 2013 laenge= 5 lhashrat= 809 lhashalg= 2427 lprimgrenzerat= 1038128 lprimgrenzealg= 3646952 anzchar= 25 Es werden 541 Relationen gesucht: Rationale Faktorbasis enthaelt 180 Elemente Algebraische Faktorbasis enthaelt 286 Elemente 25 Charaktertests werden durchgefuehrt. 121 ANHANG A Getestete b-Werte: 5 Gefundene Relationen: 144, davon 128 volle, 0 rationale Zweierzyklen und 16 algebraische Zweierzyklen. Getestete b-Werte: 10 Gefundene Relationen: 297, davon 239 volle, 11 rationale Zweierzyklen und 47 algebraische Zweierzyklen. Getestete b-Werte: 15 Gefundene Relationen: 442, davon 329 volle, 24 rationale Zweierzyklen und 89 algebraische Zweierzyklen. Getestete b-Werte: 20 Gefundene Relationen: 595, davon 403 volle, 44 rationale Zweierzyklen und 148 algebraische Zweierzyklen. Es wurden 20 b-Werte getestet. Ueberschuss: 103 Zu den Hashtabellen: rational: 165 Kollisionen (dies entspricht 25 Prozent aller Hash-Zugriffe), gefuellt zu 55 Prozent. algebraisch: 1183 Kollisionen (dies entspricht 39 Prozent aller Hash-Zugriffe), gefuellt zu 70 Prozent. Jetzt Matrix erstellen Jetzt Quadratwurzelschritt Anzahl der traegen Primzahlen: 200 Teiler: 100000007 Teiler: 10000019 N ist vollstaendig faktorisiert. Getestete Kernvektoren: 1 Gefundene Primteiler: ["100000007", "10000019"] Produkt aller Primteiler: 1000001970000133 122 A BEDIENUNGSHINWEISE FÜR DIE BEIGELEGTEN PROGRAMME Wir erkennen, dass die von Pari im Voraus berechneten Primzahlen nicht ausreichen, um die notwendigen Charaktertests bereitzustellen (denn die hierfür benötigten Primzahlen müssen größer sein als die Normen der algebraischen Large Primes). Mit dem Befehl default(primelimit,4M) haben wir Pari dazu gebracht, alle Primzahlen bis 4000000 zu berechnen und zu speichern. Wie man sieht, reichen diese aus. Zum Vergleich können wir die Funktion nfs mit dem Parameter bSchranke=20 aufrufen. Da wir wissen, dass N nur zwei Primteiler besitzt, können wir flag=1 setzen: (17:24) gp > nfs(N,f,m,1,,20,4) Verwendete Parameter: aSchranke= 1476 bSchranke= 20 schritte= 4 primgrenzerat= 1074 primgrenzealg= 2013 anzinert= 200 lprimgrenzerat= 1038128 lprimgrenzealg= 3646952 anzchar= 25 Jetzt Sieben Sieben: 25 Prozent Sieben: 50 Prozent Sieben: 75 Prozent Sieben beendet Jetzt sortieren Groesse Faktorbasis: 492 davon rationale Primelemente: 180 davon algebraische Primelemente: 286 Es wurden 403 volle Relationen, 44 rationale und 148 algebraische Zweierzyklen gefunden. Es werden alle vollen Relationen, alle rationalen und 94 von den algebraischen Zweierzyklen verwendet. Jetzt Matrix erstellen Jetzt Quadratwurzelschritt Jetzt Teiler berechnen erster Teiler: 100000007 zweiter Teiler: 10000019 getestete Kernvektoren: 1 Man erkennt, dass zur Matrixerstellung nicht alle Zweierzyklen berechnet wurden. Als Beispiel für die Anwendung der Statistikfunktionen betrachten wir die entsprechenden SNFS -Funktionen mit den Größen aus Beispiel 5.1: (17:28) gp > N=2^41-1 %3 = 2199023255551 (17:29) gp > f= x^3 - 2 %4 = x^3 - 2 (17:30) gp > m= 16384 123 ANHANG A %5 = 16384 (17:30) gp > snfs_test_sieben_bIntervall_verteilt(N,f,m,1000,6,600,1200,2,809,2019, 350000,1400000); Verwendete Parameter: aSchranke= 1000 bSchranke= 6 primgrenzerat= 600 primgrenzealg= 1200 lhashrat= 809 lhashalg= 2019 lprimgrenzerat= 350000 lprimgrenzealg= 1400000 Groesse Faktorbasis: 297 davon rationale Primelemente: 109 davon algebraische Primelemente: 186 davon Einheiten: 2 Getestete b-Werte: 3 Gefundene Relationen: 207, davon 180 volle, 11 rationale Zweierzyklen und 16 algebraische Zweierzyklen. Getestete b-Werte: 6 Gefundene Relationen: 370, davon 281 volle, 32 rationale Zweierzyklen und 57 algebraische Zweierzyklen. Es wurden 12006 Paare getestet. Aufgrund der ggT-Bedingung wurden 4405 Paare verworfen (37 Prozent). Aufgrund der rationalen LPrimschranke (lprimgrenzerat) wurden vom Rest 435 Paare verworfen (24 Prozent). Aufgrund der algebraischen LPrimschranke (lprimgrenzealg) wurden vom Rest 1385 Paare verworfen (76 Prozent). Aus den ueberlebenden 3681 Paaren fuehrten 281 zu vollen Relationen (8 Prozent). Von den partiellen Relationen besitzen: 35 Prozent eine algebraische, keine rationale Large Prime. 11 Prozent keine algebraische, eine rationale Large Prime. 54 Prozent eine algebraische, eine rationale Large Prime. Zu den Hashtabellen: rational: 72 Kollisionen (dies entspricht 17 Prozent der Hash-Zugriffe), gefuellt zu 41 Prozent. algebraisch: 341 Kollisionen (dies entspricht 25 Prozent der Hash-Zugriffe), gefuellt zu 48 Prozent. (17:34) gp > berechne_aHaeufigkeiten(%,4,1) Die ersten 1000 a-Werte werden beruecksichtigt. 124 A BEDIENUNGSHINWEISE FÜR DIE BEIGELEGTEN PROGRAMME Die a-Werte aus Abschnitt 1 des a-Intervalls (Betrag(a)=0 bis Betrag(a)=249) fuehren zu 179 vollen Relationen. Dies entspricht 64 Prozent. Die a-Werte aus Abschnitt 2 des a-Intervalls (Betrag(a)=250 bis Betrag(a)=499) fuehren zu 50 vollen Relationen. Dies entspricht 18 Prozent. Die a-Werte aus Abschnitt 3 des a-Intervalls (Betrag(a)=500 bis Betrag(a)=749) fuehren zu 32 vollen Relationen. Dies entspricht 11 Prozent. Die a-Werte aus Abschnitt 4 des a-Intervalls (Betrag(a)=750 bis Betrag(a)=999) fuehren zu 20 vollen Relationen. Dies entspricht 7 Prozent. 17:35) gp > \q Good bye! katja@samoa:~/pari > Im Fall von snfs_test_sieben_bIntervall_verteilt ist es besonders wichtig, die Bildschirmausgabe durch ein Semikolon am Ende des Aufrufs zu unterdrücken. Man erkennt, wie mithilfe des Prozentzeichens trotzdem auf das zuletzt berechnete, nicht sichtbare Ergebnis zugegriffen werden kann. Mit den Befehlen berechne_aHaeufigkeiten(%6,4,2) und berechne_aHaeufigkeiten(%6,4,3) lassen sich entsprechend die Häufigkeitsverteilungen der rationalen und algebraischen Zweierzyklen anzeigen. Aussagekräftigere Ergebnisse erhält man natürlich, wenn man das a-Intervall in mehr als 4 Bereiche aufteilen lässt. Eine laufende Berechnung kann immer mit dem Befehl Ctrl-c gestoppt werden, alle Zwischenergebnisse sind dann jedoch verloren. Mit dem Befehl \q wird die Pari -Sitzung beendet. Tipps zum Gebrauch der Funktionen Am einfachsten ist es, zunächst nur relativ kleine N in der Größenordnung von 1015 zu faktorisieren und die vorgeschlagenen Default-Werte zu übernehmen. Dann kann man von Hand einige Parameter ändern und unter anderem mithilfe der Statistikfunktionen die Auswirkungen studieren. Erst wenn man Erfahrung in der Parameterwahl gesammelt hat, sollte man sich größeren N zuwenden. Vor Beginn einer großen Faktorisierung sollten die Parameter mithilfe der Statistikfunktionen sehr sorgfältig ausgewählt werden. Des Weiteren ist es nicht mehr empfehlenswert, die Komplettfunktionen“ wie ” nfs oder snfs zu verwenden. Besser ist es, von Hand die einzelnen Unterfunktionen nacheinander durchzuführen und die Ergebnisse jeweils zu kontrollieren. Denn falls eine Funktion außerplanmäßig stoppt, z. B. weil zu wenig Speicher oder zu wenig im Voraus berechnete Primzahlen vorhanden sind, sind alle Zwischenergebnisse verloren! Sobald Variablen nicht mehr benötigt werden, sollten sie mit dem kill(<Variablenname>)-Befehl gelöscht werden, um ihren Speicherplatz wieder freizugeben. Es bleibt noch anzumerken, dass das größte Problem bei der Arbeit mit sehr großen N (ca. 40 Dezimalen) im benötigten Speicherplatz für die Matrix liegt. Aus diesem Grund ist es nicht empfehlenswert, mit Faktorbasen zu arbeiten, deren Größen 3500 deutlich überschreiten. Die vorliegenden Programme sind nicht auf die Faktorisierung sehr großer N angelegt und in dieser Hinsicht sicher noch deutlich zu verbessern. Bemerkungen zur Implementierung Weil Pari keine Referenzparameter erlaubt, ist die Arbeit mit globalen Variablen unumgänglich. So wäre es beispielsweise nicht sinnvoll, die zum Sieben verwendeten Tabellen der Primelemente, die in verschiedenen Funktionen benötigt werden, immer als Werteparameter zu übergeben, denn so würde 125 ANHANG A bei jedem Aufruf eine Kopie dieser Tabellen angelegt. Aus diesem Grund sind alle Variablen, die häufig verwendet werden oder besonders groß sind (wie die Matrix) global. Den Kommentaren zum beiliegenden Programmcode lässt sich entnehmen, welche Variablen global sind. Zusätzlich zu dieser Art globaler Variablen, die aufgrund von Speicherplatz-Ersparnis eingesetzt werden, verwenden die Zählversionen globale Variablen, die durch verschiedene Unterfunktionen verändert werden. Es sind dies z. B. die Relationenzähler und die Hashtabellen. Die Benennung der Variablen erfolgte möglichst aussagekräftig, so beginnen Variablen, die einen Vektor repräsentieren mit dem Buchstaben v, Matrix-Variablen mit m, Variablen, deren Inhalt ein Vektor von Vektoren ist, mit vv usw.. Entsprechend werden die lokalen Parameter, die den Rückgabewert einer Funktion berechnen, mit erg, verg, merg usw. bezeichnet. Zuletzt ist zu sagen, dass die Programme zwar einige falsche Eingaben auffangen (so wird beispielsweise getestet, ob alle Faktorbasis-Primzahlen modulo N invertierbar sind), als foolproof“ können ” sie jedoch nicht bezeichnet werden. Ergebnisse Die größte mit den vorliegenden Programmen faktorisierte Zahl war np(1020 ) · pp(1020 ), wobei der Ausdruck np(x)“ für nächste Primzahl größer gleich x“ und entsprechend pp(x)“ für nächste ” ” ” ” Primzahl kleiner gleich x“ steht. Als Polynom wurde f (X) = 75600 ∗ x3 + 30187 ∗ x2 + 116978770876 ∗ x − 193771195245 mit passendem m-Wert von 509517847888 ausgewählt. Die Schranke der rationalen Faktorbasis war 6500, die der algebraischen 23000 und es wurden 25 Charakter-Tests durchgeführt. So enthielt die Faktorbasis 3477 Elemente. Schranken für die Large Primes waren auf rationaler 30000000 und auf algebraischer Seite 400000000. Das Sieben von 48000 a- und 3900 b-Werten erbrachte 3748 Relationen, davon 1382 volle, 613 algebraische und 1753 rationale Zweierzyklen. Der Kern der aufgebauten Matrix modulo 2 besaß die Dimension 355, sofort der erste Kernvektor lieferte die beiden nichttrivialen Faktoren (verwendet wurden 6000 träge Primzahlen für den Quadratwurzelschritt). Zusätzlich zu den beiden Pari -Dateien enthält die beigelegte Diskette auch die Textdatei polyversuche.txt. In dieser sind einige Beispielläufe der GNFS -Polynomwahl-Funktion suche_polynom dokumentiert. Es wurden Tests durchgeführt, indem jeweils die Siebphase mit dem am besten und am schlechtesten bewerteten Polynom der Vorauswahl durchlaufen wurde. Die Vorauswahl enthält die Base-m-Polynome mit glatten Leitkoeffizienten und möglichst kleinem zweiten Koeffizient. Für die anschließenden Tests wurde die Zählfunktion zaehlendes_sieben_bIntervall_verteilt mit allen Default-Werten verwendet, so dass sich aus der Anzahl der benötigten b-Werte unmittelbar die Güte des jeweiligen Polynoms ablesen lässt. Wir erhalten folgende Ergebnisse: 126 N Benötigte b-Werte mit gutem Polynom Benötigte b-Werte mit schlechtem Polynom np(106 )·pp(106 ) 6 26 np(107 )·pp(107 ) 5 42 np(108 )·pp(108 ) 10 53 np(109 )·pp(109 ) 12 109 np(101 0)·pp(101 0) 11 121 np(105 )·pp(105 )·np(106 )·pp(106 ) 18 100 127 [CDL+ 00] [CDL+ 99] −7, 01 4000 Referenz α-Wert Schrägheitskoeffizient [LLMP93a] Juni 1990 SNFS 155 F9 |a| ≤ 1, 7 · 109 1 ≤ b ≤ 159000 4, 4 · 107 / 1, 7 · 107 1, 1 · 108 / 1, 7 · 107 109 / 109 109 / 109 |a| ≤ 9 · 109 1 ≤ b ≤ 70000 8 · 106 / 3, 5 · 106 1, 7 · 107 / 1, 2 · 107 5 · 108 / 5 · 108 109 / 109 a-Intervall b-Intervall rat. Primgrenze LI/LA alg. Primgrenze LI/LA rat. LP-Grenze LI/LA alg. LP-Grenze LI/LA 108 / — 108 / — 2 · 105 / — 2 · 105 / — 6 · 108 / 6 · 108 5 · 108 / 5 · 108 1, 7 · 107 / 1, 7 · 107 1, 7 · 107 / 1, 7 · 107 1 ≤ b ≤ 6 · 106 1 ≤ b ≤ 2, 5 · 106 — — — |a| ≤ 1, 8 · 107 — — — [CDF+ 99], [Cav00] Apr. 1999 SNFS 211 (10211 − 1)/9 81/5 · b ± 5 · 107 SIEBPHASE 100 MIPS-Jahre 60 MIPS-Jahre Aufwand 10800 −6, 25 POLYNOMWAHL-PHASE Aug. 1999 GNFS 155 RSA 155 Feb. 1999 GNFS 140 RSA 140 Überblick über Rekordfaktorisierungen Faktorisierung beendet im Algorithmus # Dezimalstellen N Anhang B 2 · 109 / 2 · 109 2 · 109 / 2 · 109 2 · 107 / 2 · 107 2 · 107 / 2 · 107 1 ≤ b ≤ 2, 2 · 107 |a| ≤ 2, 9 · 107 — — — [CDF+ 00] Nov. 2000 SNFS 227 2773 + 1 128 4 Wochen 8, 9 Aufwand in CPU-Jahren Kalenderzeit 2000 Aufwand in MIPS-Jahren 125 SGI- & SUNworkstations (i.D. 175 MHz), 60 PCs (i.D. 300 MHz) 56% davon LA Ressourcen 44% davon LI ? 340 — 100% 46000 volle und 3, 1 · 106 partielle 1/— 1/— — F9 15 Wochen 12 Wochen 160 SGI- & SUNInternet workstations Geschätztes Äquiv.: (175 - 400 MHz), 700 DEC 31008 R10000 workstations (250 MHz), (16,67 MHz) 120 Pentium II PCs (300-400 MHz), 4 Digital/Compaq boxes (500 MHz) 35, 7 8400 71% 29% 1, 3 · 108 6, 8 · 107 gesammelte Relationen 2 / 2 + special-q 3 / 2 + special-q zugelassene alg. Large Primes LI/LA 2 / 2 + special-q [1, 7 · 107 ; 3, 1 · 108 ] [1, 2 · 107 ; 9, 1 · 107 ] 2/2 RSA 155 RSA 140 zugelassene rat. Large Primes LI/LA special-q-Intervall N 8 Wochen 125 SGI- & SUNworkstations (i.D. 175 MHz), 60 PCs (i.D. 300 MHz), 10, 9 ? 58, 3% 41, 7% 5, 8 · 107 ? ? [1, 7 · 107 ; 108 ] (10211 − 1)/9 22 Wochen 150 SGI- & SUNworkstations (180-450 MHz), 100 PCs (266-600 MHz) 57, 4 ? 69, 6% 30, 4% 1, 2 · 108 ? ? [1, 7 · 107 ; 2, 2 · 108 ] 2773 + 1 ANHANG B 4, 6 · 107 3, 3 · 107 5, 3 · 107 4, 3 · 107 7 · 105 2 · 105 3, 3 · 107 2 · 107 1, 8 · 107 2≤k≤8 107 2, 9 · 107 2, 7 · 107 2, 2 · 107 1, 3 · 106 105 1, 8 · 107 9, 2 · 106 7, 8 · 106 2≤k≤3 Mehrfache Relationen Relatio- Singletons übriggebliebene nen enthaltene große Primelemente Schätzung kleine Primelemente entfernter Überschuss (mit Cliquen-Alg.) Anzahl Relationen nach Pruning Anzahl gr. Primelemente nach Pruning durchgeführte k-Merges freie Relationen 107 beim Pruning 7 · 106 beim Merg. FILTER-SCHRITT RSA 155 107 RSA 140 Grenze für große Primelemente N — — — — 4944 — — — — — — F9 2≤k≤5 1, 2 · 107 1, 4 · 107 7, 4 · 106 8 · 105 1, 3 · 106 1, 9 · 107 2, 1 · 107 2, 7 · 107 107 107 (10211 − 1)/9 2≤k≤8 ? ? ? ? ? ? ? ? 3, 4 · 107 ? 2773 + 1 B ÜBERBLICK ÜBER REKORDFAKTORISIERUNGEN 129 130 1 Monat 14 ≥ 4 (?) 39, 4 100 Cray C 916 224 64 2 GB 62, 3 6 699 191×6 711 336 100 14, 2 — F9 — — — siehe Referenz siehe Referenz siehe Referenz siehe Referenz 49, 7 199 203 × 226 688 15, 5 (3 Abhängigkeiten) ? 100 Cray C 90 121 ? ? 48, 6 4 820 249×4 895 741 ? (10211 − 1)/9 5 33 100 Cray C 90 250 64 ? 65 6 751 259×6 758 509 ? 2773 + 1 Bemerkung: Alle Daten sind gerundet und geglättet (so wurde z. B. nicht berücksichtigt, dass die Siebphase von RSA-155 nicht einheitlich war, teilweise wurden andere Schranken verwendet). Bei den Sieb-Zeilen steht LI für Line- und LA für Lattice-Sieve (konventionelles Zeilensieben und Gittersieben). Ein Fragezeichen steht für einen unbekannten, der Strich für einen nichtzutreffenden Eintrag (beispielsweise Polynomwahlphase beim SNFS ). Aufwand Quadratwurzelschritt mit SGI Origin 2000 in CPU-Std. echte Abhängigkeiten Charakter-Tests Cray C 916 100 Aufwand in CPU-Std. Rechner 64 810 MB Anzahl Pseudolösungen Speicherbedarf 32, 4 4671181 × 4 704 451 Matrixgröße Nichtnull-Einträge/Zeile 1 Woche Kalenderzeit RSA 155 MATRIX- UND QUADRATWURZEL-SCHRITT RSA 140 N ANHANG B Literaturverzeichnis [Adl91] L.M. Adleman. Factoring numbers using singular integers. In Proc. 23rd Annual ACM Symp. on Theory of Computing (STOC), pages 64–71, 1991. [BFO94] J. Brillhart, M. Filaseta, and A. Odlyzko. The number field sieve. In Proc. Sympos. Appl. Math. 48, pages 465–480. Amer. Math. Soc., 1994. [BL93] D.J. Bernstein and A.K. Lenstra. A general number field sieve implementation. In Lenstra and Lenstra, Jr. [LL93]. [BLP93] J.P. Buhler, H.W. Lenstra, Jr., and C. Pomerance. Factoring integers with the number field sieve. In Lenstra and Lenstra, Jr. [LL93]. [BLZ93] J. Buchmann, J. Loho, and J. Zayer. An implementation of the general number field sieve. In Advances in Cryptology - CRYPTO 93, volume 773 of Lecture Notes in Computer Science, pages 159–165, 1993. [Boe97] H. Boender. Factoring large integers with the quadratic sieve. PhD thesis, University of Leiden, 1997. [Bos99] S. Bosch. Algebra. Springer-Verlag, 1999. [Cav00] S. Cavallar. Strategies in filtering in the number field sieve. In Algorithmic Number Theory Symposion IV - ANTS 2000, volume 1838 of Lecture Notes in Computer Science, pages 209–231, 2000. [CDEH+ 96] J. Cowie, B. Dodson, M. Elkenbracht-Huizing, A.K. Lenstra, P.L. Montgomery, and J. Zayer. A world wide number field sieve factoring record: On to 512 bits. In Advances in Cryptology - ASIACRYPT 96, volume 1163 of Lecture Notes in Computer Science, pages 382–394, 1996. [CDF+ 99] S. Cavallar, B. Dodson, J. Fougeron, J. Gilchrist, A.K. Lenstra, P. Leyland, W. Lioen, P.L. Montgomery, A. Muffett, H. te Riehle, et al. 211-digit SNFS factorization, April 1999. Zu beziehen über ftp://ftp.cwi.nl/pub/herman/NFSrecords/SNFS-233. [CDF+ 00] S. Cavallar, B. Dodson, J. Fougeron, J. Gilchrist, A.K. Lenstra, P. Leyland, W. Lioen, P.L. Montgomery, A. Muffett, H. te Riehle, et al. 233digit SNFS factorization, November 2000. Aktuellster Rekord mit dem SNFS. Zu beziehen über ftp://ftp.cwi.nl/pub/herman/NFSrecords/SNFS-233. Unter ftp://ftp.cwi.nl/pub/herman/NFSrecords/ finden sich Daten zu vielen Rekordfaktorisierungen mit dem NFS. [CDL+ 99] S. Cavallar, B. Dodson, A.K. Lenstra, P. Leyland, W. Lioen, P.L. Montgomery, B. Murphy, et al. Factorization of RSA-140 using the number field sieve. In Advances in Cryptology - ASIACRYPT 99, volume 1716 of Lecture Notes in Computer Science, pages 195–207, 1999. 131 LITERATURVERZEICHNIS [CDL+ 00] S. Cavallar, B. Dodson, A.K. Lenstra, W. Lioen, P.L. Montgomery, B. Murphy, et al. Factorization of a 512-bit RSA modulus. In Advances in Cryptology - EUROCRYPT 2000, volume 1807 of Lecture Notes in Computer Science, pages 1–18. Springer-Verlag, 2000. [Coh78] Harvey Cohn. A Classical Invitation to Algebraic Numbers and Class Fields. Springer Verlag, 1978. [Coh96] H. Cohen. A Course in Computational Algebraic Number Theory. Springer-Verlag, 1996. [Cou93] J.-M. Couveignes. Computing a square root for the number field sieve. In Lenstra and Lenstra, Jr. [LL93]. [Dic30] K. Dickman. On the frequency of numbers containing prime factors of a certain relative magnitude. In Ark. Mat., Astronomi och fysik 22A, pages 1–14, 1930. [Dix81] J.D. Dixon. Asymptotically fast factorization of integers. Math. Comp. 36, pages 255– 260, 1981. [DL95] B. Dodson and A.K. Lenstra. NFS with four large primes: An explosive experiment. In Advances in Cryptology - CRYPTO 95, volume 963 of Lecture Notes in Computer Science, pages 28–39, 1995. [EH96] M. Elkenbracht-Huizing. An implementation of the number field sieve. Experimental Mathematics 5, pages 372–385, 1996. [Esc01] J.-P. Escofier. Galois Theory. Graduate Texts in Mathematics. Springer-Verlag, 2001. [For93] O. Forster. Analysis 1. Vieweg Verlag, 1993. [Fra02] J. Franke. 158-digit GNFS factorization, Januar 2002. Aktuellster Rekord mit dem GNFS. Zu beziehen über http://www.loria.fr/ zimmerma/records/gnfs158. [GLM94] R.A. Golliver, A.K. Lenstra, and K.S. McCurley. Lattice sieving and trial division. In Algorithmic Number Theory - ANTS 94, volume 877 of Lecture Notes in Computer Science, pages 18–27, 1994. [Hec70] E. Hecke. Vorlesungen über die Theorie der algebraischen Zahlen. Chelsea Publishing Company, 1970. [KP76] D.E. Knuth and L.T. Pardo. Analysis of a simple factorization algorithm. Ther. Comp. Sci. 3, pages 321–348, 1976. [Kra26] M. Kraitchik. Theory des Nombres, Tome II, chapter 2, pages 195–208. Gauthier-Villars, Paris, 1926. [Lan94] S. Lang. Algebra. Addison-Wesley Publishing Company, 1994. [Len87] H.W. Lenstra, Jr.. Factoring integers with elliptic curves. Ann. of Math. 126, pages 649–673, 1987. [Len92] H.W. Lenstra, Jr.. Algorithms in algebraic number theory. Bull. Amer. Math. Soc. 26, pages 211–244, 1992. [LL93] A.K. Lenstra and H.W. Lenstra, Jr., editors. The Development of the Number Field Sieve, volume 1554 of Lecture Notes in Mathematics. Springer-Verlag, 1993. [LLMP93a] A.K. Lenstra, H.W. Lenstra, Jr., M.S. Manasse, and J.M. Pollard. The factorization of the ninth fermat number. Math. Comp. 61, pages 319–349, 1993. [LLMP93b] A.K. Lenstra, H.W. Lenstra, Jr., M.S. Manasse, and J.M. Pollard. The number field sieve. In Lenstra and Lenstra, Jr. [LL93]. 132 LITERATURVERZEICHNIS [LM94] A.K. Lenstra and M.S. Manasse. Factoring with two large primes. Math. Comp. 63, pages 785–798, 1994. [LO91] B.A. LaMacchia and A.M. Odlyzko. Solving large sparse linear systems over finite fields. In Advances in Cryptology - CRYPTO 90, volume 537 of Lecture Notes in Computer Science, pages 109–133, 1991. [LS00] A.K. Lenstra and A. Shamir. Analysis and optimization of the TWINKLE factoring devise. In Advances in Cryptology - EUROCRYPT 2000, volume 1807 of Lecture Notes in Computer Science, pages 35–52. Springer-Verlag, 2000. [Mar77] D.A. Marcus. Number Fields. Springer-Verlag, 1977. [MB75] M.A. Morrison and J. Brillhart. A method of factorization and the factorization of F7 . Math. Comp. 29, pages 183–205, 1975. [Mol99] R.A. Mollin. Algebraic Number Theory. Chapman and Hall, 1999. [Mon94] P.L. Montgomery. Square roots of products of algebraic numbers. In Mathematics of Computation 1943-1993, Fifty Years of Computational Mathematics, pages 567–571, 1994. [Mon95a] P.L. Montgomery. A block lanczos algorithm for finding dependencies over GF(2). In Advances in Cryptology - EUROCRYPT 95, volume 921 of Lecture Notes in Computer Science, pages 106–120, 1995. [Mon95b] P.L. Montgomery. Square roots of products of algebraic numbers, Juny 1995. Zu beziehen über ftp://ftp.cwi.nl/pub/pmontgom/sqrt.ps.gz. [Mon00] P.L. Montgomery. Distributed linear algebra, Oktober 2000. Vorgetragen auf dem 4th Workshop on Elliptic Curve Cryptography“ in Essen, zu beziehen über ” www.cacr.math.uwaterloo.ca/conferences/2000/ecc2000/slides.html. [Mur99] B.A. Murphy. Polynomial Selection for the Number Field Sieve Integer Factorisation Algorithm. PhD thesis, Australian National University, 1999. [Neu92] J. Neukirch. Algebraische Zahlentheorie. Springer-Verlag, 1992. [Ngu98] P. Nguyen. A Montgomery - like square root for the number field sieve. In Algorithmic Number Theory - ANTS 98, volume 1443 of Lecture Notes in Computer Science, pages 151–168, 1998. [NZ76] I. Niven and H.S. Zuckerman. Einführung in die Zahlentheorie. B.I.-Wissenschaftsverlag, 1976. [Odl95] A. Odlyzko. The future of integer factorization. In Crypto Bytes: The technical newsletter of RSA Laboratories 1, No.2, July 1995. Zu beziehen über http://www.rsasecurity.com/rsalabs/cryptobytes/index.html. [Pol75] J.M. Pollard. A monte carlo method for factorization. In BIT 15, pages 331–334, 1975. [Pol93a] J.M. Pollard. Factoring with cubic integers. In Lenstra and Lenstra, Jr. [LL93]. [Pol93b] J.M. Pollard. The lattice sieve. In Lenstra and Lenstra, Jr. [LL93]. [Pom85] C. Pomerance. The quadratic sieve factoring algorithm. In Advances in Cryptology EUROCRYPT 84, volume 209 of Lecture Notes in Mathematics, pages 169–182, 1985. [Pom90] C. Pomerance. Factoring. In Proc. Sympos. Appl. Math. 42: Cryptology and Computational Number Theory, 1990. 133 LITERATURVERZEICHNIS [Pom94a] C. Pomerance. The number field sieve. In Proc. Sympos. Appl. Math. 48, pages 465–480. Amer. Math. Soc., 1994. [Pom94b] C. Pomerance. The role of smooth numbers in number theoretic algorithms. In Proc. Internat. Congr. Math., Zürich, pages 411–422. Birkhäuser Verlag, 1994. [Pom96] C. Pomerance. A tale of two sieves. Notices of the AMS, December 1996. [PS92] C. Pomerance and J.W. Smith. Reduction of huge sparse matrices over finite fields via created catastrophes. Experimental Mathematics 1, pages 89–94, 1992. [Sch99] B. Schneier. Crypto-gram newsletter, September 1999. http://www.counterpane.com/crypto-gram-9909.html. [Sha99] A. Shamir. Factoring large numbers with the TWINKLE device (extended abstract). In Cryptographic Hardware and Embedded Systems - CHES, volume 1717 of Lecture Notes in Computer Science, pages 2–12. Springer-Verlag, 1999. [Sil99] R.D. Silverman. An analysis of shamir’s factoring device, May 1999. RSA Laboratories Bulletin 12. Zu beziehen über http://www.rsasecurity.com/rsalabs/bulletins/twinkle.html. [Sil00] R.D. Silverman. A cost-based security analysis of symmetric and asymmetric key length, April 2000. RSA Laboratories Bulletin 13. Zu beziehen über http://www.rsasecurity.com/rsalabs/bulletins/bulletin13.html. [ST87] I.A. Stewart and D.O. Tall. Algebraic Number Theory. Chapman and Hall, London, 1987. 134 Zu beziehen über Index L-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 α-Wert eines Polynoms . . . . . . . . . . . . . . . . . . . 78 E-Wert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 homogenisierte Form . . . . . . . . . . . . . . . . . . . . . . 68 Adleman, L. M. . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Algorithmus, subexponentieller . . . . . . . . . . . . 11 Amdahlsches Gesetz . . . . . . . . . . . . . . . . . . . . . 110 Komplexität eines Ideals . . . . . . . . . . . . . . . . . 100 Kongruenz, einfach-quadratische . . . . . . . . . . . 6 Kongruenz, einfache . . . . . . . . . . . . . . . . . . . . . . . . 6 Kongruenz, finale . . . . . . . . . . . . . . . . . 58, 73, 105 Kongruenz, quadratische . . . . . . . . . . . . . . . . . . . 4 Konjugierte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Kraitchik, M. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4, 6 Base-m-Methode . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Bewertung, q-adische . . . . . . . . . . . . . . . . . . . . . .66 Bewertungsring . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Block-Lanczos . . . . . . . . . . . . . . . . . . . . . . . . . 40, 95 Block-Lanczos, parallel . . . . . . . . . . . . . . . . . . .111 Brillhart, J. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6, 7 Charakter-Test . . . . . . . . . . . . . . . . . . . . . . . . 88, 97 Continued-Fraction-Verfahren . . . . . . . . . . . . . . 6 croptography . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Cunninghamsche Zahlen . . . . . . . . . . . . . . . . 1, 22 Dickman-Funktion . . . . . . . . . . . . . . . . . . . . 83, 91 Dirichletscher Einheitensatz . . . . . . . . . . . 19, 22 Diskriminante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Dixon, J. D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Exponentenvektor . . . . . . . . . . . . . . . . . . 6, 40, 89 Führer einer Ordnung . . . . . . . . . . . . . . . . . . . .100 Faktorbasis . . . . . . . . . . . . . . . 6, 7, 10, 23, 53, 89 Fermat, P. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3, 4 Fermatzahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . 1, 22 Filterstrategien . . . . . . . . . . . . . . . . . . . . . . . . 48, 95 Fundamentaleinheit . . . . . . . . . . . . . . . . . . . . . . . 22 Fundamentalzykel . . . . . . . . . . . . . . . . . . . . . . . . . 43 Güte eines Polynoms . . . . . . . . . . . . . . . . . . . . . . 79 Ganzheitsbasis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Ganzheitsring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Gerade, projektive . . . . . . . . . . . . . . . . . . . . 69, 75 Gitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91 Grad einer algebraischen Zahl . . . . . . . . . . . . . 16 Grad eines Primideals . . . . . . . . . . . . . . . . . . . . . 25 Grad von Q(α) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Hashverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Hermitsche Normalform (HNF) . . . . . . . . . . . 51 HNF-Basis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Indexteiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Large-Prime-Variante . . . . . . . . . . . . . . . . . . . . . 41 Lattice Sieve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Legendre-Symbol . . . . . . . . . . . . . . . . . . . . . . . . . 87 LLL-Gitterreduktionsalgorithmus . . . . . . . . 102 logarithmische Repräsentation . . . . . . . . . . . . 30 Maximalordnung . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Merging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Modul, dualer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Montgomery, P. L. . . . . . 20, 40, 73, 80, 99, 111 Morrisson, M. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6, 7 Murphy, B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74, 80 Nenner eines Ideals . . . . . . . . . . . . . . . . . . . . . . 100 Norm einer algebraischen Zahl . . . . . . . . . . . . 18 Norm eines Ideals . . . . . . . . . . . . . . . . . . . . . 19, 66 Odlyzko, A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Ordnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Paar, gutes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Pivoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Pollard, J. M. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Polynom, schräges . . . . . . . . . . . . . . . . . . . . . . . . 80 Pomerance, C. . . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 8 Primelement, balanciertes . . . . . . . . . . . . . . . . . 96 Primideal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24, 66 Primideal, reguläres . . . . . . . . . . . . . . . . . . . . . . 100 Primtabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Primzahl, träge . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Primzahlpotenz . . . . . . . . . . . . . . . . . . . . . . . 5, 117 Pruning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Pseudo-Abhängigkeiten . . . . . . . . . . . . . . . . . . . 97 135 INDEX Quadratisches Sieb . . . . . . . . . . . . . . . . . . . 7, 8, 74 Relation, partielle . . . . . . . . . . . . . . . . . . . . . . . . . 41 Relation, freie . . . . . . . . . . . . . . . . . . . . . . . . . 37, 96 Relation, volle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Relationenmenge . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Rundenalgorithmus . . . . . . . . . . . . . . . . . . . . . . . 49 Schneier, B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106 Schrägheitskoeffizient . . . . . . . . . . . . . . . . . . . . . 80 Schroeppel, R. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Shamir, A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Sieben, logarithmisches . . . . . . . . . . . . . . . . . 9, 35 Siebmethode . . . . . . . . . . . . . . . . . . . 8, 35, 90, 107 Signatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Silverman, R. D. . . . . . . . . . . . . . . . . . . . . . . . . . 109 Singeltons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Special-q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Spur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 TWINKLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Verschiebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81 Zähler eines Ideals . . . . . . . . . . . . . . . . . . . . . . . 100 Zahl, ganzalgebraische . . . . . . . . . . . . . . . . . . . . 16 Zahl, glatte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Zahl, glatte ganzalgebraische . . . . . . . . . . . . . . 18 Zahlkörper, algebraischer . . . . . . . . . . . . . . . . . .16 Zykel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42, 95 Zykelbasis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Zyklenrang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Zyklenraum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 136