• Keine Ergebnisse gefunden

Kryptographische Protokolle

N/A
N/A
Protected

Academic year: 2022

Aktie "Kryptographische Protokolle"

Copied!
24
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Kryptographische Protokolle

Lerneinheit 2: Generierung von Primzahlen

Prof. Dr. Christoph Karg

Studiengang Informatik Hochschule Aalen

Sommersemester 2021

12.4.2021

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?

(2)

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, dass 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 / 47

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, . . . ,2256 −1} zufällig, dann ist sie mit Wahrscheinlichkeit 2/ln(2256) ≈ 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.

(3)

Ein einfacher Primzahltest Ansatz

Ein einfacher Primzahltest

Satz von Fermat:

Ist n eine Primzahl, dann gilt für alle a ∈ Zn: an−1 ≡ 1 (mod n).

Konsequenz: Existiert ein a ∈ {1,2, . . . ,n− 1} so dass an−1 ̸≡ 1 (mod n), dann ist n mit Sicherheit keine Primzahl.

Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 5 / 47

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 an−1 ̸≡ 1 (mod n) then

6 return Keine Primzahl

7 return Primzahl

(4)

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 ∈ Zn ist ein Beweis, dass n eine zusammengesetzte Zahl ist, falls

an−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 / 47

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 Zn Beweise, dass n eine zusammengesetzte Zahl ist.

(5)

Ein einfacher Primzahltest Analyse

Analyse von PseudoPrime ( n , s ) (Forts.)

Beweis. Sei n ∈ N beliebig gewählt.

Betrachte die Menge

B = {a ∈ Zn|an−1 ≡ 1 (mod n)} Für alle a,bB gilt:

(a·b)n−1an−1 ·bn−1 ≡ 1·1 ≡ 1 (mod n) Folglich ist auch a·bB

Also ist B abgeschlossen unter der Multiplikation modulo n Laut ZTK (Satz 9.9) ist B eine Untergruppe von Zn

Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 9 / 47

Ein einfacher Primzahltest Analyse

Analyse von PseudoPrime ( n , s ) (Forts.)

Angenommen, es existiert ein Beweis a ∈ Zn, dass n eine zusammengesetzte Zahl ist.

Da a ∈/ B, ist B eine echte Untergruppe von Zn, d.h., B ⊊ Zn. Wegen ZTK (Satz 10.2) muss ∥B∥ ein Teiler von ∥Zn∥ sein.

Hieraus folgt, dass ∥B∥ ≤ ∥Z2n.

Also gibt es mindestens ∥Z2n Beweise, dass n eine zusammengesetzte Zahl ist.

(6)

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 21s.

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 / 47

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 ∈/ Zn, 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:

∥Zn∥ −∥B

| {z }

Fall 1

+ (n−1) − ∥Zn

| {z }

Fall 2

(7)

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:

(∥Zn∥−∥B∥) + (n −1−∥Zn∥)

n −1 ≥

∥Zn

2 + (n −1−∥Zn∥) n−1

= n− 1− ∥Z2n n−1

= 1− ∥Zn∥ 2(n−1)

≥ 1− ∥Zn∥ 2∥Zn

= 1 2

Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 13 / 47

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 12.

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 12s

.

(8)

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 log2n 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 / 47

Carmichael Zahlen

Carmichael Zahlen

Definition. Eine zusammengesetzte Zahl n nennt man Carmichael Zahl, falls

an−1 ≡ 1 (mod n) für alle a ∈ Zn 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 108 sind.

(9)

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 / 47

Miller Rabin Primzahltest Quadratwurzeln

Quadratwurzeln

Definition. Sei n ∈ N beliebig gewählt. Die Zahl x ∈ Zn nennt man Quadratwurzel von 1 (mod n), falls x2 ≡ 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 Zp.

Folgerung. Besitzt n eine Quadratwurzel x von 1 (mod n) mit x ̸≡ ±1 (mod n), dann ist n keine Primzahl.

(10)

Miller Rabin Primzahltest 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 = 2r ·u.

Die Zahl a ∈ Zn ist ein solider Beweis, dass n eine zusammengesetzte Zahl ist, falls

1. au ̸≡ ±1 (mod n) und

2. für alle i = 1, . . . ,r− 1 gilt: a2iu ̸≡ −1 (mod n). Bemerkungen:

• Für jede ungerade ganze Zahl n existiert ein r und u, so dass n−1 = 2r ·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 / 47

Miller Rabin Primzahltest Solide Beweise

Solide Beweise (Forts.)

Beispiel. Gegeben ist die Zahl n = 96583122364964211633.

Es gilt: n−1 = 6036445147810263227·24. Also ist u = 6036445147810263227 und r = 4.

Betrachte a = 2.

Es gilt:

au mod n = 66201320698275764447 ̸= ±1 a21u mod n = 96583122364964211505 ̸= −1

a22u mod n = 16384 ̸= −1

a23u mod n = 268435456 ̸= −1

Also ist a ein solider Beweis, dass n eine zusammengesetzte Zahl ist.

(11)

Miller Rabin Primzahltest 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 = 2r ·u.

Fall 1: an−1 ̸≡ 1 (mod n). Also kann n wegen dem Satz von Fermat keine Primzahl sein.

Fall 2: an−1 ≡ 1 (mod n). Dann existiert ein i ∈ {1, . . .r}, so dass a2iu ≡ 1 (mod n) und a2i−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 / 47

Miller Rabin Primzahltest 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 = pk, 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 Zn solide Beweise dafür, dass n eine zusammengesetzte Zahl ist.

(12)

Miller Rabin Primzahltest Solide Beweise

Existenz von soliden Beweisen (Forts.)

Beweis. Sei n beliebige zusammengesetzte Zahl, die keine Primzahlpotenz ist.

Die Menge B1 ist definiert als

B1 = {b ∈ Zn|b ist kein solider Beweis für n}. Ziel: Definition einer Menge B2 mit

1. B1B2

2. B2 ist eine echte Untergruppe von Zn

Hieraus folgt der Satz, denn ∥B1∥ ≤ ∥B2∥ ≤ ∥Z2n.

Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 23 / 47

Miller Rabin Primzahltest Solide Beweise

Existenz von soliden Beweisen (Forts.)

Wähle nun r ≥ 1 und u so, dass n−1 = 2ru und u ungerade.

Die Zahl j ist definiert als j = max

i ∈ {0,1, . . . ,r−1}

es gibt ein aB1

mit a2iu ≡ −1 (mod n)

Da −1 ∈ B1 und u ungerade, ist (−1)20u ≡ −1 (mod n). Also ist j wohldefiniert.

(13)

Miller Rabin Primzahltest Solide Beweise

Existenz von soliden Beweisen (Forts.)

Die Menge B2 ist definiert als

B2 = {a ∈ Zn|a2ju ≡ ±1 (mod n)}.

B1B2: Wähle ein beliebiges aB1.

Demnach ist a kein solider Beweis. Also existiert ein i ∈ {0,1, . . . ,r−1} mit:

a2iua2i+1u ≡ . . . ≡ a2ru ≡ 1 (mod n)

Gemäß Definition von j gilt ij und somit a2ju ≡ 1 (mod n). Also ist aB2.

Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 25 / 47

Miller Rabin Primzahltest Solide Beweise

Existenz von soliden Beweisen (Forts.)

B2 ist eine Untergruppe von Zn: Wähle beliebige a,bB2. Es gilt:

(a ·b)2jua2ju ·b2ju ≡ (±1)·(±1) ≡ ±1 (mod n) Also ist a·bB2.

Mit ZTK (Satz 9.9) folgt, dass B2 eine Untergruppe von Zn ist.

(14)

Miller Rabin Primzahltest Solide Beweise

Existenz von soliden Beweisen (Forts.)

B2 ist eine echte Untergruppe von Zn: Laut Annahme ist n eine zusammengesetzte Zahl und keine Primzahlpotenz.

Somit ist n = n1 ·n2 mit gcd(n1,n2) = 1.

Anwendung des Chinesischen Restsatzes: Für alle aB2 gilt entweder

a2juCRTn1,n2 (−1,−1) oder

a2juCRTn1,n2 (1,1)

Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 27 / 47

Miller Rabin Primzahltest Solide Beweise

Existenz von soliden Beweisen (Forts.)

Wähle ein aB2 mit a2ju ≡ −1 (mod n).

Definiere bCRTn1,n2 (a1,1), wobei a1 = a mod n1. Es gilt:

b2jua21ju (mod n1)

≡ −1 (mod n1) b2ju ≡ 1 (mod n2)

Also: b2juCRTn1,n2 (−1,1). Folglich kann b nicht in B2 enthalten sein.

Ergebnis: B2 ist eine echte Untergruppe von Zn.

(15)

Miller Rabin Primzahltest Ganzzahlpotenzen

Erkennen von Ganzzahlpotenzen

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 = be.

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 / 47

Miller Rabin Primzahltest Ganzzahlpotenzen

Ansatz zum Erkennen von Ganzzahlpotenzen

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 k > 2 überprüft, ob ein x ∈ N existiert, so dass n = xk. 2. Algorithmus, der für alle theoretisch möglichen Exponenten

unter Einsatz von Algorithmus 1 überprüft, ob es eine passende Basis x für n gibt.

(16)

Miller Rabin Primzahltest Ganzzahlpotenzen

Berechnen der ganzzahligen Quadratwurzel

SearchSqrt

(n)

Input: Natürliche Zahl n mit n ≥ 2

Output: x mit x2 = n, falls ein solches x existiert, 0 sonst.

1 ℓ ← BitCount(n) +1

2 y ← 2

3 do

4 xy

5 y ← ⌊(x+ ⌊n/x⌋)/2⌋

6 while y < x

7 if x2 = n then

8 return x

9 else

10 return 0

Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 31 / 47

Miller Rabin Primzahltest Ganzzahlpotenzen

Bemerkungen

• Der Algorithmus berechnet die größte Zahl x mit x2n.

• Das Verfahren bezeichnet man als Newton-Iteration.

• Die Anzahl der Schleifendurchläufe ist O(ln lnn).

• Der Algorithmus berechnet die k-te Wurzel von n (falls existent), wenn man folgende Änderungen durchführt:

▷ Zeile 1: ℓ ← ⌊BitCount(n)/k⌋+1

▷ Zeile 5: y

((k−1)·x+

n/xk−1 )/k

Die Variable k ist ein zusätzlicher Eingabeparameter.

• Der modifizierte Algorithmus wird im folgenden SearchRoot(n,k) genannt.

(17)

Miller Rabin Primzahltest Ganzzahlpotenzen

Ein wichtiger Satz

Satz. Für alle natürlichen Zahlen n gilt: Falls n eine Ganzzahlpotenz bk ist, dann gilt 1 < k ≤ log2n+1.

Konsequenz: Alle möglichen Werte für k können mit dem Algorithmus SearchRoot(n,k) überprüft werden.

Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 33 / 47

Miller Rabin Primzahltest Ganzzahlpotenzen

Erkennen von Potenzen (Forts.)

SearchIntegerPower

(n) Input: Natürliche Zahl n > 2

Output: (x,k) mit xk = n, falls n eine Ganzzahlpotenz ist, false, sonst

1 found false; k 2

2 while k BitCount(n) and found= false do

3 x SearchRoot(n,k)

4 if x > 0 then

5 found true

6 else

7 k k+ 1

8 if found = true then

9 return (x,k)

10 else

(18)

Miller Rabin Primzahltest Der Algorithmus

Algorithmus Witness ( a , n )

Witness(a,n)

Input: a,n ganze Zahlen, wobei n > 2 ungerade und 1 ≤ an−1 Output: true, falls n keine Primzahl

1 Berechne u und r so dass n− 1 = u ·2r

2 d ← ModularExponentation(a,u,n);

3 for i ← 1 to r do

4 xd;

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 / 47

Miller Rabin Primzahltest Der Algorithmus

Eigenschaften von Witness ( a , n )

• Die Funktion Witness(a,n) ist eine abgewandelte Form von modularer Exponentiation.

• Der Algorithmus berechnet an−1 mod n und sucht während der Berechnung nach Lösungen für die Gleichung x2 ≡ 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, dass n keine Primzahl ist.

• Ist n > 2 eine zusammengesetzte Zahl, dann existieren hierfür mindestens (n−1)/2 solide Beweise in {1,2, . . . ,n−1}.

(19)

Miller Rabin Primzahltest 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 if n ist eine Ganzzahlpotenz then

4 return false

Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 37 / 47

Miller Rabin Primzahltest Der Algorithmus

Miller Rabin Primzahltest (Forts.)

5 for i ← 1 to s do

6 a ← Random(1,n −1)

7 if gcd(a,n) > 1 then

8 return false

9 if Witness(a,n) = true then

10 return false

11 return true

(20)

Miller Rabin Primzahltest 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 39 / 47

Miller Rabin Primzahltest 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.

(21)

Miller Rabin Primzahltest 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

(∥Zn∥−∥B2∥) + (n−1−∥Zn∥)

n− 1 ≥ 1

2.

Folglich ist die Wahrscheinlichkeit, dass kein passendes a gezogen wird, kleiner-gleich 12.

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 12s

.

Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 41 / 47

Miller Rabin Primzahltest 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 log2 n und s.

(22)

Miller Rabin Primzahltest 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 = pe.

Da Zn eine zyklische Gruppe ist, existiert ein erzeugendes Element g für Zn. Es gilt:

φ(n) = ∥Zn∥ = (p−1)pe−1

Angenommen n = pe ist eine Carmichael Zahl. Dann gilt:

gn−1 ≡ 1 (mod n)

Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Generierung von Primzahlen 43 / 47

Miller Rabin Primzahltest Bemerkungen

Primzahlpotenzen sind keine Carmichael Z. (Forts.)

Hieraus folgt, dass

n−1 ≡ 0 (mod φ(n))

Also ist n−1 ein Vielfaches von (p−1)pe−1, oder als Formel:

n−1 = pe −1 = k(p−1)pe−1

Dies ist ein Widerspruch, denn p teilt k(p−1)pe−1, aber nicht pe −1.

(23)

Miller Rabin Primzahltest Bemerkungen

Anwendung des Satzes

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 45 / 47

Generierung von Primzahlen

Generierung von Primzahlen

RandomPrime

(ℓ,s)

Input: Natürliche Zahlen ℓ > 0, s > 0

Output: Natürliche ℓ-bit Zahl n, die mit Wahrscheinlichkeit 1−2−s eine Primzahl ist

1 do

2 Generiere eine ℓ-Bit Zufallszahl n

3 while MillerRabinTest(n,s) = false

4 return n

(24)

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 47 / 47

Referenzen

ÄHNLICHE DOKUMENTE

Zur erfolgreichen Absolvierung der Vorlesung müssen drei Leistungen erbracht werden:.. Besuch des

• Bei der Installation eines Computers muss darauf geachtet werden, dass die Seed Datei beim ersten Reboot nicht benutzt wird oder dass eine geeignete Datei erstellt wird...

• Bei der Installation eines Computers muss darauf geachtet werden, dass die Seed Datei beim ersten Reboot nicht benutzt wird oder dass eine geeignete Datei erstellt

• Falls n eine zusammengesetzte Zahl ist, dann liefert der Miller-Rabin Primzahltest mit einer Wahrscheinlichkeit von höchstens 2 −s true zurück... Miller Rabin Primzahltest

• Es wird implizit angenommen, dass die Teilnehmer wissen, dass die empfangenen Nachrichten Teil des Protokolls sind.. • Das Protokoll legt nicht fest, wie die Teilnehmer

Das Absolvieren von Praktika im Rahmen der Vorlesung Kryptographische Protokolle ist eine Prüfungsvorleistung für das Modul Angewandte Kryptographie.. Insgesamt werden drei

104 Beilage K: (Ohne Aktenzahl) Information für den Ministerrat, betreffend die Erhebung über die Zahl der beschäftigten Dienstnehmer in Österreich (1 ½ Seiten).

T : Die Integrabilit¨ atsbedingung f¨ ur die freie Energie (die sie sp¨ ater in der Vorlesung kennenlernen werden) erzwingt, dass ∂V ∂S. T =