Kryptographische Protokolle

Ähnliche Dokumente
Kryptographische Protokolle

Diskrete Mathematik 1

Probabilistische Primzahltests

Kryptographische Algorithmen

Algorithmische Kryptographie

Kryptographie und Komplexität

Kryptographie und Komplexität

3: Zahlentheorie / Primzahlen

Beispiel für simultane Kongruenz

Algorithmentheorie Randomisierung

3: Primzahlen. 111 S. Lucks Diskr Strukt. (WS 18/19) 3: Primzahlen

Algorithmentheorie Randomisierung. Robert Elsässer

IT-Security. Teil 14: Primzahltest

Der Primzahltest von Agrawal, Kayal und Saxena. Dr. Gerold Jäger

Wiederholung. Gruppen. Untergruppen. Gruppenisomorphismen. Ordnung: Gruppe, Element Satz von Euler: a ord(g) = 1 Elementordung teilt Gruppenordnung

Primzahltest für Mersenne-Primzahlen

6 Zahlentheoretische Grundlagen

Diskrete Strukturen Kapitel 5: Algebraische Strukturen (Gruppen)

Hallo Welt für Fortgeschrittene

Der Miller-Rabin Primzahltest Florian Rienhardt Alle Rechte vorbehalten.

Zahlentheorie I. Christoph Egger. 18. Juni Christoph Egger Zahlentheorie I 18. Juni / 32

Primes ist in P Der AKS-Primzahltest

Zahlentheorie, Arithmetik und Algebra I

Klausurtermin. Klausur Diskrete Mathematik I Do stündig

Kryptographische Algorithmen

Randomisierte Algorithmen 2. Erste Beispiele

Kryptologie. Bernd Borchert. Univ. Tübingen SS Vorlesung. Teil 11. Primzahltests: Fermat, Miller-Rabin

Fibonacci-Zahlen und goldener Schnitt

ggt mit Euklid Satz: Um ggt(k, l) mit dem Euklidischen Algorithmus zu berechnen, braucht man höchstens log Φ k < 3 2 log 2 k rekursive Aufrufe.

9. Primitivwurzeln. O. Forster: Einführung in die Zahlentheorie

Miller-Rabin Test. Primzahl- und Zerlegbarkeitstests. Zeugen für die Zerlegbarkeit ganzer Zahlen

Zahlentheorie, Arithmetik und Algebra

Stichpunktezettel fürs Tutorium

Carmichael-Zahlen und Miller-Rabin-Test

Zufall oder Absicht?

4 Das RSA public-key System der Kryptographie 5

Quadrate und Wurzelziehen modulo p

Algorithmen und Datenstrukturen 2

Einwegfunktionen. Problemseminar. Komplexitätstheorie und Kryptographie. Martin Huschenbett. 30. Oktober 2008

Kryptographie und Komplexität

Schleifeninvarianten. Dezimal zu Binär

Wahrscheinlichkeitsrechnung und Statistik

Diskreter Logarithmus und Primkörper

Pseudo-Zufallsgeneratoren basierend auf dem DLP

ADS: Algorithmen und Datenstrukturen 2

3 Probabilistische Komplexitätsklassen

6: Public-Key Kryptographie (Grundidee)

Effiziente Algorithmen mit Python. D. Komm, T. Kohn

Algorithmen und Datenstrukturen SS Übungsblatt 1: Grundlagen

Vorlesung Diskrete Strukturen Die natürlichen Zahlen

Definition der Kolmogorov-Komplexität I

PRIMES is in P. Ein Vortrag von Holger Szillat.

Primzahltest in Polynomialzeit Der Algorithmus von Agrawal, Kayal und Saxena

Primzahltests und Faktorisierung. Primzahltests. Nuria Brede Universität Potsdam - Kryptographie SoSe 2005 Seite 1

8. Woche Quadratische Reste und Anwendungen. 8. Woche: Quadratische Reste und Anwendungen 163/ 238

Seminararbeit. Seminar IT-Sicherheit. Efficient Number-Theoretic Algorithms

Vortrag zum Proseminar: Kryptographie

Kapitel 6: Das quadratische Reziprozitätsgesetz

4 Kryptologie. Übersicht

Algorithmen und Datenstrukturen Tutorium Übungsaufgaben

Zahlentheorie, Arithmetik und Algebra 1

Interim. Kapitel Einige formale Definitionen

7 Die Sätze von Fermat, Euler und Wilson

Vorlesung Diskrete Strukturen Die natürlichen Zahlen

Elliptic Curve Cryptography

Kryptografische Protokolle

Informatik II, SS 2018

Exponentiation: das Problem

Elliptische Kurven in der Kryptographie, Teil III. 1 Supersingularität

Monte-Carlo-Algorithmen für innermathematische Fragestellungen

Rabin Verschlüsselung 1979

Aufgabe der Kryptografie

Der euklidische Algorithmus für ganze Zahlen

In diesem Kapitel bestimmen wir die multiplikative Struktur der Einheitengruppe (Z/Z) von Z/Z für eine beliebige positive Zahl Z >0.

Public Key Kryptographie

Cognitive Interaction Technology Center of Excellence

3 Public-Key-Kryptosysteme

Komplexität von Algorithmen Musterlösungen zu ausgewählten Übungsaufgaben

Satz 94 Sei b N 0 und p N eine Primzahl. Dann gilt:

Informatik II, SS 2016

Ganzzahlige Division mit Rest

Diskrete Mathematik. Christina Kohl Georg Moser Oleksandra Panasiuk Christian Sternagel Vincent van Oostrom

Zahlentheorie, Arithmetik und Algebra I. Felix Teufel Hallo Welt! -Seminar - LS 2

Lösungen der Aufgaben

Exponentiation: das Problem Gegeben: (multiplikative) Halbgruppe (H, ), Element a H, n N Aufgabe: berechne das Element

Proseminar SS08 - Miller-Rabin-Primzahltest

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0.

Algorithmen II Vorlesung am

Probabilistische Algorithmen

p Z >1 ist Primzahl, wenn gilt Euklid:

Ordnen Sie die folgenden Funktionen nach ihrer asymptotischer Komplexität in aufsteigender Reihenfolge: i=1 4i + n = 4 n. i=1 i + 3n = 4 ( n(n+1)

Relationen und DAGs, starker Zusammenhang

Beispiel 85. Satz 86 Eine Unteralgebra (bzgl. ) einer Gruppe ist eine Untergruppe, falls sie unter der Inversenbildung 1 abgeschlossen ist.

IT-Security. Teil 8b: Rechnen mit beliebiger Genauigkeit Algorithmen

7 Der kleine Satz von Fermat

Transkript:

Kryptographische Protokolle Lerneinheit 2: Generierung von Primzahlen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Wintersemester 2018/2019 15.11.2018

Einleitung Einleitung Diese Lerneinheit beschäftigt sich mit der Generierung von Primzahlen. Es interessieren folgende Fragen: Wie hoch ist die Chance, dass eine zufällig gezogene Zahl eine Primzahl ist? Wie kann man überprüfen, ob eine Zahl eine Primzahl ist? Gibt es effiziente Algorithmen für Primzahltests? Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 2 / 45

Wissenswertes über Primzahlen Wissenswertes über Primzahlen Definition. π(n) steht für die Anzahl der Primzahlen, die kleiner-gleich n sind Satz 1 (Primzahlsatz) Es gilt für alle ganzen Zahlen n: π(n) n ln(n) Dies bedeutet, daß eine zufällig aus der Menge {1, 2,..., n} gezogene Zahl mit Wahrscheinlichkeit 1/ ln(n) eine Primzahl ist. Die Wahrscheinlichkeit erhöht sich auf 2/ ln(n), wenn ausschließlich ungerade Zahlen zieht. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 3 / 45

Wissenswertes über Primzahlen Wissenswertes über Primzahlen (Forts.) n 100 1000 10000 100000 1000000 π(n) 25 168 1229 9592 78498 n/ ln(n) 21.7 144.8 1085.8 8685.9 72382.2 Zieht man eine ungerade Zahl aus {1, 3,..., 2 256 1} zufällig, dann ist sie mit Wahrscheinlichkeit 2/ ln(2 256 ) 1/88.7 eine Primzahl. Mit anderen Worten: Im Schnitt muss man 89 ungerade Zahlen unter Gleichverteilung ziehen, um eine Primzahl aus obiger Menge zu finden. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 4 / 45

Ein einfacher Primzahltest Ansatz Ein einfacher Primzahltest Satz von Fermat: Ist n eine Primzahl, dann gilt für alle a Z n: a n 1 1 (mod n). Konsequenz: Existiert ein a {1, 2,..., n 1} so dass a n 1 1 (mod n), dann ist n mit Sicherheit keine Primzahl. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 5 / 45

Ein einfacher Primzahltest Ansatz Pseudo-Primzahl-Test PseudoPrime(n, s) Input: Ganze Zahlen n, s, wobei n 3 ungerade und s > 0 Output: Primzahl oder Keine Primzahl 1 for i := 1 to s do 2 a := Random(1, n 1) 3 if gcd(a, n) 1 then 4 return Keine Primzahl 5 if a n 1 1 (mod n) then 6 return Keine Primzahl 7 return Primzahl Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 6 / 45

Ein einfacher Primzahltest Analyse Analyse von PseudoPrime(n, s) Ziel: Bewertung der Qualität von PseudoPrime(n, s) Definition. Sei n eine natürliche Zahl. Die Zahl a Z n ist ein Beweis, dass n eine zusammengesetzte Zahl ist, falls a n 1 1 (mod n). Wunsch: Es gibt viele Beweise, dass n eine zusammengesetzte Zahl ist gute Chance, dass eine solche Zahl gezogen wird Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 7 / 45

Ein einfacher Primzahltest Analyse Analyse von PseudoPrime(n, s) (Forts.) Satz 2 Sei n eine beliebige natürliche Zahl. Angenommen, es existiert ein Beweis, dass n eine zusammengesetzte Zahl ist. Dann sind mindestens die Hälfte der Zahlen in Z n Beweise, dass n eine zusammengesetzte Zahl ist. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 8 / 45

Ein einfacher Primzahltest Analyse Analyse von PseudoPrime(n, s) (Forts.) Beweis. Sei n N beliebig gewählt. Betrachte die Menge B = {a Z n a n 1 1 (mod n)} Für alle a, b B gilt: (a b) n 1 a n 1 b n 1 1 1 1 (mod n) Folglich ist auch a b B Also ist B abgeschlossen unter der Multiplikation modulo n Laut ZTK (Satz 9.9) ist B eine Untergruppe von Z n Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 9 / 45

Ein einfacher Primzahltest Analyse Analyse von PseudoPrime(n, s) (Forts.) Angenommen, es existiert ein Beweis a Z n, dass n eine zusammengesetzte Zahl ist. Da a / B, ist B eine echte Untergruppe von Z n, d.h., B Z n. Wegen ZTK (Satz 10.2) muss B ein Teiler von Z n sein. Hieraus folgt, dass B Z n 2. Also gibt es mindestens Z n 2 Beweise, dass n eine zusammengesetzte Zahl ist. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 10 / 45

Ein einfacher Primzahltest Analyse Analyse von PseudoPrime(n, s) (Forts.) Satz 3 Sei n eine beliebige natürliche Zahl. Angenommen, es existiert ein Beweis, dass n eine zusammengesetzte Zahl ist. Dann ist die Wahrscheinlichkeit, dass PseudoPrime(n, s) die Zahl n als Primzahl einstuft, ist höchstens 1 2 s. Bemerkungen: Die Wahl von s beeinflusst die Fehlerwahrscheinlichkeit. Die Fehlerwahrscheinlichkeit nimmt exponentiell in s ab. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 11 / 45

Ein einfacher Primzahltest Analyse Analyse von PseudoPrime(n, s) (Forts.) Beweis. Sei n N eine Zahl, für die ein Beweis für deren Zusammengesetztheit existiert. Betrachte einen Durchlauf der for Schleife von PseudoPrime(n, s) und die gezogene Zufallszahl a. n wird als zusammengesetzte Zahl eingestuft, falls 1. a ein Beweis ist, dass n zusammengesetzt ist, oder 2. a / Z n, d.h., gcd(a, n) > 1 Beide Fälle sind disjunkt. Die Anzahl der Zahlen in {1,..., n 1}, die einen der beiden Fälle erfüllen ist: Z n B + (n 1) Z }{{}}{{ n } Fall 1 Fall 2 Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 12 / 45

Ein einfacher Primzahltest Analyse Analyse von PseudoPrime(n, s) (Forts.) Die Wahrscheinlichkeit, dass in einem Schleifendurchlauf die Zahl n als zusammengesetzte Zahl klassifiziert wird, ist: ( Z n B ) + (n 1 Z n ) n 1 Z n + (n 1 Z 2 n ) n 1 = n 1 Z n 2 n 1 = 1 Z n 2(n 1) 1 Z n 2 Z n = 1 2 Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 13 / 45

Ein einfacher Primzahltest Analyse Analyse von PseudoPrime(n, s) (Forts.) Die Wahrscheinlichkeit, dass n in einem Schleifendurchlauf nicht als zusammengesetzt erkannt wird, ist demnach höchstens 1 2. Damit n als Primzahl eingestuft wird, muss n alle s Schleifendurchläufe passieren, ohne als zusammengesetzte Zahl erkannt zu werden. Da die Schleifendurchläufe stochastisch unabhängig von einander sind, ist die Wahrscheinlichkeit hierfür höchstens ( 1 2) s. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 14 / 45

Ein einfacher Primzahltest Bemerkungen Bemerkungen zu PseudoPrime(n, s) Der Fehler von PseudoPrime(n, s) ist einseitig: PseudoPrime(n, s)= Keine Primzahl n definitiv keine Primzahl PseudoPrime(n, s)= Primzahl n vermutlich eine Primzahl. Die Laufzeit von PseudoPrime(n, s) ist polynomial in log 2 n und s. Es gibt zusammengesetzte Zahlen, die von PseudoPrime(n, s) als Primzahl eingestuft werden. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 15 / 45

Carmichael Zahlen Carmichael Zahlen Definition. Eine zusammengesetzte Zahl nennt man Carmichael Zahl, falls a n 1 1 (mod n) für alle a Z n gilt. Bemerkungen: Es gibt unendlich viele Carmichael Zahlen. Die Folge der Carmichael Zahlen beginnt mit 561, 1105, 1729, 2465, 2821, 6601, 8911, 10585,... Carmichael Zahlen sind extrem selten. Es gibt z.b. nur 255 Carmichael Zahlen, die kleiner als 10 8 sind. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 16 / 45

Carmichael Zahlen Carmichael Zahlen und PseudoPrime(n, s) Fakt: Eine Carmichael Zahl wird von PseudoPrime(n, s) nur als zusammengesetzte Zahl erkannt, wenn ein a mit gcd(a, n) > 1 gezogen wird. Dies ist sehr unwahrscheinlich. Ziel: Verbesserung des Primzahltests, so dass auch Carmichael Zahlen erkannt werden. Ansatz: Tuning von PseudoPrime(n, s) durch Einbau eines zusätzlichen Tests, der für alle zusammengesetzten Zahlen funktioniert. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 17 / 45

Quadratwurzeln Quadratwurzeln Definition. Sei n N beliebig gewählt. Die Zahl x Z n nennt man Quadratwurzel von 1 (mod n), falls x 2 1 (mod n). Bemerkung. Für alle n N gilt: 1 n 1 (mod n). Wissen aus Lerneinheit 1: Falls p > 2 eine Primzahl ist, dann sind 1 und p 1 die einzigen Quadratwurzeln von 1 (mod p) in Z p. Folgerung. Besitzt n eine Quadratwurzel x von 1 (mod n) mit x ±1 (mod n), dann ist n keine Primzahl. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 18 / 45

Solide Beweise Solide Beweise Definition. Sei n > 1 beliebige ungerade natürliche Zahl. Wähle r, u N, so dass r 1, u ungerade und n 1 = 2 r u. Die Zahl a Z n ist ein solider Beweis, dass n eine zusammengesetzte Zahl ist, falls (1) a u ±1 (mod n) (2) Für alle i = 1,..., r 1 gilt: a 2iu 1 (mod n) Bemerkungen: Für jede ungerade ganze Zahl n existiert ein r und u, so dass n 1 = 2 r u. Die Berechnung von r und u gemäß obiger Definition ist anhand der Binärdarstellung von n 1 einfach durchzuführen. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 19 / 45

Solide Beweise Solide Beweise (Forts.) Beispiel. Gegeben ist die Zahl n = 96583122364964211633. Es gilt: n 1 = 6036445147810263227 2 4. Also ist u = 6036445147810263227 und r = 4. Betrachte a = 2. Es gilt: a u mod n = 66201320698275764447 ±1 a 21u mod n = 96583122364964211505 1 a 22u mod n = 16384 1 a 23u mod n = 268435456 1 Also ist a ein solider Beweis, dass n eine zusammengesetzte Zahl ist. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 20 / 45

Solide Beweise Solide Beweise (Forts.) Anwendung: Angenommen, a ist ein solider Beweis, dass n eine zusammengesetzte Zahl ist. Seien r und u so gewählt, dass n 1 = 2 r u. Fall 1: a n 1 1 (mod n). Also kann n wegen dem Satz von Fermat keine Primzahl sein. Fall 2: a n 1 1 (mod n). Dann existiert ein i {1,... r}, so dass a 2iu 1 (mod n) und a 2i 1u ±1 (mod n). Also kann n keine Primzahl sein, da es eine von ±1 verschiedene Quadratwurzel von 1 modulo n gibt. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 21 / 45

Solide Beweise Existenz von soliden Beweisen Definition. Sei n N beliebig gewählt. Falls eine Primzahl p und ein k N existiert, so dass n = p k, dann nennt man n eine Primzahlpotenz. Satz 4 Sei n N eine beliebige zusammengesetzte Zahl, die keine Primzahlpotenz ist. Dann sind mindestens die Hälfte der Elemente in Z n solide Beweise dafür, dass n eine zusammengesetzte Zahl ist. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 22 / 45

Solide Beweise Existenz von soliden Beweisen (Forts.) Beweis. Sei n beliebige zusammengesetzte Zahl, die keine Primzahlpotenz ist. Die Menge B 1 ist definiert als B 1 = {b Z n b ist kein solider Beweis für n}. Ziel: Definition einer Menge B 2 mit (i) B 1 B 2 (ii) B 2 ist eine echte Untergruppe von Z n Hieraus folgt der Satz, denn B 1 B 2 Z n 2. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 23 / 45

Solide Beweise Existenz von soliden Beweisen (Forts.) Wähle nun r 1 und u so, dass n 1 = 2 r u und u ungerade. Die Zahl j ist definiert als { j = max i {0, 1,..., r 1} es gibt ein a B 1 mit a 2iu 1 (mod n) } Da 1 B 1 und u ungerade, ist ( 1) 20u 1 (mod n). Also ist j wohldefiniert. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 24 / 45

Solide Beweise Existenz von soliden Beweisen (Forts.) Die Menge B 2 ist definiert als B 2 = {a Z n a 2ju ±1 (mod n)}. B 1 B 2 : Wähle ein beliebiges a B 1. Demnach ist a kein solider Beweis. Also existiert ein i {0, 1,..., r 1} mit: a 2iu a 2i+1u... a 2ru 1 (mod n) Gemäß Definition von j gilt i j und somit a 2ju 1 (mod n). Also ist a B 2. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 25 / 45

Solide Beweise Existenz von soliden Beweisen (Forts.) B 2 ist eine Untergruppe von Z n: Wähle beliebige a, b B 2. Es gilt: (a b) 2ju a 2ju b 2ju (±1) (±1) ±1 (mod n) Also ist a b B 2. Mit ZTK (Satz 9.9) folgt, dass B 2 eine Untergruppe von Z n ist. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 26 / 45

Solide Beweise Existenz von soliden Beweisen (Forts.) B 2 ist eine echte Untergruppe von Z n: Laut Annahme ist n eine zusammengesetzte Zahl und keine Primzahlpotenz. Somit ist n = n 1 n 2 mit gcd(n 1, n 2 ) = 1. Anwendung des Chinesischen Restsatzes: Für alle a B 2 gilt entweder a 2ju CRT n 1,n 2 ( 1, 1) oder a 2ju CRT n 1,n 2 (1, 1) Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 27 / 45

Solide Beweise Existenz von soliden Beweisen (Forts.) Wähle ein a B 2 mit a 2ju 1 (mod n). Definiere b CRT n 1,n 2 (a 1, 1), wobei a 1 = a mod n 1. Es gilt: b 2j u a 2j u 1 (mod n 1 ) 1 (mod n 1 ) b 2j u 1 (mod n 2 ) Also: b 2ju CRT n 1,n 2 ( 1, 1). Folglich kann b nicht in B 2 enthalten sein. Ergebnis: B 2 ist eine echte Untergruppe von Z n. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 28 / 45

Ganzzahlpotenzen Erkennen von Potenzen Definition. Sei n eine natürliche Zahl. n nennt man eine Ganzzahlpotenz, falls es natürliche Zahlen b > 1 und e > 1 gibt, so dass n = b e. Entscheidungsproblem Ganzzahlpotenz: Gegeben: Natürliche Zahl n > 2 Gefragt: Ist n eine Ganzzahlpotenz? Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 29 / 45

Ganzzahlpotenzen Erkennen von Potenzen (Forts.) Ziel: Entwicklung eines Polynomialzeit Algorithmus für das obige Problem. Ansatz: Zwei Schritte 1. Algorithmus, der für gegebene natürliche Zahlen n > 2 und e > 2 überprüft, ob ein b N existiert, so dass n = b e. 2. Algorithmus, der für alle theoretisch möglichen Exponenten unter Einsatz von Algorithmus 1 überprüft, ob es eine passende Basis b für n gibt. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 30 / 45

Ganzzahlpotenzen Erkennen von Potenzen (Forts.) SearchBase(n, e) Input: Natürliche Zahlen n, e, wobei n 2 und 2 e log 2 n + 1 Output: b mit b e = n, falls ein solches b existiert, 0 sonst 1 left := 2; right := n; 2 do 3 b := left + (right left)/2; 4 x := b e ; 5 if x > n then 6 right := b; 7 else 8 left = b; 9 while x n and (right left)/2 > 0 Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 31 / 45

Ganzzahlpotenzen Erkennen von Potenzen (Forts.) 10 if x = n then 11 return b 12 else 13 return 0 Bemerkungen: Zur Berechnung der Basis wird Binäre Suche eingesetzt. Den Wert b e berechnet man mittels eines an die modulare Exponentation angelehntes Verfahren. Die Berechnung von b e wird abgebrochen, wenn feststeht, dass b e > n ist. Die Laufzeit von SearchBase(n, e) ist polynomial in der Größe der Binärdarstellung von n. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 32 / 45

Ganzzahlpotenzen Erkennen von Potenzen (Forts.) Satz. Für alle natürlichen Zahlen n gilt: Falls n eine Ganzzahlpotenz b e ist, dann gilt 1 < e log 2 n + 1. Konsequenz: Alle möglichen Werte für e können mittels SearchBase(n, e) überprüft werden Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 33 / 45

Ganzzahlpotenzen Erkennen von Potenzen (Forts.) PerfectPower(n) Input: Natürliche Zahl n > 2 Output: (b, e) mit b e = n, falls n eine Ganzzahlpotenz ist, false, sonst 1 found := false; e := 2 2 while e log 2 n + 1 and found = false do 3 b := SearchBase(n, e) 4 if b > 0 then 5 found := true 6 else 7 e := e + 1 8 if found = true then 9 return (b, e) 10 else 11 return false Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 34 / 45

Der Algorithmus Algorithmus Witness(a, n) Witness(a, n) Input: a, n ganze Zahlen, wobei n > 2 ungerade und 1 a n 1 Output: true, falls n keine Primzahl 1 Berechne u und r so dass n 1 = u 2 r 2 d := ModularExponentation(a, u, n); 3 for i := 1 to r do 4 x := d; 5 d := (d d) mod n 6 if (d = 1) and (x 1) and (x n 1) then 7 return true 8 if (d 1) then 9 return true 10 return false Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 35 / 45

Der Algorithmus Eigenschaften von Witness(a, n) Die Funktion Witness(a, n) ist eine abgewandelte Form von modularer Exponentiation. Der Algorithmus berechnet a n 1 mod n und sucht während der Berechnung nach Lösungen für die Gleichung x 2 1 (mod n), die verschieden zu 1 und n 1 sind. Falls Witness(a, n) = true, dann wird a als Beleg (engl. witness) für die Tatsache angesehen, daß n keine Primzahl ist. Ist n > 2 eine zusammengesetzte Zahl, dann existieren hierfür mindestens (n 1)/2 Belege in {1, 2,..., n 1}. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 36 / 45

Der Algorithmus Miller Rabin Primzahltest MillerRabinTest(n, s) Input: Natürliche Zahl n > 2, Qualitätsparameter s N Output: true, falls n eine Primzahl ist, false, sonst 1 if n mod 2 = 0 then 2 return false 3 for i := 1 to s do 4 a := Random(1, n 1) 5 if gcd(a, n) > 1 then 6 return false 7 if Witness(a, n) = true then 8 return false 9 if n ist eine Ganzzahlpotenz then 10 return false 11 return true Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 37 / 45

Der Algorithmus Analyse des Miller Rabin Primzahltests Satz. Sei n eine beliebige natürliche Zahl. Falls n eine Primzahl ist, dann liefert der Miller-Rabin Primzahltest immer true zurück. Falls n eine zusammengesetzte Zahl ist, dann liefert der Miller-Rabin Primzahltest mit einer Wahrscheinlichkeit von höchstens 2 s true zurück. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 38 / 45

Der Algorithmus Analyse des Miller Rabin Primzahltests (Forts.) Beweis. Sei n N beliebig gewählt. Falls n > 2 eine Primzahl ist, dann existieren keine soliden Beweise für die Zusammengesetztheit von n. Ferner ist n nicht gerade und es gilt gcd(a, n) = 1 für alle a {1,..., n 1}. In diesem Fall liefert der Miller-Rabin Test true zurück. Angenommen, n ist eine zusammengesetzte Zahl. Ist n gerade oder eine Ganzzahlpotenz, dann liefert der Miller-Rabin Test immer false zurück. Ist n ungerade, dann muss ein solider Beweis a für die Zusammengesetztheit von n oder ein a mit gcd(a, n) > 1 gefunden werden, damit der Miller-Rabin Test false zurückliefert. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 39 / 45

Der Algorithmus Analyse des Miller Rabin Primzahltests (Forts.) Analog zur Analyse von PseudoPrime(n, s) (siehe Folie 13) kann man die Wahrscheinlichkeit, dass ein solches a gezogen wird, abschätzen als ( Z n B 2 ) + (n 1 Z n ) n 1 1 2. Folglich ist die Wahrscheinlichkeit, dass kein passendes a gezogen wird, kleiner-gleich 1 2. Damit der Miller-Rabin Test einen Fehler liefert, muss in allen s Schleifendurchläufen kein passendes a gezogen werden. Da die Durchläufe unabhängig sind, ist die Wahrscheinlichkeit hierfür kleiner-gleich ( 1 2) s. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 40 / 45

Bemerkungen Bemerkungen Der Miller-Rabin Primzahltest ist ein Monte Carlo Algorithmus mit einseitigem Fehler. Fallunterscheidung: Stuft der Miller-Rabin Test eine Zahl als zusammengesetzt ein, dann ist das Ergebnis immer korrekt. Stuft der Miller-Rabin Test eine Zahl als Primzahl ein, dann ist das Ergebnis mit einer Wahrscheinlichkeit von 1 2 s korrekt. Durch die Wahl von s kann die Fehlerwahrscheinlichkeit beeinflusst werden. Die Laufzeit des Miller-Rabin Tests ist polynomial in log 2 n und s. Voraussetzung für den Einsatz des Miller-Rabin Tests sind kryptographisch gute Zufallszahlen. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 41 / 45

Bemerkungen Primzahlpotenzen sind keine Carmichael Zahlen Satz. Eine Primzahlpotenz ist keine Carmichael Zahl. Beweis. Sei p eine ungerade Primzahl und e > 1 eine ganze Zahl. Betrachte die Zahl n = p e. Da Z n eine zyklische Gruppe ist, existiert ein erzeugendes Element g für Z n. Es gilt: φ(n) = Z n = (p 1)p e 1 Angenommen n = p e ist eine Carmichael Zahl. Dann gilt: g n 1 1 (mod n) Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 42 / 45

Bemerkungen Primzahlpotenzen sind keine Carmichael Z. (Forts.) Hieraus folgt, dass n 1 0 (mod φ(n)) Also ist n 1 ein Vielfaches von (p 1)p e 1, oder als Formel: n 1 = p e 1 = k(p 1)p e 1 Dies ist ein Widerspruch, denn p teilt k(p 1)p e 1, aber nicht p e 1. Anwendung des Satzes im Miller-Rabin Test: Verzicht auf die Überprüfung, ob n eine Ganzzahlpotenz ist Vorteil: bessere Laufzeit Nachteil: Risiko, dass eine Ganzzahlpotenz als Primzahl eingestuft wird Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 43 / 45

Generierung von Primzahlen Generierung von Primzahlen RandomPrime(l, s) Input: Natürliche Zahlen l > 0, s > 0 Output: Natürliche l-bit Zahl n, die mit Wahrscheinlichkeit 1 2 s eine Primzahl ist 1 do 2 Generiere eine l-bit Zufallszahl n 3 while MillerRabinTest(n, s) = false 4 return n Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 44 / 45

Zusammenfassung Zusammenfassung Primzahlen spielen für kryptographische Anwendungen eine wichtige Rolle Zieht man zufällig eine Zahl, dann stehen die Chancen gut, dass man eine Primzahl erhält. Der Miller-Rabin Primzahltest ist ein effizienter Monte Carlo Algorithmus, mit dem man überprüfen kann, ob eine Zahl eine Primzahl ist. Es gibt auch einen deterministischen Polynomialzeit Algorithmus für das Primzahlproblem. Jedoch ist dieser deutlich langsamer als der Miller-Rabin Test. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 45 / 45