Number Field Sieve

Werbung
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
Herunterladen