Kryptologie/Fermat-Test (Primzahltest 2)

Aus testwiki
Version vom 8. März 2020, 11:26 Uhr von imported>Philip Holtappel (Veränderung von OER-Materialien gekennzeichnet)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen


Einleitung

Der Fermat-(Primzahl-)Test beruht auf dem kleinen Satz von Fermat. Dieser Satz liefert uns eine Eigenschaft, die alle Primzahlen erfüllen[1].

Satz (Kleiner Satz von Fermat)

Primzahl, Teilerfremdheit, Kongruenz und Teilbarkeit
Primzahl
Sei p mit p>1, dann heißt p Primzahl oder prime Zahl, wenn gilt:

p besitzt nur zwei Teiler in , nämlich 1 und p.

Andernfalls heißt p zusammengesetzte Zahl[2].

Teilerfremdheit
Zwei ganze Zahlen a und b, wobei mindestens einer der beiden Zahlen ungleich Null ist,

heißen teilerfremd, wenn ggT(a,b)=1[3]. Betrachten wir mehr als zwei Zahlen, dann

nennen wir diese paarweise teilerfremd, wenn je zwei beliebige von diesen Zahlen

zueinander teilerfremd sind[4][3].

Kongruenz
Seien a,b und m, dann gilt abmodmm(ab)[5].
Teilbarkeit
Eine ganze Zahl a teilt eine ganze Zahl b genau dann, wenn es eine

ganze Zahl n gibt, für die ak=b ist.

Wir schreiben ab[6][7].

Für jede Primzahl p und jede dazu teilerfremde natürliche Zahl a ist folgende Kongruenz erfüllt:

ap11modp[8][9].

Bemerkung: Durch Multiplikation im Restklassenring mit a gilt auch die folgende Äquivalenz: ap11modpapamodp[8][9].

Beweis Satz (Kleiner Satz von Fermat)

Voraussetzung

p prim und a mit ggT(p,a)=1.

Zu zeigen

apamodp

Beweis (Vollständige Induktion)

Bemerkung: Bei der vollständigen Induktion wird eine Aussage in der Regel für alle natürlichen Zahlen bewiesen. Dabei beginnt man bei einem Startwert (meist 0 oder 1) und zeigt, dass die Aussage für diesen Startwert gilt. Man nennt dies den Induktionsanfang. Im Induktionsschritt wird anschließend gezeigt, dass wenn die Aussage für eine Zahl gilt, dann gilt sie auch für die nächstgrößere Zahl[10][11].

Induktionsanfang

Wir zeigen zunächst, dass die Aussage für a=0.

0p0modp

p0p0

p0.

Induktionsschritt

Wir haben nun ein solches a gefunden, für das apamodp gilt, also ist

papa (Induktionsvoraussetzung)

Nun zeigen wir, dass die Behauptung auch für den Nachfolger eines solchen a gilt, nämlich

p(a+1)p(a+1)

Wir verwenden hierzu den binomischen Lehrsatz:

(a+1)p(a+1)=ap+(p1)ap1++(pp1)a+1(a+1)

Betrachten wir nun den Binomialkoeffizienten genauer:

(pk)=p(p1)(pk+1)12k

p taucht für 1kp1 nur im Zähler auf.

Da p prim ist, treten im Nenner keine Teiler von p auf.

Die Binomialkoeffizienten sind daher alle durch p teilbar.

Damit folgt

(a+1)p(a+1)ap+1(a+1)=apa

und nach Induktionsvoraussetzung gilt

papa.

Somit haben wir gezeigt, dass

p(a+1)p(a+1) für einen beliebigen Nachfolger von a gilt[12][13].

Fermat-Test

Die Idee des Fermat-Tests ist es, durch die Umkehrung des kleinen fermatschen Satzes, Zahlen daraufhin zu prüfen, ob sie zusammengesetzt sind[1].

Algorithmus des Fermat-Tests

Sei n ungerade. Ziel ist es zu ermitteln, ob n zusammengesetzt ist.

  1. Wähle eine zu n teilerfremde Basis a
  2. Berechne an1modn
    • Gilt an11modn, dann ist n mit hoher Wahrscheinlichkeit prim und sonst zusammengesetzt
    • Gilt an1≢1modn (Fall 2), dann ist n zusammengesetzt[14]

Im ersten Fall erfüllt n die vom kleinen fermatschen Satz formulierte Bedingung an Primzahlen und im zweiten Fall nicht.

Nur, weil n die Voraussetzung für Primzahlen des kleinen fermatschen Satzes erfüllt, ist damit noch nicht gezeigt, dass n eindeutig eine Primzahl ist. n kann stattdessen eine zusammengesetzte Zahl sein, die auch die untersuchte Eigenschaft von Primzahlen erfüllt. Tritt jedoch Fall 2 ein, so kann man also sicher sagen, dass n zusammengesetzt und somit nicht prim ist[8][14].

Beispiele des Fermat-Tests

Beispiel 1

Primzahl und Teilerfremdheit
Primzahl
Sei p mit p>1, dann heißt p Primzahl oder prime Zahl, wenn gilt:

p besitzt nur zwei Teiler in , nämlich 1 und p.

Andernfalls heißt p zusammengesetzte Zahl[2].

Teilerfremdheit
Zwei ganze Zahlen a und b, wobei mindestens einer der beiden Zahlen ungleich Null ist,

heißen teilerfremd, wenn ggT(a,b)=1[3]. Betrachten wir mehr als zwei Zahlen, dann

nennen wir diese paarweise teilerfremd, wenn je zwei beliebige von diesen Zahlen

zueinander teilerfremd sind[4][3].

Seien n=7 und a=3. Die beiden Zahlen sind teilerfremd, da ggT(3,7)=1.

an1modn

371mod7

36mod7

361mod7, da 36=729=1047+1

Somit ist n=7 prim oder zusammengesetzt.

Beispiel 2

Seien n=9 und a=2. Die beiden Zahlen sind teilerfremd, da ggT(2,9)=1.

an1modn

291mod9

284mod9, da 28=256=289+4

28≢1mod9

Somit ist n=9 zusammengesetzt.

Bemerkung: Wir können anhand von Beispiel 2 erkennen, dass eine Basis a, für die an1≢1modn, nicht zwangsläufig ein Teiler von n ist, denn es gilt 2∤9.

Fermat-Test als Primzahltest

Der Fermat-Test eignet sich in der Praxis nicht als Primzahltest[1]. Aus an11modn folgt nämlich nicht direkt, dass n prim ist. Es gibt also natürliche Zahlen n, die keine Primzahlen sind und die Eigenschaft an11modn dennoch erfüllen. Es gibt zwei Arten von solchen Zahlen: Fermatsche Pseudoprimzahlen zur Basis a und Carmichael-Zahlen[8].

Fermatsche Pseudoprimzahl

Definition Fermatsche Pseudoprimzahl

Primzahl, Teilerfremdheit, Kongruenz und Probedivision
Primzahl
Sei p mit p>1, dann heißt p Primzahl oder prime Zahl, wenn gilt: p besitzt nur zwei Teiler in , nämlich 1 und p.

Andernfalls heißt p zusammengesetzte Zahl[15].

Teilerfremdheit
Zwei ganze Zahlen a und b, wobei mindestens einer der beiden Zahlen ungleich Null ist, heißen teilerfremd, wenn ggT(a,b)=1[3].

Betrachten wir mehr als zwei Zahlen, dann nennen wir diese paarweise teilerfremd, wenn je zwei beliebige von diesen Zahlen

zueinander teilerfremd sind[4][3].

Kongruenz
Seien a,b und m, dann gilt abmodmm(ab)[5].
Probedivision
Sei n ungerade (für n<2 gerade ist 2 Primteiler). Ziel ist es zu ermitteln, ob n prim oder zusammengesetzt ist.
  1. Berechne n
    • Ist bekannt, dass n prim, dann ist n zusammengesetzt und die Probedivision abgeschlossen
    • Andernfalls muss der Algorithmus fortgeführt werden
  2. Wähle eine Primzahl pn
    • Wurde die Probedivision noch nicht auf n angewandt, wähle p=2
    • Ist dies mindestens der zweite Durchlauf von Schritt 2 auf n, dann wähle die nächstgrößere Primzahl zu diesem Durchlauf
  3. Ermittle, ob die Primzahl p ein Teiler von n ist
    • Gilt pn, dann ist n zusammengesetzt und die Probedivision abgeschlossen
    • Gilt p∤n, dann und es gibt ein pn, welches noch nicht getestet wurde, dann wiederhole ab Schritt 2
    • Wurden alle pn durchlaufen und für all diese gilt p∤n, so ist n prim und die Probedivision abgeschlossen[16]

Eine natürliche Zahl n wird fermatsche Pseudoprimzahl zur Basis a genannt, wenn sie eine zusammengesetzte Zahl ist, die sich in Bezug auf eine zu n teilerfremde Basis a wie eine Primzahl verhält. Dies ist der Fall, wenn nämlich die Kongruenz

an11modn

für die zu n teilerfremde Zahl a erfüllt ist[17][1].

Beispiel Pseudoprimzahl

Sei n=4, somit n ist keine Primzahl, da wir mit der Probedivision feststellen können, dass 24 gilt. Somit hat 4 einen Primteiler pn.

Nun wenden wir den Fermat-Test an und wählen a=5.

n und a sind also teilerfremd, d.h. ggT(4,5)=1.

an1modn

541mod4

53mod4, da 53=125=314+1

531mod4

Also ist n=4 nach einmaligen anwenden des Fermat-Test mit hoher Wahrscheinlichkeit eine Primzahl.

Bedeutung von Pseudoprimzahlen für den Fermat-Test

Es gibt unendlich viele Pseudoprimzahlen. Diese sind jedoch wesentlich seltener als Primzahlen[18]. So kommt beispielsweise bezüglich Basis a=2 im Zahlenraum bis 1010 auf jeweils 30.577 Primzahlen nur eine Pseudoprimzahl[18]. Den zugehörigen Beweis ersparen wir uns an dieser Stelle, da dieser zu weit von unserem eigentlichen Thema wegführt.

Wir könnten annehmen, dass man, durch das wiederholte Anwenden des Fermat-Tests auf die selbe Zahl n mit wechselnder Basis a, mit hoher Wahrscheinlichkeit davon ausgehen kann, dass n prim ist, wenn die Kongruenz an1≢1modn (Fall 2) nicht eintritt. Dies erscheint logisch, da es sich bei den einzelnen Durchführungen um unabhängige Ereignisse[19][20] handelt, deren Wahrscheinlichkeit nach dem Multiplikationssatz[21][22] multipliziert werden.

Wir werden mithilfe des dritten Primzahltests jedoch zeigen, dass Pseudoprimzahlen existieren, die für fast alle Basen die Kongruenz an11modn erfüllen. Dies sind die bereits erwähnten Carmichael-Zahlen[23][1]. Ein mehrfaches Ausführen des Fermat-Tests mit festem n und wechselnder Basis ist daher nicht zielführend[1].

Lernaufgabe

Aufgabe

Fermat-Test
Fermat-Test
Sei n ungerade. Ziel ist es zu ermitteln, ob n zusammengesetzt ist.
  1. Wähle eine zu n teilerfremde Basis a
  2. Berechne an1modn
    • Gilt an11modn, dann ist n mit hoher Wahrscheinlichkeit prim oder zusammengesetzt
    • Gilt an1≢1modn (Fall 2), dann ist n nicht prim, sondern zusammengesetzt[24]

Prüfen Sie mit dem Fermat-Test für eine oder mehrere der drei Basen 2,31 und 223, ob die Zahl 561 zusammengesetzt ist.

Lösung
Sei a=2.

25601mod561


Sei a=31.

315601mod561


Sei a=223.

22231mod561

Keiner der drei Testdurchläufe lässt darauf schließen, dass 561 zusammengesetzt ist und wir gehen mit hoher Wahrscheinlichkeit davon aus, dass 561 prim ist.

Lernempfehlung

Kursübersicht
Übergeordnete Lerneinheit
7.1: Schlüsselerzeugung des RSA-Verschlüsselungsverfahrens
Vorherige Lerneinheit Aktuelle Lerneinheit Empfohlene Lerneinheit
7.1.2: Probedivision (Primzahltest 1) 7.1.3: Fermat-Test (Primzahltest 2) 7.1.4: Miller-Rabin-Test (Primzahltest 3)

Literatur

  1. 1,0 1,1 1,2 1,3 1,4 1,5 Wolfart, J. (2011). Primzahltests und Primfaktorzerlegung. In Einführung in die Zahlentheorie und Algebra (S. 117–143). Vieweg+ Teubner. S. 120.
  2. 2,0 2,1 Burton, D. M., & Dalkowski, H. (2005). Handbuch der elementaren Zahlentheorie mit über 1000 Übungsaufgaben und ihren Lösungen. Lemgo: Heldermann Verlag. S. 47.
  3. 3,0 3,1 3,2 3,3 3,4 3,5 Burton, D. M., & Dalkowski, H. (2005). Handbuch der elementaren Zahlentheorie mit über 1000 Übungsaufgaben und ihren Lösungen. Heldermann Verlag. S. 26.
  4. 4,0 4,1 4,2 Seite „Teilerfremdheit“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 26. September 2019, 13:33 UTC. URL: https://de.wikipedia.org/w/index.php?title=Teilerfremdheit&oldid=192615323 (Abgerufen: 10. Januar 2020, 13:56 UTC; Formulierung verändert)
  5. 5,0 5,1 Buchmann, J. (2016). Einführung in die Kryptographie (6. Aufl.). Berlin, Heidelberg: Springer. S. 37.
  6. Seite „Teilbarkeit“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 25. November 2019, 15:44 UTC. URL: https://de.wikipedia.org/w/index.php?title=Teilbarkeit&oldid=194364839 (Abgerufen: 12. Dezember 2019, 14:43 UTC; Formulierung verändert)
  7. Burton, D. M., & Dalkowski, H. (2005). Handbuch der elementaren Zahlentheorie mit über 1000 Übungsaufgaben und ihren Lösungen. Heldermann Verlag. 22f.
  8. 8,0 8,1 8,2 8,3 Seite „Fermatscher Primzahltest“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 7. März 2017, 21:10 UTC. URL: https://de.wikipedia.org/w/index.php?title=Fermatscher_Primzahltest&oldid=163373890 (Abgerufen: 23. Dezember 2019, 11:46 UTC; Formulierung verändert)
  9. 9,0 9,1 Oswald, N., & Steuding, J. (2015). Elementare Zahlentheorie: Ein sanfter Einstieg in die höhere Mathematik. Springer Spektrum. S. 129.
  10. Seite „Vollständige Induktion“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 20. Dezember 2019, 06:00 UTC. URL: https://de.wikipedia.org/w/index.php?title=Vollst%C3%A4ndige_Induktion&oldid=195068438 (Abgerufen: 12. Januar 2020, 09:16 UTC; Formulierung verändert)
  11. Schäfer, W., Georgi, K., & Trippler, G. (1999). Mathematik-Vorkurs—Übungs- und Arbeitsbuch für Studienanfänger. Vieweg+Teubner. S. 102.
  12. Beweisarchiv: Zahlentheorie: Elementare Zahlentheorie: Kleiner Satz von Fermat. (14. November 2018). Wikibooks, Die freie Bibliothek. Abgerufen am 6. Februar 2020, 09:12 von https://de.wikibooks.org/w/index.php?title=Beweisarchiv:_Zahlentheorie:_Elementare_Zahlentheorie:_Kleiner_Satz_von_Fermat&oldid=863633. (Formulierung verändert)
  13. Weisstein, Eric W. "Fermat's Little Theorem." From MathWorld--A Wolfram Web Resource. Abgerufen am 6. Februar 2020, 11:34 von http://mathworld.wolfram.com/FermatsLittleTheorem.html.
  14. 14,0 14,1 Buchmann, J. (2016). Einführung in die Kryptographie (6. Aufl.). Springer. S. 157.
  15. Burton, D. M., & Dalkowski, H. (2005). Handbuch der elementaren Zahlentheorie mit über 1000 Übungsaufgaben und ihren Lösungen. Lemgo: Heldermann Verlag. S. 47.
  16. Buchmann, J. (2016). Einführung in die Kryptographie (6. Aufl.). Berlin, Heidelberg: Springer. S. 155.
  17. Seite „Fermatsche Pseudoprimzahl“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 6. April 2019, 23:17 UTC. URL: https://de.wikipedia.org/w/index.php?title=Fermatsche_Pseudoprimzahl&oldid=187306711 (Abgerufen: 26. Dezember 2019, 13:45 UTC; Formulierung verändert)
  18. 18,0 18,1 Burton, D. M., & Dalkowski, H. (2005). Handbuch der elementaren Zahlentheorie mit über 1000 Übungsaufgaben und ihren Lösungen. Lemgo: Heldermann Verlag. S. 388.
  19. Seite „Unabhängigkeit von Ereignissen“. In: Serlo.org. URL: https://de.serlo.org/mathe/stochastik/bedingte-wahrscheinlichkeit-unabh%C3%A4ngigkeit/unabh%C3%A4ngigkeit-ereignissen/unabh%C3%A4ngigkeit-ereignissen (Abgerufen: 26. Dezember 2019, 14:51 UTC; Formulierung verändert)
  20. Cramer, E., & Kamps, U. (2017). Grundlagen der Wahrscheinlichkeitsrechnung und Statistik: Eine Einführung für Studierende der Informatik, der Ingenieur- und Wirtschaftswissenschaften (4., korrigierte und erweiterte Auflage). Springer Spektrum. S. 194.
  21. Seite „Multiplikationssatz“. In: Mathe Guru. URL: https://matheguru.com/stochastik/multiplikationssatz.html (Abgerufen: 26. Dezember 2019, 14:54 UTC)
  22. Cramer, E., & Kamps, U. (2017). Grundlagen der Wahrscheinlichkeitsrechnung und Statistik: Eine Einführung für Studierende der Informatik, der Ingenieur- und Wirtschaftswissenschaften (4., korrigierte und erweiterte Auflage). Springer Spektrum. S. 230.
  23. Seite „Carmichael-Zahl“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 11. Juli 2019, 07:01 UTC. URL: https://de.wikipedia.org/w/index.php?title=Carmichael-Zahl&oldid=190325777 (Abgerufen: 26. Dezember 2019, 13:55 UTC; Formulierung verändert)
  24. Buchmann, J. (2016). Einführung in die Kryptographie (6. Aufl.). Springer. S. 157.