Generierung von Primzahlen - Prof. Dr. Christoph Karg

Transcription

Generierung von Primzahlen - Prof. Dr. Christoph Karg
Kryptografische Protokolle
Lerneinheit 2: Generierung von Primzahlen
Prof. Dr. Christoph Karg
Studiengang Informatik
Hochschule Aalen
Sommersemester 2016
8.4.2016
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?
• Wie kann man überprüfen, ob eine Zahl eine Primzahl ist?
• Gibt es effiziente Algorithmen für Primzahltests?
Prof. Dr. C. Karg (HS Aalen)
Kryptografische 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)
Kryptografische Protokolle
Generierung von Primzahlen
3 / 45
Wissenswertes über Primzahlen
Wissenswertes über Primzahlen (Forts.)
n
π(n)
n/ ln(n)
100 1000 10000 100000 1000000
25
168
1229
9592
78498
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 muß man 89 ungerade Zahlen unter
Gleichverteilung ziehen, um eine Primzahl aus obiger Menge zu
finden.
Prof. Dr. C. Karg (HS Aalen)
Kryptografische 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 :
an−1 ≡ 1 (mod n).
Konsequenz: Existiert ein a ∈ {1, 2, . . . , n − 1} so dass an−1 6≡ 1
(mod n), dann ist n mit Sicherheit keine Primzahl.
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Ein einfacher Primzahltest
Generierung von Primzahlen
5 / 45
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) 6= 1 then
4
return Keine Primzahl
5
if a n−1 6≡ 1 (mod n) then
6
return Keine Primzahl
7 return Primzahl
Prof. Dr. C. Karg (HS Aalen)
Kryptografische 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
an−1 6≡ 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)
Kryptografische Protokolle
Ein einfacher Primzahltest
Generierung von Primzahlen
7 / 45
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)
Kryptografische 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 | an−1 ≡ 1 (mod n)}
Für alle a, b ∈ B gilt:
(a · b)n−1 ≡ an−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)
Kryptografische Protokolle
Ein einfacher Primzahltest
Generierung von Primzahlen
9 / 45
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 kBk ein Teiler von kZ∗n k sein.
Hieraus folgt, dass kBk ≤
Also gibt es mindestens
Zahl ist.
Prof. Dr. C. Karg (HS Aalen)
kZ∗n k
.
2
kZ∗n k
2
Beweise, dass n eine zusammengesetzte
Kryptografische 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 21s .
Bemerkungen:
• Die Wahl von s beeinflusst die Fehlerwahrscheinlichkeit
• Die Fehlerwahrscheinlichkeit nimmt exponentiell in s ab
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Ein einfacher Primzahltest
Generierung von Primzahlen
11 / 45
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:
kZ∗n k − kBk + (n − 1) − kZ∗n k
{z
} |
{z
}
|
Fall 1
Prof. Dr. C. Karg (HS Aalen)
Fall 2
Kryptografische 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:
(kZ∗n k − kBk) + (n − 1 − kZ∗n k)
≥
n−1
=
=
≥
=
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Ein einfacher Primzahltest
kZ∗n k
2
+ (n − 1 − kZ∗n k)
n−1
∗
n − 1 − kZ2n k
n−1
kZ∗n k
1−
2(n − 1)
kZ∗n k
1−
2kZ∗n k
1
2
Generierung von Primzahlen
13 / 45
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
s
sind, ist die Wahrscheinlichkeit hierfür höchstens 12
Prof. Dr. C. Karg (HS Aalen)
Kryptografische 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 log2 n
und s
• Es gibt zusammengesetzte Zahlen, die von
PseudoPrime(n, s) als Primzahl eingestuft werden
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Generierung von Primzahlen
15 / 45
Carmichael Zahlen
Carmichael Zahlen
Definition. Eine zusammengesetzte Zahl nennt man Carmichael
Zahl, falls
an−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 108 sind.
Prof. Dr. C. Karg (HS Aalen)
Kryptografische 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)
Kryptografische Protokolle
Miller Rabin Primzahltest
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 6≡ ±1 (mod n), dann ist n keine Primzahl
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Generierung von Primzahlen
18 / 45
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 ∈ Z∗n ist ein solider Beweis, dass n eine zusammengesetzte
Zahl ist, falls
(1) au 6≡ ±1 (mod n)
i
(2) Für alle i = 1, . . . , r − 1 gilt: a2 u 6≡ −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)
Kryptografische Protokolle
Miller Rabin Primzahltest
Generierung von Primzahlen
19 / 45
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
1
a2 u mod n
2
a2 u mod n
3
a2 u mod n
=
=
=
=
66201320698275764447
96583122364964211505
16384
268435456
6=
6
=
6
=
6
=
±1
−1
−1
−1
Also ist a ein solider Beweis, dass n eine zusammengesetzte Zahl ist
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Generierung von Primzahlen
20 / 45
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 6≡ 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
i
i−1
a2 u ≡ 1 (mod n) und a2 u 6≡ ±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)
Kryptografische Protokolle
Miller Rabin Primzahltest
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)
Kryptografische Protokolle
Generierung von Primzahlen
22 / 45
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 ∈ Z∗n | b ist kein solider Beweis für n}
Ziel: Definition einer Menge B2 mit
(i) B1 ⊆ B2
(ii) B2 ist eine echte Untergruppe von Z∗n
Hieraus folgt der Satz, denn kB1 k ≤ kB2 k ≤
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Miller Rabin Primzahltest
kZ∗n k
.
2
Generierung von Primzahlen
23 / 45
Solide Beweise
Existenz von soliden Beweisen (Forts.)
Wähle nun r ≥ 1 und u so, dass n − 1 = 2r u und u ungerade
Die Zahl j ist definiert als
es gibt ein a ∈ B1
j = max i ∈ {0, 1, . . . , r − 1} i
mit a2 u ≡ −1 (mod n)
0u
Da −1 ∈ B1 und u ungerade, ist (−1)2
wohldefiniert.
Prof. Dr. C. Karg (HS Aalen)
≡ −1 (mod n). Also ist j
Kryptografische Protokolle
Generierung von Primzahlen
24 / 45
Miller Rabin Primzahltest
Solide Beweise
Existenz von soliden Beweisen (Forts.)
Die Menge B2 ist definiert als
j
B2 = {a ∈ Z∗n | a2 u ≡ ±1 (mod n)}
B1 ⊆ B2 : Wähle ein beliebiges a ∈ B1 .
Demnach ist a kein solider Beweis. Also existiert ein
i ∈ {0, 1, . . . , r − 1} mit:
i
i+1 u
a2 u ≡ a2
r
≡ . . . ≡ a2 u ≡ 1 (mod n)
j
Gemäß Definition von j gilt i ≤ j und somit a2 u ≡ 1 (mod n).
Also ist a ∈ B2 .
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Miller Rabin Primzahltest
Generierung von Primzahlen
25 / 45
Solide Beweise
Existenz von soliden Beweisen (Forts.)
B2 ist eine Untergruppe von Z∗n : Wähle beliebige a, b ∈ B2 .
Es gilt:
j
j
j
(a · b)2 u ≡ a2 u · b 2 u ≡ (±1) · (±1) ≡ ±1 (mod n)
Also ist a · b ∈ B2
Mit ZTK (Satz 9.9) folgt, dass B2 eine Untergruppe von Z∗n ist.
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Generierung von Primzahlen
26 / 45
Miller Rabin Primzahltest
Solide Beweise
Existenz von soliden Beweisen (Forts.)
B2 ist eine echte Untergruppe von Z∗n : 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 a ∈ B2 gilt
entweder
j
a2 u CRT
hn1 ,n2 i (−1, −1)
oder
j
a2 u CRT
hn1 ,n2 i (1, 1)
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Miller Rabin Primzahltest
Generierung von Primzahlen
27 / 45
Solide Beweise
Existenz von soliden Beweisen (Forts.)
j
Wähle ein a ∈ B2 mit a2 u ≡ −1 (mod n).
Definiere b CRT
hn1 ,n2 i (a1 , 1), wobei a1 = a mod n1 .
Es gilt:
j
j
b 2 u ≡ a12 u
≡ −1
j
b2 u ≡ 1
(mod n1 )
(mod n1 )
(mod n2 )
j
Also: b 2 u CRT
hn1 ,n2 i (−1, 1). Folglich kann b nicht in B2 enthalten sein.
Ergebnis: B2 ist eine echte Untergruppe von Z∗n .
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Generierung von Primzahlen
28 / 45
Miller Rabin Primzahltest
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)
Kryptografische Protokolle
Miller Rabin Primzahltest
Generierung von Primzahlen
29 / 45
Ganzzahlpotenzen
Erkennen von Potenzen (Forts.)
Ziel: Entwicklung eines Polynomialzeit Algorithmus für obiges
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)
Kryptografische Protokolle
Generierung von Primzahlen
30 / 45
Miller Rabin Primzahltest
Ganzzahlpotenzen
Erkennen von Potenzen (Forts.)
SearchBase(n, e)
Input: Natürliche Zahlen n, e, wobei n ≥ 2 und
2 ≤ e ≤ log2 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 6= n and (right − left)/2 > 0
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Miller Rabin Primzahltest
Generierung von Primzahlen
31 / 45
Ganzzahlpotenzen
Erkennen von Potenzen (Forts.)
10
11
12
13
if x = n then
return b
else
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)
Kryptografische Protokolle
Generierung von Primzahlen
32 / 45
Miller Rabin Primzahltest
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 ≤ log2 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)
Kryptografische Protokolle
Miller Rabin Primzahltest
Generierung von Primzahlen
33 / 45
Ganzzahlpotenzen
Erkennen von Potenzen (Forts.)
PerfectPower(n)
Input: Natürliche Zahl n > 2
Output: true, falls n eine Ganzzahlpotenz ist, false, sonst
1 found := false; e := 2
2 while e ≤ log2 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 n ist keine Ganzzahlpotenz“
”
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Generierung von Primzahlen
34 / 45
Miller Rabin Primzahltest
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 · 2r
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 6= 1) and (x 6= n − 1) then
7
return true
8
if (d 6= 1) then
9
return true
10
return false
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Miller Rabin Primzahltest
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 an−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)
Kryptografische Protokolle
Generierung von Primzahlen
36 / 45
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 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)
Kryptografische Protokolle
Miller Rabin Primzahltest
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)
Kryptografische Protokolle
Generierung von Primzahlen
38 / 45
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
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Miller Rabin Primzahltest
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
(kZ∗n k − kB2 k) + (n − 1 − kZ∗n k)
1
≥
n−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
1 s
kleiner-gleich 2
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Generierung von Primzahlen
40 / 45
Miller Rabin Primzahltest
Bemerkungen
Bemerkungen
• Der Miller-Rabin Primzahltest ist ein Monte Carlo Algorithmus
mit einseitigem Fehler
. Stuft der Miller-Rabin Test eine Zahl als zusammengesetzt
ein, dann ist das Ergebnis 100%-ig 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
• Voraussetzung für den Einsatz des Miller-Rabin Tests sind
kryptografisch gute Zufallszahlen
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Miller Rabin Primzahltest
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) = kZ∗n k = (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)
Kryptografische Protokolle
Generierung von Primzahlen
42 / 45
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)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)
Kryptografische Protokolle
Generierung von Primzahlen
43 / 45
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
Prof. Dr. C. Karg (HS Aalen)
Kryptografische Protokolle
Generierung von Primzahlen
44 / 45
Zusammenfassung
Zusammenfassung
• Primzahlen spielen für kryptografische 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)
Kryptografische Protokolle
Generierung von Primzahlen
45 / 45