Seminararbeit Sommersemester 2003 „Primes is in P!“

Werbung
1
PRIMES is inP!
Seminararbeit
Sommersemester 2003
Betreut durch Prof. Hinkenjann
„Primes is in P!“
Annegret Schnell
Matrikelnummer 9001813
Annegret Schnell
1
2
PRIMES is inP!
Inhaltsverzeichnis
1. Einleitung ............................................................................................................3
2. Komplexitätsklassen ............................................................................................4
2.1 Die Groß-O-Notation ......................................................................................4
2.2 Die Klasse NP.................................................................................................5
2.3 Die Klasse P....................................................................................................6
2.4 Verhältnis der Klassen NP und P.....................................................................6
2.5 Die Klasse NP-vollständig ..............................................................................6
3 Primzahlen............................................................................................................7
4 Primzahltests ........................................................................................................8
4.1 Das Sieb des Erasthotenes ...............................................................................8
4.2 Der kleine Satz von Fermat .............................................................................9
4.3 Der Miller-Test ...............................................................................................9
4.4 Der Miller-Rabin-Test...................................................................................10
5 Beweisskizze von „Primes is in P“......................................................................10
5.1 Beweisidee....................................................................................................10
5.2 Der Algorithmus ...........................................................................................12
5.2 Implementationen .........................................................................................14
6 Laufzeitbetrachtung ............................................................................................14
7 Welche Folgen hat „Primes is in P“?....................................................................15
7.1 Das Public Key Verfahren.............................................................................15
7.2 Praktische Verwertbarkeit von „Primes is in P“............................................16
Literaturverzeichnis: ...............................................................................................18
Anhang...................................................................................................................17
Lemma1 .............................................................................................................17
Lemma 2.............................................................................................................17
Lemma 3.............................................................................................................18
Annegret Schnell
2
3
PRIMES is inP!
1. Einleitung
Im August 2002 stellten drei indische Informatiker Manindra Agrawal, Neeraj Kayal
und Nitin Saxena des Department of Computer Science & Engineering Indian
Institute of Technology Kanpur ihre Arbeit “PRIMES is in P“ in das Internet, in der
sie bewiesen, dass es möglich ist , in polynomieller Laufzeit zu berechnen, ob eine
Zahl eine Primzahl ist. Dieser Beweis löst ein mathematisches Problem, das seit
Jahrhunderten die Mathematiker beschäftigt hat.
Manindra Agrawal ist Informatiker und Komplexitätstheoretiker. Er lehrt an dem
Indian Institute of Technology Kanpur. Neeraj Kayal und Nitin Saxena sind
Studenten von Professor Agrawal, die erst im Frühjahr 2002 ihren Bachelor
Abschluss an dem Indian Institute of Technology Kanpur machten. In ihrer
gemeinsamen Bachelorarbeit leisteten sie schon Vorarbeit für diesen Beweis.
Zusammen mit Professor Agrawal gelang ihnen dann kurze Zeit später der
Durchbruch. Ihre Beweisidee erhält den Namen Satz von Agrawal- Kayal- Saxena
und der daraus resultierende Algorithmus wird als AKS-Algorithmus bezeichnet
In dieser Seminararbeit werden Primzahlen, Primzahltests und Komplexität von
Problemen aus verschiedenen Blickwinkel betrachtet. Im ersten Kapitel werden die
verschiedenen
Komplexitätsklassen
vorgestellt.
Die
Groß-O-Notation
wird
vorgestellt und im Besonderen werden die Klasse NP und P voneinander abgegrenzt.
Das zweite Kapitel handelt von der Faszination Primzahlen und mathematisch
wichtigen Erkenntnissen, die Primzahlen betreffen. Im dritten Kapitel werden die
Primzahltests vorgestellt, die bis zur Veröffentlichung von “PRIMES is in P“
bekannt waren. Hier wird näher auf den Satz von Fermat und den Miller-Rabin Test
eingegangen. Im vierten Kapitel wird die Beweisidee der drei indischen Informatiker
skizziert. Dieser Beweis wird von vielen Mathematikern als erstaunlich kurz,
„schön“ und verblüffend einfach charakterisiert. Das letzte Kapitel handelt von den
Folgen dieses neuen Primzahltests. Hier stellte sich zuallererst die Frage nach der
Relevanz des Tests für die Vielzahl kryptografischen Verfahren, die auf Primzahlen
basieren. Auch die Abschätzung der effektiven Laufzeit dieses Algorithmus wird
betrachtet und damit verbunden seine praktische Relevanz. Verändert dieser Beweis
die Welt der Mathematik und wenn in wie weit?
Annegret Schnell
3
4
PRIMES is inP!
2. Komplexitätsklassen
Probleme werden anhand ihrer Komplexität in verschiedene Komplexitätsklassen
eingeteilt. Unter Komplexität versteht man den Aufwand, den man benötigt um ein
Problem zu lösen; sie bestimmt die Rechenkapazität, die zur Ausführung des
Problems notwendig ist.
2.1 Die Groß-O-Notation
Die Berechnungskomplexität eines Algorithmus wird in der Groß-O-Notation
angegeben.
Diese Notation gibt die Größenordnung der Komplexität mit einer
Komplexitätsfunktion an. Man betrachtet immer den Fall, der den größten Aufwand
erfordert. Konstanten oder Terme mit niedrigerer Ordnung werden vernachlässigt.
Wichtig ist, dass die Komplexität immer abhängig von der Größe der Eingangsdaten
ist.
In der folgenden Tabelle werden einige wichtige Größenordnungen
zusammengefasst.
Größe der Eingangsdaten ist n
konstant
O(1)
logarithmisch
O(log n)
linear
O(n)
quadratisch
O( n2 )
polynomiell
O( n ) für k>=0
exponentiell
O( k ) für k>=2
k
n
Tabelle 2.1 Größenordnungen der Groß-O-Notation
Die Laufzeit der obigen Größenordnungen nimmt von oben nach unten zu. Alle
Algorithmen deren Größenordnungen kleiner der exponentiellen Größenordnung
sind, können praktisch berechnet werden. Es gibt Rechenregeln für die
verschiedenen
Kombinationen
von
Größenordnungen.
Annegret Schnell
So
ist
z.B.
das
4
5
PRIMES is inP!
Hintereinanderschalten von 2 linearen Funktionen wieder linear. Das Problem der
exponentiellen Größenordnung ist, dass sich der Aufwand schon bei einer Erhöhung
um 1 verdoppelt. Die Komplexität, die in diesem Beweis eine große Rolle spielt ist
die polylogarithmische mit einer Laufzeit von
O(log k n) .
Ein bekanntes Beispiel für eine exponentielle Zeitkomplexität ist das „Travelling
Salesman Problem“. Das „Travelling Salesman Problem“ kann mit einem nicht
deterministischen Algorithmus beschrieben werden. Dies führt uns zu den Klassen
der nicht deterministischen Algorithmen NP und der deterministischen Algorithmen
P.
2.2 Die Klasse NP
Alle nicht deterministischen Probleme, die in polynomieller Zeit von Algorithmen
gelöst werden können, liegen in der Klasse NP. Zuerst gilt die Frage zu klären: Was
ist ein nicht deterministischer Algorithmus?
Bei einem nicht deterministischen Algorithmus handelt es sich um einen Algorithmus,
der in seinem Ablauf nicht eindeutig ist. Das heißt, es kann an einem Zwischenpunkt
des Algorithmus mehrere verschiedene, beliebige Möglichkeiten in der Ausführung
geben .Bei gleicher Eingabe kann es verschiedene Resultate geben.
Man kann diesen Möglichkeiten Wahrscheinlichkeiten zuordnen und man nennt
diese Algorithmen dann probabilistische Algorithmen. Bei nicht deterministischen
Algorithmen bestehen Zuordnungen und keine Funktionen zwischen Eingabe- und
Ausgabedaten. Dies hat Auswirkung auf die Komplexität.
Nicht deterministischen Probleme könne auch deterministisch gelöst werden, was zur
Folge hat, dass die Laufzeit exponentiell zunimmt. Es ist ein weit verbreiteter Irrtum,
dass ein Problem in NP „nicht polynomiell“ bedeutet. Bei steigender Anzahl n eines
Problems kann dies bedeuten, dass ein Problem unlösbar wird. Das „nicht“ bezieht
sich aber nur auf den Determinismus und nicht auf das polynomiell Berechenbare.
Große Bedeutung haben Probleme der Klasse NP für die Kryptoanalyse. So können
z.B. verschlüsselte Texte in polynomieller Zeit entschlüsselt werden, indem der
Klartext erraten wird und dann in polynomieller Zeit überprüft wird, ob er richtig ist.
Würde man alle möglichen Lösungen betrachten, käme man zu einer exponentiellen
Annegret Schnell
5
6
PRIMES is inP!
Laufzeit. Dies heißt, dass auch Probleme der Klasse NP in der Kryptographie nicht
absolut sicher sind.
2.3 Die Klasse P
Alle deterministischen Probleme, die in polynomieller Zeit von Algorithmen gelöst
werden können, liegen in der Klasse P.
Definition von Determinismus:
Bei einem deterministischen Algorithmus handelt es sich um einen Algorithmus, der
in seinem Ablauft eindeutig ist. Das heißt, es kann an einem Zwischenpunkt des
Algorithmus keine verschiedenen Möglichkeiten in der Ausführung geben .Bei
gleicher Eingabe kann es nur ein Resultat geben.
2.4 Verhältnis der Klassen NP und P
Es ist unstrittig in der Mathematik, dass die Klasse NP die Klasse P mit einschließt,
d.h. das P eine Teilmenge von NP ist. Eine Frage, die die Mathematiker und
Informatiker jedoch seit Jahren beschäftigt, ist, ob P = NP ist oder nicht. Wenn es
zutreffen würde, dass P = NP, dann würde dies bedeuten, dass alle nicht
deterministischen Probleme, die in polynomieller Zeit gelöst werden, auch mit einem
deterministischen Algorithmus lösbar wären. Dies wäre sehr wünschenswert, aber
bleibt unwahrscheinlich. Es besteht die
Vermutung, dass es Probleme gibt, die in
der Klasse NP liegen, aber nicht in der Klasse P.
2.5 Die Klasse NP-vollständig
Problem der Klasse NP-vollständig lassen sich folgendermaßen definieren:
Ein Problem ist NP-vollständig, wenn es zur Klasse NP gehört und wenn es mit
poynomiellem Zeitaufwand in ein anderes Problem der Klasse NP überführbar ist.
Das bekannteste Problem ist das „Travelling Salesman Problem“, von dem gezeigt
werden kann, dass, wenn es eine effiziente Lösung für dieses Problem gibt, dies auch
eine Lösung für den Hamilton-Zyklus wäre. Ein Hamilton-Zyklus ist in einem
Graphen der Weg, der über jeden Knoten genau einmal führt und am selben Knoten
endet, wo er begonnen hat.
Annegret Schnell
6
7
PRIMES is inP!
Man kann auch sagen, dass die NP-vollständigen Probleme eine Äquivalenzklasse in
der Klasse der NP bilden.
Zurzeit sind mehr als 1000 NP-vollständige Probleme bekannt. Eines davon ist
besonders für die Kryptoanalyse von besonderer Bedeutung und zwar die
Primfaktorzerlegung. Auch dieses Problem ist NP-vollständig und somit hofft man,
dass P wirklich ungleich NP ist.
3 Primzahlen
Primzahlen beschäftigen und faszinieren den Menschen seit über zweitausend
Jahren.
Hier zuerst die mathematische Definition einer Primzahl:
Eine Primzahl ist eine ganze Zahl, die größer 1 ist und die nur durch 1 und sich
selbst teilbar ist.
Primzahlen spielen eine große Rolle für zusammengesetzte Zahlen. Jede
zusammengesetzte Zahl wird eindeutig durch ihre Primzahlfaktoren bestimmt. Schon
die alten Griechen haben bewiesen, dass es unendlich viele Prinzahlen gibt und dass
die Abstände zwischen zwei aufeinander folgenden Primzahlen sehr unregelmäßig
sein können. Im neunzehnten Jahrhundert wurde gezeigt, dass die Anzahl der
Primzahlen unterhalb einer Zahl n ungefähr n/logn ist. So dass für eine grobe
Schätzung für die n-te Primzahl n * logn angenommen wird.
Nur 4% der ganzen Zahlen bis 25 Billionen sind Primzahlen; der Anteil der
Primzahlen nimmt bei ansteigender Zahl sogar noch ab. Es gibt kein wahrnehmbares
Muster in der Verteilung der Primzahlen und seit langer Zeit steckt der Mensch
große Energien in die Lösung dieses Rätsels.
Es gibt eine unter dem Namen GIMPS (Great Internet Mersenne Prime Search)
zusammengeschlossene Internetgemeinde, die auf der Suche nach immer neuen
Primzahlen mittlerweile bei einer Primzahl mit 4 Millionen Stellen angekommen ist.
Bei dieser Primzahl handelt es sich um eine Mersenne Primzahl. Die Definition einer
Mersenne Primzahl ist:
Annegret Schnell
7
8
PRIMES is inP!
Eine Mersenne-Primzahl ist eine Primzahl des Typs 2p-1, wobei p eine andere
Primzahl ist. Nicht alle Zahlen dieses Typs sind Primzahlen, wie z.B. 211 -1, aber
wenn sie prim ist, dann ist sie eine Mersenne Primzahl.
Die Bedingung der Mersenne Primzahl wird genutzt, da so eine Primzahl dank des
Lucas-Lehmer-Tests leichter zu berechnen ist.
Das GIMPS Projekt nutzt ebenso wie „Seti“ das Prinzip des verteilten Rechnens. 130
Tausend Freiwillige stellen ihren Rechner zu Zeiten, wo er nicht genutzt wird (Idle
Zeiten) zur Verfügung. Sie erreichen damit eine Rechenleistung von 2,5 Billionen
Gleitkommaoperationen pro Sekunde. Im Dezember 2001 wurde die bis jetzt größte
Mersenne Primzahl entdeckt und lautet: 2
13466917
-1.
Den Entdeckern solcher Primzahlen ist Ruhm und Ehre gewiss, aber auch finanziell
lohnen sich solche Entdeckungen. Für die Berechnung der ersten Primzahl mit 10
Millionen Stellen ist eine Prämie von 100.000 Dollar ausgesetzt. Es stellt sich die
Frage nach dem Sinn solcher Entdeckungen. Doch auch wenn sie nicht kommerziell
zu nutzen sind, dienen sie mit immer neuen Algorithmen der Zahlentheorie und
daraus resultierend der Kryptographie.
4 Primzahltests
4.1 Das Sieb des Erasthotenes
Es gibt viele verschiedene Primzahltests, die vor „Primes is in P“ bekannt waren.
Einer der ersten Primzahltests war das Sieb des Erastothenes, der 200 vor Christi
lebte.
Dieser Test funktioniert als Sieb, indem alle Vielfachen einer Zahl
„herausgesiebt werden“. Man beginnt mit der 2 und fährt fort bis zur gewünschten
Höhe. Alle Zahlen, die nicht durch das Sieb gefallen sind, sind Primzahlen.
Das Sieb des Erastothenes kann auch anders formuliert werden. Um zu testen, ob
eine Zahl n prim ist oder nicht, teile man sie durch alle Primzahlen die kleiner die
Wurzel aus n sind. Ist n durch keine dieser Zahlen teilbar, so ist sie prim. Die
Laufzeit dieses Algorithmus wächst exponentiell mit der Größe der Eingabe und ist
schnell bei großen Zahlen nicht mehr berechenbar.
Annegret Schnell
8
9
PRIMES is inP!
4.2 Der kleine Satz von Fermat
Im siebzehnten Jahrhundert wurde folgender Satz als „kleiner Satz des Fermat“
bekannt:
Wenn n eine Primzahl ist, dann gilt für alle a
, die nicht durch n teilbar sind:
a n-1 mod n=1. a
Man suche sich also irgendeine Zahl aus, die nicht durch n teilbar ist wie z. B 2 und
berechne 2 n-1 mod n.
Ist das Ergebnis ungleich 1, dann ist n mit Sicherheit keine Primzahl. Ist das
Ergebnis 1, dann ist n wahrscheinlich eine Primzahl. Dies bedeutet, dass der Satz von
Fermat ein Beweis gegen die Primalität, aber nicht für die Primalität ist. Daher
spricht man z.B. in unserm Beispiel auch von der 2 als Zeuge(witness) gegen die
Primalität. Möchte man eine hundertprozentige positive Antwort, ob n eine
r
Primzahl a 2 ist oder nicht, muss man den gleichen hohen Aufwand betreiben, wie
beim Sieb des Erastothenes.
4.3 Der Miller-Test
Der Miller-Test ist eine Verschärfung des Fermat Testes:
Es sei n eine ungerade natürliche Zahl und es sei
s = max{r N:
2r
teilt n-1}
s
Daraus folgt, dass 2 die größte Potenz ist, die n-1 teilt. Setze d = (n-1)/ 2
s
s
Sei n prim (n>2) und n-1 = 2 *r mit r ungerade. Sei 1 < a < n.
Dann ist
ad
1mod n oder für ein r: 0<=r<=s-1 muss gelten a
2r *d
-1 mod n.
Eine dieser beiden Bedingungen muss erfüllt sein, falls n eine Primzahl ist. Gibt es
eine Zahl a, sodass diese beiden Bedingungen nicht erfüllt sind, ist ein weiterer
Zeuge gegen die Primalität gefunden. Also auch dieser Test ist nur ein
hundertprozentiger Beweis, dass eine Zahl keine Primzahl ist.
Annegret Schnell
9
10
PRIMES is inP!
4.4 Der Miller-Rabin-Test
Der Test von Miller wurde von Michael O. Rabin erweitert.
Wenn n eine Primzahl ist, dann ist
n
ein Körper. In einem Körper hat jede
quadratische Gleichung höchstens zwei verschiedene Lösungen. Nun hat aber in
n
2
die quadratische Gleichung x = 1 schon die beiden Lösungen x = 1 und x = -1 =
n-1. Da n > 2 vorausgesetzt werden kann, sind diese auch verschieden. Gibt es nun
noch eine weitere Lösung x, dann kann
n
kein Körper sein. Dann kann auch n keine
Primzahl sein.
Die Wahrscheinlichkeit, dass eine zusammengesetzte Zahl vom Miller-Rabin-Test
nicht erkannt wird ist halb so groß, wie beim Fermat-Test. Da die Laufzeit jedoch
gleich ist und auch die Implementation einfacher ist, wird der Miller-Rabin-Test dem
Fermat-Test vorgezogen.
5 Beweisskizze von „Primes is in P“
5.1 Beweisidee
Der Beweis geht von folgender Identität für Primzahlen aus[1].
Identität:
Man nehme an, dass a eine zu p teilerfremde Zahl ist, dann ist p eine Primzahl und
zwar nur dann, wenn
( x − a ) p ≡ ( x p − a ) mod p
Diese Schreibweise bedeutet : Man multipliziere das Polynom ( x − a ) p aus und
nehme jeden Koeffizienten modulo p.
Beweis
i
Für 0<i<p ist der Koeffizient von xi in (( x − a ) p − ( x p − a)) ist (−1)
Wenn p prim ist, dann ist der Binomialkoeffizient
teilbar, da
( ) ≡ 0 mod p .
( )a
p
i
p −i
.
( ) für alle 1<=i <=p-i durch p
p
i
p
i
p − i + 1)
( ) = p( p −i1)......(
c
(i − 1)...1
p
i
2
Der Zähler enthält p als Faktor, ist also durch p teilbar, der Nenner kann nicht durch
p teilbar sein, da p eine Primzahl ist und i <= p ist.
Daher bleiben nur die Terme übrig für die i=0 und i=p
Annegret Schnell
10
11
PRIMES is inP!
p
( x − a ) ≡ x p − a p mod p
Nach dem kleinen Satz von Fermat gilt a p ≡ a mod p
p
=> ( x − a ) ≡ x p − a mod p
Wenn p eine zusammengesetzte Zahl ist, dann nehme man eine Zahl q, die ein
Primfaktor von p ist. Es gibt den Summand
0 <= q <= p. Aus Lemma 1 folgt, dass
(qp ) ⋅ a q ⋅ x p −q in der obigen Summe, da
( qp )
nicht durch p teilbar ist. Es bleibt also
noch zu zeigen, dass a q nicht durch p teilbar ist.
Nach Vorraussetzung gilt, dass ggT(a,p) = 1 => ggT( a q , 1)
Damit ist gezeigt, dass der Ausdruck
(qp ) ⋅ a q ⋅ x p −q nicht durch p teilbar ist, woraus
folgt, dass er nicht gleich Null modulo p ist.
Damit ist die obige Identität bewiesen.[4]
Laufzeit dieser Identität und neuer Beweisansatz
Mit obiger Formel ist es also möglich festzustellen, ob eine Zahl eine Primzahl ist
oder nicht. Man wähle ein p, generiere ein Polynom P(x)= x-a und berechne ob die
Identität gilt. Dies benötigt aber exponentielle Laufzeit, da auf der linken Seite der
Kongruenzgleichung im schlimmsten Fall p Koeffizienten berechnet werden müssen.
Anstatt mit den viel zu großen Polynompotenzen ( x − a) p zu rechnen versuchte
Manindra Agrawal mit seinen Studenten deren Reste nach einer Division von
( x r − 1) zu betrachten
Dies führte zu dem Ansatz zu prüfen, ob folgende
Behauptung standhält:
( x − a) p ≡ ( x p − a)(mod xr − 1, p)
Zwischenbemerkung:
Die Notation ( x − a) p ≡ ( x p − a)(mod xr − 1, p) bedeutet die Gleichheit der Reste der
Polynome ( x − a ) p und ( x p − a ) nach Division durch ( x r − 1) und Division der
Koeffizienten durch p.
Annegret Schnell
11
12
PRIMES is inP!
Durch obige Identität ist klar, dass die Behauptung für Primzahlen korrekt ist für alle
Werte von a und r. Es könnte aber auch sein, dass auch einige zusammengesetzte
Zahlen diese Bedingung erfüllen. Dies führt zu folgendem Satz:
Hauptsatz
Sei n ∈ N mit n>=2 beliebig und r mit 2<=r<=n-1 eine Primzahl mit ggT(r,n) = 1.
Wenn die folgenden Bedingungen a) bis d) erfüllt sind, dann ist n eine
Primzahlpotenz, also n = pi für eine Primzahl p und i>=1.
Definiere L:= 2 ⋅ r ⋅ log n
a) r-1 hat einen Primteiler q >= L
b) n ( r −1) / q ≠ 1mod r
c) Für alle 1 <= a <= L gilt ggT(a,n)=1
d) Für alle 1 <= a <= L gilt ( X − a ) n ≡ ( X n − a )(mod n, X r − 1)
Auf einen Beweis dieses Satzes wird verzichtet, da dies den Rahmen dieser
Seminararbeit sprengen würde.
Dieser Satz führt zu dem folgenden Algorithmus.
5.2 Der Algorithmus
Manindra Agrawal, Neeraj Kayal und Nitin Saxena stellten folgenden Algorithmus
auf. [1]
Input: integer n > 1
1. if ( n is of the form ab , b > 1 ) output COMPOSITE;
2. r = 2;
3. while(r < n) {
4.
if ( gcd(n,r) ≠ 1 ) output COMPOSITE;
5.
if (r is prime)
6.
let q be the largest prime factor of r - 1;
7.
8.
if ( q ≥ 4 r log n ) and ( n
break;
r −1
q
≠ 1(mod r ))
Annegret Schnell
12
13
PRIMES is inP!
9.
r r + 1;
10. }
11. for a = 1 to 2 r log n
12.
if (( x − a) ≠ ( x − a )(mod x − 1, n)) output COMPOSITE;
13. output PRIME;
n
n
r
Behauptung:
Der Algorithmus gibt PRIME zurück, wenn und nur wenn n eine Primzahl ist.
Der Algorithmus beinhaltet 2 Schleifen. In der While Schleife versucht man eine
Primzahl r zu finden, so dass (r-1) eine großen Primfaktor q hat, für den gilt dass
q 4 r log n und dass q ein Teiler von or (n) ist, wobei mit or (n) die Ordnung von n
modulo r bezeichnen wird. In Lemma 2 wird gezeigt, dass es dann möglich ist, die
Anzahl der Iterationen der While Schleife, nach denen es möglich ist ein solches r zu
finden, zu begrenzen.
Beweis wird in 2 Teilen geführt:
Als erste wird bewiesen, dass der Algorithmus COMPOSITE zurückgibt, wenn n
zusammengesetzt ist.
Es gilt drei Stellen zu betrachten, an denen die Aussage COMPOSITE auftreten
kann.
In Zeile 1 wird COMPOSITE ausgegeben, wenn n eine Potenz einer ganzen Zahl ist.
Daraus folgt natürlich, dass n keine Primzahl sein kann.
In Zeile 4 wird COMPOSITE ausgegeben, wenn ggT(n,r) ungleich 1. Alle
Primzahlen haben keinen gemeinsamen Teiler mit einer anderen Zahl, der größer als
1 ist.
In Zeile 12 wird COMPOSITE ausgegeben, wenn die While Schleife über ein break
verlassen wurde, da die Bedingungen a) -c) des Hauptsatzes erfüllt sind und in Zeile
12 Bedingung d) in ihrer Negation abgefragt wird, folgt daraus, dass n keine
Primzahl sein kann.
Im zweiten Teil des Beweises wird gezeigt, dass der Algorithmus PRIME
zurückgibt, wenn n eine Primzahl ist.
Annegret Schnell
13
14
PRIMES is inP!
Wird die While Schleife nicht über ein break verlassen, wurde für alle 1 <= r <= n-1
festgestellt, dass der ggT(r,n) = 1, woraus folgt, dass n eine Primzahl ist.
Am Ende der For Schleife wird PRIME zurückgegeben, wenn für eine bestimmte
Anzahl von a's gezeigt wurde, dass Bedingung d) des Hauptsatzes erfüllt ist. Da die
ersten Bedingungen ebenfalls erfüllt sind, ist n also eine Primzahlpotenz. Hier bleibt
nur noch zu zeigen, dass n nicht wie im Hauptsatz eine Primzahlpotenz sondern eine
Primzahl ist.
Wäre n eine Primzahlpotenz n= pi mit i >=2 so wäre dies in Zeile 1 entdeckt
worden, woraus folgt, dass i nur eins sein kann und die Ausgabe PRIME korrekt ist.
5.2 Implementationen
Es gibt verschiedene Implementationen dieses Algorithmus in verschiedenen
Programmiersprachen. Diese könne unter folgendem Link gefunden werden:
http://fatphil.org/maths/AKS/#Implementations
6 Laufzeitbetrachtung
Zuerst werden die Operationen der While Schleife betrachtet.
Laufzeit der Fragestellung n= ab für b>=2? . Da hier binäre Suche verwendet wird,
führt dies zu einer Laufzeit von O(log c n) für eine Konstante c.
Laufzeit der ggT Bestimmung benötigt mit Euklidischem Algorithmus in O(log n).
Laufzeit die zur Berechnung von n
r −1
q
≠ 1(mod r )) benötigt wird ist O(log n).
Laufzeit der Berechnung, ob r eine Primzahl ist und Berechnung des Primteilers q
benötigen trotz trivialer Primzahlberechnung nur O(log c n) , da r von der
Größenordnung
(log 6 n) ist.
Mit Lemma 2 und Lemma 3 kann gezeigt werden, dass es ein solches r gibt, woraus
folgt, dass die While Schleife nach O(log 6 n) Schritten verlassen wird.
Annegret Schnell
14
15
Die
PRIMES is inP!
For
Schleife
hat
ebenfalls
eine
Laufzeit
von O(log c n) ,
da
( X − a)n (mod n, X r − 1) mit O(log n) Multiplikationen von Polynomen vom Grad
kleiner r berechnet wird, da r polylogarithmisch ist.
c
Die Laufzeit insgesamt ist O (log n)
. Handelt es sich um so genannte Sophie-
Germaine Primzahlen ist c=6, ansonsten c= 10,5 .
Damit ist gezeigt, dass es in polynomieller Rechenzeit möglich ist, zu bestimmen, ob
eine Zahl eine Primzahl ist. [4]
7 Welche Folgen hat „Primes is in P“?
In wie weit verändert „Primes is in P“ die mathematische und vor allem die
kryptographische Welt? Eine der Hauptbefürchtungen (von Nichtmathematikern)
war, ob damit die Sicherheit der kryptographischen Verfahren, die auf Primzahlen
beruhen, nicht mehr gegeben sei. Im folgenden Abschnitt 7.1 wird deswegen kurz am
Beispiel des Public Key Verfahrens, beschrieben, welche Rolle Primzahlen in der
Kryptographie spielen. Im Abschnitt 7.2 wird die praktische Verwertbarkeit des
neuen Primzahltests näher beleuchtet.
7.1 Das Public Key Verfahren
Das Public Key Verfahren beruht auf der asynchronen Verschlüsselung mit 2
Schlüsseln. Es existieren ein geheimer privater Schlüssel und ein öffentlicher public
Schlüssel.
Man wähle: 2 Primzahlen p, q (384 - 512 Bit)
n = p*q (n zwischen 512 und 1024 Bit)
wähle e (klein, ungerade) mit ggT(e, j(p,q)) = 1
j(p,q) = (p-1)(q-1)
berechne d mit de = 1 mod j(p,q)
Öffentlicher Schlüssel: P = (e,n)
Geheimer Schlüssel: S = (d,n)
Verschlüsseln E(M) = M e mod n M
Zn
Annegret Schnell
15
16
PRIMES is inP!
Entschlüsseln: D(C) = C d mod n
Um diese Schlüssel berechnen zu können, muss man in der Lage sein, große Zahlen
in ihre Primfaktoren zu zerlegen. Es gibt aber heute noch kein effizientes Verfahren,
was dieses leistet. Auch der Algorithmus von Manindra Agrawal, Neeraj Kayal and
Nitin Saxena löst dieses Problem nicht, da er nicht auf Primfaktorzerlegung beruht,
sondern nachweist, ob eine Zahl eine Primzahl ist oder nicht.
7.2 Praktische Verwertbarkeit von „Primes is in P“
Wie auch beim Public Key Verfahren werden in der Kryptographie große Primzahlen
benötigt, doch dafür gab es auch vor „Primes is in P“ effiziente Verfahren, die
genügend große Primzahlen in relativ kurzer Zeit generieren können. Diese
Verfahren generieren Primzahlen mit einer geringen Wahrscheinlichkeit eines
Fehlers, der in der Praxis jedoch vernachlässigbar ist. Diese Verfahren sind
wesentlich schneller als der Algorithmus von Manindra Agrawal, Neeraj Kayal and
Nitin Saxena. Jedoch ist deren Ergebnis ein Meilenstein in der Komplexitätstheorie
und kein Mathematiker gibt sich mit der Wahrscheinlichkeit eines Fehlers zufrieden
und versucht nicht nur einen Fehler zu minimieren, sondern sein Anliegen ist es,
einen exakten Beweis für ein mathematisches Problem zu finden, so wie es den drei
indischen Mathematikern gelungen ist.
Die Definition von Komplexitätsklassen in P und NP ist rein theoretischer Natur. Der
Unterschied im Laufzeitverhalten tritt manchmal erst für sehr große Zahlen in
Erscheinung. Die Realisierung des Algorithmus für solch große Zahlen ist mit der
heutigen Hardware nicht möglich.[2]
Im Gegensatz dazu werden „Industrial-grade-primes“, die 500 Dualstellen
aufweisen, mit Hilfe des Miller-Rabin-Tests in der Größenordnung von
Millisekunden erzeugt. Der Algorithmus von Manindra Agrawal, Neeraj Kayal and
Nitin Saxena würde für die Berechnung einer ähnlich großen Primzahl ungefähr 3
Monate benötigen.
Dies zeigt, dass „Primes is in P“ noch keine praktische Relevanz aufweist, jedoch die
Lösung eines mathematischen Problems, an dem sich seit Jahrhunderten die
Wissenschaftler versucht haben, gelungen ist. Selbst Manindra Agrawal betont, dass
Annegret Schnell
16
17
PRIMES is inP!
es eine intellektuelle Herausforderung gewesen sei, dieses uralte Problem der
Mathematik zu lösen.
Andererseits gibt es schon Workshops, die versuchen die Ergebnisse des Beweises
von Manindra Agrawal, Neeraj Kayal und Nitin Saxena für die Berechnung der
Primfaktorzerlegung zu nutzen.
Einige Mathematiker haben mittlerweile schon Verbesserungen in der Laufzeit
aufgezeigt und es wird sicherlich in den nächsten Jahren weiter Ergebnisse und
Erweiterungen zu diesem Beweis geben.
Anhang
Lemma1
Man wähle eine zusammengesetzte Zahl p ist, dann nehme man eine Zahl q, die ein
Primfaktor von p ist und für die gilt, dass
Teiler von p ist.
Behauptung:
qk
ist kein Teiler von
qk
ein Teiler von p ist und q k +1 kein
( qp )
Beweis mit Widerspruch: Man nehme an, dass
daraus, dass
qk
p
ein Teiler von ( q ) ist, dann folgt
( qp ) =a q k für irgendeine positive Zahl
n(n − 1)(n − 2)...(n − q + 1)
= aq k
q!
a (q − 1)!q k +1
n=
(n − 1)(n − 2)...(n − q + 1)
diese Gleichung kann man umformen zu
daraus folgt, dass q k +1 ein Teiler von n, ist was ein Widerspruch zur Voraussetzung
ist.
Lemma 2
Sei P(n) sei der größte Primteiler von n. Dann existiert eine Konstante c>0und ein n0
so dass für alle x n0 gilt
|{p|p ist prim, p x und P(p-1) >
x
2
3
}| c
x
log x
Annegret Schnell
17
18
PRIMES is inP!
Lemma 3
Behauptung: Es gibt 2 positive Konstanten
c1 und c2 zu denen es eine Primzahl r im
Intervall [ c1 (log n) 6 , c2 (log n) 6 ] gibt, so dass (r-1) eine Primfaktor q besitzt, für
den gilt dass q ≥ 4 r log n und dass q ein Teiler von or (n) ist.
Literaturverzeichnis:
[1] Manindra Agrawal, Neeraj Kayal.Nitin Saxena, Primes is in P, IIT Kanpur. Pt
vom 6.8.2002, www.cse.iitk.ac.in/news/primality.html online 15.04.2003
[2]Frank Bornemann, Ein Durchbruch für "Jedermann", DMV- Mitteilungen
www.mathematik.de/01aktuelles/s1_2/bornemann.pdf, online 15.04.2003
[3] Michiel Smid, Primality testing in polynomiell time vom 10.03.2003
www.mathematik.de/01aktuelles/s1_2/bornemann.pdf online 15.04.2003
[4] Thomas Hofmeister, Primzahltest in Polynomialzeit zur Vorlesung
Komplexitätstheorie im WS 2002/03,
ls2-www.cs.uni-dortmund.de/lehre/winter200203/kt/material/primes.ps
online 15.04.2003
Annegret Schnell
18
Herunterladen