Ju¨rgen Ecker Automatentheorie und Kryptologie Computer– und Mediensicherheit, FHS Hagenberg
Skriptum zu den Vorlesunge...
70 downloads
1019 Views
529KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Ju¨rgen Ecker Automatentheorie und Kryptologie Computer– und Mediensicherheit, FHS Hagenberg
Skriptum zu den Vorlesungen in den Wintersemestern 2002/2003 und 2003/2004 und im Sommersemester 2003
ii
Inhaltsverzeichnis 1 Caesar, Vigen` ere und Feistel
1
1.1
Caesar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
2
1.3
Vigen`ere’s chiffre indechiffrable“ . . . . . . . . . . . . . . . . . . . . . . . . . ” Scherbius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.4
Feistel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.5
Die Erfindung der asymmetrischen Verschl¨ usselung . . . . . . . . . . . . . . .
4
2 Rivest, Shamir und Adleman
7
2.1
Auf den Spuren Euklids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.2
Falsch rechnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.2.1
Noch einmal Caesar . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.3
Diophantastisch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.4
Endliche K¨orper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
2.5
Das RSA-Verschl¨ usselungsverfahren . . . . . . . . . . . . . . . . . . . . . . .
19
2.5.1
Die Eulersche ϕ-Funktion . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.5.2
Das RSA-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
2.6
Der chinesische Restsatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
2.7
Attacken auf RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
2.7.1
Repeated Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
2.7.2
Gleiche Moduln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
2.7.3
Die Low Exponent Attacke . . . . . . . . . . . . . . . . . . . . . . . .
25
Faktorisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
2.8.1
. . . . . . . . . . . . . . . . . . . . . . .
26
Lineare Gleichungssysteme u ¨ ber endlichen K¨orpern . . . . . . . . . . .
27
Das quadratische Sieb . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
Zufallszahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
2.9.1
Test auf Zuf¨alligkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
2.9.2
Der BBS-Zufallszahlengenerator . . . . . . . . . . . . . . . . . . . . .
33
2.10 Erzeugung von Primzahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
2.8
2.8.2 2.8.3 2.9
Die Pollard-(p − 1)-Methode
iii
iv
INHALTSVERZEICHNIS 2.10.1 Es gibt viele Primzahlen . . . . . . . . . . . . . . . . . . . . . . . . . .
34
2.10.2 Primzahltests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
Probedivision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
Der Fermat–Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
Der Miller–Rabin–Test . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
2.10.3 Erzeugung von starken Pseudoprimzahlen . . . . . . . . . . . . . . . .
38
3 Diffie und Hellman 3.1
39
Gruppen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
3.1.1
Primitivwurzeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
3.2
Polynome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
3.3
Polynome u ¨ ber Zp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
3.4
Shared Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
3.4.1
Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
3.4.2
Chinesischer Restsatz . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
3.5
Faktorisieren in Zp [x] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
3.6
Endliche K¨orper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
3.7
Diffie-Hellman-Key-Exchange . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
3.8
DL- und DH-public-key Systeme . . . . . . . . . . . . . . . . . . . . . . . . .
60
3.8.1
Das Massey-Omura-Kryptosystem . . . . . . . . . . . . . . . . . . . .
60
3.8.2
Das ElGamal-Kryptosystem . . . . . . . . . . . . . . . . . . . . . . . .
60
Berechnung diskreter Logarithmen – Der Index Calculus Algorithmus . . . .
61
3.10 Andere public-key Systeme . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
3.10.1 Das Knapsack-Problem . . . . . . . . . . . . . . . . . . . . . . . . . .
64
3.10.2 Das Merkle-Hellman-Kryptosystem . . . . . . . . . . . . . . . . . . . .
65
3.10.3 Das Chor-Rivest-Kryptosystem . . . . . . . . . . . . . . . . . . . . . .
66
3.9
4 ElGamal 4.1
4.2
69
Hashfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
4.1.1
Stark kollisionsresistente Kompressionsfunktionen . . . . . . . . . . . .
70
4.1.2
Von Kompressionsfunktionen zu Hashfunktionen . . . . . . . . . . . .
71
Digitale Signaturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
4.2.1
RSA-Signaturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
4.2.2
ElGamal Signaturen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
Attacken auf ElGamal Signaturen . . . . . . . . . . . . . . . . . . . .
74
4.3
Zero-Knowledge-Protokolle
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
4.4
Oblivious transfer channels . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
INHALTSVERZEICHNIS 5 Moore, Mealy und Vernam
v 79
5.1
Das Vernam One Time Pad . . . . . . . . . . . . . . . . . . . . . . . . . . . .
79
5.2
Automaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
5.2.1
Angewandte Automaten . . . . . . . . . . . . . . . . . . . . . . . . . .
82
Linear feedback shift registers . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
5.3
6 Koblitz und Miller
87
6.1
Elliptische Kurven u ¨ ber R . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
88
6.2
Elliptische Kurven u ¨ ber GF(q) . . . . . . . . . . . . . . . . . . . . . . . . . .
94
6.2.1
Quadratwurzeln in endlichen K¨orpern . . . . . . . . . . . . . . . . . .
94
6.2.2
Der Satz von Hasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
6.3
Kryptosysteme mit elliptischen Kurven . . . . . . . . . . . . . . . . . . . . . .
97
6.4
Faktorisieren mit elliptischen Kurven . . . . . . . . . . . . . . . . . . . . . . .
98
vi
INHALTSVERZEICHNIS
Abbildungsverzeichnis 5.1
Die einfache Mausefalle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
5.2
Die Mausefalle mit Speck . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
x5
+
x2
5.3
Das LFSR
+ 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
6.1
Elliptische Kurven u ¨ ber R . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
6.2
Addition der Punkte P und Q . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
6.3
Verdopplung von P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
6.4
Die Addition von Punkten auf EC ist assoziativ . . . . . . . . . . . . . . . . .
93
vii
viii
ABBILDUNGSVERZEICHNIS
Vorwort Dies ist ein Skriptum zur Vorlesung Automatentheorie und Kryptographie“ an der Fach” hochschule Hagenberg. Die Vorlesung folgt in weiten Teilen [Buc99] und [Kob94]. Genaue Beschreibungen vieler Algorithmen finden sich in [MvOV97], das auch online gelesen werden kann (siehe Literaturverzeichnis), und in [Sch96]. Detailliertere mathematische Grundlagen finden Sie in [Bun92] und eine Sammlung von zahlentheoretischen Algorithmen in [Coh93]. F¨ ur eine intensivere Besch¨aftigung mit endlichen K¨orpern empfehle ich [LN84]. Eine detailliertere Behandlung von elliptischen Kurven in der Kryptographie, die immer noch sehr leicht lesbar ist, finden Sie in [Wer02]. Eine sehr genaue historische Behandlung der Kryptologie fast bis in die ’70er Jahre finden Sie in [Kah67]. Etwas unterhaltsamer und auch f¨ ur’s Nachtkasterl geeignet ist [Sin00].
ix
x
ABBILDUNGSVERZEICHNIS Die Kryptographie verfolgt im Wesentlichen die folgenden Ziele: Vertraulichkeit (confidentiality, secrecy, privacy): seit altersher das wichtigste Ziel
der Kryptographie. Kommunikation soll vertraulich, also geheim, erfolgen. Kein Dritter soll die Kommunikation abh¨oren k¨onnen. Integrit¨ at (data integrity): die Manipulation von Daten zwischen dem Sender und dem Empf¨anger durch unbefugte Dritte soll verhindert werden. Authentifizierung (authentication): zwei Parteien, die miteinander kommunizieren, wollen sicherstellen, das sie wirklich mit dem jeweils anderen zu tun haben, und nicht mit einem Dritten, der sich als jemand anderer ausgibt. Nichtzuru ¨ ckweisung“ (non-repudiation): unterschreibt jemand einen Vertrag soll ” sichergestellt werden, dass er sp¨ater nicht sagen kann, die Unterschrift sei nicht von ihm gewesen. F¨ ur jeden dieser Punkte werden wir mathematische Methoden entwickeln. Viel Vergn¨ ugen!
Kapitel 1
Caesar, Vigen` ere und Feistel 1.1
Caesar
Die mit Abstand am l¨angsten verwendete Methode zur Verschl¨ usselung ist die monoalphabetische Substitution. Dabei werden einfach Zeichen durch andere Zeichen ersetzt. Das kann geschehen, indem man einfach Buchstaben durch andere Buchstaben ersetzt, oder indem man u usselten ¨ berhaupt neue Symbole erfindet. Der eingeweihte Empf¨anger der verschl¨ Nachricht, der weiß, wie die Nachricht verschl¨ usselt wurde, dreht den Verschl¨ usselungsvorgang um und liest die Nachricht. Die wahrscheinlich bekannteste (und mit Abstand einfachste) Variante der monoalphabetischen Substitution tr¨agt den Namen von Julius Caesar. Bei dieser Substitution wird beispielsweise A durch E, B durch F, C durch G, usw. ersetzt, es ist aber jeder andere Buchstabe als E genauso m¨oglich. Wenn man erst einmal weiß, dass mit einem Caesar verschl¨ usselt wurde, ist es sehr einfach, einen verschl¨ usselten Text zu entschl¨ usseln. Versuchen Sie’s mit AIVMQ KPEWL EYWWM XDXWS PPRMG LXWXI MRIRA IVJIR Im schlimmsten Fall muss man alle 26 M¨oglichkeiten durchprobieren, bis man zu einer sinnvollen Nachricht kommt. (Alle W¨orter einfach aneinander zu schreiben und dann F¨ unfergruppen zu bilden, hat sich sehr bald wegen der gr¨oßeren Sicherheit eingeb¨ urgert.) F¨ ur Caesar’s Zeit mag dieses Verfahren ausgereicht haben. Bald jedoch brauchte man bessere Verfahren. Die monoalphabetische Substitution in allgemeiner Form bietet weit mehr M¨oglichkeiten. Es gibt 26! = 2 · 3 · 4 · · · 25 · 26 = 4 · 10 26 M¨oglichkeiten, irgendwie die 26
Buchstaben des Alphabets durch andere zu ersetzen. Da d¨ urfte es ziemlich schwierig werden. Versuchen Sie sich an GIRTV SRDST DUROZ YSHFO RDRDB RTGSJ 1
` KAPITEL 1. CAESAR, VIGENERE UND FEISTEL
2
TRMSI DHRTR OVJZJ SNRMN SAFKR FPVJN TSIVJ ZRYSM NRDDR TRBRT GSJTR MFORY PMPSA QJSNR ZODVJ RDIND ZOZIZ OPMOM SAAHR YROMR TGPTY NORZR ZEROZ YRJTY PRHAO VJLRO ZRMCC. Sehr sicher ist das trotzdem nicht. Bald kam man dahinter, dass gewisse Buchstaben viel h¨aufiger auftreten als andere. 1000 Buchstaben in einem durchschnittlichen deutschen Text verteilen sich in etwa folgendermaßen (Quelle: [Bau95]):
A
B
C
D
E
F
G
H
I
J
K
L
M
65
19
27
48
175
17
31
42
77
3
15
35
26
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
98
30
10
0
75
68
61
42
9
1
0
1
11
In einem halbwegs langen Text sind die Verh¨altnisse ¨ahnlich.1 Das Symbol, das am h¨aufigsten vorkommt, wird wahrscheinlich f¨ ur E stehen, usw. So schaffen Sie den verschl¨ usselten Text von oben jetzt aber spielend. Fortgeschrittene Kryptanalytiker sehen sich auch die H¨aufigkeiten von Buchstabenkombinationen von 2 oder 3 Buchstaben an, den sogenannten Bigrammen und Trigrammen. Eine ausf¨ uhrliche Behandlung dieses Themas finden Sie in [Bau95]. Die Kryptographen versuchten sich zu sch¨ utzen, indem sie f¨ ur h¨aufige Buchstaben mehrere verschiedene Symbole, sogenannte Homophone, verwendeten, die sie abwechselnd verwendeten, weiters f¨ ullten sie die Kryptogramme mit sogenannten Nullen, das sind Symbole, die keine Bedeutung haben und nur den Kryptanalytiker verwirren sollen. Kurz und gut, zur Zeit des 30-j¨ahrigen Krieges lasen Kryptanalytiker in der Wiener schwarzen Kammer“ t¨aglich die sorgf¨altig verschl¨ usselte Korrespondenz der Botschafter der ” europ¨aischen L¨ander, all diese Verbesserungen der monoalphabetischen Substitution waren nicht gut genug.
1.2
Vigen` ere’s chiffre indechiffrable“ ”
Viel schwieriger wurde es f¨ ur kurze Zeit, als man von der monoalphabetischen zur polyalphabetischen Substitution wechselte. 200 Jahre, nachdem Vigen´ere sein Ver1
Hier ist vom statistischen Durchschnitt die Rede, keineswegs h¨ alt sich jeder lange Text an diese Werte.
Im Anhang von [Sin00] k¨ onnen Sie die erste Seite eines Romans lesen, der ganz ohne den Buchstaben e“ ”
auskommt.
1.3. SCHERBIUS
3
schl¨ usselungssystem vorgestellt hatte, wurde es endlich verwendet. Lange schon war die monoalphabetische Substitution nutzlos, aber man hatte nicht zu dem etwas aufwendigeren System wechseln wollen. Das Vigen´ere-System verwendet mehr als eine Substitution zum Verschl¨ usseln, sondern mehrere. Nun wird der erste Buchstabe mit der ersten Substitution verschl¨ usselt, der zweite mit der zweiten, der dritte mit der dritten, usw. Hat man alle Substitutionen durch, so beginnt man wieder mit der ersten. Besonders gerne wurden als Substitutionen einfache Caesar-Substitutionen verwendet. Die Abfolge der verschiedenen Substitutionen merkte man sich mit einem Schl¨ usselwort. Zum Beispiel w¨ urde das Schl¨ usselwort PLUTO bedeuten, dass der erste Buchstabe gem¨aß A → P , der zweite gem¨aß A → L, schließlich der f¨ unfte gem¨aß A → O, der sechste wieder wie der erste Caesar-verschl¨ usselt wird. Zum Entschl¨ usseln braucht man nur das Schl¨ usselwort. Aus PICKNICK w¨ urde dann (mit dem Schl¨ usselwort PLUTO) ETWDBXNE Wie man sieht, sieht man nichts. Gleiche Buchstaben werden verschieden verschl u ¨ sselt, verschiedene Buchstaben zuweilen gleich, eine H¨aufigkeitsanalyse macht hier keinen Sinn. Es dauerte leider nur ein paar Jahre, bis ein deutscher General auch dieses System knackte. Er fand heraus, dass man relativ leicht herausfinden kann, wie lang das verwendete Schl u ¨ sselwort ist. Hat man herausgefunden, dass das Schl¨ usselwort z.B. sieben Buchstaben lang ist, dann weiß man, dass der erste, der achte, der f¨ unfzehnte, usw. Buchstabe mit dem selben Alphabet, also monoalphabetisch verschl¨ usselt wurden, und man kann die einzelnen monoalphabetischen Substitutionen einzeln wie fr¨ uher analysieren.
1.3
Scherbius
Im Lauf des 19. Jahrhunderts kamen mehr und mehr mechanische Hilfsmittel zum Ver- und Entschl¨ usseln in Gebrauch. Am Beginn des 20. Jahrhunderts wurden schließlich die ersten Patente f¨ ur vollmechanische Verschl¨ usselungsmaschinen vergeben. Mit Ihnen wurde es m¨oglich, sehr bequem polyalphabetische Substitution mit tausenden Alphabeten durchzuf u ¨ hren. Scherbius konnte seine Maschine dem deutschen Milit¨ar anbieten. Die von der deutschen Enigma verschl¨ usselten Texte konnte nur mit sehr großem Aufwand und vor allem Dank der Nachl¨assigkeit der Verschl¨ ussler von britischen Kryptanalytikern gelesen werden. In [Sin00] und [Kah67] findet man eine nette Beschreibung der sehr komplexen Geschichte rund um die Enigma.
` KAPITEL 1. CAESAR, VIGENERE UND FEISTEL
4
1.4
Feistel
Moderne Verschl¨ usselungsverfahren arbeiten nicht mit einzelnen Zeichen. Auf Computern sind Daten in der Form von Bitfolgen gespeichert. Es bietet sich daher an, beim Verschl u ¨ sseln mit Bits oder mit Bitfolgen, sogenannten Bl¨ocken zu operieren. Als Beispiel sehen wir uns eines der ¨altesten Verfahren an, den Data Encryption Standard (DES), der bis 2000 der amerikanische Verschl¨ usselungsstandard war. Im Jahr 2000 wurde DES abgel¨ost vom Advanced Encryption Standard (AES), der als wesentlich sicherer gilt. Nach wie vor wird DES aber (vor allem in der Variante 3DES) verwendet. Außerdem werden nach wie vor Verschl¨ usselungsverfahren teilweise oder ganz nach dem Vorbild des DES mit ein paar Verbesserungen entwickelt. Der DES und allgemeine Feistelchiffren sind in [Buc99] ausgezeichnet beschrieben. Der AES wird uns sp¨ater besch¨aftigen, wenn wir mathematisch vorbereitet sind.
1.5
Die Erfindung der asymmetrischen Verschlu ¨ sselung
Viele Verschl¨ usselungssysteme, oft auch viel verwendete, bezogen ihre Sicherheit aus der Geheimhaltung des Verfahrens. Auch heute noch gibt es Verschl¨ usselungsprogramme, deren einzige Sicherheit darin liegt, dass man das Verschl¨ usselungsverfahren nicht kennt. Das prominenteste Beispiel sind die GSM-Verschl¨ usselungsalgorithmen A3, A5 und A8. Hierbei handelt es sich aber nicht wirklich um Sicherheit, denn das Verschl¨ usselungsverfahren kann nicht geheim gehalten werden. Verschl¨ usselungsmaschinen und -software kann gestohlen werden, Software kann analysiert werden, Verr¨ater k¨onnen das Verfahren bekannt geben. Tats¨achlich sind die GSM-Algorithmen l¨angst geknackt. Ein vern¨ unftiges Verschl¨ usselungsverfahren ist ein ¨offentlich bekanntes, das einzig Geheime ist der Schl¨ ussel. Alle Verschl¨ usselungsverfahren, die wir bisher kennen gelernt haben, geh¨oren zu den symmetrischen Verfahren. Zum Entschl¨ usseln einer Nachricht muss man das verwendete Verschl¨ usselungsverfahren und den verwendeten Schl¨ ussel kennen. Dann dreht man das Verschl¨ usselungsverfahren einfach um und kann so den Klartext wieder erhalten. Wir versuchen es ein bisschen mathematischer:
Definition 1.1. Ein Verschl¨ usselungsverfahren ist ein Quintupel (P, C, K, E, D) mit fol-
genden Eigenschaften:
1. P ist die Menge aller Klartexte, der Klartextraum. 2. C ist die Menge aller verschl¨ usselten Texte oder Chiffretexte. 3. K ist die Menge aller m¨oglichen Schl¨ ussel.
¨ 1.5. DIE ERFINDUNG DER ASYMMETRISCHEN VERSCHL USSELUNG
5
4. E = {Ek | k ∈ K} ist die Menge der Verschl¨ usselungsfunktionen Ek : P → C. 5. D = {Dk | k ∈ K} ist die Menge der Entschl¨ usselungsfunktionen Dk : C → P. 6. Zu jedem e ∈ K gibt es ein d ∈ K, so dass f¨ ur jeden Klartext p ∈ P gilt:
Dd (Ee (p)) = p. (Also: zu jedem Schl¨ ussel zum Verschl¨ usseln gibt es einen Schl¨ ussel zum Entschl¨ usseln.)
¨ Ublicherweise sind P, C, K, E und D bekannt, nur e ist geheim. Wer aber e kennt, kann
auch d schnell finden.
Mitte der ’70er Jahre fanden Mathematiker und Informatiker wie Diffie, Hellman ([DH76]), Rivest, Shamir und Adleman ([RSA77]) eine M¨oglichkeit zur asymmetrischen Verschl¨ usselung. Bei so einem Verfahren reicht es nicht aus, den zur Verschl¨ usselung verwendeten Schl¨ ussel und das verwendete Verfahren zu kennen, um die Verschl¨ usselung r¨ uckg¨angig machen zu k¨onnen. Man kennt also e und kriegt nicht heraus, was das dazugeh¨orige d ist. Praktisch bedeutet das sogar, dass man den Schl¨ ussel ¨offentlich bekanntmachen kann, so dass ihn jeder zum Verschl¨ usseln verwenden kann, trotzdem wird niemand anderer entschl¨ usseln k¨onnen. Tats¨achlich macht man das auch so. Den ¨offentlichen Schl¨ ussel nennen wir public key (daher nennt man asymmetrische Verschl¨ usselungssysteme auch public-key Systeme). Neben diesem Schl¨ ussel muss es aber auch einen Schl¨ ussel zum Entschl¨ usseln geben, den sogenannten private key. Dass es so ein asymmetrisches Verschl¨ usselungssystem tats¨achlich gibt, war Anfang der ¨ ’70er eine große Uberraschung. In K¨ urze werden wir wissen, wie das geht.
6
` KAPITEL 1. CAESAR, VIGENERE UND FEISTEL
Kapitel 2
Rivest, Shamir und Adleman In den folgenden Kapiteln spazieren wir durch die Welt der Zahlen. Manche Probleme, die auf den ersten Blick kompliziert aussehen, werden sich ganz leicht l¨osen lassen. Andere werden ganz leicht aussehen, sich aber als ganz schwierig herausstellen. Aus diesen Problemen machen wir Verschl¨ usselungsverfahren.
2.1
Auf den Spuren Euklids
Im Folgenden besch¨aftigen wir uns nur“ mit ganzen Zahlen. Die Menge der ganzen Zahlen ” bezeichnen wir mit Z. Die Menge der positiven ganzen Zahlen, also der nat¨ urlichen Zahlen bezeichnen wir mit N, die Menge der positiven Zahlen inklusive 0 mit N 0 . Wir erinnern uns kurz an die gute alte Zeit, als es noch keine Br¨ uche gab. Wollte man damals eine ganze Zahl durch eine andere teilen, so ging das nicht immer, manchmal blieb ” ein Rest“. Wir beschreiben das exakt.
Satz 2.1. Es seien a und b zwei beliebige ganze Zahlen. Dann gibt es zwei eindeutig bestimmte Zahlen q (Quotient) und r (Rest), so dass a = bq + r
und
0≤r 1, so ist dies nicht der Fall. (Mit anderen
Worten: Sind n und k relativ prim, dann hat k modulo n einen Kehrwert, sonst nicht.)
Falls ggT(n, k) = 1, so schreiben wir f¨ ur die Restklasse [q]n mit [1]n = [k]n · [q]n auch [k]−1 n
oder etwas mutiger [k −1 ]n und nennen [k]−1 n den Kehrwert von [k]n .
Besitzt k einen Kehrwert modulo n, dann l¨asst sich modulo n jede Zahl durch k dividieren gem¨aß der Rechenregel
[a]n [k]n
= [a]n ·
[1]n [k]n
(oder k¨ urzer
a k
=a·
1 k
mod n.
18
KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN Nat¨ urlich hat [0]n nie einen Kehrwert. Alle anderen Restklassen k¨onnten einen Kehrwert
haben. Dies ist genau dann der Fall, wenn jede Zahl 0 < k < n relativ prim zu n ist.
Satz 2.23. In Zn l¨asst sich genau dann durch jede Zahl außer [0] n dividieren, wenn n eine Primzahl ist.
Mengen von Zahlen“, die sich beliebig addieren, subtrahieren, multiplizieren und (mit ” Ausnahme der 0) dividieren kann, nennen wir K¨orper. (In K¨ urze werden wir genau definieren, was ein K¨orper ist.) Die Mengen Zp (p ∈ P) sind also K¨orper. Die K¨orper Zp sind
außergew¨ohnlich, denn sie enthalten nur p verschiedene Elemente. Daher nennt man sie auch
endliche K¨orper. Neben Zp gibt es noch weitere endliche K¨orper, wir werden noch alle kennen lernen. Unendliche K¨orper gibt es viele, z.B. R, Q, C und unz¨ahlige andere. F¨ ur unendliche K¨orper werden wir uns nicht interessieren.
−1 −1 −1 Beispiel 2.24. Die Kehrwerte modulo 5. [1] −1 5 = [1]5 , [2]5 = [3]5 , [3]5 = [2]5 , [4]5 =
[4]5 . Damit l¨asst sich weiter rechnen:
3 4
=3·
1 4
= 3 · 4 = 2 mod 5.
Es w¨are sch¨on, wenn sich Kehrwerte modulo n auch schnell ausrechnen ließen, Durchprobieren ist eine schlechte L¨osung, wenn n sehr groß ist. Wir denken kurz an Euklid und atmen erleichtert auf: Besitzt k einen Kehrwert modulo n, dann ist ggT(n, k) = 1. Wegen Satz 2.10 gibt es Zahlen x, y ∈ Z, so dass kx + ny = 1. Betrachten wir diese Gleichung modulo n, so erhalten wir kx + 0 = 1
mod n.
Das heißt aber, dass x der gesuchte Kehrwert von k modulo n ist. Danke, Euklid!
Beispiel 2.25. Wir berechnen den Kehrwert von 12 modulo 17.
¨ 2.5. DAS RSA-VERSCHLUSSELUNGSVERFAHREN
17
12
I
17
1
0
II
12
0
1
III
5
1
-1
IV
2
-2
3
IV=II-2III
V
1
5
-7
V=III-2IV
VI
0
19
III=I-II
VI=IV-2V
Tats¨achlich ist ggT(17, 12) = 1. Weiters ist 1 = 17 · 5 + 12 · (−7) Modulo 17 ist also 1 = 12 · (−7) und der Kehrwert von 12 modulo 17 ist −7 = 10. Zur Probe berechnen wir 12 · 10 = 120 = 1 mod 17.
Es f¨allt auf, dass eine Spalte im erweiterten Euklidschen Algorithmus gar nicht ben¨otigt
wird. Tats¨achlich h¨atten wir die 17er-Spalte nicht mitrechnen m¨ ussen und so etwas Arbeit gespart.
2.5
Das RSA-Verschlu ¨ sselungsverfahren
An dieser Stelle bietet sich — gleichsam als Motivationsschub — ein Ausblick in die moderne Kryptographie an. Dazu m¨ ussen wir nur noch ein paar Kleinigkeiten in Erfahrung bringen.
2.5.1
Die Eulersche ϕ-Funktion
Wie viele Zahlen in Zn haben einen Kehrwert? Wie viele Zahlen zwischen 0 und n−1 sind relativ prim zu n? Das war zweimal die selbe Frage, und diese Frage wollen wir jetzt beantworten. Wir beginnen mit einer
Definition 2.26. Es sei n ∈ N. Dann heißt die Funktion ϕ(n) = #{k ∈ Z | 0 ≤ k < n und ggT(n, k) = 1} Eulersche ϕ–Funktion.
20
KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN
Satz 2.27. Der Wert ϕ(n) l¨asst sich berechnen, wenn man die Primfaktorzerlegung von n kennt, denn es gilt: 1. Ist p ∈ P, dann ist
ϕ(p) = p − 1.
2. Ist p ∈ P und d ∈ N, dann ist ϕ(pd ) = pd−1 (p − 1). 3. Sind m, n ∈ N und ggT(m, n) = 1, dann ist ϕ(m · n) = ϕ(m) · ϕ(n). 4. Ist n = pe11 · · · perr die Primfaktorzerlegung von n, dann ist ϕ(n) = n(1 −
1 1 ) · · · (1 − ). p1 pr
Bevor es losgeht noch ein Hammer (demn¨achst werden Sie diesen Satz auf einem ¨ Ubungsblatt finden und selbst beweisen).
Satz 2.28 (Euler). Sind z, n ∈ N und ist ggT(z, n) = 1 dann gilt z ϕ(n) = 1
mod n
Remark 2.29. F¨ ur den Fall, dass n eine Primzahl ist, wurde dieser Satz schon fr¨ uher von Fermat bewiesen. In dieser Version ist er auch als kleiner Satz von Fermat bekannt.
2.5.2
Das RSA-Verfahren
Bob m¨ochte Alice eine Nachricht schicken, niemand außer Alice soll die Nachricht lesen k¨onnen, also m¨ochte er sie verschl¨ usseln. Alice w¨ahlt zwei große Primzahlen p und q und berechnet n = pq. Weiters berechnet Alice ϕ(n) = (p − 1)(q − 1) (vgl. Satz 2.27). Nun w¨ahlt sie zuf¨allig eine Zahl e relativ prim zu ϕ(n).
Das Paar (n, e) ist ihr public key, den sie Bob schickt.
¨ 2.5. DAS RSA-VERSCHLUSSELUNGSVERFAHREN
21
Weiters berechnet Alice den Kehrwert d von e modulo ϕ(n) mit dem erweiterten Euklidschen Algorithmus. Die beiden Primzahlen p und q h¨alt sie geheim, das Tripel (p, q, d) stellt ihren private key dar. Bob hat seine Nachricht als Folge von Zahlen kleiner als n kodiert (vgl. Kapitel 1) kodiert. Um eine Zahl m zu verschl¨ usseln, berechnet er c = me
mod n.
Um die Nachricht zu entschl¨ usseln, muss die e-te Wurzel modulo n gezogen werden. Die e-te Wurzel modulo n zu ziehen ist sehr schwierig, wenn man die Primfaktoren p und q nicht kennt. Wir sehen gleich, dass das Wurzelziehen aber einfach ist, wenn man p und q kennt. Alice hat den Kehrwert d von e modulo ϕ(n) berechnet, d.h. ed = 1
mod ϕ(n)
bzw.
(2.14)
ed = 1 + v · ϕ(n) f¨ ur ein passendes v ∈ Z (2.15) Sie berechnet nun (modulo n) cd = (me )d = med = m1+vϕ(n)
wegen (2.14)
= m · mϕ(n)v = m · (mϕ(n) )v = m · 1v
=m
wegen Satz 2.28
mod n
und erh¨alt auf diese Weise die urspr¨ ungliche Nachricht m. ¨ urlich viel zu klein, in den Ubungen Beispiel 2.30. Die Zahlen in diesem Beispiel sind nat¨ werden wir uns an gr¨oßere Zahlen heran wagen. Alice w¨ahlt p = 7 und q = 5, also n = 35 und ϕ(35) = 6 · 4 = 24. Nun w¨ahlt sie e = 5
und sendet Bob ihren public key (n, e) = (35, 5). Weiters berechnet sie den Kehrwert von 5 modulo 24. 5 24
0
5
1
4
-4
1
5
0 Der private key von Alice ist (p, q, d) = (7, 5, 5).
22
KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN
Bob verschl¨ usselt die Nachricht m = 4, er berechnet c = m e = 45 = 9
mod 35
und schickt Alice c = 9. Alice entschl¨ usselt m = cd = 95 = 4 mod 35.
Ein weiteres Problem ergibt sich. Um mit einer sehr großen Zahl zu potenzieren sind sehr viele Multiplikationen mit sehr großen Zahlen notwendig, dazwischen wird man oft modulo n reduzieren m¨ ussen. Hier kann man sich mit zwei Tricks helfen. 1. Der Exponent darf modulo ϕ(n) reduziert werden (das hilft aber nur dem Entschl u ¨ ssler, denn nur er kann ϕ(n) berechnen). ¨ 2. Die Square-And-Multiply–Methode zum Potenzieren, die Sie in den Ubungen kennen lernen.
2.6
Der chinesische Restsatz
Das Rechnen modulo n hat unter Anderem den Vorteil, dass man immer mit kleinen Zahlen rechnen kann, weil man ja immer den Rest modulo n (bzw. den Rest modulo ϕ(n) im Exponenten) nehmen darf, wenn man will. Das Ergebnis erf¨ahrt man daf¨ ur aber auch nur modulo n. Das a¨ndern wir jetzt.
Beispiel 2.31. Wir wollen 13 · 4 berechnen. Das k¨onnen wir in Z machen, genauso gut
aber in Z60 , kein Unterschied. Wir machen es aber modulo 3, modulo 4 und modulo 5. So erhalten wir: 13 · 4 ≡3 1 · 1 ≡3 1 13 · 4 ≡4 1 · 0 ≡4 0 13 · 4 ≡5 3 · 4 ≡5 2 Daraus k¨onnen wir schließen, dass x = 13 · 4 eine Zahl ist, die die folgenden Kongruenzen
erf¨ ullt:
x ≡3 1 x ≡4 0 x ≡5 2
23
2.6. DER CHINESISCHE RESTSATZ
Schon wieder ein schwieriges Problem. M¨ ussen wir hier probieren? Nein, hier hilft der chinesische Restsatz.
Algorithmus 2.32 (Chinesischer Restsatz). Es seien n 1 , n2 , . . . , ns paarweise relativ prime nat¨ urliche Zahlen. Weiters seien x1 , x2 , . . . , xs ganze Zahlen. Dann erh¨alt man eine L¨osung des Restklassengleichungssystems x ≡ n1 x 1 x ≡ n2 x 2 .. . x ≡ ns x s auf folgende Weise: 1. Berechne n = n1 ·n2 · · · ns . Modulo n ist die L¨osung des Restklassengleichungssystems eindeutig.
2. Berechne f¨ ur i = 1, . . . , s die Zahlen qi :=
n ni
3. Jedes qi ist relativ prim zu ni (wieso?), und besitzt daher ein inverses Element modulo ni . Berechne f¨ ur i = 1, . . . , s das inverse Element ri von qi modulo ni (mit dem erweiterten Euklidschen Algorithmus). 4. Berechne x = x 1 q1 r1 + x 2 q2 r2 + · · · + x s qs rs
mod n.
Dieses x ist die eindeutige L¨osung des Restklassengleichungssystems. Betrachten wir dazu die Gleichung modulo ni . Wir erhalten x = x1 · q1 ·r1 + · · · + xi · qi ri + · · · + xs · qs ·rs |{z} |{z} |{z} =0
= xi
mod ni
=1
=0
mod ni
24
KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN
Beispiel 2.33 (Fortsetzung). Wir l¨osen das Restklassengleichungssystem x ≡3 1 x ≡4 0 x ≡5 2 1. n1 = 3, n2 = 4 und n3 = 5, also ist n = 3 · 4 · 5 = 60. 2. q1 = 20, q2 = 15, q3 = 12. −1 −1 −1 −1 −1 3. [q1 ]−1 3 = [2]3 = [2]3 , [q2 ]4 = [3]4 = [3]4 und [q3 ]5 = [2]5 = [3]5 , also ist r1 = 2,
r2 = 3 und r3 = 3. 4. x = 1 · 20 · 2 + 0 · 15 · 3 + 2 · 12 · 3 = 112 = 52 mod 60.
Wir werden den chinesischen Restsatz gleich benutzen, um Primzahlen zu erzeugen und das RSA-Verfahren zu knacken. Bleiben Sie dran.
2.7
Attacken auf RSA
2.7.1
Repeated Encryption
Die erste Attacke, die wir betrachten ist nicht speziell auf das RSA-Verfahren zugeschnitten, vielmehr auf alle public-key Systeme, bei denen Ver- und Entschl¨ usselung mit der selben Funktion und verschiedenen Schl¨ usseln funktioniert. Ausgehend von der verschl¨ usselten Nachricht c berechnet man die doppelt verschl¨ usselte Nachricht c1 = ce mod n, dann verschl¨ usselt man ein weiteres Mal und erh¨alt c2 = ce1 = 2
(ce )e = ce , usw. Angenommen, beim k-ten Mal erh¨alt man wieder die urspr¨ ungliche verschl¨ usselte Nachricht c, also ck = c. Dann muss ck−1 der Klartext gewesen sein, denn c = ck = cek−1 mod n. Zuf¨allig gew¨ahlte Exponenten e garantieren beim RSA-Verfahren bereits, dass man viel zu oft verschl¨ usseln m¨ usste, um wieder zu c zu gelangen.
2.7.2
Gleiche Moduln
Wird die selbe Nachricht mit zwei Schl¨ usseln (n, e1 ) und (n, e2 ) (gleiches n) verschl¨ usselt, so kann die urspr¨ ungliche Nachricht entschl¨ usselt werden, falls ggT(e1 , e2 ) = 1 ist.
25
2.7. ATTACKEN AUF RSA Nehmen wir an, die verschl¨ usselten Texte sind c 1 = m e1
mod n
c 2 = m e2
und
mod n.
Dann berechnet man einfach ganze Zahlen a und b mit ae1 + be2 = 1. Genau eine der beiden Zahlen ist negativ (warum?). Nehmen wir an, dies ist a. Ist ggT(c 1 , n) > 1, so hat man einen Teiler von n gefunden, der Schl¨ ussel ist vollst¨andig geknackt. Ist ggT(c1 , n) = 1, so kann man den Kehrwert c−1 von c1 modulo n berechnen. Nun berechnet man −a (c−1 · (c2 )b 1 )
mod n.
Das Ergebnis ist (c1 )a (c2 )b = (me1 )a (me2 )b = me1 a+e2 b = m mod n, die Nachricht im Klartext.
2.7.3
Die Low Exponent Attacke
Um den Aufwand beim Verschl¨ usseln im RSA-Verfahren klein zu halten — das ist sehr interessant, wenn man beispielsweise mit einer Smartcard verschl¨ usseln m¨ochte — k¨onnte man kleine Verschl¨ usselungsexponenten verwenden, da diese ja ohnehin o¨ffentlich bekannt sind. Die Low Exponent Attacke zeigt, wie ein Angreifer in diesem Fall die verschl¨ usselte Nachricht entschl¨ usseln kann. Angenommen,
die
selbe
Nachricht
m
wird
mit
den
¨offentlichen
Schl¨ usseln
(n1 , e), (n2 , e), . . . (ne , e) verschl¨ usselt. (Tats¨achlich muss die Nachricht mit e verschiedenen ¨offentlichen Schl¨ usseln mit dem selben Exponenten e verschl¨ usselt werden. Daher funktioniert diese Attacke auf keinen Fall, wenn e groß ist.) Dann l¨asst sich aus den e verschl¨ usselten Nachrichten der Klartext m berechnen. Man kennt dann m e ≡ n1 c 1
m e ≡ n2 c 2 .. . m e ≡ ne c e
Die Zahlen n1 , . . . , ne sind h¨ochstwahrscheinlich paarweise relativ prim. (Was kann man tun, wenn dies nicht der Fall ist?) Nach dem chinesischen Restsatz gibt es modulo n 1 · n2 · · · ne genau ein c, das diese Rest-
klassengleichungen erf¨ ullt. F¨ ur dieses c gilt also c = me mod n1 · n2 · · · ne . Da m kleiner ist
26
KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN
als jedes ni , ist me kleiner als n1 · n2 · · · ne , also gilt c = me . Nun kann man die e-te Wurzel
ganz normal (in Z) ziehen.
ussel seien (143, 3), (391, 3) und (899, 3). Beispiel 2.34. Es sei e = 3, die ¨offentlichen Schl¨ Verschl¨ usselt man die Nachricht m = 135, so erh¨alt man c1 = 60, c2 = 203 und c3 = 711. Mit dem chinesischen Restsatz erh¨alt man daraus c = mk = 2460375. Daraus zieht man nun die dritte Wurzel und erh¨alt m = 135.
2.8
Faktorisieren
Wir haben gesehen, dass das RSA-Verfahren gebrochen werden kann, wenn man in der Lage ist, eine große Zahl n, die das Produkt zweier großer Primzahlen p und q ist, zu faktorisieren. Die erste Methode, die einem einf¨allt, ist die Methode der Probedivision, also einfach durch alle Zahlen (beginnend mit 2) zu dividieren und dies solange, bis man einen Faktor gefunden hat. Wir betrachten im Folgenden zwei Methoden zur Faktorisierung großer Zahlen, die Pollard-(p − 1)-Methode und das quadratische Sieb.
2.8.1
Die Pollard-(p − 1)-Methode
Mit dieser Methode ist es m¨oglich, einen Primfaktor p einer Zahl n zu finden, wenn in der Primfaktorzerlegung von p − 1 nur kleine Primzahlpotenzen vorkommen.
Angenommen, die Zahl n habe einen Primfaktor p, so dass alle Primzahlpotenzen, die in
der Primfaktorzerlegung von p − 1 vorkommen, kleiner oder gleich B sind, wobei B eine nicht
allzu große Zahl ist. (Bemerkung: Nat¨ urlich kennen wir p nicht. Wir vertrauen blind darauf, dass p − 1 die gew¨ unschte Eigenschaft besitzt. Ist dies nicht der Fall, werden wir keinen Erfolg haben.)
Wir bilden zun¨achst das kleinste gemeinsame Vielfache E aller Zahlen, die kleiner oder gleich B sind. Somit ist E sicher ein Vielfaches von p − 1 (warum?), also E = v(p − 1) f u ¨ r ein passendes v ∈ Z.
Nach dem kleinen Satz von Fermat (Satz 2.28) gilt: ap−1 = 1 also
mod p,
aE = av(p−1) = (ap−1 )v = 1v = 1
mod p,
d.h. p | aE − 1 Also ist aE −1 ein Vielfaches von p. Falls aE −1 kein Vielfaches von n ist, dann ist ggT(a E −1, n) ein echter Teiler von n.
27
2.8. FAKTORISIEREN
Wir brauchen also nur aE − 1 modulo n zu berechnen und dann ggT(a E − 1, n). (Warum
reicht es hier, aE − 1 modulo n zu berechnen?) Die Parameter a und B sind hier frei w¨ahlbar, a kann zuf¨allig gew¨ahlt werden, B muss groß genug sein.
Hat man bei dieser Methode keinen Erfolg (a E − 1 ist ein Vielfaches von n), dann w¨ahlt
man ein anderes a, haben mehrere a nicht funktioniert, muss man wahrscheinlich ein gr¨oßeres B w¨ahlen.
Beispiel 2.35. Wir faktorisieren n = 1241143 und w¨ahlen a = 2, B = 13. Dann ist E = 23 · 32 · 5 · 7 · 11 · 13.
Wir erhalten 2E − 1 = 861525 mod n und ggT(861525, 1241143) = 547. Schon haben wir einen Teiler von n gefunden. Tats¨achlich ist 547 − 1 = 2 · 3 · 7 · 13.
2.8.2
Lineare Gleichungssysteme u orpern ¨ber endlichen K¨
F¨ ur die n¨achste Faktorisierungsmethode m¨ ussen wir ein lineares Gleichungssystem modulo p l¨osen k¨onnen. Wir wissen bereits, wie man lineare Gleichungsssysteme u ur das ¨ ber R l¨ost. F¨ Weitere beruhigt uns der
Satz 2.36. Alles, was wir u ¨ber Vektorr¨aume u ¨ ber R wissen, u ¨ bertr¨agt sich auf endliche K¨orper.
(Nat¨ urlich stimmt dieser Satz so nicht, aber er stimmt so weit, dass wir so tun k¨onnen, als w¨ urde er stimmen.)
2.8.3
Das quadratische Sieb
Die Pollard-(p − 1)-Methode ist f¨ ur nicht allzu große Zahlen eine einfache Faktorisierungs-
methode, die allerdings schnell an ihre Grenzen gelangt. Die dritte Methode ist noch besser, daf¨ ur brauchen wir aber noch ein bisschen mehr Mathematik. Dem quadratischen Sieb liegt folgende Beobachtung zu Grunde: Hat man ganze Zahlen x und y mit x2 = y 2
mod n und
(2.16)
x 6= ±y
mod n
(2.17)
28
KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN
dann kennt man auch schon einen Teiler von n, denn n | x2 − y 2 = (x + y)(x − y) n - x + y, n - x − y Berechnet man nun ggT(n, x − y), so hat man einen Teiler von n. Nun geht es nur noch darum, die Zahlen x und y zu finden. √ Sei m = b nc1 und f (x) = (x + m)2 − n. Bemerkung: Ist x klein, so ist auch f (x) klein.
Beispiel 2.37. Wir beginnen bescheiden und faktorisieren n = 3277, also m = 57. Zun¨achst berechnen wir die Werte f (−2) = 552 − 3277 = −252 = (−1) · 22 · 32 · 7 f (−1) = 562 − 3277 = −141 = (−1) · 3 · 47 f (0) = 572 − 3277 = −28 = (−1) · 22 · 7 f (1) = 582 − 3277 = 87 = 3 · 29
f (2) = 592 − 3277 = 204 = 22 · 3 · 17 Daraus lesen wir (unter anderem) 552 ≡3277 (−1) · 22 · 32 · 7
und
572 ≡3277 (−1) · 22 · 7
Multipliziert man die beiden Gleichungen, so erh¨alt man 552 · 572 = (−1) · 22 · 32 · 7 · (−1) · 22 · 7
bzw.
(55 · 57)2 = (−1)2 · 24 · 32 · 72 = (22 · 3 · 7)2
mod 3277
Wir w¨ahlen also x = 55 · 57 und y = 22 · 3 · 7 = 84. Tats¨achlich sind die Gleichungen (2.16) und (2.17) erf¨ ullt. Wir berechnen x − y = 3051 und ggT(3051, 3277) = 113, ein Teiler von
n ist gefunden.
So einfach geht’s nicht immer, hier haben wir Gl¨ uck gehabt. Im Allgemeinen muss man ein bisschen mehr tun. Auf der linken Seite steht immer ein Quadrat, wenn man Gleichungen multipliziert. Es stellt sich die Frage, welche Gleichungen (m¨oglicherweise mehr als zwei) multipliziert werden 1
F¨ ur x ∈
bezeichnet man mit bxc die gr¨ oßte ganze Zahl, die kleiner oder gleich x ist.
29
2.8. FAKTORISIEREN
m¨ ussen, damit sich auch auf der rechten Seite ein Quadrat ergibt. Manchmal kann man raten, meistens jedoch muss man rechnen, wir setzen unser Beispiel fort.
Beispiel 2.38 (Fortsetzung). Die rechten Seiten sind (−1) · 22 · 32 · 7, (−1) · 4 · 47, (−1) · 22 · 7, 3 · 29 und 22 · 3 · 17. Wir definieren nun λi = 1, wenn die i-te Gleichung verwendet werden soll und sonst λ i = 0. Multipliziert man nun die Gleichungen, so erh¨alt man auf der rechten Seite
· (3 · 29)λ4
λ1
· ((−1) · 3 · 47)λ2 · (−1) · 22 · 7 λ · 22 · 3 · 17 5
(−1) · 22 · 32 · 7
λ3
Wir sortieren das Ergebnis nach den Basen und erhalten
(−1)λ1 +λ2 +λ3 · 22λ1 +2λ3 +2λ5 · 32λ1 +λ2 +λ4 +λ5 · 7λ1 +λ3 · 17λ5 · 29λ4 · 47λ2
Damit ein Quadrat herauskommt, m¨ ussen alle Exponenten kongruent 0 modulo 2 (also gerade) sein, d.h. λ1 + λ 2 + λ 3 = 0
mod 2
2λ1 + 2λ3 + 2λ5 = 0
mod 2
2λ1 + λ2 + λ4 + λ5 = 0
mod 2
λ1 + λ 3 = 0
mod 2
λ5 = 0
mod 2
λ4 = 0
mod 2
λ2 = 0
mod 2
Es ergibt sich ein lineares Gleichungssystem u ¨ ber dem K¨orper Z2 , welches sich wie gewohnt l¨osen l¨asst. Besitzt das lineare Gleichungssystem neben dem Nullvektor eine weitere L¨osung, so wissen wir, welche Gleichungen multipliziert werden m¨ ussen. In diesem Fall ergibt sich λ1 = λ3 = 1 und λ2 = λ4 = λ5 = 0. Den Rest kennen wir ja schon.
30
KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN
2.9
Zufallszahlen
Ein zentrales Element jedes kryptographischen Systems ist der Zufallszahlengenerator. Ein RSA-Schl¨ ussel muss selbstverst¨andlich zuf¨allig erzeugt sein, sonst k¨onnte ein Angreifer ihn m¨oglicherweise einfach reproduzieren. Wir werden noch andere Verfahren kennen lernen, die vor allem auf einen guten Zufallszahlengenerator vertrauen. Was heißt nun guter Zufallszahlengenerator“? Der beste Zufallszahlengenerator ist der ” Zufall selbst (falls es so etwas gibt), also ein Prozess, der v¨ollig unvorhersehbar ist, solange man ihn auch beobachtet. Eine M¨oglichkeit einen guten Zufallszahlengenerator zu bauen ist nun, einen nat¨ urlichen zuf¨alligen Prozess zu beobachten. So gibt es Zufallszahlengeneratoren, die den Zerfall radioaktiven Materials beobachten (ein Prozess, von dem man glaubt, dass er ganz zuf¨allig passiert). F¨ ur das eigene Notebook begn¨ ugt man sich in der Regel mit Algorithmen, die zuf¨allige Zahlen produzieren, die sich nur sehr schwer von wirklich zuf¨allig erzeugten Zahlen unterscheiden lassen.
2.9.1
Test auf Zuf¨ alligkeit
Wir sehen uns kurz ein paar Tests an, mit denen sich feststellen l¨asst, ob eine Folge von Bits nicht zuf¨allig ist (siehe auch [MvOV97, Abschnitt 5.4]). Wir werden uns nicht eingehender mit Statistik besch¨aftigen, sondern begn¨ ugen uns mit einem Crashkurs. Um die Zuf¨alligkeit einer Bitfolge zu u ufen, berechnet man bestimmte Kennzahlen ¨ berpr¨ der Bitfolge, sogenannte Statistiken. Diese Statistiken haben bei zuf¨alligen Folgen Werte in einem bestimmten Bereich, bei nicht zuf¨alligen Folgen k¨onnen die Werte der Statistik außerhalb dieser Bereiche liegen. Damit l¨asst sich entscheiden, ob die Bitfolge zuf¨allig ist. Nat¨ urlich kann der Wert einer Statistik auch zuf¨allig“ außerhalb des erwarteten Bereichs ” liegen, allerdings nur mit geringer Wahrscheinlichkeit. Das Ergebnis eines statistischen Tests ist somit stets eine Aussage der Art: Die untersuchte Bitfolge ist nicht zuf¨allig. Die Wahrscheinlichkeit, dass der Wert der Statistik zuf¨allig so extrem war, betr¨agt nur . . . %. Liegt die berechnete Wahrscheinlichkeit unter einer vorgegebenen Schranke α (dem sogenannten Signifikanzniveau), dann kann man ziemlich sicher sein, dass die Bitfolge nicht zuf¨allig ist. Wie groß α gew¨ahlt wird, h¨angt davon ab, wie sicher man sein will, u ur ¨ blich sind 10% f¨ unkritische Anwendungen bis zu 0.05% f¨ ur hochsensible Anwendungen. Die Statistiken in den im Folgenden beschriebenen Tests sind allesamt χ 2 -verteilt. Die erwarteten Bereiche f¨ ur die Statistiken in der Form von Quantiltabellen angegeben. Eine solche Quantiltabelle ist Tabelle 2.1.
31
2.9. ZUFALLSZAHLEN
df
0.10
0.05
0.025
0.02
0.01
0.005
0.0025
0.001
0.0005
1
2.71
3.84
5.02
5.41
6.63
7.88
9.14
10.83
12.12
2
4.61
5.99
7.38
7.82
9.21
10.60
11.98
13.82
15.20
3
6.25
7.81
9.35
9.84
11.34
12.84
14.32
16.27
17.73
4
7.78
9.49
11.14
11.67
13.23
14.86
16.42
18.47
20.00
5
9.24
11.07
12.83
13.33
15.09
16.75
18.39
20.51
22.11
6
10.64
12.53
14.45
15.03
16.81
13.55
20.25
22.46
24.10
7
12.02
14.07
16.01
16.62
18.48
20.28
22.04
24.32
26.02
8
13.36
15.51
17.53
18.17
20.09
21.95
23.77
26.12
27.87
9
14.68
16.92
19.02
19.63
21.67
23.59
25.46
27.83
29.67
10
15.99
18.31
20.48
21.16
23.21
25.19
27.11
29.59
31.42
11
17.29
19.68
21.92
22.62
24.72
26.76
28.73
31.26
33.14
12
18.55
21.03
23.34
24.05
26.22
28.30
30.32
32.91
34.82
13
19.81
22.36
24.74
25.47
27.69
29.82
31.88
34.53
36.48
14
21.06
23.68
26.12
26.87
29.14
31.32
33.43
36.12
38.11
15
22.31
25.00
27.49
28.26
30.58
32.80
34.95
37.70
39.72
16
23.54
26.30
28.85
29.63
32.00
34.27
36.46
39.25
41.31
17
24.77
27.59
30.19
31.00
33.41
35.72
37.95
40.79
42.88
18
25.99
28.87
31.53
32.35
34.81
37.16
39.42
42.31
44.43
19
27.20
30.14
32.85
33.69
36.19
38.58
40.88
43.82
45.97
20
28.41
31.41
34.17
35.02
37.57
40.00
42.34
45.31
47.50
21
29.62
39.67
35.48
36.34
38.93
41.40
43.78
46.80
49.01
22
30.81
33.92
36.78
37.66
40.29
42.80
45.20
48.27
50.51
23
32.01
35.17
38.08
38.97
41.64
44.18
46.62
49.73
52.00
24
33.20
36.42
39.36
40.27
42.98
45.56
48.03
51.18
53.48
25
34.38
37.65
40.65
41.57
44.31
46.93
49.44
52.62
54.95
26
35.56
38.89
41.92
42.86
45.64
48.29
50.83
54.05
56.41
27
36.74
40.11
43.19
44.14
46.96
49.64
52.22
55.48
57.86
28
37.92
41.34
44.46
45.42
48.28
50.99
53.59
56.89
59.30
29
39.09
42.56
45.72
46.69
49.59
52.34
54.97
58.30
60.73
30
40.26
43.77
46.98
47.96
50.89
53.67
56.33
59.70
62.16
40
51.81
55.76
59.34
60.44
63.69
66.77
69.70
73.40
76.09
50
63.17
67.50
71.42
72.61
76.15
79.49
82.66
86.66
89.56
60
74.40
79.08
83.30
84.58
88.38
91.95
95.34
99.61
102.7
80
96.58
101.9
106.6
108.1
112.3
116.3
120.1
124.8
128.3
100
118.5
124.3
129.6
131.1
135.8
140.2
144.3
149.4
153.2
Tabelle 2.1: In dieser Quantiltabelle findet sich in der Spalte 0.01 in der Zeile 9 die Zahl 21.67. Das bedeutet, dass die Wahrscheinlichkeit, dass eine mit 9 Freiheitsgraden χ 2 -verteilte Zahl mit einer Wahrscheinlichkeit von 1% gr¨oßer oder gleich 21.67 ist.
32
KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN Sehen wir uns die wichtigsten Tests kurz an.
H¨ aufigkeitstest In einer zuf¨alligen Bitfolge der L¨ange n kommen 0 und 1 ungef¨ahr gleich oft vor. Sei n0 die Anzahl der 0en und n1 die Anzahl der 1en in der Bitfolge. Die Zahl (n0 − n1 )2 n 2 ist dann n¨aherungsweise χ -verteilt mit 1 Freiheitsgrad, falls n ≥ 10. T1 =
Zwei-Bit-Test Die Paare 00, 01, 10 und 11 kommen in einer zuf¨alligen Bitfolge ungef¨ahr gleich oft vor. Es seien n00 , n01 , n10 und n11 die Anzahl der Paare 00, 01, 10 und 11 in der Bitfolge. Dann ist die Zahl 4 2 T2 = (n200 + n201 + n210 + n211 ) − (n20 + n21 ) + 1 n−1 n n¨aherungsweise χ2 -verteilt mit 2 Freiheitsgraden, falls n ≥ 21.
Pokertest Dieser Test ist eine Verallgemeinerung des Zwei-Bit-Tests. Es sei m eine Zahl mit n c ≥ 5 · 2m . Man teilt die Bitfolge irgendwie in k nicht u k := b m ¨ berlappende Teile der
L¨ange m. Jeder dieser Teile ist die Bin¨ardarstellung einer Zahl i mit 0 ≤ i < 2 m . Nun
sei ni die Anzahl der Teile, welche die Zahl i darstellen. Dann ist die Zahl 2m −1
2m X 2 T3 = ( ni ) − k k i=0
n¨aherungsweise
χ2 -verteilt
mit
2m
− 1 Freiheitsgraden.
Runs-Test Ein Run ist eine Teilfolge einer Bitfolge aus lauter gleichen Symbolen. Der RunTest untersucht, ob die Anzahl der Runs bestimmter L¨ange der erwarteten Anzahl in einer zuf¨alligen Bitfolge entspricht. Die erwartete Anzahl von Runs von 0en (oder 1en) der L¨ange i in einer Bitfolge der L¨ange n ist ei = (n − i + 3)/2i+2 . Nun sei k die gr¨oßte
Zahl i, f¨ ur die ei ≥ 5. Nun z¨ahlen wir f¨ ur 1 ≤ i ≤ k Oi , die Anzahl der Runs von 0en
der L¨ange i, und Ii , die Anzahl der Runs von 1en der L¨ange i. Dann ist die Zahl T4 =
k X (Oi − ei )2 i=1
ei
+
k X (Ii − ei )2 i=1
ei
n¨aherungsweise χ2 -verteilt mit 2k − 2 Freiheitsgraden.
Autokorrelationstest Mit diesem Test wird untersucht, ob es einen Zusammenhang zwischen der Bitfolge und der um d Stellen verschobenen Bitfolge gibt. Es sei s i das i-te Pn−d−1 Bit der Bitfolge und d eine Zahl mit 1 ≤ d ≤ b n2 c. Weiters sei A(d) = i=0 si ⊕ si+d
(⊕ steht f¨ ur XOR). Dann ist die Zahl
n−d 2 ) /(n − d) 2 n¨aherungsweise χ2 -verteilt mit 1 Freiheitsgrad, falls n − d ≥ 10. T5 = 4(A(d) −
2.9. ZUFALLSZAHLEN
33
Beispiel 2.39. Wir untersuchen die Bitfolge der L¨ange n = 160, die entsteht, wenn man die Bitfolge 1110001100010001010011101111001001001001 vier mal hintereinander schreibt. 1. (H¨aufigkeitstest) n0 = 84, n1 = 76, T1 = 0.4. Die Wahrscheinlichkeit, dass T 1 ≥ 0.4 ist, ist gr¨oßer als 10%. Test bestanden.
2. (Zwei-Bit-Test) n00 = 44, n01 = 40, n10 = 40, n11 = 35, T2 = 0.625. Die Wahrscheinlichkeit, dass T2 ≥ 0.625 ist, ist gr¨oßer als 10%. Test bestanden. 3. (Pokertest f¨ ur m = 3) k = 53, n0 = 5, n1 = 10, n2 = 6, n3 = 4, n4 = 12, n5 = 3, n6 = 6, n7 = 7, T3 = 9.64. Die Wahrscheinlichkeit, dass T 3 ≥ 9.64 ist, ist gr¨oßer als 10%. Test bestanden.
4. (Runs-Test) e1 = 20.25, e2 = 10.06, e3 = 5, k = 3, O1 = 8, O2 = 20, O3 = 12, I1 = 25, I2 = 4, I3 = 5, T4 = 31.79. Die Wahrscheinlichkeit, dass T 4 ≥ 31.79 ist, ist
kleiner als 0.05%. Diese Bitfolge ist nicht zuf¨allig.
5. (Autokorrelationstest f¨ ur d = 8) A(8) = 100, T5 = 15.13. Die Wahrscheinlichkeit, dass T5 ≥ 15.13 ist, ist kleiner als 0.05%. Die Bitfolge ist nicht zuf¨allig.
2.9.2
Der BBS-Zufallszahlengenerator
Definition 2.40. Ein (Pseudo-)Zufallszahlengenerator (pseudo random number generator, PRNG) ist ein deterministischer Algorithmus, der eine Bitfolge erzeugt, die sich durch die statistischen Tests aus Abschnitt 2.9.1 nicht von einer zuf¨alligen Bitfolge unterscheiden l¨asst.
Es gibt viele M¨oglichkeiten, Pseudozufallszahlen zu erzeugen (siehe [MvOV97] und [Sch96]). Wir sehen uns einen der bekanntesten PRNGs an, den Blum-Blum-Shub-PRNG 2 , benannt nach seinen Erfindern. Er ben¨otigt zwei große (geheime) Primzahlen p und q, beide kongruent 3 modulo 4. 2
Die genaue Beschreibung samt Beweis f¨ ur seine Unvorhersagbarkeit finden Sie in [BBS86].
34
KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN
Algorithmus 2.41 (Blum-Blum-Shub-PRNG).
1. Es sei n = pq. 2. W¨ahle eine zuf¨allige Zahl s mit 1 ≤ s ≤ n − 1 relativ prim zu n und berechne x 0 = s2 mod n.
3. Berechne xi = x2i−1 mod n. 4. Wiederhole Schritt (3).
Der Algorithmus ist vollkommen deterministisch, sobald die Zahl s, der sogenannte seed ¨ gew¨ahlt ist. Ublicherweise wird ein seed bestimmt, indem man gewisse Daten des Computers (Systemzeit, Register- und Speicherinhalte, Userinput u ¨ ber das Keyboard, Mausbewegungen, Netzwerkdaten, . . . ) ausliest und daraus eine zuf¨allige Zahl macht. Von den berechneten xi verwendet man jeweils nur das letzte Bit bzw. die letzten j Bits, wobei j in der Gr¨oßenordnung von ln ln n liegt, also auch f¨ ur sehr große n nicht mehr als 10.
2.10
Erzeugung von Primzahlen
Die klassische Methode zur Primzahlerzeugung ist, eine zuf¨allige Zahl zu erzeugen, und dann zu u ufen, ob es sich um eine Primzahl handelt. Diese Methode funktioniert aus zwei ¨ berpr¨ Gr¨ unden sehr gut: 1. Die Wahrscheinlichkeit, dass eine zuf¨allig gew¨ahlte Zahl eine Primzahl ist, ist nicht sehr klein, d.h. nach nicht allzu vielen Versuchen ist die Zahl eine Primzahl. 2. Es ist m¨oglich, in vern¨ unftiger Zeit zu u ufen, ob eine Zahl Primzahl ist. ¨ berpr¨ Beides ist nicht unmittelbar klar. Wir gehen dem nach.
2.10.1
Es gibt viele Primzahlen
Wir beginnen ganz harmlos:
Satz 2.42. Es gibt unendlich viele Primzahlen.
35
2.10. ERZEUGUNG VON PRIMZAHLEN
Dieses sch¨one Resultat sagt uns zumindest, dass uns die Primzahlen nie ausgehen. F¨ ur unsere Zwecke brauchen wir aber etwas mehr. Den folgenden Satz haben zwei Mathematiker unabh¨angig voneinander bewiesen, nachdem das Problem 100 Jahre lang ungel¨ost war. Wir begn¨ ugen uns mit einer sehr ungenauen Formulierung.
Satz 2.43 (Hadamard (1896) und de la Vall´ ee Poussin (1896)). Es sei π(x) die Anzahl der Primzahlen, die kleiner sind als x ∈ N. Dann gilt f¨ ur x ≥ 17 x x < π(x) < 1.25506 · . ln x ln x
Dieser Satz sagt insbesondere etwas dar¨ uber aus, wie viele Primzahlen es in etwa in der Umgebung von x gibt. Wir berechnen einfach, wie sehr sich die Anzahl der Primzahlen bei x ¨andert, also einfach die Steigung von π(x) an der Stelle x. 3 Es ergibt sich π 0 (x) ≈
ln x−1 ln2 x
≈
1 ln x .
Das bedeutet, dass in der Gegend von x in etwa jede ( ln1x )-te Zahl eine Primzahl ist. Anders
ausgedr¨ uckt: Man muss im Durchschnitt ln x Zahlen in der Gegend von x testen, bis man eine Primzahl findet. Da ln x eine sehr langsam wachsende Funktion ist, braucht man selbst bei großen x noch nicht allzu lange probieren.
2.10.2
Primzahltests
Wir u ufen kann, ob eine ganze ¨ berlegen uns in diesem Kapitel, ob und wie man schnell u ¨ berpr¨ Zahl n eine Primzahl ist. Probedivision Eine einfache M¨oglichkeit, festzustellen, ob n prim ist, ist probeweise durch alle (Prim-)Zahlen, √ die kleiner sind als n, zu dividieren. Findet man dabei einen Teiler von n, so ist n keine √ Primzahl. Findet man keinen Teiler, dann ist n prim. (Warum muss nur bis n probiert werden?) Diese Methode erfordert sehr viele Probedivisionen. F¨ ur das RSA-Verfahren brauchen wir aber zwei sehr große Primzahlen. Sehen wir uns zwei weitere Methoden an. Der Fermat–Test Der kleine Satz von Fermat (Satz 2.28) besagt, dass f¨ ur alle 0 < a < n gilt: an−1 = 1 3
mod n,
¨ Es sei angemerkt, dass diese analytischen Uberlegungen nat¨ urlich nicht g¨ ultig sind, sie beschreiben aber
sehr anschaulich, was hier passiert.
36
KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN
falls n eine Primzahl ist. Und sonst? Sehen wir uns ein paar Beispiele an.
Beispiel 2.44.
n
a
an−1 mod n
prim?
14
2
2
nein
341
2
1
???
341
3
56
nein
561
2
1
???
561
3
1
???
561
4
1
???
Tats¨achlich lassen sich zusammengesetzte Zahlen mit diesem einfachen Test enttarnen. 14 ist sofort als nicht prim identifiziert, 341 besteht den ersten Test mit Basis 2, scheitert aber beim zweiten Test mit Basis 3, 561 ist noch hartn¨ackiger, besteht den Test f¨ ur die Basen 2, 3 und 4. Falls n den Fermat–Test mit Basis a besteht, so nennen wir n eine Pseudoprimzahl zur Basis a. Im obigen Beispiel ist also 341 Pseudoprimzahl zur Basis 2, aber nicht zur Basis 3, 561 ist Pseudoprimzahl zu den Basen 2, 3 und 4. Nach dem kleinen Satz von Fermat ist jede Primzahl p Pseudoprimzahl zu jeder Basis a mit ggT(a, p) = 1. Lassen sich alle zusammengesetzten Zahlen ertappen oder gibt es zusammengesetzte Zahlen n, die Pseudoprimzahlen zu jeder Basis a mit ggT(a, n) = 1 sind? Die bedr¨ uckende Antwort ist ja“. Solche Zahlen heißen Carmichaelzahlen. Die zehn kleinsten Carmichaelzahlen ” sind 561, 1105, 1729, 2465, 2821, 6601, 8911, 10585, 15841 und 29341. Remark 2.45. Falls der Fermat–Test ergibt, dass es sich bei n nicht um eine Primzahl handelt, so kennt man noch keinen Teiler von n, der Fermat–Test ist also nicht als Faktorisierungsmethode zu gebrauchen. Faktorisieren ist also schwieriger, als Primalit¨at zu testen. Der Fermat–Test kann also schnell belegen, dass eine Zahl zusammengesetzt ist, Carmichaelzahlen sind allerdings zusammengesetzte Zahlen, die der Fermat–Test immer f u ¨ r Primzahlen h¨alt. Wir m¨ ussen uns noch ein bisschen mehr anstrengen. Der Miller–Rabin–Test Um den Fermat–Test zu verbessern, verbessern wir einfach den kleinen Satz von Fermat.
37
2.10. ERZEUGUNG VON PRIMZAHLEN
Satz 2.46. Es sei n > 2 eine Primzahl. Dann l¨asst sich n − 1 eindeutig als n − 1 = 2s k
schreiben, wobei k ∈ N ungerade und s ∈ N ist. Weiters sei 0 < a < n. Dann gilt
entweder
ak = 1
mod n
(2.18)
oder es gibt eine Zahl r ∈ {0, 1, . . . , s − 1} mit a2
rk
= −1
mod n
(2.19)
Diesen leicht modifizierten Test, den Miller–Rabin–Test, besteht auch keine Carmichaelzahl mehr f¨ ur jede Basis a. Eine Basis a, f¨ ur die n den Miller–Rabin–Test nicht besteht nennen wir einen Zeugen gegen die Primalit¨at von n.
Satz 2.47. Erf¨ ullt n die Bedingungen (2.18) oder (2.19) f¨ ur jedes 0 < a < n, so ist n eine Primzahl.
Beispiel 2.48. Die erste Carmichaelzahl n = 561 besteht den Miller–Rabin–Test f u ¨r a = 2 nicht: wir erhalten 561 − 1 = 24 · 35, also s = 4 und d = 35. Wir berechnen 2 35 = 263 mod 561, also ist (2.18) nicht erf¨ ullt. Weiter erhalten wir 22
mod 561 und
3 22 ·35
1 ·35
= 166 mod 561, 22
2 ·35
= 67
= 1 mod 561, nie ist das Ergebnis −1, also ist auch (2.19) nicht erf¨ ullt.
Somit ist 561 keine Primzahl.
Die Situation ist jetzt also viel besser, allerdings muss man sehr viele Basen durchprobieren, um sicher sein zu k¨onnen, dass n tats¨achlich eine Primzahl ist. Das geht wieder nicht. Eine letzte Rettung bietet der folgende Satz.
urliche Zahl, dann gibt es h¨ochstens Satz 2.49. Ist n eine zusammengesetzte nat¨
n−1 4
Zahlen zwischen 1 und n−1, die zu n relativ prim und keine Zeugen gegen die Primalit¨at von n sind.
38
KAPITEL 2. RIVEST, SHAMIR UND ADLEMAN Daraus ergibt sich der folgende
Algorithmus 2.50 (Miller–Rabin–Test). Gegeben ist eine nat¨ urliche Zahl n ≥ 3. 1. W¨ahle zuf¨allig eine Zahl a, mit 2 ≤ a ≤ n − 1. 2. Schreibe n − 1 als n − 1 = 2s k schreiben, wobei k ∈ N ungerade und s ∈ N ist. 3. Berechne ak , a2k , . . . , a2
s−1 k
und u ufe (2.18) bzw. (2.19). ¨ berpr¨
4. Ist n zusammengesetzt, so findet man in Schritt 4. mit einer Wahrscheinlichkeit von mindestens 75% einen Zeugen gegen die Primalit¨at. 5. Wiederhole den Test mit einem neuen a. Nach t Tests, bei denen kein Zeuge gefunden wurde, ist die Wahrscheinlichkeit, dass n zusammengesetzt ist, h¨ochstens ( 14 )t .
Eine Zahl, die 10 Testrunden besteht ist mit einer Wahrscheinlichkeit von h¨ochstens ( 41 )10
= 9.5 · 10−7 zusammengesetzt. Nach 15 Runden ist die Wahrscheinlichkeit h¨ochstens
9.3 · 10−10 , nach 20 Runden 9.1 · 10−13 . Im Vergleich dazu ist die Wahrscheinlichkeit f¨ ur einen Lottosechser mit 1.2 · 10−7 schon ziemlich groß. Es sind also nicht sehr viele Runden notwen-
dig, um mit großer Sicherheit sagen zu k¨onnen, ob eine Zahl prim ist. Sobald mehr als
n−1 4
Basen durchprobiert sind, kann man sogar sicher sein, dass n prim ist. Praktisch ist das f u ¨r große n aber nicht m¨oglich. Man begn¨ ugt sich mit Zahlen, die sehr wahrscheinlich prim sind. Auch solche Primzahlen werden gelegentlich Pseudoprimzahlen genannt.
2.10.3
Erzeugung von starken Pseudoprimzahlen
F¨ ur das RSA-Verfahren reicht es nicht, zwei große Primzahlen p und q zu finden. Wie schon die Pollard–(p − 1)–Faktorisierungsmethode zeigt, m¨ ussen p − 1 und q − 1 große Primfaktoren ¨ enthalten. Ahnliche Methoden zeigen, dass selbst das noch nicht reicht. Pseudoprimzahlen, die wirklich sicher“ sind, nennen wir starke Pseudoprimzahlen. Eine starke Pseudoprimzahl ” p erf¨ ullt folgende Bedingungen: • p + 1 besitzt einen großen Primfaktor, • p − 1 besitzt einen großen Primfaktor r und • r − 1 besitzt einen großen Primfaktor. ¨ Uberraschend ist, dass starke Pseudoprimzahlen nicht schwieriger zu erzeugen sind als irgendwelche Primzahlen. Details erfahren Sie in [Gor85].
Kapitel 3
Diffie und Hellman In diesem Kapitel erarbeiten wir uns die Grundlagen f¨ ur eine zweites schwieriges mathematisches Problem, das Problem, diskrete Logarithmen zu berechnen.
3.1
Gruppen
Egal, in welchem K¨orper (R, Zp ) wir rechnen, die Rechenregeln, die wir von den reellen Zahlen her kennen, d¨ urfen wir immer verwenden. Wir gehen dem nach.
Definition 3.1. Eine Gruppe ist ein Quadrupel (G, ◦, −1 , 1), wobei G irgendeine Menge
ist, ◦ eine Funktion von G × G nach G,
−1
die folgenden Gesetze erf¨ ullt sind:
eine Funktion von G nach G und 1 ∈ G, und
1. F¨ ur alle a, b, c ∈ G gilt: (a ◦ b) ◦ c = a ◦ (b ◦ c). 2. F¨ ur jedes a ∈ G gilt: a ◦ a−1 = 1 = a−1 ◦ a. 3. F¨ ur jedes a ∈ G gilt: 1 ◦ a = a ◦ 1 = a.
Gilt außerdem a ◦ b = b ◦ a f¨ ur alle a, b ∈ G, so nennen wir die Gruppe abelsch. Wir werden
uns ausschließlich mit abelschen Gruppen besch¨aftigen. Wenn klar ist, was mit ◦, gemeint ist, schreiben wir statt
(G, ◦, −1
, 1) einfach G.
Beispiel 3.2. Wir kennen schon eine ganze Reihe von abelschen Gruppen. • (Z, +, −, 0) ist eine abelsche Gruppe. 39
−1
und 1
40
KAPITEL 3. DIFFIE UND HELLMAN
• (R, +, −, 0) ist eine abelsche Gruppe. • (Zn , +, −, [0]n ) ist eine abelsche Gruppe. • (R \ {0}, ·,−1 , 1) ist eine abelsche Gruppe. • (Zp \ {[0]p }, ·,−1 , [1]p ) ist eine abelsche Gruppe. • Es sei Z∗n = {[r]n ∈ Zn | ggT(r, n) = 1}. Dann ist (Z∗n , ·,−1 , [1]n ) eine abelsche Gruppe.
Auch nicht abelsche Gruppen kennen wir. • Es sei M die Menge aller invertierbaren 2 × 2-Matrizen. Dann ist ! 1 0 (M, ·,−1 , ) 0 1 eine nicht abelsche Gruppe.
Die Beispiele charakterisieren auch fast schon K¨orper, es fehlt nur noch eine Regel f¨ ur das Ausmultiplizieren.
Definition 3.3. Ein K¨orper ist ein Septupel (K, +, −, 0, ·, −1 , 1), wobei K irgendeine
Menge ist und die folgenden Gesetze erf¨ ullt sind: 1. (K, +, −, 0) ist eine abelsche Gruppe. 2. (K \ {0}, ·,−1 , 1) ist eine abelsche Gruppe.
3. f¨ ur alle a, b, c ∈ K gilt: (a + b) · c = (a · c) + (b · c)
Ein paar Begriffe aus der Gruppentheorie brauchen wir noch.
Definition 3.4. Besitzt eine Gruppe unendlich viele Elemente (wie z.B. (Z, +, −, 0)),
so nennen wir sie eine unendliche Gruppe. Andernfalls heißt die Gruppe endlich. Ist (G, ◦,−1 , 1) eine endliche Gruppe so bezeichnen wir mit |G| die Anzahl der Elemente der Gruppe und nennen |G| die Ordnung von G.
41
3.1. GRUPPEN
Ist g ein Element der Gruppe (G, ◦,−1 , 1), so schreiben wir g k statt g ◦ g ◦ · · · ◦ g . | {z } k mal
Die kleinste nat¨ urliche Zahl n, so dass g n = 1 nennen wir (sofern es so eine Zahl gibt) die Ordnung von g. Gibt es keine solche Zahl, so sagen wir, die Ordnung von g ist unendlich. Es sei (G, ◦,−1 , 1) eine Gruppe und U eine Teilmenge von G. Dann nennen wir (U, ◦, −1 , 1)
eine Untergruppe von (G, ◦,−1 , 1), falls 1. 1 ∈ U und 2. falls a, b ∈ U , dann auch a ◦ b−1
Untergruppen werden uns jetzt auf dem Weg zum Satz von Fermat begleiten.
Satz 3.5. Es sei U eine Untergruppe von G. Dann teilt die Ordnung von U die Ordnung von G.
Nehmen wir ein Element g aus einer Gruppe (G, ·, −1 , 1), und suchen wir die
kleinstm¨ogliche Untergruppe U von G, die g enth¨alt, dann beobachten wir folgendes: • U enth¨alt 1. • U enth¨alt g 2 , g 3 , g 4 , . . .. • U enth¨alt g −1 (warum?), g −2 , g −3 , . . .. • U enth¨alt keine weiteren Elemente.
Wir nennen diese Untergruppe U die von g erzeugte Untergruppe von G. Ist n die Ordnung von g, so sind die Elemente der von g erzeugten Untergruppe {g, g 2 , . . . , g n−1 = g −1 , g n = 1}. Die Ordnung der erzeugten Untergruppe ist also gleich der Ordnung ihres Erzeugers, und sie teilt die Ordnung der Gruppe, also
42
KAPITEL 3. DIFFIE UND HELLMAN
Satz 3.6. Ist (G, ·,−1 , 1) eine endliche Gruppe, so teilt die Ordnung jedes Elements der
Gruppe die Ordnung der Gruppe. Insbesondere gilt f¨ ur jedes g ∈ G: g |G| = 1
Es kann passieren, dass ein Element einer Gruppe die gesamte Gruppe erzeugt. In diesem Fall heißt die Gruppe zyklische Gruppe. Im folgenden Abschnitt u ¨ berlegen wir uns noch kurz, dass die multiplikative Gruppe eines endlichen K¨orpers zyklisch ist.
3.1.1
Primitivwurzeln
Definition 3.7. Es sei K ein K¨orper. Eine Primitivwurzel von K ist ein Element g von K, so dass sich jedes Element von K als Potenz von g schreiben l¨asst.
Es sei (K, +, −, 0, ·,−1 , 1) ein K¨orper. Die Gruppe K ∗ := (K \{0}, ·,−1 , 1) heißt multiplikative Gruppe des K¨orpers K. Eine Primitivwurzel ist also ein Element der multiplikativen Gruppe
eines K¨orpers, das den gesamten K¨orper (ohne die 0) erzeugt. Wir beweisen, dass es viele solcher Primitivwurzeln in endlichen K¨orpern gibt. Mit anderen Worten: Die multiplikative Gruppe eines endlichen K¨orpers ist zyklisch.
Lemma 3.8. Sei n ∈ N. Dann ist n=
X
ϕ(d)
0 n ∈ N. Jede Funktion h : A ∗ → An heißt Hashfunktion. Jede Funktion h : A m → An heißt Kompressionsfunktion.
Beim Wort Kompression darf man dabei nicht an Datenkompression denken. Bei Anwendung einer Kompressionsfunktion geht Information verloren.
Definition 4.2. Es seien X und Y zwei beliebige Mengen. Eine Funktion h : X → Y
heißt Einwegfunktion, wenn es praktisch unm¨oglich“ ist, zu einem beliebigen y ∈ Y ein ” x ∈ X zu finden, so dass y = h(x).
Eine Kollision von h ist ein Paar (x1 , x2 ) von Elementen von X, so dass x1 6= x2 , aber h(x1 ) = h(x2 ). Hashfunktionen und Kompressionsfunktionen haben immer Kollisionen (warum?).
69
70
KAPITEL 4. ELGAMAL
Die Funktion h heißt stark kollisionsresistent, wenn es praktisch unm¨oglich ist, eine Kollision von h zu finden. Die Funktion h heißt schwach kollisionsresistent, wenn es praktisch unm¨oglich ist, eine Kollision (x1 , x2 ) von h mit vorgegebenem x1 zu finden.
Nat¨ urlich sind stark kollisionsresistente Funktionen auch schwach kollisionsresistent. Um gekehrt ist das nicht so. Stark kollisionsresistente Funktionen sind Einwegfunktionen.
4.1.1
Stark kollisionsresistente Kompressionsfunktionen
Im Folgenden sehen wir, dass es stark kollisionsresistente Kompressionsfunktionen und Hashfunktionen tats¨achlich gibt. Zun¨achst basteln wir eine Kompressionsfunktion, die so gebaut ist, dass, wer eine Kollision findet, auch diskrete Logarithmen berechnen kann. Sei p eine n-bit Primzahl, so dass auch q =
p−1 2
eine Primzahl ist.1 Weiters sei a eine
Primitivwurzel in Z∗p und b eine zuf¨allig gew¨ahlte Zahl zwischen 1 und p − 1. Dann ist h : {0, . . . , q − 1} × {0, . . . , q − 1} → {1, . . . , p − 1} (α, β) 7→ aα bβ
mod p
eine Kompressionsfunktion von {0, 1} 2n−4 nach {0, 1}n (warum?).
Beispiel 4.3. p = 83, q = 41, a = 13, b = 53. Hier ist n = 7, wir erhalten eine Kompressionsfunktion, die 10-bit-Zahlen in 6-bit-Zahlen komprimiert. Wir komprimieren 0110011010. Dazu wird die Bitfolge in zwei 5-bit-Zahlen zerlegt, n¨amlich in α = (01100)2 = 12 und β = (11010)2 = 26. Dann berechnen wir h(α, β) = 1312 ·5326 = 21 mod 83. Schließlich l¨asst sich 21 als 0010101 schreiben. Wir haben also 0110011010 zu 0010101 komprimiert.
Wer eine Kollision von h finden kann, kann auch diskrete Logarithmen in Z ∗p berechnen. Sei (x1 , x2 ) eine Kollision von h und x1 = (α1 , β1 ), x2 = (α2 , β2 ). Dann ist
1
a α 1 b β1 = a α 2 b β2
mod p bzw.
aα1 −α2 = bβ2 −β1
mod p
Die Primzahl q nennt man in diesem Fall Sophie Germain Primzahl.
71
4.1. HASHFUNKTIONEN
Da a eine Primitivwurzel ist, l¨asst sich b als b = ak schreiben. Wir zeigen nun, dass sich k mit Hilfe der Kollision berechnen l¨asst. aα1 −α2 = ak(β2 −β1 )
mod p
α1 − α2 = k(β2 − β1 )
mod ϕ(p) = p − 1 = 2q
Diese Gleichung hat eine L¨osung, falls d := ggT(β2 − β1 , p − 1) ein Teiler von (α1 − α2 ) ist. | {z } =2q
Es gibt dann genau d verschiedene L¨osungen.2
Da β1 und β2 kleiner als q sind, ist auch |β2 − β1 | < q. Daher kann d nur 1 oder 2 sein.
Ist d = 1, dann gibt es genau eine L¨osung modulo p − 1, diese ist der DL k. Ist d = 2,
dann gibt es 2 L¨osungen. Durch Ausprobieren der beiden L¨osungen findet man das richtige k.
Somit ist der DL gefunden. W¨ahlt man eine Primzahl p, so dass das DLP in Z ∗p schwierig ist, dann ist es zumindest ebenso schwierig, irgendeine Kollision von h zu finden. Remark 4.4. Praktisch finden diese Kompressionsfunktionen keine Verwendung, weil das Berechnen der Funktionswerte zu aufw¨andig w¨are.
4.1.2
Von Kompressionsfunktionen zu Hashfunktionen
Wir sehen uns jetzt eine Methode an, aus einer kollisionsresistenten Kompressionsfunktion eine kollisionsresistente Hashfunktion zu erzeugen. Sei g : {0, 1}m → {0, 1}n eine Kompressionsfunktion und r := m − n. Sei x ∈ {0, 1}∗ , also eine beliebig lange Bitfolge.
1. Zun¨achst werden vorne so viele Nullen angeh¨angt, dass die Bitl¨ange durch r teilbar ist. Dann werden hinten r Nullen angeh¨angt. 2. Jetzt wird die Bin¨ardarstellung der Bitl¨ange des urspr¨ unglichen x bestimmt und an diese hinten so viele Nullen angeh¨angt, dass ihre L¨ange durch r − 1 teilbar ist. An den
Anfang sowie an jeder r-ten folgenden Stelle wird eine 1 eingef¨ ugt. 3. Die zweite Bitfolge wird an die erste angeh¨angt.
4. Die erhaltene Bitfolge wird in t Bl¨ocke x1 , . . . , xt der L¨ange r zerlegt.
Beispiel 4.5. r = 4, x = 100101101. 2
Erinnern Sie sich an Beispiel 2.20?
72
KAPITEL 4. ELGAMAL
1. Die Bitl¨ange von x ist 9. Wir m¨ ussen vorne 3 Nullen anh¨angen und erhalten 000100101101. Hinten werden 4 Nullen angeh¨angt, das ergibt 0001001011010000. 2. Die Bin¨ardarstellung von 9 ist 1001. Ihre L¨ange ist 4, wir m¨ ussen 2 Nullen anh¨angen, damit die L¨ange durch r − 1 = 3 teilbar ist, also erhalten wir 100100. Nun wird an
der ersten und an jeder vierten folgenden Stelle eine 1 eingef¨ ugt, wir erhalten 11001100. 3. Die beiden Bitfolgen werden aneinander geh¨angt. Wir erhalten 000100101101000011001100. 4. Wir erhalten 6 Bl¨ocke der L¨ange 4, n¨amlich 0001 0010 1101 0000 1100 1100.
Der Hashwert wird nun iterativ berechnet: H0 := 00 . . . 0 (L¨ange n) Hi := g(Hi−1 ◦ xi ),
1 ≤ i ≤ t,
wobei mit Hi−1 ◦ xi gemeint ist, dass die beiden Bitfolgen aneinander geh¨angt werden. Der Hashwert h(x) ist dann Ht .
Von der so konstruierten Hashfunktion kann man zeigen (siehe [Buc99]), dass sie stark kollisionsresistent ist, falls g es ist. Damit haben wir eine stark kollisionsresistente Hashfunktion konstruiert. Praktisch begn¨ ugt man sich mit Funktionen, deren Kollisionsresistenz nur empirisch gesichert ist, die daf¨ ur aber viel schneller sind. Wichtige Beispiele sind MDx, RIPEMD-x und SHA-1. Ausf¨ uhrliche Beschreibungen finden Sie z.B. in [MvOV97] und [Sch96].
4.2
Digitale Signaturen
Alice will bei Bob’s Buchversand per email B¨ ucher bestellen. Sie signiert ihre email digital. So eine Signatur soll drei wichtige W¨ unsche von Bob bzw. Alice erf¨ ullen. 1. Bob soll sich davon u ucher bestellt hat, und ¨ berzeugen k¨onnen, dass wirklich Alice die B¨ nicht irgendjemand anderer Alice einen Streich spielt.
4.2. DIGITALE SIGNATUREN
73
2. Alice will sicher sein, dass ihre email auf dem Weg zu Bob nicht ge¨andert werden kann. 3. Bob will sich auf die email berufen k¨onnen, wenn Alice pl¨otzlich behauptet, sie h¨atte gar nichts bestellt. Die digitalen Signaturen, die wir uns ansehen, erf¨ ullen alle diese W¨ unsche.
4.2.1
RSA-Signaturen
Mit einem RSA-Schl¨ usselpaar l¨asst sich ein Signaturverfahren ganz einfach konstruieren. Alice besitzt einen privaten RSA-Schl¨ ussel (n = p · q, d). Will Alice die Nachricht m
signieren, so sendet sie m und zus¨atzlich s = md mod n. Nun kann Bob (und jeder andere, der Alice’s ¨offentlichen Schl¨ ussel (n, e) besitzt) die Unterschrift u ufen, indem er se mod n ¨ berpr¨ berechnet und das Ergebnis mit m vergleicht. Hat wirklich Alice unterschrieben, dann ist se = (md )e = mde = m mod n. Wer den privaten Schl¨ ussel (n, d) nicht kennt, ist jedoch nicht in der Lage, s zu berechnen. Praktisch wird nicht die Nachricht m signiert, sondern nur ein Hashwert der Nachricht, also s = h(m)e mod n und der Empf¨anger vergleicht sd mod n mit h(m). Die verwendete Hashfunktion kann ¨offentlich vereinbart werden. Wie digitale Signaturen auszusehen haben, ist genau geregelt. In [MvOV97] finden Sie eine genaue Erl¨auterung. Um eine Signatur zu f¨alschen, k¨onnte Eve eine Unterschrift von Alice verwenden, z.B. die Unterschrift zur Nachricht m. Dann w¨are s = h(m)d mod n. Eve kennt d nicht, sie kann aber mit dieser Signatur als Alice alle Nachrichten unterschreiben, deren Hashwert der gleiche ist, wie der der Nachricht m. Sie kann also versuchen, eine Nachricht m 0 zu finden, so dass h(m0 ) = h(m). Wenn h aber auch nur schwach kollisionsresistent ist, wird es Eve nicht einmal gelingen, eine sinnlose Nachricht m 0 mit dem selben Hashwert zu finden. Eve k¨onnte auch irgendeine Signatur s nehmen und sehen, ob sie eine Nachricht findet, so dass h(m) = s e mod n (denn dann w¨are s = h(m)d mod n). Das ist aber, wie man sieht, auch nicht einfacher.
4.2.2
ElGamal Signaturen
Diese Signaturvariante ist – wie der Name schon vermuten l¨asst – verwandt mit dem ElGamalVerschl¨ usselungsverfahren. Man nimmt an, dass es n¨otig ist, ein DLP zu l¨osen, um ElGamalSignaturen zu f¨alschen, bewiesen ist allerdings nichts. Zun¨achst wird eine kollisionsresistente Hashfunktion h ¨offentlich vereinbart. Nun w¨ahlt Alice eine große Primzahl p und eine Primitivwurzel g in Z ∗p , weiters eine zuf¨allige Zahl a, so dass 2 ≤ a ≤ p − 1. Sie berechnet A = g a mod p und ver¨offentlicht ihren public-key (p, g, A).
Die Zahl a h¨alt sie geheim.
74
KAPITEL 4. ELGAMAL Um zu signieren, w¨ahlt Alice zuf¨allig eine Zahl k, so dass 2 ≤ k ≤ p−1 und ggT(k, p−1) =
1. Dann berechnet sie die Signatur (r, s) der Nachricht m als r = gk
s = k −1 (h(m) − ar)
mod p,
mod p − 1
Will Bob die Signatur u ufen, so pr¨ uft er: ¨ berpr¨ 1. Ist 1 ≤ r ≤ p − 1? 2. Ist Ar · r s = g h(m) mod p? Attacken auf ElGamal Signaturen Eine g¨ ultige Unterschrift besteht beide Tests, denn Ar · r s = g ar · g ks = g ar+kk
−1 (h(m)−ar)
= g h(m)
mod p
Der scheinbar u ussige Test, ob 1 ≤ r ≤ p − 1 ist, ist ¨außerst wichtig, denn macht man ¨ berfl¨
diesen Test nicht, dann ist es Eve m¨oglich, eine beliebige Nachricht m 0 f¨ ur Alice zu signieren, wenn sie nur eine einzige signierte Nachricht m von Alice kennt. Das geht so: Sei (r, s) Alice’s Signatur der Nachricht m. Angenommen h(m) ist relativ prim zu p − 1.
Dann sei
u := h(m0 ) · h(m)−1
s0 := su mod p − 1
mod p − 1
Weiters berechnet Eve mit Hilfe des chinesischen Restsatzes modulo p · (p − 1) eine Zahl r 0 ,
welche die Gleichungen
r 0 = ru r0 = r
mod p − 1 mod p
und
erf¨ ullt.
Nun ist (r 0 , s0 ) eine g¨ ultige Alice-Signatur von m0 , denn s = k −1 (h(m) − ar)
mod p − 1,
also ist
h(m) = ar + ks
mod p − 1.
Somit ist
r0
A ·r
0 0s
0
= Aru · r su = g aru · g ksu = g u(ar+ks) = g u·h(m) = g h(m ) .
Den einfachen ersten Test besteht die gef¨alschte Signatur jedoch nicht, denn r 0 ≥ p: r0 = r
mod p
r 0 = ru 6= r
mod p − 1,
75
4.3. ZERO-KNOWLEDGE-PROTOKOLLE
denn u 6= 1 mod p − 1 (außer man f¨ande eine Kollision von h). Also ist r 0 6= r, und daher muss r 0 ≥ p sein.
Es ist nicht ratsam, sich Arbeit zu sparen, indem man jedes Mal das selbe k verwendet,
denn werden zwei Nachrichten m1 und m2 mit dem selben k-Wert signiert, so l¨asst sich unter Umst¨anden aus den beiden Signaturen (r, s 1 ) und (r, s2 ) das geheime a berechnen: Es ist s1 − s2 = k −1 (h(m1 ) − ar) − k −1 (h(m2 ) − ar) = k −1 (h(m1 ) − ar − h(m2 ) + ar) = k −1 (h(m1 ) − h(m2 ))
mod p − 1
Falls s1 − s2 und p − 1 relativ prim sind, l¨asst sich s1 − s2 modulo p − 1 invertieren und man
erh¨alt
k = (s1 − s2 )−1 (h(m1 ) − h(m2 ))
mod p − 1.
Andernfalls hat die Gleichung genau ggT(s 1 − s2 , p − 1) verschiedene L¨osungen. Wenn dieser
ggT nicht allzu groß ist, kann man alle L¨osungen durchprobieren. Kennt man k, so l¨asst sich a berechnen aus s1 = k −1 (h(m1 ) − ar) ks1 = h(m1 ) − ar ar = h(m1 ) − ks1
mod p − 1
mod p − 1 mod p − 1.
Falls r relativ prim zu p − 1 ist, so l¨asst sich a daraus direkt berechnen, ist ggT(r, p − 1) > 1,
so gibt es wieder mehrere L¨osungen, und man kann probieren.
Die in der Praxis am meisten benutzte Variante des ElGamal-Signaturverfahrens ist der Digital Signature Algorithm (DSA), lesen Sie in [MvOV97] nach.
4.3
Zero-Knowledge-Protokolle
Nichts wissen“ klingt erst einmal sehr gut, aber zu fr¨ uh gefreut, eigentlich sollte es nichts ” ” verraten“ heißen. Jetzt aber von vorn. Alice weiß etwas, was Bob nicht weiß. Sie m¨ochte ihn davon u ¨ berzeugen, dass sie es weiß, sie m¨ochte es ihm aber nicht verraten. Ein Zero-Knowledge-Protokoll ist ein Weg, das zu erreichen. Wir starten mit einem anschaulichen
76
KAPITEL 4. ELGAMAL
Beispiel 4.6 (Landkarten bemalen). Es ist bei jeder Landkarte m¨oglich, mit vier Farben die L¨ander so zu bemalen, dass benachbarte L¨ander niemals die gleiche Farbe haben. Mit drei Farben geht das nur manchmal und selbst dann ist es ein sehr schwieriges Problem. Alice hat es geschafft, und m¨ochte es Bob beweisen, sie m¨ochte ihm aber nicht verraten, wie sie es gemacht hat, schließlich hat sie sich lange damit herumgeplagt. Die beiden bauen einen Apparat. Es handelt sich um eine riesige Landkarte. In jedem Land sind 3 L¨ampchen montiert, ein rotes, ein gr¨ unes und ein blaues. Alice kann in jedem Land entsprechend ihrer Bemalung einstellen, welches L¨ampchen leuchten soll. Wenn Bob mit dem Finger auf eine Grenze der Landkarte tippt, so gehen in den angrenzenden L¨andern die L¨ampchen an, und er kann sich davon u ¨ berzeugen, dass die Farben verschieden sind. Nachdem er auf eine Grenze getippt hat, dr¨ uckt Alice schnell auf einen Knopf, der folgende Umstellungen ausl¨ost: die Farben werden zuf¨allig durchmischt, es wird z.B. rot zu blau, blau zu gr¨ un und gr¨ un zu rot (die Farben k¨onnen aber auch zuf¨allig unver¨andert bleiben), die Farben ¨andern sich aber in jedem Land gleich. Im n¨achsten Durchgang wird nun anstelle des roten ein blaues L¨ampchen leuchten, und anstelle eines blauen ein gr¨ unes, wo auch immer Bob hintippt. Nun ist Bob wieder dran, er untersucht die n¨achste (oder noch einmal die selbe) Grenze, danach verstellt Alice wieder die Farben. Das geht so lange bis Bob davon u ¨ berzeugt ist, dass Alice die Karte richtig bemalt hat. Bob erf¨ahrt dabei aber nicht, wie Alice die Karte bemalt hat.
Jetzt wird’s etwas praktischer. Wir sehen uns ein Zero-Knowledge-Protokoll f u ¨ r das Wissen um den diskreten Logarithmus eines Elements einer Gruppe. Es sei (G, ·,−1 , 1) eine Gruppe großer Ordnung, b ein fixes Element großer Ordnung der
Gruppe und y ein beliebiges Element der Gruppe. Alice will Bob davon u ¨ berzeugen, dass sie den diskreten Logarithmus von y zur Basis b kennt, also jenes x, so dass y = b x . 1. Alice w¨ahlt zuf¨allig eine Zahl e und schickt Bob B = b e . 2. Bob wirft eine M¨ unze. (a) Bei Kopf muss Alice e bekannt geben und Bob u uft, ob B = be ist. ¨ berpr¨ (b) Bei Zahl muss Alice x + e bekannt geben und Bob u uft, ob y · B = bx+e ist. ¨ berpr¨ 3. Die Schritte (1) und (2) werden wiederholt, bis Bob u ¨ berzeugt ist.
77
4.4. OBLIVIOUS TRANSFER CHANNELS Wenn Alice x nicht kennt, dann kann sie zweierlei tun.
• Sie setzt auf Kopf, w¨ahlt ein e und schickt B = be . F¨allt Kopf, kann sie einfach e schicken, und Bob ist zufrieden. F¨allt aber Zahl, so muss sie x + e schicken und das
kann sie nicht, wenn sie x nicht kennt. • Sie setzt auf Zahl, w¨ahlt ein e, schickt aber B = be · y −1 . F¨allt Zahl, dann schickt sie e (statt x + e) und Bob u uft y · B = bx+e und ist zufrieden. F¨allt aber Kopf, steckt ¨ berpr¨ sie in der Klemme.
In jeder Testrunde hat also Alice eine Chance von 50%, Bob zu betr¨ ugen, wenn sie den diskreten Logarithmus nicht kennt. Nach n Runden ist die Wahrscheinlichkeit, als L u ¨ gner alle Runden zu u ¨ berstehen, nur mehr ( 12 )n . Umgekehrt erf¨ahrt Bob nichts u ¨ ber den diskreten Logarithmus x, weil er entweder e oder x + e aber nicht e erf¨ahrt.
4.4
Oblivious transfer channels
Interaktive Beweise sind m¨ uhsam, weil immer auf die Antwort des anderen gewartet werden muss. Um aus den interaktiven Protokollen nicht-interaktive zu machen, bedient man sich eines oblivious transfer channels.
Definition 4.7. Ein oblivious transfer channel von Alice zu Bob ist ein System, mit dem Alice Bob zwei (verschl¨ usselte) Pakete schicken kann, so dass die folgenden Forderungen erf¨ ullt sind: 1. Bob kann genau eines der beiden Pakete entschl¨ usseln und lesen. 2. Alice weiß nicht, welches der beiden Pakete das ist. 3. Beide k¨onnen sicher sein, dass (1) und (2) erf¨ ullt sind.
Wir studieren einen oblivious transfer channel, der auf dem DHP beruht. Zun¨achst wird ein endlicher K¨orper GF(q) vereinbart, in dem das DHP schwierig zu l¨osen ist, weiters eine Primitivwurzel b von GF(q) und ein Element C des K¨orpers, dessen DL zur Basis b nicht bekannt ist. Schließlich braucht man eine Funktion ψ : GF(q) → {0, 1} n . 1. Bob w¨ahlt ein x, so dass 0 < x < q − 1, und ein i ∈ {1, 2}. Er berechnet βi = b x ,
β3−i = C · b−x
78
KAPITEL 4. ELGAMAL Er gibt Alice seinen public-key (β1 , β2 ), hingegen h¨alt er x und i geheim. Bob kennt x, den DL von βi zur Basis b. W¨ urde er auch den DL x0 von β3−i zur Basis b 0
0
kennen, so w¨ usste er, dass bx+x = bx · bx = βi · β3 − i = bx · C · b−x = C. Also w¨ urde er den DL von C zur Basis b kennen. Da dieser nicht bekannt ist, kann Bob auch x 0 nicht kennen. 2. Alice hat zwei Pakete m1 und m2 . Nehmen wir an, beide Pakete sind Bitfolgen der L¨ange n. Sie w¨ahlt zuf¨allig 0 < y1 , y2 < q − 1 und schickt Bob (a) ε1 = by1 (b) ε2 = by2
(c) α1 = ψ(β1y1 ) ⊕ m1
(d) α2 = ψ(β2y2 ) ⊕ m2
(dabei steht ⊕ f¨ ur bitweises XOR). 3. Bob berechnet ψ(εxi ) ⊕ αi . Bob erh¨alt im letzten Schritt tats¨achlich mi , denn ψ(εxi ) ⊕ αi = ψ((byi )x ) ⊕ ψ(βiyi ) ⊕ mi
= ψ((bx )yi ) ⊕ ψ(βiyi ) ⊕ mi = ψ(βiyi ) ⊕ ψ(βiyi ) ⊕ mi = mi
Bob kann aber m3−i nicht entschl¨ usseln. Dazu m¨ usste er y
0
3−i β3−i = (C · b−x )y3−i = (bx )y3−i = (by3−i )x
0
0
berechnen k¨onnen. Er kennt aber nur bx = β3−i und by3−i = ε3−i , steht also vor einem DHP. Alice kennt i nicht, weiß also nicht, welches Paket Bob lesen kann. Sie kann sich aber davon u ¨ berzeugen, dass er nicht beide Pakete lesen kann. Sie berechnet β 1 · β2 . Hat Bob
seinen o¨ffentlichen Schl¨ ussel nicht ver¨andert, so ergibt sich β1 · β2 = bx · C · b−x = C. K¨onnte Bob den DL von β1 und von β2 berechnen, so auch den von C, das geht aber nicht.
Kapitel 5
Moore, Mealy und Vernam 5.1
Das Vernam One Time Pad
Definition 5.1. Eine Strom-Chiffre verschl¨ usselt eine Bitfolge Bit f¨ ur Bit (im Gegensatz zu Block-Chiffren).
Das Vernam One Time Pad ist eine symmetrische Strom-Chiffre. Der Schl¨ ussel ist eine zuf¨allige Bitfolge (ki ). Die Bitfolge (mi ) wird verschl¨ usselt, indem man Bit f¨ ur Bit, das Nachrichtenbit mit dem entsprechenden Schl¨ usselbit XOR-verkn¨ upft, also ci = m i ⊕ k i . Um die verschl¨ usselte Folge (ci ) wieder zu entschl¨ usseln, berechnet man (wie beim Verschl¨ usseln) Mi = c i ⊕ k i . So einfach dieses Verfahren ist, so sicher ist es. Es handelt sich um eines der wenigen absolut sicheren Verschl¨ usselungsverfahren. Wer den Schl¨ ussel nicht kennt, hat u ¨ berhaupt keinen Hinweis auf den Klartext. Jede Bitfolge ist ein potentieller Klartext. Nat¨ urlich ist dieses Verfahren f¨ ur Known-plaintext-Attacken anf¨allig; wer den Nachrichtentext kennt, kann den Schl¨ ussel berechnen. Es muss also stets ein neuer Schl¨ ussel verwendet werden. Dieser Schl¨ ussel muss sicher ausgetauscht werden, und er ist mindestens so lang wie die Nachricht, die verschl¨ usselt werden soll. F¨ ur die absolute Sicherheit zahlt man hier also mit riesigem Aufwand zum Schl¨ usselaustausch. Um diesen Aufwand zu reduzieren, l¨asst man sich die zuf¨allige Schl¨ usselbitfolge von einem PRNG erzeugen. Man braucht dann bloß die Parameter f¨ ur den PRNG austauschen. Alice und Bob k¨onnen dann beide mit ihren PRNGs die selbe zuf¨allige Schl¨ usselbitfolge erzeugen. 79
80
KAPITEL 5. MOORE, MEALY UND VERNAM Der BBS-PRNG ist, wie wir gesehen haben, rechnerisch sehr aufwendig. Wir entwickeln
in diesem Kapitel einen kleinen Teil der Theorie der Automaten, und verwenden diese, um schnelle PRNGs zu bauen“. ”
5.2
Automaten
Ein Automat ist ein Quintupel (I, O, Z, δ, λ), bestehend aus einer Inputmenge I, einer
Outputmenge O, einer Zustandsmenge Z, einer Zustands¨ uberf¨ uhrungsfunktion δ : Z × I →
Z, und einer Outputfunktion λ : Z × I → O.
Die Mengen und Funktionen sind dabei wie folgt zu interpretieren:
• I ist die Menge aller m¨oglichen Inputs in den Automaten. • Auf jeden Input reagiert der Automat mit einem Output. O ist die Menge aller m¨oglichen Outputs des Automaten.
• Der Output des Automaten h¨angt nicht nur vom Input ab, sondern auch vom Zustand,
in dem sich Automat gerade befindet. Z ist die Menge aller m¨oglichen Zust¨ande des Automaten.
• Befindet sich der Automat im Zustand z ∈ Z so reagiert er auf den Input i ∈ I mit dem Output λ(z, i) ∈ O
• und wechselt in den Zustand δ(z, i) ∈ Z. H¨angt der Output eines Automaten nur vom Zustand, aber nicht vom Input ab, so heißt der Automat auch Moore-Automat. Die Funktionen δ und λ k¨onnen neben dem Zustand und dem Input auch vom Zufall abh¨angen. Man spricht in diesem Fall von einem nichtdeterministischen Automaten, andernfalls von einem deterministischen Automaten. Ein Automat (I, O, Z, δ, λ) heißt endlich oder Mealy-Automat, falls I, O und Z endliche Mengen sind.
Verzichtet man auf die Outputmenge O und die Outputfunktion λ, so spricht man von einem Halbautomaten. Gern gibt man bei einem (Halb-)Automaten einen Anfangszustand z 0 ∈ Z an.
Einfache Automaten mit nicht allzu großen Input- und Zustandsmengen lassen sich sehr sch¨on grafisch veranschaulichen. Dazu zeichnet man f¨ ur jeden Zustand einen kleinen Kreis. Wechselt der Automat beim Input i vom Zustand z in den Zustand z 0 und gibt dabei den Output o aus, so zeichnet man einen Pfeil vom Kreis z zum Kreis z 0 , den man mit i/o beschriftet. Beim Betrachten des n¨achsten Beispiels wird alles klar.
81
5.2. AUTOMATEN
Beispiel 5.2. Als erstes Beispiel betrachten wir eine einfache Mausefalle. Die Mausefalle kann sich zwei Zust¨anden befinden, gespannt“ (G) oder nicht gespannt“ (N). M¨ogliche ” ” Inputs sind Maus tappt in die Falle“ (1) und Maus tappt nicht in die Falle“ (0). ” ” ¨ Ublicherweise hat eine Mausefalle keinen Output, es handelt sich also um einen Halbautomaten. Eine bessere Version der Mausefalle hat als Output 1, wenn soeben eine Maus gefangen wurde und sonst 0. Abbildung 5.1 stellt diesen Automaten dar.
1 0
1 1 G
N
0 0 0 0
Abbildung 5.1: Die einfache Mausefalle
Beispiel 5.3. Sieht man sich eine Mausefalle genauer an, kann man vier Zust¨ande unterscheiden, je nachdem, ob Speck in der Falle ist oder nicht. Nun ergeben sich die Zust¨ande SG: Speck ist in der Falle, die Falle ist gespannt SN: Speck ist in der Falle, die Falle ist nicht gespannt LG: Die Falle ist leer und gespannt LN: Die Falle ist leer und nicht gespannt Abbildung 5.2 zeigt diesen etwas komplizierteren Automaten.
Um Automaten studieren zu k¨onnen, interessiert man sich daf¨ ur, was der Automat macht, wenn man ihm eine Serie von Inputs schickt. Unter einer Folge von Inputs verstehen wir eine Folge i = i1 i2 . . . in , wobei ij ∈ I f¨ ur 1 ≤ j ≤ n. Wir lassen als Inputfolge auch die leere“ ” ∗ Folge i = Λ (kein Input) zu. Mit I bezeichnen wir die Menge aller Inputfolgen. 1 1
Inputfolgen sind also die W¨ orter u ¨ ber dem Alphabet I, so klein ist die Welt der Mathematik.
82
KAPITEL 5. MOORE, MEALY UND VERNAM
0 0
LG
1 1
0 0
SG
0 0
LN
1 1 1 0
0 0
SN
0 0
Abbildung 5.2: Die Mausefalle mit Speck Wir erweitern die Zustands¨ uberf¨ uhrungsfunktion δ zu einer Funktion δ ∗ : Z × I ∗ → Z.
F¨ ur z ∈ Z, i1 , . . . , in ∈ I definieren wir:
δ ∗ (z, Λ) = z δ ∗ (z, i1 ) = δ(z, i1 ) δ ∗ (z, i1 . . . in ) = δ(δ ∗ (z, i1 . . . in−1 ), in ) Die Folge hz, δ ∗ (z, i1 ), δ ∗ (z, i1 i2 ), . . . , δ ∗ (z, i1 . . . in )i nennen wir die Zustandstrajektorie
von z unter der Inputfolge i1 . . . in .
Auf die gleiche Weise l¨asst sich die Outputfunktion λ zu einer Funktion λ ∗ : Z × I ∗ → O
erweitern.
λ∗ (z, Λ) = Λ λ∗ (z, i1 ) = λ(z, i1 ) λ∗ (z, i1 . . . in ) = λ(δ ∗ (z, i1 . . . in−1 ), in )
5.2.1
Angewandte Automaten
Eine klassische Anwendung von Automaten ist die Verwendung als Akzeptoren. Ein Akzeptor ist ein Automat mit zwei m¨oglichen Outputs, akzeptiert“ (A) und nicht akzeptiert“ (N). ” ” Ist der Output A, so hat der Automat, die Inputfolge akzeptiert, sonst ist der Output N.
83
5.3. LINEAR FEEDBACK SHIFT REGISTERS
Ein Akzeptor kann z.B. pr¨ ufen, ob ein Ausdruck syntaktisch korrekt ist. Wir sehen uns als Beispiel einen Automaten an, der pr¨ uft, ob der eingegebene Ausdruck richtig geklammert ist.
Beispiel 5.4. Wir w¨ahlen Z = Z ∪ {π}, I ist der ASCII-Zeichensatz und O = {A, N }.
Als Anfangszustand w¨ahlen wir z0 = 0. Dann definieren wir δ : Z×I →Z π z+1 (z, i) 7→ z − 1 π z
λ: Z×I →Z A (z, i) 7→ N
, falls z = π , falls z ∈ Z und i =( , falls z ∈ Z und z > 0und i =) , falls z ≤ 0 und i =) , falls i 6∈ {), (}
, falls δ(z, i) = 0 , falls δ(z, i) 6= 0
Akzeptoren sind sozusagen ganz einfache Programme zur Syntaxanalyse. In Netzwerken werden Sie eingesetzt, um die Datenintegrit¨at zu u ufen. Bei hardwarenahen Protokollen ¨ berpr¨ k¨onnen diese Automaten einfach gebaut oder in kleine Prozessoren gebrannt werden. Wir wenden uns der kryptologischen Anwendung von Automaten zu.
5.3
Linear feedback shift registers
Eine spezielle Art von Automaten sind Schieberegister (Linear feedback shift registers, LFSRs).
Definition 5.5. Ein LFSR ist ein Automat (I, O, Z, δ, λ), bei dem I = {1}, O = Z 2
und Z ein Vektorraum u ¨ ber dem K¨orper Z2 ist. Die Funktionen δ und λ h¨angen dann nicht mehr vom Input ab (LFSRs sind also Moore-Automaten). Sie sind von der Form λ((z1 , . . . , zn )T ) = z1
und
δ(z) = A · z,
84
KAPITEL 5. MOORE, MEALY UND VERNAM
wobei A eine sogenannte Begleitmatrix ist. Das ist eine Matrix von der Gestalt
0
1
0
0
...
0
0
0 0 A= 0 .. . 0
0
1
0
...
0
0
0
1
...
0
0 .. .
0 .. .
0 .. .
... .. .
0 .. .
0
0
0
...
0
0 0 0 .. . 1 an
1 a 2 a3 a4 . . .
an−1
wobei a2 , . . . , an ∈ Z2 .
Der Name LFSR erkl¨art sich von selbst, wenn man sich ansieht, was die Zustands¨ uberf¨ uhrungsfunktion aus dem Zustand z = (z 1 , . . . , zn )T macht. 0 1 0 0 ... 0 0 z2 z1 0 0 1 0 . . . 0 0 z2 z3 0 0 0 1 . . . 0 0 z3 z4 0 0 0 0 . . . z5 0 0 · z4 = .. .. .. .. .. . . .. .. .. . . . . . . . . . zn 0 1 zn−1 0 0 0 0 . . . z1 + a 2 z2 + a 3 z3 + . . . + a n zn zn 1 a2 a3 a4 . . . an−1 an
Bei jedem Input wird der Zustandsvektor (eine Bitfolge) um eine Position verschoben, das Bit, das dabei hinausf¨allt, ist der Output. An der letzten Stelle wird ein linearer Feedback nachgeschoben. Ist A ein LFSR mit Begleitmatrix A, dann heißt das Polynom x n +a2 xn−1 +. . .+an x+1 ∈
Z2 [x] Verbindungspolynom (connection polynomial). Ein LFSR ist durch sein Verbindungs-
polynom eindeutig bestimmt. Vereinbart man zus¨atzlich einen Anfangszustand z0 ∈ Z, so sind alle Outputs des LFSR schon bestimmt. Die Dimension des Vektorraums Z nennt man
auch die L¨ange des LFSRs.
Beispiel 5.6. Betrachten wir das LFSR mit dem Verbindungspolynom x 5 + x2 + 1. Das LFSR hat die L¨ange 5. Eine bequeme Art, ein LFSR zu zeichnen, wird in Abbildung 5.3 dargestellt. Wir vereinbaren als Anfangszustand z 0 = (1, 0, 0, 1, 1) ∈ Z52 . Das LFSR erzeugt
dann die Outputfolge
1001101001000010101110 . . .
5.3. LINEAR FEEDBACK SHIFT REGISTERS
85
+
z1
z2
z3
z4
z5
Abbildung 5.3: Das LFSR x5 + x2 + 1. Die Outputfolgen (oi ) (i ∈ N), die ein LFSR erzeugt sind periodisch, d.h. es gibt eine
kleinste Zahl L, die Periode, so dass stets o i+L = oi . Ein LFSR der L¨ange n kann maximal 2n −
1 verschiedene Zust¨ande annehmen. Daher ist die Periode eines LFSR der L¨ange n maximal 2n − 1. Ist die Periode gleich der maximal m¨oglichen, so heißt das LFSR maximalperiodisch. Wir erinnern uns an Kapitel 3. Tats¨achlich gilt
Satz 5.7. Ein LFSR ist genau dann maximalperiodisch, wenn sein Verbindungspolynom maximalperiodisch ist.
Wir k¨onnen also aus Polynomen vom Grad n Bitfolgen mit der Periode 2 n − 1 erzeugen.
Leider kann man aber mit Hilfe des Berlekamp-Massey-Algorithmus 2 aus 2n Bits der Bitfolge
das Verbindungspolynom berechnen. Sobald man also 2n Bits des Schl¨ ussels kennt, kennt man den gesamten Schl¨ ussel. Um LFSRs als kryptographische Zufallszahlengeneratoren verwenden zu k¨onnen, verschaltet man nun einfach mehrere LFSRs mit relativ primen Perioden. Beispiel 5.8. Ein Beispiel, wie es praktisch verwendet wird ist das folgende. Wir w¨ahlen 5 LFSRs R1 , . . . , R5 . Nun sei Ri (j) der j-te Output des LFSR Ri . Wir definieren die Funktion x , falls s = 0 f (x, y, s) = y , falls s = 1
Nun verwenden wir als j-ten Output
O(j) = f (R1 (j), R2 (j), f (R3 (j), R4 (j), R5 (j))) ⊕ f (R4 (j), R3 (j), R5 (j)). Die so erzeugte Bitfolge besitzt eine sehr lange Periode und der Berlekamp-MasseyAlgorithmus ist nicht mehr direkt anwendbar. Daf¨ ur muss man sich auf 5 Verbindungspolynome einigen. 2
ein.
Dieser Algorithmus ist in [MvOV97] im Kapitel 6 ausf¨ uhrlich beschrieben. Wir gehen nicht n¨ aher darauf
86
KAPITEL 5. MOORE, MEALY UND VERNAM Stromchiffren aus LFSRs bieten in der Regel nicht die Sicherheit, die andere Systeme
bieten k¨onnen. Es ist daf¨ ur aber sehr einfach, sie hardwarem¨aßig zu implementieren und sie sind ungeheuer schnell. Daher sind sie besonders f¨ ur Anwendungen geeignet, in denen Geschwindigkeit besonders wichtig ist und die verschl¨ usselten Daten schnell ihre Wichtigkeit ¨ verlieren, so dass es keinen Sinn mehr macht, die Daten eine Stunde nach der Ubertragung zu entschl¨ usseln.
Kapitel 6
Koblitz und Miller In beinahe 30 Jahren RSA und DH haben sich das Faktorisierungsproblem und das DLP/DHP wie in den Jahrhunderten davor nicht vollst¨andig l¨osen lassen. Allerdings werden immer mehr und bessere Methoden entwickelt, so dass es immer schwieriger wird, sichere Parameter f u ¨r diese Verfahren zu finden.
Beispiel 6.1. F¨ ur das RSA-Verfahren hat man zur Zeit wenigstens 1024 Bit lange starke Primzahlen zu w¨ahlen. Gl¨ ucklicherweise geht das, weil auch das Finden (und Testen) von Primzahlen immer einfacher wird. Es bleibt jedoch das Problem, dass mit immer gr¨oßeren Zahlen gerechnet werden muss, und das halbwegs schnell.
ur DLP-verwandte Verfahren, bei denen als Gruppe Z ∗p verwendet wird, Beispiel 6.2. F¨ muss p ebenfalls wenigstens 1024 Bit lang sein. Auch hier muss man mit sehr großen Zahlen potenzieren, viel Aufwand.
Das gr¨oßte Problem dabei ist, dass die Gruppen Z ∗p und GF(q)∗ sehr gut erforscht sind und viel Struktur aufweisen. Das DLP l¨asst sich aber, wie wir gesehen haben, f¨ ur jede Gruppe formulieren. Wir studieren in diesem Kapitel eine ganz andere Art von Gruppen, elliptische Kurven. 87
88
KAPITEL 6. KOBLITZ UND MILLER
6.1
Elliptische Kurven u ¨ ber R
Definition 6.3. Es sei x3 + ax + b ∈ R[x] ein Polynom, so dass 4a3 + 27b2 6= 0. Mit O bezeichnen wir einen ausgezeichneten Punkt im Unendlichen“. Dann ist ” E = {(x, y) ∈ R2 | y 2 = x3 + ax + b} ∪ {O} eine elliptische Kurve (EC) u ¨ ber R.
Der Einfachheit halber schreiben wir statt der EC nur die Gleichung. Abbildung 6.1 zeigt die Graphen verschiedener elliptischer Kurven u ¨ ber dem K¨orper R. Aus E l¨asst sich eine Gruppe machen. Das sehen wir uns jetzt an. Beispiel 6.4. Wir w¨ahlen E : y 2 = x3 − 36x. Die Punkte P = (−3, 9) und Q = (−2, 8) sind Punkte auf E, wovon man sich durch Einsetzen in die Gleichung schnell u ¨ berzeugt. Wir legen durch P und Q eine Gerade
g : y = kx + d Die Steigung k l¨asst sich schnell berechnen als k=
8−9 = −1. −2 − (−3)
Setzt man nun P in g ein, so erh¨alt man d = y − kx = 9 − (−1)(−3) = 6 Die Geradengleichung lautet also g : y = −x + 6 Wir schneiden g mit E: (−x + 6)2 = x3 − 36x
x2 − 12x + 36 = x3 − 36x
x3 − x2 − 24x − 36 = 0
Die entstehende Gleichung dritten Grades k¨onnen wir leicht l¨osen, weil wir zwei L¨osungen schon kennen (P und Q sind Schnittpunkte): x 1 = −3 und x2 = −2.
¨ 6.1. ELLIPTISCHE KURVEN UBER R
-4
-3
-2
89
4
4
2
2
-1
1
2
3
-4
-3
-3
-2
-1
1
-2
-2
-4
-4
y 2 = x3 + x − 1
-4
-2
4
2
2
1
2
3
-4
-3
-2
-1
1
-2
-2
-4
-4
y 2 = x3 − x + 2
3
2
3
y 2 = x3 + x + 2
4
-1
2
y 2 = x3 − 3x
Abbildung 6.1: Elliptische Kurven u ¨ ber R
90
KAPITEL 6. KOBLITZ UND MILLER 4
P*Q
2
Q
-2
P -1
1
2
3
-2
P+Q
-4
Abbildung 6.2: Addition der Punkte P und Q Wir dividieren x3 − x2 − 24x − 36 durch (x − x1 )(x − x2 ) = x2 + 5x + 6 und erhalten x − 6. Also ist x3 = 6.
Auch der dritte Schnittpunkt liegt auf g, also ist y = −x + 6 = 0 Aus den zwei Punkten P und Q erhalten wir so einen dritten Punkt P ∗ Q = (6, 0).
Beispiel 6.5. Wir w¨ahlen E : y 2 = x3 + 1 und den Punkt P = (2, 3) auf E. Wir legen in P die Tangente an E. Diese ist von der Form t : y = kx + d Die Steigung der Tangente in P ist gerade die Steigung von E in P . Diese l¨asst sich mit
implizitem Differenzieren berechnen:
2y y˙ 0 = 3x2 y0 =
3x2 2y
y 0 (x = 2, y = 3) = 2
¨ 6.1. ELLIPTISCHE KURVEN UBER R
91
Also ist k = 2. Wir setzen P in t ein und erhalten d = y − kx = 3 − 2 · 2 = −1. Wir schneiden t mit E (2x − 1)2 = x3 + 1
4x2 − 4x + 1 = x3 + 1
x3 − 4x2 + 4x = 0
Auch von dieser Gleichung dritten Grades kennen wir zwei L¨osungen, denn die xKoordinate von P als Ber¨ uhrpunkt ist zweifache L¨osung der Gleichung. Wir k¨onnen also ohne Rest durch (x − 2)(x − 2) = x2 − 4x + 4 dividieren und erhalten x. Die dritte L¨osung ist also x3 = 0.
Die y-Koordinate ergibt sich durch Einsetzen in t. Wir erhalten y = 2x − 1 = −1 Aus einem Punkt P auf E erhalten wir einen Punkt P ∗ P = (0, −1) auf der EC.
4
P
2
P+P
-2
-1
1
2
3
P*P
-2
-4
Abbildung 6.3: Verdopplung von P
92
KAPITEL 6. KOBLITZ UND MILLER
Remark 6.6. Man rechnet leicht nach, dass eine EC das Assoziativgesetz (P ∗ Q) ∗ R = P ∗ (Q ∗ R) nicht erf¨ ullt, dass sich so also keine Gruppe aus einer EC machen l¨asst.
Definition 6.7. Es sei E eine EC. Wir definieren: 1. −O = O und f¨ ur jedes P ∈ E sei P + O = O + P = P . (Damit wird O zum neutralen Element.)
2. Ist P = (x, y), dann sei −P = (x, −y). 3. Ist Q = −P , dann sei P + Q = O. 4. P + P = 2P = −(P ∗ P ), wobei P ∗ P der andere Schnittpunkt der Tangente an E in P ist. (siehe Abb. 6.3)
5. Ist P 6= ±Q, dann sei P + Q = −(P ∗ Q), wobei P ∗ Q der dritte Schnittpunkt der Geraden durch P und Q mit E ist. (siehe Abb. 6.2)
Damit wird aus einer EC eine Gruppe.
Satz 6.8. Ist E eine EC, dann ist (E, +, −, O) eine abelsche Gruppe.
Der Beweis, dass jetzt das Assoziativgesetz gilt, ist alles andere als einfach, und viel zu lang f¨ ur uns. Wir begn¨ ugen uns mit einem Blick auf Abbildung 6.4. F¨ ur die Addition von Punkten auf EC lassen sich einfache Formeln angeben, die wir gleich herleiten werden.
Lemma 6.9. Sind x1 , x2 , x3 Nullstellen des Polynoms x3 + Ax2 + Bx + C, dann gilt x1 + x2 + x3 = −A x1 · x2 · x3 = −C.
und
¨ 6.1. ELLIPTISCHE KURVEN UBER R
93 Q*R 7.5
5
2.5 P+Q+R P
-4
P*Q
Q
-2
2
4
P+Q R
P*HQ+RL=HP+QL*R -2.5
-5
-7.5
Q+R
Abbildung 6.4: Die Addition von Punkten auf EC ist assoziativ
Definition 6.10. Es sei K ein K¨orper mit Einselement 1.1 Die kleinste positive ganze Zahl k, f¨ ur die gilt k · 1 = 1| + 1 +{z. . . + 1} = 0, k mal
nennen wir Charakteristik von K (char(K)). Falls es keine solche Zahl gibt, dann definieren wir char(K) = 0.
Satz 6.11. Es sei K ein K¨orper mit char(K) 6= 2, 3. Weiters sei E : y 2 = x3 + ax + b eine EC und P = (x1 , y1 ) und Q = (x2 , y2 ) zwei Punkte auf E. Dann lassen sich die
Koordinaten (x3 , y3 ) von R = P + Q nach folgenden Formeln berechnen. • Falls P = −Q, dann ist R = O.
94
KAPITEL 6. KOBLITZ UND MILLER
• Falls P 6= Q, dann ist y2 − y 1 2 − x1 − x2 x3 = x2 − x 1 y2 − y 1 y3 = −y1 + (x1 − x3 ) x2 − x 1
(6.1)
• Falls P = Q, dann ist 2 3x21 + a − 2x1 2y1 2 3x1 + a (x1 − x3 ) y3 = −y1 + 2y1
x3 =
6.2
(6.2)
Elliptische Kurven u ¨ ber GF(q)
Wir haben die Additionsformeln gleich f¨ ur EC u ¨ ber (fast) beliebigen K¨orpern hergeleitet. Wir sehen uns jetzt EC u ¨ ber endlichen K¨orpern an.
6.2.1
Quadratwurzeln in endlichen K¨ orpern
Um einen Punkt auf einer EC u ¨ ber dem K¨orper GF(q) mit gegebener x-Koordinate zu berechnen, setzt man f¨ ur x ein und berechnet dann y, indem man die Quadratwurzel zieht. Wir u ur die K¨orper Zp , wie man Quadratwurzeln zieht. ¨ berlegen uns zumindest f¨ Es sei p ∈ P. Um zu bestimmen, ob [a]p ein Quadrat in Zp ist, ob man also die Quadrat-
wurzel daraus ziehen kann (wir werden das noch brauchen), bedient man sich des sogenannten Legendre-Symbols. Wir definieren: 0 a = 1 p −1
falls a ≡ 0 mod p falls a ein Quadrat modulo p ist sonst
Das hilft noch nicht weiter, aber es gilt
ur a, b ∈ Z und p, q ∈ P \ {2} gilt Satz 6.12. F¨ • p1 = 1,
¨ 6.2. ELLIPTISCHE KURVEN UBER GF(Q)
• • • •
a p
=
ab p
2 p
q p
=
a mod p p
95
,
a b p · p ,
= (−1)(p
2 −1)/8
,
= (−1)(p−1)(q−1)/4 ·
p q
.
Damit l¨asst sich schnell entscheiden, ob man aus einer Zahl modulo p die Quadratwurzel ziehen kann. Der folgende nette Algorithmus zum Ziehen von Quadratwurzeln modulo p ist von Shanks. Alles was man dazu braucht ist eine Zahl n, die nicht Quadrat modulo p ist.
Algorithmus 6.13 (Shanks). Es sei a ein Quadrat modulo p. Es ist die Quadratwurzel aus a zu ziehen. 1. Stelle p − 1 als 2α · s dar, wobei s ungerade ist. 2. Berechne b = ns mod p. 3. Berechne r = a(s+1)/2 mod p. 4. Berechne (r 2 /a)2
α−2
mod p. Das Ergebnis ist ±1. Ist das Ergebnis 1, dann setze
j0 = 0, sonst setze j0 = 1.
5. Wiederhole die folgenden Schritte f¨ ur k von 1 bis α − 2: (a) Es sei e die Zahl mit der Bin¨ardarstellung (jk−1 jk−2 . . . j1 j0 )2 . (b) Berechne ((be r)2 /a)2
α−k−2
mod p. Das Ergebnis ist ±1. Ist das Ergebnis 1, dann
setze jk = 0, sonst setze jk = 1.
6. Es sei e die Zahl mit der Bin¨ardarstellung (jk jk−1 . . . j1 j0 )2 . Dann ist be r eine Quadratwurzel von a modulo p.
6.2.2
Der Satz von Hasse
Wie viele Punkte liegen auf einer EC u ¨ ber einem endlichen K¨orper?
96
KAPITEL 6. KOBLITZ UND MILLER In GF(q) gibt es q verschiedene x-Koordinaten. Setzt man eine x-Koordinate in die Glei-
chung der EC ein, und zieht die Quadratwurzel, so erh¨alt man zwei y-Koordinaten, oder keine. Es gilt
Lemma 6.14. Ist GF(q) ein K¨orper der Charakteristik 6= 2, dann sind genau
Elemente von GF(q) Quadrate und aus den restlichen
q−1 2
q+1 2
Elementen kann man keine
Quadratwurzel ziehen.
Also d¨ urfen wir im Schnitt mit etwa q Punkten auf der EC rechnen. Tats¨achlich gilt
Satz 6.15 (Hasse). Es sei N die Anzahl der Punkte auf einer EC ¨ uber GF(q). Dann ist
√ √ (q + 1) − 2 q ≤ N ≤ (q + 1) + 2 q.
(D.h. die Anzahl der Punkte auf der EC ist von der selben Gr¨oßenordnung wie die √ Gr¨oße des K¨orpers, denn q hat nur halb so viele Stellen wie q.)
Somit ist eine EC u ¨ ber GF(q) eine abelsche Gruppe, deren Ordnung in etwa q ist. Ausnahmsweise ist diese Gruppe einmal nicht zyklisch, so etwas wie Primitivwurzeln gibt es also nicht. Es gibt keine Formel, mit der sich die Ordnung dieser Gruppe berechnen ließe. Es gibt allerdings Algorithmen, so z.B. den Algorithmus von Schoof ([Sch85]) und zahlreiche Varianten davon. Um sichere Kryptographie mit EC zu treiben, sollte sichergestellt sein, dass die Ordnung der Gruppe einen großen Primfaktor besitzt. Wenn man eine EC w¨ahlt wird man also nicht um das (etwas m¨ uhsame) Berechnen der Ordnung herumkommen.
Beispiel 6.16. Es sei p = x2 + 2 ein irreduzibles Polynom u ¨ ber Z5 und α eine Nullstelle von p. Dann ist Z5 (α) = Z5 [x]/p = GF(25) der endliche K¨orper mit 25 Elementen. Wir rechnen mit der EC E : y 2 = x3 + (α + 1)x + 4α + 3 u ¨ ber diesem K¨orper. Liegt der Punkt P = (2α, 2) auf E?
Wir berechnen x3 + (α + 1)x + 4α + 3 f¨ ur x = 2α und erhalten als Ergebnis 4. Dann berechnen wir y 2 f¨ ur y = 2 und erhalten ebenfalls 4. Also liegt P auf E.
6.3. KRYPTOSYSTEME MIT ELLIPTISCHEN KURVEN
97
Wie lauten die Koordinaten von 3 · P ?
Wir berechnen zun¨achst 2·P = P +P gem¨aß der Formel (6.2) und erhalten 2P = (2, 3α+1). Nun berechnen wir 3P = 2P + P gem¨aß der Formel (6.1) und erhalten 3P = (4, 3α + 3).
6.3
Kryptosysteme mit elliptischen Kurven
Das DLP sieht f¨ ur EC so aus: Gegeben E . . . EC u ¨ ber GF(q), P, Q ∈ E Gesucht k ∈ N, so dass k · P = Q, falls es so ein k gibt Zur Berechnung von k·P l¨asst sich wieder das Square-And-Multiply-Verfahren verwenden. Jetzt heißt square“ verdoppeln und multiply“ heißt addieren. ” ” ¨ In den Ubungen sehen wir uns als Beispiel den DH-Key-Exchange mit EC an. Um das DLP in Z∗p schwierig zu machen, sollte p zumindest eine 1024-Bit Zahl sein. Um die gleiche Schwierigkeit beim DLP u ¨ ber EC zu bekommen, sollte die Ordnung der EC etwa eine 160-Bit Zahl sein, es sollte also eine EC u ¨ ber Zp sein, wobei p eine 160-Bit Zahl ist. Man kann also mit wesentlich kleineren K¨orpern rechnen und verliert nichts an Sicherheit. Noch ein paar Kleinigkeiten. Wie kommt man zu einer EC und einem Punkt 6= O darauf ? Zun¨achst w¨ahlt
man einen endlichen K¨orper GF(q) der Charakteristik > 3. Dann w¨ahlt man zuf¨allig x, y, a ∈
GF(q). Damit der Punkt (x, y) auf y 2 = x3 + ax + b liegt, w¨ahlt man b = y 2 − x3 − ax.
Ist 4a3 + 27b2 6= 0, so hat man eine EC mit einem Punkt (x, y) darauf. Andernfalls w¨ahlt man neue x, y, a. Nun kann man die Ordnung der EC berechnen und gegebenenfalls ganz von
vorne beginnen. Wie macht man aus einer Zahl m (der Nachricht) einen Punkt P m auf der EC E? 1. W¨ahle t ∈ N so groß, dass 2−t als Wahrscheinlichkeit, dass es nicht gelingt einen passenden Punkt zu finden, klein genug ist. (Praktisch w¨ahlt man t zwischen 30 und 50.)
2. Sind die m¨oglichen Nachrichten als Zahlen zwischen 0 und M kodiert, so w¨ahle eine EC u ¨ ber GF(q) = Zp (α), wobei q = pr > M · t ist. 3. Jedes Element a ∈ {0, 1, . . . , M · t} besitzt eine eindeutige Darstellung a → a0 + a1 p + a2 p2 + . . . + ar−1 pr−1 , 0 ≤ ai < p.
98
KAPITEL 6. KOBLITZ UND MILLER Wir stellen a als a → a0 + a1 α + a2 α2 + . . . + ar−1 αr−1 ∈ Zp (α) dar. 4. Um die Nachricht m (0 ≤ m < M ) zu einem Punkt auf der EC zu machen, stelle man
nacheinander f¨ ur j = 1, 2, . . . , t die Zahl m · t + j gem¨aß (3) als Element des endlichen
K¨orpers dar. Dieses Element setze man f¨ ur x in y 2 = x3 + ax + b ein und versuche die
Quadratwurzel zu ziehen. Das gelingt mit Wahrscheinlichkeit 1/2. Hat man Erfolg, so hat man einen Punkt Pm gefunden. Andernfalls probiert man das n¨achste j. Somit hat man t Versuche und die Wahrscheinlichkeit, t mal zu scheitern ist nur ( 21 )t = 2−t . 5. Hat man umgekehrt einen Punkt auf der EC, dann nimmt man seine x-Koordinate. Diese ist von der Form x = a0 + a1 α + . . . + ar−1 αr−1 . Daraus macht man a = a0 + a1 p + . . . + ar−1 pr−1 Nun ist die urspr¨ ungliche Nachricht m = b a−1 t c.
6.4
Faktorisieren mit elliptischen Kurven
EC lassen sich auch verwenden, um große Zahlen zu faktorisieren. Wir sehen uns eine Methode von Lenstra an. Diese Methode beruht darauf, dass man Vielfache von Punkten auf einer EC u ¨ ber Zn berechnet. Da Zn kein K¨orper ist, geht das mit einer gewissen Wahrscheinlichkeit schief. Diese Wahrscheinlichkeit ist bei passenden Vielfachen sehr groß.
Algorithmus 6.17 (Lenstra). Die Zahl n ist zu faktorisieren. 1. W¨ahle (zuf¨allig) eine EC E : y 2 = x3 + ax + b u ¨ ber Zn und einen Punkt P = (x, y) auf E.
2. W¨ahle zwei nat¨ urliche Zahlen B und C. 3. Setze k=
Y
l αl ,
l≤B, l∈
wobei αl die gr¨oßte ganze Zahl ist, f¨ ur die lαl ≤ C ist.
6.4. FAKTORISIEREN MIT ELLIPTISCHEN KURVEN
99
4. Berechne k · P . Dabei muss modulo n invertiert werden (Nenner). Das funktioniert
nicht, wenn der Nenner nicht relativ prim zu n ist. In diesem Fall berechnet der erweiterte Euklidsche Algorithmus einen Teiler von n.
5. Ist alles gut gegangen, w¨ahle neue E und P .
Beispiel 6.18. Will man eine 10-stellige Zahl n faktorisieren, w¨ahlt man etwa B = 20 und C = 100700. Dann ergibt sich k = 216 · 3 · 57 · 75 · 114 · 134 · 174 · 193 .
Diese Faktorisierungsmethode ist in etwa so schnell wie das quadratische Sieb. Sie ist aber schneller, wenn n einen sehr kleinen Primfaktor besitzt. Außerdem haben wir gesehen, dass das quadratische Sieb einen sehr großen Speicherbedarf hat, es m¨ ussen ja riesige Gleichungssysteme gel¨ost werden. Dieses Problem hat diese Methode nicht. Schließlich kann man hier mehr Parameter w¨ahlen (B, C und E), nat¨ urlich kann man dann mit verschiedenen Parametern parallel an der Faktorisierung arbeiten.
Die Faktorisierungsmethode mit EC hat gezeigt, dass das Faktorisierungsproblem noch lange nicht vollst¨andig untersucht ist. Die relativ einfache Methode f¨ uhrt zu einem sehr schnellen Faktorisierungsalgorithmus (lediglich der Beweis, dass diese Methode wirklich eine schnelle Faktorisierungsmethode ist, ist sehr schwierig). So haben EC auch auf diesem Weg dazu gef¨ uhrt, dass mehr u ¨ ber Alternativen zu RSA nachgedacht wird.
100
KAPITEL 6. KOBLITZ UND MILLER
Literaturverzeichnis [Bau95]
F. Bauer. Entzifferte Geheimnisse. Springer, 1995.
[BBS86]
L. Blum, M. Blum, and M. Shub. A simple unpredictable pseudo-random number generator. SIAM J. Comput., 15(2), 1986.
[Buc99]
Johannes Buchmann. Einf¨ uhrung in die Kryptographie. Springer Verlag, 1999.
[Bun92]
Peter Bundschuh. Einf¨ uhrung in die Zahlentheorie. Springer-Verlag, Berlin, second edition, 1992.
[Coh93]
Henri Cohen. A course in computational algebraic number theory. Springer-Verlag, Berlin, 1993.
[DH76]
Whitfield Diffie and Martin E. Hellman. New directions in cryptography. IEEE Transactions on Information Theory, IT-22(6):644–654, 1976.
[Gor85]
John Gordon. Strong primes are easy to find. In Advances in cryptology (Paris, 1984), pages 216–223. Springer, Berlin, 1985.
[Kah67]
David Kahn. The Codebreakers. Macmillan Publishing Company, 1967.
[Kob94]
Neal Koblitz. A Course in Number Theory and Cryptography. Springer, 2nd edition, 1994.
[LN84]
Rudolf Lidl and Harald Niederreiter. Finite Fields, volume 20 of Encyclopedia of Mathematics and Its Applications. Addison–Wesley Pub Co, 1984.
[MvOV97] A.J. book
Menezes, of
P.C.
Applied
van
Ooorschot,
Cryptography.
and 1997.
S.A.
Vanstone. Online
Hand-
erh¨altlich
auf
http://www.cacr.math.uwaterloo.ca/hac/. [RSA77]
R. L. Rivest, A. Shamir, and L. M. Adleman. A method for obtaining digital signatures and public-key cryptosystems. Technical Report MIT/LCS/TM-82, 1977. 101
102 [Sch85]
LITERATURVERZEICHNIS R. Schoof. Elliptic curves over finite fields and the computation of square roots mod p. Math. Comp., 44:483–494, 1985.
[Sch96]
Bruce Schneier. Angewandte Kryptographie. Addison-Wesley, 1996.
[Sin00]
Simon Singh. Geheime Botschaften. Die Kunst der Verschl¨ usselung von der Antike bis in die Zeiten des Internet. dtv, 2000.
[Wer02]
Annette Werner. Elliptische Kurven in der Kryptographie. Springer, 2002.