AKDIS Weiterführende Kapitel aus Diskreter Mathematik

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