• Keine Ergebnisse gefunden

HochschuleRheinMain Kryptologie

N/A
N/A
Protected

Academic year: 2022

Aktie "HochschuleRheinMain Kryptologie"

Copied!
87
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Skript zur Vorlesung

Kryptologie

Wintersemester 2013/2014

Prof. Dr. Steffen Reith Steffen.Reith@hs-rm.de

Hochschule RheinMain

Fachbereich Design Informatik Medien

Erstellt von: Eugen Wittmann Zuletzt überarbeitet von: Steffen Reith

Email: Steffen.Reith@hs-rm.de Erste Version: August 2006

Version: 1371 Date: 2015-06-16

(2)
(3)

Nichts ist getan, wenn noch etwas zu tun übrig ist.

Carl Friedrich Gauß

je n’ai pas le temps Évariste Galois

Dieses Skript ist aus der Vorlesung „Kryptographische Algorithmen“ des Diplom-Studiengangs Informatik und der Vorlesung „Kryptologie“ des Masterstudiengangs Informatik an der Hoch- schule RheinMain (früher Fachhochschule Wiesbaden) hervorgegangen. Ich danke allen Höreren dieser Vorlesungen für konstruktive Anmerkungen und Verbesserungen. Insbesondere möchte ich Herrn Mykhailo Moldavskyy und besonders Herrn Patrick Vogt für ihre Verbesserungsvor- schläge danken. Naturgemäß ist ein Skript nie fehlerfrei (ganz im Gegenteil!) und es ändert (mit Sicherheit!) sich im Laufe der Zeit. Deshalb bin ich auf weitere Verbesserungvorschläge

angewiesen.

(4)
(5)

Inhaltsverzeichnis

Inhaltsverzeichnis

1. Klassische Public-Key Kryptographie 1

1.1. Einige Grundlagen der Rechnerarithmetik . . . 1

1.1.1. Stellenwertsysteme . . . 1

1.1.2. Die klassischen Algorithmen . . . 1

1.1.2.1. Die Addition und Subtraktion . . . 1

1.1.2.2. Die Multiplikation . . . 3

1.1.2.3. Die Division . . . 5

1.1.2.4. Die Exponentiation . . . 8

1.2. Einige Grundlagen aus der elementaren Zahlentheorie . . . 8

1.2.1. Der größte gemeinsame Teiler . . . 9

1.2.2. Restklassenringe . . . 11

1.3. Das RSA Public-Key Kryptosystem . . . 12

1.3.1. RSA – Schlüsselerzeugung . . . 12

1.3.2. RSA – Ver- und Entschlüsselung . . . 14

1.4. Digitale Signaturen . . . 14

1.5. Angriffe auf RSA . . . 15

1.6. Primzahlerzeugung . . . 16

2. ECC – Elliptic Curve Cryptography 18 2.1. Der klassische Diffie-Hellman Schlüsselaustausch & Diskrete Logarithmen . . . . 18

2.2. Einige Grundlagen . . . 20

2.3. Das Gruppengesetz . . . 23

2.4. Der Diffie-Hellman Key-Exchange mit Elliptischen Kurven . . . 26

3. Symmetrische Kryptosysteme 27 3.1. Blockchiffren . . . 28

3.2. Stream Ciphers . . . 28

3.3. Einige Grundlagen über endliche Körper . . . 29

3.4. AES – Advanced Encryption Standard . . . 31

3.5. Modes of Operation . . . 34

4. Hashfunktionen und Anwendungen 36 4.1. Die Merkle-Damgård Konstruktion (Merkle’s meta method) . . . 37

4.2. Challenge-Response Verfahren. . . 39

5. Zero-Knowledge Protokolle 39 5.1. Das Fiat-Shamir Protokoll . . . 41

A. Grundlagen und Schreibweisen 43 A.1. Mengen . . . 43

A.1.1. Die Elementbeziehung und die Enthaltenseinsrelation . . . 43

A.1.2. Definition spezieller Mengen . . . 43

A.1.3. Operationen auf Mengen. . . 44

A.1.4. Gesetze für Mengenoperationen . . . 44

A.1.5. Tupel (Vektoren) und das Kreuzprodukt . . . 45

A.1.6. Die Anzahl von Elementen in Mengen . . . 45

A.2. Relationen und Funktionen . . . 46

A.2.1. Eigenschaften von Relationen . . . 46

A.2.2. Eigenschaften von Funktionen. . . 46

A.2.3. Permutationen . . . 47

(6)

Inhaltsverzeichnis

A.3. Summen und Produkte. . . 48

A.3.1. Summen . . . 48

A.3.2. Produkte . . . 49

A.4. Gebräuchliche griechische Buchstaben . . . 50

B. Einige formale Grundlagen von Beweistechniken 50 B.1. Direkte Beweise . . . 51

B.1.1. Die Kontraposition . . . 52

B.2. Der Ringschluss . . . 52

B.3. Widerspruchsbeweise . . . 53

B.4. Der Schubfachschluss . . . 53

B.5. Gegenbeispiele . . . 54

B.6. Induktionsbeweise und das Induktionsprinzip . . . 54

B.6.1. Die vollständige Induktion . . . 54

B.6.2. Induktive Definitionen . . . 56

B.6.3. Die strukturelle Induktion . . . 56

C. Komplexität 59 C.1. Effizient lösbare Probleme: die KlasseP . . . 59

C.1.1. Das Problem der 2-Färbbarkeit . . . 61

C.2. Effizient überprüfbare Probleme: die KlasseNP . . . 64

C.3. Schwierigste Probleme inNP: der Begriff derNP-Vollständigkeit . . . 67

C.3.1. Traveling Salesperson istNP-vollständig . . . 69

C.4. Die Auswirkungen derNP-Vollständigkeit . . . 70

C.5. Der Umgang mitNP-vollständigen Problemen in der Praxis . . . 72

Stichwortverzeichnis 77

Literatur 81

(7)

1. Klassische Public-Key Kryptographie

Die Grundlage der Public-Key Kryptographie ist die Idee, einen öffentlichen Verschlüsselungs- schlüssel (im „Telefonbuch“) und einen geheimen Entschlüsselungsschlüssel zu verwenden. Dabei soll es unmöglich sein, aus dem öffentlichen Schlüssel den privaten Schlüssel zu berechnen, und es darf nur mit Hilfe des geheimen Schlüssels möglich sein, die Nachricht zu entschlüsseln.

Funktionen, bei denen es (praktisch) unmöglich ist, aus dem Bild das Urbild zu berechnen, nennt man Einwegfunktionen (engl. one-way functions). Kann man das Urbild mit Hilfe ei- nes Geheimnisses doch (effizient) berechnen, so nennt man eine solche Einwegfunktion auch Trapdoor-Funktion. Solche Funktionen suchen wir, um Public-key Kryptographie betreiben zu

können.

Da viele bekannte Public-Key Kryptosysteme Ergebnisse aus der Algebra und Zahlentheorie verwenden, müssen/dürfen wir Mathematik betreiben.

1.1. Einige Grundlagen der Rechnerarithmetik

Wie wir noch sehen werden, arbeiten viele Verfahren der Public-Key Kryptographie mit großen natürlichen Zahlen mit bis zu 4096 Bit (ca. 1200 Dezimalstellen). Aus diesem Grund bildet eine Bibliothek zum Rechnen mit großen Zahlen die Basis für viele Algorithmen der Public-Key Kryptographie. Die dazu benötigten Algorithmen sollen in diesem Abschnitt kurz vorgestellt werden. Details und Erweiterungen finden sich in [Knu98] und umfassende Informationen zur Implementation gibt [Wel01].

1.1.1. Stellenwertsysteme

Üblicherweise repräsentieren Digitalcomputer natürliche Zahlen in Binärdarstellung einer fester Länge, d.h. eine Zahl wird als geordnete Folge

(xn−1xn−2. . .x1x0)2,wobei xi{0, 1} und1⩽i < n,

dargestellt. Die Zahlnwird oftRegisterbreitegenannt. Die Folge(xn−1xn−2. . .x1x0)2 repräsen- tiert dann den Wert

x=

n−1

i=0

xi2i

Das Gewicht der iten Ziffer xi ist also eine 2er Potenz und2 wird alsBasis des Zahlensystems bezeichnet. Offensichtlich kann man auch andere BasenBfür eine Zahlendarstellung verwenden.

Üblicherweise kommen z.B. noch B = 16 (Hexadezimaldarstellung), B = 10 (Dezimaldarstel- lung), B=8(Oktaldarstellung) oder B=60 (Sexagesimaldarstellung) zum Einsatz.

IstB⩾2 die Basis einer Zahlendarstellung, so nennen wir diese B-näre Darstellung. Der Ein- fachheit halber verwenden wir für den Wert x=∑n−1

i=0 xi2i auch (xn−1xn−2. . .x1x0)2, d.h. wir unterscheiden nicht zwischen Wert und der jeweiligen Darstellung der Zahl.

1.1.2. Die klassischen Algorithmen

In diesem Abschnitt sollen die klassischen Algorithmen zur Addition, Subtraktion und Multipli- kation und Division von Zahlen in B-närer Darstellung vorgestellt werden, die üblicherweise für die BasisB=10 verwendet werden.

1.1.2.1. Die Addition und Subtraktion Sei B⩾2 die Basis unserer Zahlendarstellung und a = (an−1an−2. . .a1a0)B

b = (bn−1bn−2. . .b1b0)B

(8)

1. Klassische Public-Key Kryptographie

Algorithmus 1: Addition zweier natürlicher Zahlen

Eingabe : Zwei Zahlena= (an−1. . .a1a0)B,b= (bn−1. . .b1b0)B und die Anzahl der Ziffernn

Ergebnis: Die Summe c= (cn−1. . .c1c0)B von aund bund einen evtl. Übertrag

/* Initalisiere den Zähler */

i=0;

/* Initalisiere den Übertrag */

carry=0;

for (i=0; i < n; i++){ t=a[i] +b[i] +carry;

c[i] =tmodB;

/* tdivB */

carry=Bt; }

/* Gebe einen evtl. Überlauf zurück */

return carry;

zwei Zahlen in B-närer Darstellung. Es gilt:

a+b =

n−1

i=0

aiBi+

n−1

i=0

biBi

=

n−1

i=0

(ai+bi)Bi

Da die Ziffern ai,bi {0, . . .B−1} sind, gilt 0 ⩽(ai+bi) ⩽2(B−1) für0 ⩽i < n, d.h. die Summe ai+bi kann evtl. nicht mehr als einzelne Ziffer dargestellt werden. Offensichtlich ist 2(B−1) =2B−2=1·B1+ (B−2)·B0 = (1B−2)B, d.h. die Summeai+bikann alsB-näre Ziffer plus einem Übertrag von maximal 1 auf die nächste Ziffer darstellt werden.

Damit ergibt sich Algorithmus 1 zur Addition von zwei Zahlen, wenn a und b die gleiche Anzahl von Ziffern haben.

Bemerkung 1:

• Die spezielle Wahl der Basis B hat keinen Einfluß auf Algorithmus 1, d.h. wir wählen B so, dass

möglichst wenige Schleifendurchläufe benötigt werden und

der verarbeitende Prozessor die Summe a[i] +b[i] +carry effizient berechnen kann.

Der Übertrag auf eine nächste Ziffer wird üblicherweise mit dem englischen Wort

„carry“ bezeichnet.

• Für32-Bit Prozessoren bietet sichB=232an, da diese Wahl dafür sorgt, dass der Prozessor die Summe a[i] +b[i] +carryeffizient mit zwei Maschinenbefehlen berechnen kann.

• Bei einer C-Implementierung bietet es sich an, die Zahlen als Array vom Typ unsigned longabzuspeichern, wobei die erste Arraykomponente die Anzahl der Ziffern der jeweiligen Zahl enthält.

Die Subtraktion kann mit einem sehr ähnlichen Algorithmus implementiert werden, wenn a und bdie gleiche Anzahl von Ziffern hat (siehe Algorithmus2).

Beispiel 2: Sei B = 10. Dann ergeben sich bei der Berechnung von 1372−1285 = 0087 mit Algorithmus 2 die folgenden Zwischenwerte:

(9)

1.1. Einige Grundlagen der Rechnerarithmetik

Algorithmus 2: Subtraktion zweier natürlicher Zahlen

Eingabe : Zwei Zahlena= (an−1. . .a1a0)B,b= (bn−1. . .b1b0)B und die Anzahl der Ziffernn

Ergebnis: Die Differenz c= (cn−1. . .c1c0)B von aund bund einen evtl. Unterlauf

/* Initalisiere den Zähler */

i=0;

/* borrow==1, wenn von der aktuellen Stelle nicht geborgt wurde */

borrow=1;

for (i=0; i < n; i++){ if (borrow==1){

t=B+a[i] −b[i];

} else{

t= (B−1) +a[i] −b[i];

}

c[i] =tmodB;

/* tdivB */

borrow=Bt; }

/* Gebe einen evtl. Unterlauf zurück */

return borrow;

i a[i] b[i] t c[i] borrow

0 2 5 7 7 0

1 7 8 8 8 0

2 3 2 10 0 1

3 1 1 10 0 1

Beobachtung 3: Die Algorithmen 1 und 2 haben eine Laufzeit von O(n), wobein die Anzahl der Ziffern der Zahlena und b ist.

1.1.2.2. Die Multiplikation Sei B⩾2 und

a = (an−1an−2. . .a1a0)B b = (bn−1bn−2. . .b1b0)B

zwei Zahlen in B-närer Darstellung, dann gilt a·b = (

n−1

i=0

aiBi)·(

n−1

i=0

biBi)

= b0·(

n−1

i=0

aiBi) +b1B1·(

n−1

i=0

aiBi) +· · ·+bn−1Bn−1·(

n−1

i=0

aiBi)

=

n−1

i=0

aib0Bi+

n−1

i=0

aib1Bi+1+· · ·+

n−1

i=0

aibn−1Bi+(n−1)

=

n−1

j=0 n−1

i=0

aibjBi+j (⋆)

Damit ergibt sich für zwei Zahlenaundbderen DarstellungnZiffern lang ist, dass das Produkt a ·b aus maximal (n −1) + (n− 1) + 1+ 1 = 2n signifikanten Stellen besteht. Für eine

(10)

1. Klassische Public-Key Kryptographie

Algorithmus 3: Multiplikation zweier natürlicher Zahlen

Eingabe : Zwei Zahlena= (an−1. . .a1a0)B,b= (bn−1. . .b1b0)B und die Anzahl der Ziffernn

Ergebnis: Das Produkt c= (cn−1. . .c1c0)B von a undb

/* Initalisiere das Ergebnisarray */

for (i=0; i <2·n; i++){ c[i] =0;

}

/* Führe die eigentliche Multiplikation durch */

for (j=0; j < n; j++) { carry=0;

for(i=0; i < n; i++){

t=c[i+j] +a[i]·b[j] +carry;

c[i+j] =tmodB; carry=Bt; }

c[i+n] =carry;

}

Implementierung ist die Summendarstellung (⋆) nicht effizient nutzbar, da erst die Produkte aibj berechnet und gespeichert werden müssten. Sei c[i+j] die (i+j)te Stelle der Zahl a·b, dann berechnen wir einfacher

t=c[i+j] +a[i]·[j] +carry,

wobeicarryder Übertrag aus der Berechnung der letzten Stelle ist. Da0⩽c[i+j],a[i],b[i], carry⩽ (B−1) ist, gilt0⩽t⩽(B−1) + (B−1)2+ (B−1) =2B−2+B2−2B+1=B2−1und weiterhin

B2−1= (B| {z }−1)

Ziffer

·B1+ (B| {z }−1)

Ziffer

·B0.

Deshalb kanntin zweiB-nären Ziffern gespeichert werden. Die zweite Ziffer vontdient als Über- trag für die nächste Berechnung, d.h. der folgende Algorithmus besteht aus zwei verschachtelten Schleifen, wobei die äußere Schleife die Teilprodukte bj·(an−1. . .a1a0)Bberechnet.

Beispiel 4: SeiB=10, a= (123)10 und b= (987)10, dann ista·b= (121401)10, da sich mit Algorithmus 3 folgende Werte ergeben:

j i carry t c[0] c[1] c[2] c[3] c[4] c[5]

0 0 0 21 1 0 0 0 0 0

0 1 2 26 6 0 0 0 0 0

0 2 2 29 1 6 9 2 0 0

1 0 0 20 1 0 9 2 0 0

1 1 2 27 1 0 7 2 0 0

1 2 2 22 1 0 7 2 2 0

2 0 0 14 1 0 4 2 2 0

2 1 1 11 1 0 4 1 2 0

2 2 1 12 1 0 4 1 2 1

(11)

1.1. Einige Grundlagen der Rechnerarithmetik

Bemerkung 5:

• Algorithmus3benötigt eine Funktion um zwei Ziffern der BasisBmultiplizieren zu können.

Wählt man B = 232, so ist die evtl. in C nicht immer direkt möglich (evtl. kein 64 Bit Datentyp auf 32 Bit Rechnern).

• Die Laufzeit dieses Algorithmus ist O(n2). Es existiert ein asymptotisch schnellerer Multi- plikationsalgorithmus mitO(nlognlog logn), der die FFT (Fast Fourier Transformation) benutzt. Allerdings ist hier der Overhead (die Konstante, die durch dieO-Notation ver- borgen wird) extrem groß. Für kryptographische Zwecke ist deshalb derO(n2)-Algorithmus dennoch schneller. Evtl. kann die Karatsuba-Multiplikation mit O(nlog23) = O(n1.58496) zum Einsatz kommen.

• Die Wahl der Basis hat starke Auswirkungen auf die Laufzeit. Sei die Laufzeit einer konkreten Implementierung c·n2, wobei c eine Konstante ist, dann ergibt sich im Fall B=232für(an−1. . .a0)232·(bn−1. . .b0)232 eine Laufzeit vonc·n2. Wählt man nunB=216 so sind die beiden Zahlen in dieser Darstellung doppelt so lang, d.h. (an−1. . .a0)216

bzw. (b2·n−1 . . .b0)216, womit sich eine Laufzeit von c·(2n)2 = 4·c·n2 ergibt. D.h. das Verdoppeln der Anzahl der Bits der Basis verkleinert die Laufzeit auf ein Viertel.

1.1.2.3. Die Division Im Vergleich zu den Algorithmen für Addition, Subtraktion und Multi- plikation, erzeugt der Divisionsalgorithmus mit Abstand den größten Implementierungsaufwand, was durch seine vergleichsweise komplexe Struktur bedingt ist.

Ab jetzt gehen wir davon aus, dass a > b. Wir suchen also einen Algorithmus der q und 0⩽r < b bestimmt, sodass

a=q·b+r

gilt, d.h. q = a und r = amodb. Es kann gezeigt werden, das q und r eindeutig bestimmt sind.

Definition 6: SeiB⩾2 eine beliebige Basis. Wir sagen eine Zahlc= (cn−1cn−2. . .c1c0)B ist normalisiert, wenncn−1B2 gilt.

Soll q= a/b und r = amodb berechnet werden, dann können a und bmit einer Zahl d so multipliziert werden, dass bnormalisiert ist. Es gilt:

a = qb+r ad = qbd+rd,

d.h. durch die Normalisierung ändert sichqnicht und der berechnete Restrdmuss noch durchd geteilt werden, umrzu enthalten. Ab jetzt gehen wir davon aus, dassbbei der Berechnung von q = ⌊a⌋ und r = amodb schon normalisiert ist, allerdings muss dann berücksichtigt werden, dass aevtl. eine Stelle länger wird:

2n+1Stellen

z }| {

(a2na2n−1. . .a0)B:

nStellen

z }| { (bn−1. . .b0)B=

nStellen

z }| {

(qn−1. . .q0)B und Rest

nStellen

z }| { (rn−1. . .r0).

Soll der klassische Divisionsalgorithmus durchführt werden, so müssen die verschiedenen qi berechnet oder geraten werden, um dann in jedem Schrittqi·bvona abziehen zu können. Bei großen Basen ist es also sehr ineffizient qidurch Probieren aller Möglichkeiten zu ermitteln. Sei nun

ˆ

qi=defmin

(⌊aj+nB+aj+n−1 bj−1

⌋ ,B−1

)

(12)

1. Klassische Public-Key Kryptographie

Satz 7: Sei a = (anan−1. . .a0)B und b= (bn−1. . .b0)B, wobei b normalisiert, dann gilt bei der Durchführung des Divisionsalgorithmus für qi, 0⩽i < n:

ˆ

qi−2⩽qi⩽qˆi

Beweis: Siehe [Knu98, Abschnitt 4.3.1, Theorem A und Theorem B]. # Beobachtung 8:

• Die vorläufige Zifferi unterscheidet sich,unabhängig von der Basis, maximal um 2 von der wirklichen Ziffer qi und

i ist nie zu klein.

• Die Wahrscheinlichkeit, dassium 2zu groß ist, beträgt B2. Dies bedeutet aber auch, dass spezielle Tests der Software für diesen Fall benötigt werden.

Mit Hilfe dieser Techniken ergibt sich Algorithmus4.

Beispiel 9: SeiB=10 und n=3. Wir dividieren 723604 durch 203. Es ergeben mit Hilfe von Algorithmus 4 die folgenden Zwischenwerte:

i a6 a5 a4 a3 a2 a1 a0 b2 b1 b0 qˆ q3 q2 q1 q0 qbˆ

− 0 7 2 3 6 0 4 2 0 3 − − − − − −

2 8 9 4 4 1 6 8 1 2 − − − − − −

3 2 4 3 6 4 1 6 8 1 2 28/8=3 − − − − 3·812=2436

3 0 4 5 8 4 1 6 8 1 2 − 3 − − − −

2 0 4 0 6 0 1 6 8 1 2 45/8=5 3 − − − 5·812=4060

2 0 0 5 2 4 1 6 8 1 2 − 3 5 − − −

1 0 0 4 8 7 2 6 8 1 2 52/8=6 3 5 − − 6·812=4872

1 0 0 0 3 6 9 6 8 1 2 − 3 5 6 − −

0 0 0 0 3 2 4 8 8 1 2 36/8=4 3 5 6 − 4·812=3248

0 0 0 0 0 4 4 8 8 1 2 − 3 5 6 4 −

− 0 0 0 0 1 1 2 8 1 2 − 3 5 6 4 −

Somit erhalten wir den Quotienten q= (3564)10 und den Rest r= (0112)10

Damit zeigt sich, dass effiziente Algorithmen für die Addition, Subtraktion, Multiplikation und Division von natürlichen bzw. ganzen Zahlen existieren. Ein Algorithmus heißt dabei effizient, wenn seine Laufzeit durch ein Polynom p(n) beschränkt ist, wobei n die Anzahl der Bits ist, die gebraucht werden, um die Eingabe zu kodieren (siehe Abbildung 1). Es ergeben sich die folgenden Laufzeiten für die klassischen Algorithmen:

• Addition / Subtraktion: O(n)

• Multiplikation / Division: O(n2)mit der „Schulmethode“

(13)

1.1. Einige Grundlagen der Rechnerarithmetik

Algorithmus 4: Division zweier natürlicher Zahlen

Eingabe : Zwei Zahlena = (a2n−1 . . .a1a0)B,b(bn−1 . . .b1b0)B und die Anzahlnder Ziffern des Divisors

Ergebnis: Der Quotient q= (qn−1. . .q1q0)B und der Restr= (rn−1. . .r1r0)B, so dass a=qb+r

berechne den Normalisierungsfaktor d;

(a2n. . .a1a0)B=a·d;

(bn−1. . .b1b0)B=b·d;

for (i⩽n; i⩽0;i++) { ˆ

q=min(ai+nB+abn−1i+n−1⌋,B−1);

seianeu = (ai+n. . .ai)B−qˆ ·(bn−1. . .b0)B;

/* qˆ zu groß */

if (aneu<0) {

aneu=aneu+ (bn−1. . .b0)B; q–;ˆ

}

/* qˆ immer noch zu groß (sehr selten) */

if (aneu<0) {

aneu=aneu+ (bn−1. . .b0)B; q–;ˆ

}

ersetze(ai+n. . .ai) durchaneu; qi=q;ˆ

}

denormalisiere r;

return r undq;

Anzahl der Objekten

Instruktionen 10 20 30 40 50 60

0.00001 0.00002 0.00003 0.00004 0.00005 0.00006

n Sekunden Sekunden Sekunden Sekunden Sekunden Sekunden

0.0001 0.0004 0.0009 0.0016 0.0025 0.0036

n2

Sekunden Sekunden Sekunden Sekunden Sekunden Sekunden

0.001 0.008 0.027 0.064 0.125 0.216

n3

Sekunden Sekunden Sekunden Sekunden Sekunden Sekunden

0.1 3,2 24.3 1.7 5.2 13.0

n5

Sekunden Sekunden Sekunden Minuten Minuten Minuten

0.001 1 17.9 12.7 35.7 366

2n

Sekunden Sekunde Minuten Tage Jahre Jahrhunderte

0.059 58 6.5 3855 2·108 1.3·1013

3n

Sekunden Minuten Jahre Jahrhunderte Jahrhunderte Jahrhunderte

Abbildung 1: Rechenzeitbedarf von Algorithmen auf einem „1-MIPS“-Rechner

(14)

1. Klassische Public-Key Kryptographie

Algorithmus 5: Exponentiation zweier natürlicher Zahlen Eingabe : Zwei Zahlenx= (xn−1. . .x1x0)B,e= (en−1. . .e1e0)B Ergebnis:xe

/* Initalisiere temporäre Variable */

y=x;

/* Arbeite alle Bits der Binärdarstellung von e ab */

for (i=BitLength(e) −2; i⩾0;i–) { y=y2·xBit(e,i);

}

return y;

1.1.2.4. Die Exponentiation Offensichtlich ist die triviale Methode ab = a| ·a·a{z·. . .·a}

b−mal

zu langsam, denn dieser Algorithmus braucht O(2n) Multiplikationen. Dies ist also kein effizienter Algorithmus. Die folgende Idee führt zum Ziel: Füra2n berechne

( . . .((

a2)2)···)2

,

wobei genau n-mal quadriert wird. D.h. für a16 benötigen wir nur 4 Multiplikationen statt 16 Multiplikationen bei der naiven Methode.

Es stellt sich die Frage, wie wir dieses Vorgehen für Zahlen anwenden, die keine Zweierpotenz sind. Da jede natürliche Zahl als Summe von Zweierpotenzen (Binärdarstellung) geschrieben werden kann, ergibt sich füreN:

e = 2n−1en−1+2n−2en−2+· · ·+21e1+20e0, miten−1=1

= (2n−2en−1+2n−3en−2+· · ·+20e1)·2+e0 ... (vergleiche „Horner-Schema“)

= (. . .((2en−1+en−2)·2+en−3)·2+. . .+e1)·2+e0, Dann ergibt sich

xe = x(...((2en−1+en−2)·2+en−3)·2+···+e1)·2+e0

= (

x(...((2en−1+en−2)·2+en−3)·2+···+e1))2

·xe0 ... (mit en−1=1)

= (

. . .((

x2·xen−2)2

·xen−3 )2

·. . . )2

·xe0.

D.h. wir benötigen n−1 Schritte, umxe zu berechnen. Diese Methode zur Potenzierung heißt

„Repeated square-and-multiply“ (siehe Algorithmus 5). Offensichtlich beträgt die Laufzeit von Algorithmus5 dann O(n3).

1.2. Einige Grundlagen aus der elementaren Zahlentheorie

Z ist das Symbol für die geordnete Menge {. . . ,−3,−2,−1, 0, 1, 2, 3, . . .} der ganzen Zahlen und N das Symbol für die Menge dernatürlichen Zahlen {0, 1, 2, 3, . . .}.

Bekannt ist, dass Z mit der normalen Zahlenaddition und -multiplikation ein kommutativer Ring mit Einselement ist.

(15)

1.2. Einige Grundlagen aus der elementaren Zahlentheorie

1.2.1. Der größte gemeinsame Teiler

Definition 10: Wir sagen ateilt n(kurz:a|n), wenn es eine ganze Zahl bgibt mitn=a·b.

Teilta nichtn, so schreibt man kurz a∤n.

Satz 11: Seien a,b,cZ, dann gilt:

(i) Aus a|b und b|c folgt a|c.

(ii) Aus a|b folgtac|bcfür alle c.

(iii) Aus c|a und c|bfolgt c|(da+eb) für alle dZ und eZ. (iv) Aus a|b und b̸=0 folgt |a|⩽|b|.

(v) Aus a|b und b|a folgt |a|=|b|.

Beweis: Übungsaufgabe! #

Definition 12: Ein gemeinsamer Teiler von aund bist eine ganze Zahl d mit d|a und d|b.

Beobachtung 13: Gilt nicht a=b=0, dann gibt es einen größten gemeinsamen Teilervon a und b (kurz:ggT(a,b)), denn die Teiler von a (bzw.b) sind durch |a| (bzw. |b|) beschränkt.

Definition 14: Ist ggT(a,b) =1, so heißt a (relativ) primzu b, a is coprim zu b oder a und b sind teilerfremd.

Satz 15 (Lineardarstellung des ggTs): Seien x,yZ und nicht x= y= 0, dann existiert a,bZmit

ax+by=ggT(x,y).

Beweis: Sei g > 0 die kleinste positive ganze Zahl der Form ax+by mit a,b Z. (Eine Zahl solcher Form gibt es, z.B.x2+y2.)

Wir zeigen, dassg=ggT(x,y)gilt. Jeder gemeinsame Teiler vonxundyteilt auchg=ax+by (siehe Satz 11(iii)), also insbesondereggT(x,y)|g. Angenommeng∤x, dann ist x=tg+r mit t,rZund0< r < g. Also istr=x−tg=x−t(ax+bx) =x−tax−tby= (1−ta)x+ (−tb)y, und dies ist ein Widerspruch zur Minimalität von g (denn r < g), also g| x. Analog lässt sich zeigen, dass g|y.

Damit ist g ein gemeinsamer Teiler von x und y, also ist der ggT(x,y) ein Vielfaches von g und g|ggT(x,y). Mit Punkt Satz 11(v) des letzten Satzes folgt dann g=ggT(x,y). #

Nun stellt sich die Frage, wie man den ggT (effizient) berechnet. Dazu verwenden wir den Euklidischen Algorithmus. Wenn n,m Z und m ̸= 0, dann können wir n durch m teilen (eventuell mit Rest) und es gilt n=q·m+rmit0⩽r <|m|, wobei diese Darstellung eindeutig

ist. Der Rest rwird kurz mit „amodb“ notiert, und der Quotientqmit „adivb“.

Algorithmus 6 terminiert, weil r ⩾ 0 und r in jedem Schleifendurchlauf kleiner wird (da amodb < b). Weiterhin gilt ggT(x,y) =ggT(y,xmody) als Schleifeninvariante, was die Kor- rektheit des Algorithmus zeigt (siehe [Knu98, Seite 337]). Dann stellt sich die Frage, ob es einen Algorithmus gibt, der die Lineardarstellung des ggT ausrechnet. Ein solcher Algorithmus ist als erweiterter Euklidische Algorithmusbekannt.

(16)

1. Klassische Public-Key Kryptographie

Algorithmus 6: Euklidischer Algorithmus Eingabe :a,bN

Ergebnis: Der größte gemeinsame Teiler von aund b while(b̸=0){

r=amodb;

a=b;

b=r;

}

/* Gebe den ggT zurück */

return b;

Seienx,yN, dann wird derggT durch die folgenden Schritte berechnet, wobeir0=def xund r1 =defy.

r0 = q1r1+r2, 0< r2 < r1 r1 = q2r2+r3, 0< r3 < r2

...

rk−1 = qkrk+rk+1, 0< rk+1 < rk ...

rn−2 = qn−1rn−1+rn, 0< rn< rn−1 rn−1 = qnrn+rn+1

| {z }

=0

.

Der ggT vonx undyist dann rn und diese Berechnung terminiert, weil r1> r2 > r3>· · ·⩾0.

Satz 16: Sei nun x,yN, dann (i) rn=ggT(x,y).

(ii) Es istggT(x,y) =ax+by, wobei die Koeffizientena und bmit dem Erweiterten Euklidi- schen Algorithmus berechnet werden können.

Beweis:

(i) Betrachtet man die obigen Gleichungen rückwärts, dann gilt:rn|rn−1,rn|rn−2,rn|rn−3, . . .und damitrn| xundrn|y. Damit ist rn ein gemeinsamer Teiler vonxund y.

Sei nun t irgendein gemeinsamer Teiler von x und y, dann folgt aus obigen Gleichungen:

t|rk fürk=1, 2, . . .und insbesondere t|rn, d.h.rn muss der ggT sein.

(ii) Wir substituieren iterativ rk+1 durchrk−1−qkrk, d.h.

rn = rn−2−qn−1rn−1

= rn−2−qn−1(rn−3−qn−2rn−2)

= (1+qn−1qn−2)rn−2−qn−1rn−3 ...

= ax+by mita,bZ.

#

(17)

1.2. Einige Grundlagen aus der elementaren Zahlentheorie

1.2.2. Restklassenringe

SeinN\{0}unda,bZ, dann istakongruentbmodulon(kurz:abmodnoderab(n)), wenn n | (b−a). Dabei ist „“ eine Äquivalenzrelation, und a =def {b | b amodn} ist die Äquivalenzklasse aller zua kongruenten Zahlen. Für die Äquivalenzklasse anennt man aauch einen Repräsentantenoder Vertreter undaRestklasse(modulon). Die Menge aller Restklassen {a|aZ} modulon wird mitZn bezeichnet.

Offensichtlich ist jedes a Z kongruent zu einer Zahl 0 ⩽r < n, d.h. die Zahlen 0⩽ r < n sind Repräsentanten für alle Restklassen inZn. Sie heißen auch dienatürlichen Repräsentanten.

Da füraa(n) undbb (n)gilt: a+ba+b (n)unda·ba·b (n), ist(Zn,+,·) ein kommutativer Ring mit Einselement.

Oft schreiben wir a statt a und benutzen den Repräsentanten der Klasse. Hat a Zn ein multiplikativ Inverses, also gibt es ein b Zn mit ab 1 (n), dann nennen wir a prime Restklasse,Einheit oder Unit).

Satz 17: Sei n⩾2, dann ista eine Einheit genau dann, wenn ggT(a,n) =1.

Beweis:

“ Sei aprime Restklasse, also existiert ein bmitab1 modn, dann gilt n|(1−ab) und nach Definition von „|“ folgt nm+ab = 1. Nun muss ggT(a,n) = 1 gelten, denn sonst könnte ein g⩾2aus der Summe nm+abausgeklammert werden.

“ Es seiggT(a,n) =1, also existierene,dZmitae+nd=1. Dann gilt1−ae=ndund n|(1−ae). Also ist ae1 modnund damit ist a eine prime Restklasse. # Definition 18: Sei n⩾2, dann ist

Zn=def{a| 1⩽a⩽n−1 und ggT(a,n) =1}

die Einheitengruppe von Zn (d.h. (Zn,·) ist eine endliche Gruppe). Sei ϕ(n) =def#(Zn), dann ist ϕ(n) also die Anzahl der natürlichen Zahlen aus der Menge {1, . . . ,n−1}, die zu n relativ prim sind. ϕ heißt die Eulersche Phi-Funktion (engl. Euler’s totient function).

Folgerung 19: (Zn,+,·) ist endlicher Körper gdw. nP.

Beweis: Übungsaufgabe #

Satz 20 (Satz von Euler): Seien aN\ {0},n⩾2 und ggT(a,n) =1, dann gilt aϕ(n)1 modn.

Beweis: Sei Zn={a1, . . . ,aϕ(n)}, dann ist

aϕ(n)·a1·a2·. . .·aϕ(n) aa1·aa2·. . .·aaϕ(n)modn

aπ(1)·aπ(2)·. . .·aπ(ϕ(n))modn(π ist eine Permutation)

a1·a2·. . .·aϕ(n)modn.

Da(Zn,·)eine Gruppe ist, muss aϕ(n)1 modngelten. # Folgerung 21 (Kleiner Satz von Fermat): Sei p Primzahl, dann gilt füra̸=0 modp

ap−1 1 modp.

Beweis: Ist pprim, so gilt ϕ(p) =p−1. Die Aussage ergibt sich dann direkt aus dem Satz von

Euler (Satz 20). #

(18)

1. Klassische Public-Key Kryptographie

Bemerkung 22: Eine alternative (leicht verbesserte) Form des kleinen Satzes von Fermat ist:

Ist pprim, dann apamodp.

Lemma 23: Sei k⩾1 und pNprim, dann gilt ϕ(pk) =pk−1(p−1).

Beweis: Übungsaufgabe #

Satz 24 (vgl. [HW80]): Sei nNund n=pe11·. . .·perr mitpiP, pi̸=pj wenni̸=j und 1⩽i⩽r. Dann gilt:

ϕ(n) =n

r i=1

( 1− 1

pi

) .

Für m=p·q und p,qPgilt also insbesondere ϕ(m) = (p−1)(q−1).

Beweis: Sei ggT(n,m) =1, dann ist ϕ(nm) =ϕ(n)·ϕ(m). Dazu zeigen wir zunächst: Wenn a alle Werte zwischen 0 und n−1 annimmt und a alle Werte zwischen 0 und m−1 annimmt, dann durchläuftan+amalle RestklassenZmn.

Es gibtnmverschiedene Zahlen an+amund falls a1n+a1ma2n+a2mmodnm, dann ist a1n a2nmodm und a1m a2mmodn. Damit ergibt sich a1 a2modm und a1 a2modn, da die jeweiligen inversen Elemente vonnbzw.minZm bzw.Znexistieren. D.h. die nmverschiedenen Zahlenan+amsind inkongruent und es werden alle Restklassen durchlaufen.

Nun ist

ggT(an+am,nm) =1 gdw. ggT(an+am,m) =1 und ggT(an+am,n) =1 gdw. ggT(an,m) =1und ggT(am,n) =1

gdw. ggT(a,m) =1 undggT(a,n) =1.

Zu jedem zu nm coprimen Rest aus Znm ist also genau ein Paar von zu n bzw. m coprimen Resten zugeordnet. Also gilt auchϕ(nm) =ϕ(n)·ϕ(m). Damit ist die anfängliche Behauptung bewiesen.

Da fürpi,pj Pmitpi̸=pj und ei,ej N trivialerweiseggT(peii,pejj) =1 gilt, folgt:

ϕ(n) = ϕ(pe11 ·. . .·perr)

= ϕ(pe11)·. . .·ϕ(perr)

= pe11−1(p1−1)·. . .·perr−1(pr−1)

= n·( 1− p1

1

)·. . .·( 1− p1

r

)

= n·r

i=1

( 1−p1

i

)

Die zweite Aussage folgt dann offensichtlich. #

1.3. Das RSA Public-Key Kryptosystem

Dieses Verfahren wurde 1978 von R. Rivest, A. Shamir und L. Adleman in der Arbeit „A Method for Obtaining Digital Signatures and Public-Key Cryptosystems“ eingeführt1und ist auch heute noch im Gebrauch.

1.3.1. RSA – Schlüsselerzeugung

Die Schlüsselerzeugung für das RSA-Verfahren geschieht in drei Schritten:

1. Wähle zwei unterschiedliche Primzahlenp undq und berechnen=p·q.

1Angeblich wurde ein vergleichbares asymmetrisches Verschlüsselungsverfahren schon früher durch die britische Behörde CESG entdeckt (siehe [Ell87]).

(19)

1.3. Das RSA Public-Key Kryptosystem

2. Wähle eineZϕ(n), wobeiϕ(n) = (p−1)(q−1).

3. Berechne ein dZϕ(n) mited1 modϕ(n).

Es ergibt sich:

Public Key: (e,n) Private Key:(d,n) Bemerkung 25:

Zu 1: Zum jetzigen Zeitpunkt müssen die Primzahlenpund qmindestens512Bit groß sein. Es stellt sich also die Frage, wie diese Primzahlen berechnet werden können.

Zu 2: Wir wählen ein zufälliges 2⩽e⩽ϕ(n) −1 und prüfen, ob ggT(e,ϕ(n)) =1 via Euklidi- schem Algorithmus.

Zu 3: Wir wissen schon 1 = ggT(e,ϕ(n)) = ed+ϕ(n)n (siehe Satz 16). Damit gilt 1 edmodϕ(n), d.h. wir berechnen den geheimen Schlüsselanteil mit Hilfe des erweiterten Euklidischen Algorithmus.

Bemerkung 26: Die Primzahlenp und q, sowie ϕ(n) müssen geheim bleiben!

• Kennt Erichϕ(n)undnkann ernfaktorisieren (in Primfaktoren zerlegen) und er kann aus edann auchdberechnen. Dann kann er auchp+qberechnen, dennϕ(n) = (p−1)(q−1) = pq−p−q+1=n− (p+q) +1 und p+q=n−ϕ(n) +1. Weiterhin kann Erich auch p−qermitteln, indem er (p+q)2−4n= (p−q)2 ausnutzt und p−q=√

(p+q)2−4n (o.B.d.A. p > q) berechnet. Dann ergibt sich 2p= (p+q) + (p−q).

• Das Faktorisierungsproblem ist algorithmisch schwer (d.h. es ist kein Polynomialzeitalgo- rithmus bekannt).

Satz 27 (Chinesischer Restsatz, CRT - Chinese Remainder Theorem): Seien die Zah- len m1, . . . ,mn paarweise teilerfremd und a1, . . . ,anZ, dann hat die simultane Kongruenz

x a1modm1, x a2modm2,

...

x anmodmn eine Lösung, die modulo m=

n i=1

mi eindeutig ist.

Beweis: Um die Richtigkeit des Chinesischen Restsatzes zu beweisen, müssen sowohl die Existenz einer Lösung als auch die Eindeutigkeit dieser Lösung gezeigt werden:

„Existenz“: Seim=∏n

i=1miundMi=m/mifür1⩽i⩽n, dann gilt auchggT(mi,Mi) =1, weil allemi paarweise teilerfremd sind.

Wir berechnen das InverseyivonMiinZmi(etwa via Euklidischen Algorithmus), d.h.yiMi 1 modmi und setzen x=∑n

i=1aiyiMimodm(⋆).

Offensichtlich ist xeine Lösung jeder einzelnen Kongruenz, denn xaiy| {z }iMi

≡1

+

n

j=1 j̸=i

ajyjMj

| {z }

≡0

aimodmi.

Damit ist die Existenz gezeigt.

(20)

1. Klassische Public-Key Kryptographie

„Eindeutigkeit“: Angenommen es gibt mehr als eine Lösung, etwazund z (zund z verschie- den), dann giltzzmodmi für1⩽i⩽n. Da diemi paarweise teilerfremd sind, liefert die Konstruktion (siehe(⋆)), die die Existenz einer Lösung garantiert, auchzzmodm.

Dies ist ein Widerspruch. #

1.3.2. RSA – Ver- und Entschlüsselung

Die Ver- und Entschlüsselung mit Hilfe des RSA-Verfahrens funktioniert dann wie folgt:

E:ZnZn mit E(x) =xemodn D:ZnZn mit D(x) =xdmodn

D.h. die zu verschlüsselnden Nachrichten stammen aus der Menge{0, . . . ,n−1}.

Satz 28: Sei E die RSA-Verschlüsselungsfunktion und D die dazu passende Entschlüsselungs- funktion, dann gilt:

ED = DE = id.

Beweis: Wir müssen zeigen: xed xmodnfür alle xZn.

Fall xZn: Wir wissened−kϕ(n) =1, da ϕ(n)|(ed−1), alsoed=1+kϕ(n) und damit:

xed x1+kϕ(n)x·( x| {z }ϕ(n)

1„Euler“

)k xmodn.

Fall x̸∈Zn: Wenn p | x und q | x, dann x 0 modn und damit xed xmodn. O.B.d.A.

sei nun p | x und q ∤ x, also xed xmodp, weil x 0 modp, und analog zum obigen xed xmodq, weil 1 = ed−kϕ(n) = ed−k(p−1)(q−1) = ed−k(p−1)ϕ(q). Also insgesamtxed (xe)d xmodn.

Offensichtlich können wir die Rollen des öffentlichen Exponenteneund des privaten Exponenten

d vertauschen, was auchDE=id zeigt. #

Bemerkung 29:

• Wir können den „Repeated square-and-multiply“ Algorithmus leicht so anpassen, dass er xemodn effizient berechnet.

d sollte größer sein als n1/4, denn sonst gibt es einen effizienten Algorithmus, um d aus dem öffentlichen Anteil zu berechnen.

• Die Entschlüsselung des Ciphertextes kann mit Hilfe des „Chinesischen Restsatzes“ be- schleunigt werden.

1.4. Digitale Signaturen

Das RSA-System kann zusammen mit Hashfunktionen für digitale Signaturen eingesetzt werden.

Erzeugung: Alice möchte eine Nachrichtm digital signieren.

• Alice berechnet v=h(m) den Hashwert vonm.

• Alice berechnet svdmodn, wobei0⩽v < n und (d,n) ihr RSA private Key ist.

Überprüfung: Bob möchte überprüfen, ob die Signatur korrekt ist.

• Bob verwendet den public Key(e,n)von Alice.

• Bob berechnet vsemodnund h(m).

• Bob akzeptiert die Signatur gdw.v=h(m).

(21)

1.5. Angriffe auf RSA

1.5. Angriffe auf RSA

Die Hauptangriffsmöglichkeit auf das RSA-Verfahren ist ein Algorithmus für das folgende Pro- blem:

Problem: FACTORING Eingabe: NN

Ausgabe: Größter Primfaktor vonN

Keiner der heute bekannten Algorithmen kann das Faktorisierungsproblem in Polynomialzeit lösen. Sei

LN(γ,c) =defec(logN)γ(log logN)1−γ,

dann sind die schnellsten Methoden deren Laufzeit von der ZahlNabhängt:

• Continued Fraction Method: vermutete Laufzeit O(LN(12,c1)),

• Multiple Polynomial Quadratic Sieve: vermutete Laufzeit O(LN(12,c2))und

• Number Field Sieve: vermutete Laufzeit O(LN(13,c3)).

Weiterhin sind Methoden bekannt, deren Laufzeit vom gefundenen Faktorpabhängt:

• Faktorisieren durch Probieren: Laufzeit O(p·(logN)2) und

• Elliptic Curve Method: vermutete Laufzeit O(Lp(12,c4)·(logN)2).

Bemerkung 30:

• Ein Faktorisierungsalgorithmus mit Laufzeit LN(0,c) ist ein Polynomialzeitalgorithmus, wogegen einLN(1,c)-Algorithmus exponentielle Laufzeit hat. (Bezogen auf die Eingabelän- ge, alsologN.)

• Nach dem heutigen Stand muss N mindestens 1024 Bit (besser 1536 oder 2048 Bit) lang sein, damit es praktisch nicht faktorisiert werden kann.

Neben der Faktorisierung des öffentlichen Modulus sind noch andere Angriffe auf das RSA- Verfahren bekannt:

Common Modulus Attacke: Angenommen Bob und Bridget haben den öffentlichen Schlüssel (e1,n)bzw.(e2,n)und2ggT(e1,e2) =1. SeimZndie Nachricht, die an Bob und Bridget geschickt wird. Also gilt ci meimodn für i= 1, 2. Erich berechnet nun re1+se2 = 1 und o.B.d.A. gilt r <0.

Fall c1̸∈Zn: Dann kann ndurch die Berechnung von ggT(c1,n)>1 faktorisiert werden und alle Parameter sind bekannt.

Fall c1Zn: Berechnec−11 Zn, dann gilt

(c−11 )−r·cs2 (me1)r·(me2)sme1r+e2s mmodn.

Damit kann Erich die Nachricht mberechnen.

Small-Message-Space Attacke: Ist die Zahl der möglichen Nachrichten klein, kann Erich leicht alle Paare von Plain- und Ciphertext ausrechnen, etwa(p1,c1),(p2,c2), . . .und damit Nach- richten entschlüsseln.

2Dies ist nicht unrealistisch, da die Wahrscheinlichkeit, dass zwei zufällig gewählte natürliche Zahlen relativ prim sind, 620.608beträgt.

(22)

1. Klassische Public-Key Kryptographie

1.6. Primzahlerzeugung

Bei der Erzeugung von RSA-Schlüsseln werden (große) Primzahlen benötigt. Damit stellt sich die Frage, wie diese Primzahlen gefunden werden können.

Satz 31 (Euklid): Es gibt unendlich viele Primzahlen

Beweis: Angenommen es gibt nur endlich viele Primzahlen, etwa p1, . . . ,pr. Sei n=def 1+p1· p2·. . .·pr. Dann giltpi∤nfür alle 1⩽i⩽r, d.h.n ist entweder eine Primzahl odern enthält neue Primfaktoren, die von allen pi verschieden sind. Damit ergibt sich ein Widerspruch, was

zeigt, dass es unendlich viele Primzahlen gibt. #

Definition 32: Die Funktion

π(x) =def#{pP|p⩽x}

wird Primzahlfunktion genannt und gibt die Anzahl der Primzahlen kleiner gleich xan.

Der folgende Satz wurde schon durch den jungen Gauss vermutet und dann sowohl von Had- amard und de la Vallée Poussin unabhängig bewiesen:

Satz 33: Wenn xgroß ist, dann gilt:

π(x) x ln(x).

Beweis: Sprengt den Rahmen dieser Vorlesung, siehe [HW80] oder eine Vorlesung über Zahlen-

theorie. #

Folgerung 34: Wenn xsehr groß ist, dann ist im Schnitt jede ln(x)-te Zahl eine Primzahl.

Beispiel 35: Es gilt z.B. π(105) =9592 (entdeckt 1668) undπ(106) =78498.

Bemerkung 36: Sei x= 2512, dann ist ln(x) 355, d.h. wir müssen im Schnitt 178 Zahlen untersuchen, bis eine Primzahl gefunden ist. Es stellt sich noch die Frage, welche Verfahren / Algorithmen hier zu Einsatz kommen müssen.

Der kleine Satz von Fermat liefert eine notwendige Bedingung für Primzahlen. Sei n N ungerade und n⩾ 3. Ist n P und a N\ {0} mitggT(a,n) =1, dann ist an−1 1 modn.

D.h. ist an−1 ̸≡1 modn, dann giltn̸∈P. Leider ist die Umkehrung der Aussage nicht wahr!

Definition 37: Sei nN, n⩾3 und n̸∈P. Wir nennen n eine Carmichael-Zahl, wenn gilt:

an−1 1 modn für alle aN mit ggT(a,n) =1.

Bemerkung 38:

• Die kleinste Carmichael-Zahl ist 561=3·11·17.

• Es gibt unendlich viele Carmichael-Zahlen.

• Jeder Primfaktor einer Carmichael-Zahl kommt nur einmal vor („quadratfrei“).

Aufgrund der Existenz von Carmichael-Zahlen, brauchen wir bessere Verfahren um Primzahlen zu erkennen.

Definition 39: Sei n N und xZ, dann heißt x quadratischer Rest modulon, falls es ein yZ gibt mit y2xmodn. Sonst heißt x quadratischer Nichtrest.

(23)

1.6. Primzahlerzeugung

Definition 40: Sei p eine ungerade Primzahl und aZ, dann ist das Legendre-Symbol (

a p

) wie folgt definiert:

(a p

)

=def



0, falls p|a,

+1, falls a quadratischer Rest modulop,

−1, falls a quadratischer Nichtrest modulop.

Sei n ⩾ 3 eine ungerade Zahl mit Primfaktorzerlegung n = pe11pe22 ·. . .·perr, dann ist das Jacobi-Symbol (a

n

) wie folgt definiert:

(a n )

=def

(a p1

)e1( a p2

)e2

·. . .· ( a

pr

)er

| {z }

Legendre-Symbole

Bemerkung 41: Es existieren Algorithmen, mit denen das Legendre- bzw. Jacobi-Symbol effi- zient berechnet werden kann (vgl. Quadratisches Reziprozitätsgesetzund Ergänzungssätze).

Satz 42: Sei pP, dann existiert ein gZp, sodass Zp={g0,g1, . . . ,gp−2}, wobei g0=1.

Beweis: Siehe Vorlesung über Zahlentheorie oder Algebra. #

Bemerkung 43: Gruppen, die von einem Element erzeugt werden, nennt man zyklisch. Das erzeugende Element heißt Generator (der Gruppe).

Beispiel 44: Z5 ={1, 2, 3, 4}={20, 21, 22, 23}, d.h.2 ist Generator von Z5. Satz 45 (Euler Kriterium): Sei pP, ungerade und seixZ, dann gilt

(x p

)

x(p−1)/2modp.

Beweis:

Fall p|x: Beide Seiten sind kongruent 0modulo p.

Fall p∤x: Seigein Generator vonZp. Betrachte die GleichungX2−1= (X+1)(X−1) =0über dem Körper Zp, dann ist g(p−1)/2 eine Lösung (kleiner Fermat) und g(p−1)/2 1 modp oder g(p−1)/2−1 modp. Die Lösungg(p−1)/2 1 modpscheidet aus, weilgsonst kein Generator von Zpwäre.

Sei x=gt, dann ist xquadratischer Rest gdw. es einyZgibt mit xy2modp

xgt(g|{z}t/2

y

)2modp

tgerade.

Weiterhin gilt x(p−1)/2(gt)(p−1)/2 (g(p−1)/2)t 1 modpgdw.tgerade. # Diese Aussage wird eine ähnliche Rolle spielen, wie der kleine Satz von Fermat.

Definition 46: Sei n̸∈P und n ungerade, dann ist En=def{aZn|(a

n

)̸≡a(n−1)/2modn}

die Menge der Euler-Zeugen für die nicht-Primität von n.

Abbildung

Abbildung 1: Rechenzeitbedarf von Algorithmen auf einem „1-MIPS“-Rechner
Abbildung 2: Der Diffie-Hellman Keyexchange Sei p eine Primzahl, dann
Abbildung 3: Kurven mit mehreren Nullstellen
Abbildung 4: Die Punkteaddition 2.3. Das Gruppengesetz
+7

Referenzen

ÄHNLICHE DOKUMENTE

Um f¨ur dieses Konzept ein wenig mehr Intuition zu gewinnen, sei erw¨ahnt, dass man sich eine solche Transformation auch wie folgt vorstellen kann: A l¨asst sich auf B reduzieren,

Um f¨ur dieses Konzept ein wenig mehr Intuition zu gewinnen, sei erw¨ahnt, dass man sich eine solche Transformation auch wie folgt vorstellen kann: A l¨asst sich auf B reduzieren,

Um für dieses Konzept ein wenig mehr Intuition zu gewinnen, sei erwähnt, dass man sich eine solche Trans- formation auch wie folgt vorstellen kann: A lässt sich auf B reduzieren,

Um für dieses Konzept ein wenig mehr Intuition zu gewinnen, sei erwähnt, dass man sich eine solche Transformation auch wie folgt vorstellen kann: A lässt sich auf B reduzieren, wenn

Um für dieses Konzept ein wenig mehr Intuition zu gewinnen, sei erwähnt, dass man sich eine solche Transformation auch wie folgt vorstellen kann: A lässt sich auf B reduzieren, wenn

Um für dieses Konzept ein wenig mehr Intuition zu gewinnen, sei erwähnt, dass man sich eine solche Transformation auch wie folgt vorstellen kann: A lässt sich auf B reduzieren, wenn

Um für dieses Konzept ein wenig mehr Intuition zu gewinnen, sei erwähnt, dass man sich eine solche Trans- formation auch wie folgt vorstellen kann: A lässt sich auf B reduzieren,

Um für dieses Konzept ein wenig mehr Intuition zu gewinnen, sei erwähnt, dass man sich eine solche Transformation auch wie folgt vorstellen kann: A lässt sich auf B reduzieren, wenn