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