Grundbegriffe der Kryptographie
Vorlesungsskript
von Eike Best April 2004 - Mai 2005
Oldenburg, Mai 2005
E. Best
Das Skript wird st¨andig gepflegt. Wenn Ihnen beim Lesen Fehler auffallen, schicken Sie bitte eine Mail an
[email protected]. oder geben Sie sie schriftlich im Sekretariat der Theoretischen Informatik bekannt. ¨ Stand der Anderungen (Version): 19. September 2005.
Haupts¨ achlich verwendete Literatur:
Douglas R. Stinson: Cryptography. Theory and Practice. Second Edition, Chapman&Hall/CRC, ISBN 158488-206-9, 2002. Johannes Buchmann: Einf¨ uhrung in die Kryptographie. Zweite, erweiterte Auflage, Springer-Verlag, ISBN 3-540-41283-2, 2001.
2
Inhaltsverzeichnis 1 Klassische Kryptosysteme 1.1 Einf¨ uhrung . . . . . . . . . . . . . . . . . . . . . . . 1.2 Verschiebungschiffre . . . . . . . . . . . . . . . . . . 1.3 Substitutionschiffre . . . . . . . . . . . . . . . . . . . 1.4 Affin-lineare Chiffre . . . . . . . . . . . . . . . . . . 1.5 Algorithmen zur L¨osung modularer Gleichungen . . 1.5.1 Ein wenig Gruppentheorie . . . . . . . . . . . 1.5.2 Berechnung des gr¨oßten gemeinsamen Teilers 1.5.3 L¨osung linearer modularer Gleichungen . . . 1.6 Permutationschiffre, Blockchiffren, ECB-Modus . . . 1.7 Hill-Chiffre . . . . . . . . . . . . . . . . . . . . . . . 1.8 Vigen`ere-Chiffre . . . . . . . . . . . . . . . . . . . . 1.9 Autokey-Chiffre, CBC-Modus . . . . . . . . . . . . . 1.10 Stromchiffre . . . . . . . . . . . . . . . . . . . . . . . 2 Klassische Kryptanalyse 2.1 Typen von Attacken . . . . . . . . . . 2.2 Kryptanalyse der affin-linearen Chiffre 2.3 Kryptanalyse der Substitutionschiffre . 2.4 Kryptanalyse der Vigen`ere-Chiffre . . 2.5 Kryptanalyse der Hill-Chiffre . . . . . 2.6 Kryptanalyse einer Stromchiffre . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
1 1 4 6 7 9 9 11 14 16 17 19 19 21
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
23 23 25 25 27 30 31
3 DES und lineare Kryptanalyse 3.1 SPN: ein Substitutions-/Permutationsnetzwerk 3.2 Ein Beispiel . . . . . . . . . . . . . . . . . . . . 3.3 Lineare Kryptanalyse . . . . . . . . . . . . . . . 3.3.1 Ein wenig Wahrscheinlichkeitstheorie . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
33 33 35 38 38
. . . . . .
. . . . . .
. . . . . .
. . . . . .
i
ii
Vorlesungsskript von E. Best / Stand: 19. September 2005
3.4
3.3.2 Lineare Approximation von S-Boxen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.3.3 Ein linearer Angriff auf SPN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 DES: Digital Encryption Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4 AES: Advanced Encryption Standard 4.1 Auswahlverfahren . . . . . . . . . . . . 4.2 Ein wenig K¨orpertheorie . . . . . . . . 4.3 AES im Detail . . . . . . . . . . . . . 4.4 Algebraische Definition der AES-S-Box
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
5 Das Public-Key-Kryptosystem RSA 5.1 Mehr Zahlentheorie . . . . . . . . . . . . . . . . . . 5.1.1 Der Chinesische Restsatz . . . . . . . . . . 5.1.2 Modulare Exponentiation . . . . . . . . . . 5.1.3 Hinreichende Bedingungen f¨ ur Zerlegbarkeit 5.1.4 Quadratische Reste . . . . . . . . . . . . . . 5.2 RSA im Detail . . . . . . . . . . . . . . . . . . . . 5.3 Auswahl eines Exponenten . . . . . . . . . . . . . . 5.4 Primzahlerzeugung . . . . . . . . . . . . . . . . . . 5.5 Faktorisierung und andere Attacken auf RSA . . .
. . . .
. . . . . . . . .
. . . .
. . . . . . . . .
. . . .
. . . . . . . . .
. . . .
. . . . . . . . .
. . . .
. . . . . . . . .
. . . .
. . . . . . . . .
. . . .
. . . . . . . . .
. . . .
. . . . . . . . .
. . . .
. . . . . . . . .
. . . .
. . . . . . . . .
. . . .
. . . . . . . . .
. . . .
. . . . . . . . .
. . . .
. . . . . . . . .
. . . .
. . . . . . . . .
6 Auf diskreten Logarithmen beruhende Kryptosysteme 6.1 Zwei Nachtr¨age . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1 Das Geburtstagsparadox . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.2 Erzeugende Elemente . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Diffie-Hellman-Schl¨ usselaustausch . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Das ElGamal-Kryptosystem . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4 Effizienz des ElGamal-Verfahrens . . . . . . . . . . . . . . . . . . . . . . . . 6.5 Algorithmen zur Berechnung diskreter Logarithmen . . . . . . . . . . . . . 6.5.1 Der Babystep-Giantstep-Algorithmus von Shanks . . . . . . . . . . . 6.5.2 Der Pollard-Rho-Algorithmus zur Berechnung diskreter Logarithmen 6.5.3 Der Pohlig-Hellman-Algorithmus . . . . . . . . . . . . . . . . . . . . 6.5.4 Die Index-Calculus-Methode . . . . . . . . . . . . . . . . . . . . . . 7 Hashfunktionen und Signaturschemata 7.1 Kryptographische Hashfunktionen . . . 7.2 Digitale Signaturen . . . . . . . . . . . . 7.2.1 RSA-Signaturen . . . . . . . . . 7.2.2 Andere Public-Key-Signaturen .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . . . . . . .
. . . . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . . . . . . . . .
. . . .
. . . .
. . . . . . . . .
. . . . . . . . . . .
. . . .
. . . .
51 51 51 58 62
. . . . . . . . .
. . . . . . . . .
65 66 66 68 69 71 71 74 74 79
. . . . . . . . . . .
87 . 87 . 87 . 89 . 92 . 93 . 94 . 95 . 96 . 98 . 100 . 102
. . . .
107 . 107 . 110 . 110 . 113
. . . .
Kapitel 1
Klassische Kryptosysteme 1.1
Einfu ¨ hrung
Hauptaufgabe der Kryptographie ist es, die Kommunikation zwischen zwei Parteien – oft Alice und Bob genannt – so zu erm¨oglichen, dass der Inhalt dieser Kommunikation von anderen nicht verstanden wird oder werden kann. Besonders soll Oscar, ein Opponent, der z.B. gerade die Telefonleitung, die Alice und Bob verbindet, abh¨ort, nicht herausfinden k¨onnen, was die beiden miteinander sprechen (oder sich schreiben). Sozusagen die gegenteilige Aufgabe hat Kryptanalyse: hier geht es darum, durch clevere Ideen die kryptographischen Methode(n) herauszufinden, die von Alice und Bob f¨ ur ihre geheime Kommunikation benutzt werden, und insbesondere den Schl¨ ussel zu ‘knacken’, den Bob benutzt, um Alices Nachrichten zu verstehen (denn hat Oscar diesen Schl¨ ussel, kann er nat¨ urlich auch die Nachrichten verstehen). Die Gesamtheit der kryptographischen und kryptanalytischen Methoden nennt man Kryptologie. Nehmen wir an, dass Alice Bob eine Nachricht in Klartext, z.B. ichliebedich, zukommen lassen m¨ochte. Damit kein anderer dies versteht, verschl¨ usselt Alice diese Nachricht vor dem Abschicken. Ein Schl¨ ussel k¨onnte zum Beispiel sein: verschiebe die Buchstaben um eine Stelle im Alphabet nach hinten. Dann lautet diese Nachricht: JDIMJFCFEJDI. Wir verwenden der Klarheit halber Kleinbuchstaben f¨ ur Klartext und Großbuchstaben f¨ ur verschl¨ usselten Text, der auch Chiffretext heißt. Normalerweise verwenden wir als Alphabet nur die 26-buchstabige Menge A = {a, b, . . . , z}, so dass die Zuordnung von Klar- zu Chiffretext keine Zweideutigkeiten nach sich zieht, wenigstens keine typografischen. Definition 1.1.1 Kryptosystem Ein Kryptosystem ist ein 5-Tupel (P, C, K, E, D), dessen einzelne Elemente Folgendes bedeuten: • P ist eine endliche Menge von Klartexten (‘plaintexts’), wie zum Beispiel A oben. 1
2
Vorlesungsskript von E. Best / Stand: 19. September 2005 • C ist eine endliche Menge von Chiffretexten (‘ciphertexts’), wie zum Beispiel (die großbuchstabige Version von) A. • K (Schl¨ usselraum, ‘keyspace’) ist eine endliche Menge von Schl¨ usseln. • E (‘encryption’) sind die Verschl¨ usselungsfunktionen (je eine, eK , pro Schl¨ ussel K ∈ K). • D (‘decryption’) sind die Entschl¨ usselungsfunktionen (je eine, dK , pro Schl¨ ussel K ∈ K).
Die beiden Funktionen eK und dK m¨ ussen durch effiziente Algorithmen berechenbar sein und es muss gelten: dK (eK (x)) = x, f¨ ur jeden Klartext x und Schl¨ ussel K. (Aus letzterem folgt insbesondere, dass eK f¨ ur jeden 1.1.1 Schl¨ ussel K injektiv ist.) Im Beispiel sind: P C K E, D
= {a, b, . . . , z} = {A, B, . . . , Z} = {K | 0≤K≤25} : siehe unten.
Hier sind gleich 26 m¨ogliche Verschl¨ usselungsmethoden zusammengefasst: Schieben der Buchstaben um K Positionen im Alphabet. Die oben angewandte geh¨ort zu K = 1. Julius Caesar hingegen soll regelm¨aßig – privat wie gesch¨aftlich – K = 3 angewendet haben1 . Gilt auch die letzte Bedingung? Ver- und Entschl¨ usselung E bzw. D sind offensichtlich leicht algorithmisch ausdr¨ uckbar, f¨ ur K = 1 z.B. mit Hilfe folgender Tabelle: a B
b C
c D
d E
e F
f G
g H
h I
i J
j K
k L
l M
m N
n O
o P
p Q
q R
r S
s T
t U
u V
v W
w X
x Y
y Z
z A.
(Verschl¨ usseln e1 von oben nach unten, Entschl¨ usseln d1 von unten nach oben), und es gilt offenbar stets d1 (e1 (x)) = x. Nat¨ urlich ist e1 auch injektiv. Allgemein gilt: w¨are eK nicht injektiv, g¨abe es zwei Klartexte mit der gleichen Verschl¨ usselung, d.h., die Entschl¨ usselung w¨are dann uneindeutig. Bei einem Kryptosystem handelt es sich also um eine Zusammenfassung gleichartiger Verschl¨ usselungsmethoden. F¨ ur die eben angegebenen Schiebe-Chiffren eignen sich verdrehbare Scheiben besonders gut, auf denen man das K einstellen kann2 . Zu Julius Caesars Zeiten war eine Verschl¨ usselung dieser einfachen Art wahrscheinlich ziemlich sicher, weil die meisten Leute sowieso nicht lesen konnten. Heute ist dieses Kryptosystem aber nicht besonders gut, denn ein Opponent, der weiß, dass eine Schiebemethode angewendet worden ist, kann den Schl¨ ussel sehr leicht durch Ausprobieren herausfinden (und braucht dazu nur Papier und Bleistift). Bessere Kryptosysteme haben insbesondere einen viel gr¨oßeren Schl¨ usselraum – allerdings macht dessen Gr¨oße allein noch nicht die Qualit¨at aus, wie wir sehen werden. Das gerade geschilderte Kryptosystem heißt symmetrisch, weil der Schl¨ ussel K gleichermaßen von Alice und von Bob geheim gehalten werden muss, weil er sonst von Opponenten benutzt werden kann – siehe Abbildung 1.1. Ein solcher Schl¨ ussel heißt auch Geheimschl¨ ussel (secret key). Vor knapp 20 Jahren entdeckte man, dass es aus Anwendungssicht sehr sinnvoll sein kann, Verschl¨ usselung und Entschl¨ usselung st¨arker zu trennen – siehe Abbildung 1.2. Angenommen, dass es zum Verschl¨ usseln und 1 www.murky.org/cryptography/classical/caesar.shtml. 2 www.mystery-twister.com/know
history.php.
Kryptographie - Sommersemester 2004
3
zum Entschl¨ usseln zwei verschiedene Schl¨ ussel gibt, und angenommen auch, dass letzterer sich nur schwer aus ersterem berechnen l¨asst. Dann kann Bob so vorgehen, wenn er m¨ochte, dass ihm eine beliebige Person (nicht nur Alice) eine verschl¨ usselte Nachricht senden kann: er gibt den Verschl¨ usselungsschl¨ ussel ¨offentlich bekannt (public key), beh¨alt aber den Entschl¨ usselungsschl¨ ussel bei sich (private key). Somit kann nur Bob Nachrichten entschl¨ usseln, die mit dem public key verschl¨ usselt worden sind, w¨ahrend zur Verschl¨ usselung jede/r befugt ist. Es entf¨allt unter anderem auch die Notwendigkeit, dass sich Alice und Bob, bevor u ¨berhaupt eigentliche Kommunikation stattfinden kann, auf einen gemeinsamen Schl¨ ussel einigen. Kryptosysteme, die public key / private key auf diese Weise benutzen, heißen aus naheliegenden Gr¨ unden asymmetrisch.
Unsichere Verbindung Alice
x
Verschl¨ usselung eK
y
Ã
Oscar ... Ã
y
Entschl¨ usselung dK
x
Bob
Sichere Verbindung K Schl¨ usselquelle (secret key) Abbildung 1.1: Secret-key-Kryptographie
Unsichere Verbindung Alice
x
Verschl¨ usselung ePublicKey
PublicKey Schl¨ usselquelle 1
y
Ã
Oscar ... Ã
y
Entschl¨ usselung dPrivateKey
PrivateKey Schl¨ usselquelle 2
Abbildung 1.2: Public-key-Kryptographie
x
Bob
4
1.2
Vorlesungsskript von E. Best / Stand: 19. September 2005
Verschiebungschiffre
Definition 1.2.1 Kongruenz modulo m Seien a und b zwei ganze Zahlen und sei m eine positive ganze Zahl. Dann schreibt man a ≡ b (mod m) (ausgesprochen: a ist kongruent b modulo m), wenn m | (b−a), d.h. wenn m die Differenz b−a teilt. 1.2.1 Zerlegt man a und b modulo m, z.B. durch Division durch m mit Hilfe des Euklidischen Algorithmus, erh¨alt man a = q1 m + r1 und b = q2 m + r2 mit 0 ≤ r1 < m und 0 ≤ r2 < m. Es gilt a ≡ b (mod m) genau dann, wenn r1 = r2 . Der Wert r1 wird mit a mod m bezeichnet, und gleichermaßen der Wert r2 mit b mod m. Die Werte q1 und q2 werden a div m bzw. b div m genannt. Beispiel 1: 101 mod 7 = 3, weil 101 = 14·7 + 3. Beispiel 2: (−101) mod 7 = 4, weil −101 = (−15)·7 + 4. Achtung: Dies kann durchaus von den Operationen abweichen, die in manchen Computersprachen implementiert sind. Dort k¨onnte (−101) mod 7 auch als −3 definiert sein. ¨ ¨ Die Kongruenz modulo m ist eine Aquivalenzrelation in der Menge der ganzen Zahlen. Die Aquivalenz¨ klassen dieser Relation heißen Restklassen modulo m. Die Aquivalenzklasse von a modulo m wird mit [a]m bezeichnet, und wenn m bekannt ist, einfachheitshalber nur mit [a]. Die Menge der Restklassen modulo m heiße Zm . Beispiel: Z6
=
{ [0], [1], . . . , [5] }
. . . , −12, −6, 0, 6, 12, . . . ∈ [0]; . . . , −11, −5, 1, 7, 13, . . . ∈ [1]; . . . , −10, −4, 2, 8, 14, . . . ∈ [2]; usw.
Der Einfachheit halber kann Zm mit den m¨oglichen Resten 0, 1, . . . , m−1 (sozusagen mit den ‘kanonischen’ Resten) identifiziert werden. Auf Zm k¨onnen Addition und Multiplikation definiert werden: [a]m + [b]m [a]m · [b]m
Def
=
Def
=
[a + b]m [a · b]m
Diese Definitionen sind repr¨asentantenunabh¨angig, die beiden Operationen sind also wohldefiniert. Eine Struktur (G, ◦) heißt Gruppe, wenn die (bin¨are) Operation ◦ abgeschlossen ist (d.h., wenn f¨ ur das Resultat c = a ◦ b mit a, b ∈ G wieder c ∈ G gilt), wenn die Operation assoziativ ist (d.h., stets a ◦ (b ◦ c) = (a ◦ b) ◦ c gilt, ein Einselement – auch Einheit genannt – bez¨ uglich der Operation ◦ existiert (d.h., ein Element e ∈ G mit e ◦ a = a ◦ e = a f¨ ur alle a ∈ G), und Inverse existieren (d.h., zu jedem Element a ∈ G ein Element b a ∈ G mit a ◦ b a = b a ◦ a = e). Eine Gruppe heißt Abelsch, wenn sie zus¨atzlich kommutativ ist (d.h., stets a ◦ b = b ◦ a gilt). Eine Struktur (R, +, ·) heißt Ring, wenn (R, +) eine Abelsche Gruppe ist, die Multiplikation · abgeschlossen und assoziativ ist, und wenn das folgende Distributivgesetz gilt: stets a·(b+c) = (a·b)+(a·c) und (b+c)·a = (b·a)+(c·a). Eine Ring heißt kommutativ, wenn die Multiplikation · kommutativ ist, und er heißt Ring mit Einheit, wenn es ein Einselement bzgl. · gibt.
Kryptographie - Sommersemester 2004
5
Satz 1.2.2 (Zm , +, ·) ist ein kommutativer Ring mit Einheit. Beweis: (Skizze.) Die Einheit bzgl. der Addition ist die [0]. Das zu einem Element [r] ∈ Z m inverse Element bzgl. der Addition ist [m−r]. Die Einheit bzgl. der Multiplikation ist die [1]. Die behaupteten algebraischen Eigenschaften sind unschwer nachzuweisen. 1.2.2 Die Existenz eines Inversen bez¨ uglich der Multiplikation ist im Allgemeinen nicht gegeben. Beispielsweise kann f¨ ur a = 3 die Multiplikation q · a niemals in die Restklasse 1 von 6 fallen. Gilt jedoch 3 ggT(r, m) = 1, dann existiert das multiplikative Inverse von a modulo m. Beispielsweise ist das multiplikative Inverse von 5 in Z6 wieder 5, denn es gilt 5·5 = 25 und 25 mod 6 = 1. Man nennt zwei Zahlen a, m mit ggT(a, m) = 1 zueinander relativ prim, oder teilerfremd. Sei Z∗m die Menge der Restklassen modulo m, die (d.h. deren kanonische Repr¨asentanten) relativ prim zu m sind. Z∗m ist wohldefiniert: denn aus ggT(a, m) = 1 folgt ∀k : ggT(a+km, m) = 1. Beispiel:
Z∗15
=
{[1]15 , [2]15 , [4]15 , [7]15 , [8]15 , [11]15 , [13]15 , [14]15 }
=
{1, 2, 4, 7, 8, 11, 13, 14}
(Kurzschreibweise)
Achtung: Die 0 ist nicht in Z∗m , weil jede Zahl 6= 0 die 0 teilt. Satz 1.2.3 (Z∗m , ·) ist eine endliche Abelsche Gruppe. Beweis: Zum Beweis m¨ ussen die Gruppenaxiome und Kommutativit¨at nachgewiesen werden. Zur Existenz ∗ eines Inversen: das zu a ∈ Z∗m inverse Element ist, wie wir sp¨ater zeigen werden (Korollar 1.5.5), b a = a|Zm |−1 . 1.2.3
Falls m = p prim ist, gilt |Z∗m | = p−1, sonst gilt |Z∗m | < p−1.
Beispiele: Z∗6 hat zwei Elemente, 1 und 5. Die Gruppentafeln von (Z∗6 , ·) und (Z∗15 , ·) sind in Abbildung 1.3 dargestellt.
(Z∗6 , ·) 1 5
1 1 5
5 5 1
(Z∗15 , ·) 1 2 4 7 8 11 13 14
1 1 2 4 7 8 11 13 14
2 4 2 4 4 8 8 1 14 13 1 2 7 14 11 7 13 11
7 8 7 8 14 1 13 2 4 11 11 4 2 13 1 14 8 7
11 11 7 14 2 13 1 8 4
13 13 11 7 1 14 8 4 2
14 14 13 11 8 7 4 2 1
Abbildung 1.3: Gruppentafeln von (Z∗6 , ·) und (Z∗15 , ·) 3 Wir
benutzen die Schreibweise ggT(a1 , . . . , ar ) f¨ ur den gr¨ oßten gemeinsamen Teiler von a1 , . . . , ar .
6
Vorlesungsskript von E. Best / Stand: 19. September 2005
Weil (Zm , +) additive Inverse hat, kann auch die Differenz definiert werden: a−b
Def
(a − b) mod m.
=
Die Verschiebungschiffre (‘shift cipher’) wird g¨ unstig definiert, indem die Buchstaben {a, . . . , z} mit den Restklassen {0, . . . , 25} von Z26 identifiziert werden: a 0
b 1
c 2
d 3
e 4
f 5
g 6
h 7
i 8
j 9
k 10
l 11
m 12
n 13
o 14
p 15
q 16
r 17
s 18
t 19
u 20
v 21
w 22
x 23
y 24
z 25
Kryptosystem 1.2.4 Verschiebungschiffre Es seien P = C = K = Z26 , und f¨ ur K ∈ K seien eK und dK folgendermaßen definiert: eK (x) dK (y)
= (x + K) mod 26 = (y − K) mod 26,
f¨ ur alle x, y ∈ Z26 .
1.2.4
Wie schon erw¨ahnt, ist die Verschiebungschiffre nicht sicher, denn man kann durch systematisches, vollst¨andiges Ausprobieren (exhaustive search, brute force) herausfinden, welcher Schl¨ ussel (unter den nur 26 otig. Trotzdem gibt es auch f¨ ur vorhandenen) verwendet wurde. Dazu sind im Mittel 26 2 = 13 Versuche n¨ den shift cipher praktische Verwendung, zum Beispiel ROT13 als ‘Spoiler-Warnung’ in Usenet-Artikeln 4 . Warum gerade ROT13? Das Verschieben um 13 Positionen ist selbst-invers, d.h., Ver- und Entschl¨ usseln kann mit Hilfe der gleichen Funktion geschehen. Beispiel: ROT13(ROT13(thebutlerdidit)) = ROT13(GUROHGYREQVQVG) = thebutlerdidit . Diese Anwendung hat nat¨ urlich beim Gebrauch von Sonderzeichen (Umlauten usw.) ihre engen Grenzen.
1.3
Substitutionschiffre
Eine offenbar schon ca. 500 Jahre vor Caesar bekannte Kryptomethode ist der Atbash j¨ udischen Ursprungs5 . Hier wird a auf Z abgebildet, b auf Y, c auf X, usw., die Buchstaben des Alphabets werden also einfach ‘umgedreht’. Der Atbash ist offenbar nicht als Verschiebungschiffre beschreibbar. Er geh¨ort jedoch zur gr¨oßeren Klasse der Substitutionschiffren, die wir in diesem Abschnitt definieren. Bekanntlich ist eine Funktion π : X → X, mit einer endlichen Menge X, schon dann bijektiv, wenn sie injektiv oder surjektiv ist. In diesem Fall heißt π eine Permutation von X, und es existiert die Umkehrfunktion π −1 mit der Eigenschaft ∀x ∈ X : π −1 (π(x)) = x = π(π −1 (x)). Nat¨ urlich ist auch π −1 wieder eine Permutation von X. 4 rot13.de. 5 www.templarhistory.com/atbash.html
Kryptographie - Sommersemester 2004
7
Kryptosystem 1.3.1 Substitutionschiffre Es seien P = C = Z26 , und K sei die Menge aller Permutationen der 26 Zeichen A = {a, . . . , z}. F¨ ur eine Permutation K = π seien eK und dK folgendermaßen definiert: eK (x) dK (y)
= π(x) = π −1 (y),
f¨ ur alle x, y ∈ Z26 .
1.3.1
Der Atbash ist eine Substitutionschiffre, ebenso wie auch alle Verschiebungschiffren spezielle Substitutionschiffren sind. Da es 26! Permutationen der Menge A gibt, ist der Keyspace in der Substitutionschiffre sehr groß, n¨amlich gr¨oßer als 4·1026 . Brute-Force-Methoden sind ausgeschlossen, um solche Verschl¨ usselungen zu ‘knacken’; es gibt aber andere, bessere Methoden der Kryptanalyse.
1.4
Affin-lineare Chiffre
Bei der affin-linearen (oder der K¨ urze halber nur ‘affinen’) Chiffre handelt es sich um einen weiteren Spezialfall der Substitutionschiffre, der allerdings die Verschiebungschiffre umfasst und verallgemeinert. Wir lassen in der affinen Chiffre Verschl¨ usselungen der Form e(x) = (ax + b) mod 26 zu, wobei a und b zwei Restklassen in {0, . . . , 25} sind. (Mit dem Spezialfall a = 1 ergibt sich die Verschiebungschiffre.) Nicht alle Verschl¨ usselungen dieser Art sind tats¨achlich Substitutionen. Zum Beispiel ist mit a = 4 und b = 7 die Verschl¨ usselung e(x) = (4x + 7) mod 26 nicht eindeutig, weil x und x + 13 auf den gleichen Chiffretext abgebildet werden (f¨ ur alle x ∈ Z26 ). Um (ax + b) mod 26 entschl¨ usseln zu k¨onnen, fragen wir nach der Injektivit¨at dieser Funktion, d.h., danach, wann die Kongruenz (ax + b) ≡ y (mod 26), oder, dazu ¨aquivalent:
ax ≡ (y−b) (mod 26),
eine eindeutige L¨osung (bzgl. x, f¨ ur beliebige y in {0, . . . , 25}) hat. Da mit y auch y−b u ¨ber Z26 variiert, gilt dies genau dann, wenn ax ≡ y (mod 26)
(1.1)
eine eindeutige L¨osung in x hat. Satz 1.4.1 Gleichung (1.1) hat genau dann eine eindeutige L¨ osung in x (f¨ ur alle y ∈ Z26 ), wenn gilt: ggT(a, 26) = 1.
8
Vorlesungsskript von E. Best / Stand: 19. September 2005
Beweis: Zum Beweis der einen Richtung, (⇒), nehmen wir an, dass d = ggT(a, 26) > 1 ist. Dann hat die Gleichung ax ≡ 0 (mod 26) (also Gleichung (1.1), speziell mit y = 0) mindestens zwei verschiedene L¨osungen, n¨amlich x = 0 und x = d1 26. Zum Beweis von (⇐) nehmen wir ggT(a, 26) = 1 an. Betrachten wir x1 und x2 mit ax1 ≡ ax2 (mod 26). Dann gilt a(x1 −x2 ) ≡ 0 (mod 26), also 26 | a(x1 −x2 ). Weil ggT(a, 26) = 1 ist, folgt daraus 26 | (x1 −x2 ), d.h.: x1 ≡ x2 (mod 26). (Wir haben hier eine Eigenschaft der Teilung ganzer Zahlen benutzt: wenn ggT(a, b) = 1 und a | bc, dann a | c.) Je zwei L¨osungen x1 , x2 von Gleichung (1.1) liegen also in der gleichen Restklasse 1.4.1 bzgl. 26, sind also gleich (als Elemente von Z26 ). Eine allgemeinere Version dieses Satzes lernen wir sp¨ater kennen (Korollar 1.5.13). Wir berechnen die Gr¨oße des Keyspace einer affinen Chiffre. Definition 1.4.2 Eulersche Φ-Funktion F¨ ur m ∈ N\{0} sei Φ(m) = |Z∗m | die Anzahl der Zahlen in Zm , die teilerfremd zu m sind.
1.4.2
Beispielsweise gilt Φ(6) = 2, Φ(15) = 8 und Φ(26) = 12 (denn die Zahlen zwischen 0 und 25, die teilerfremd zu 26 sind, sind 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25). Die m¨oglichen Werte von a sind in diesem Fall also die zuletzt genannten 12 Zahlen, w¨ahrend f¨ ur b jedes der 26 Elemente von Z26 Verwendung finden kann. Es gibt also 12·26 = 312 verschiedene Schl¨ ussel. Im allgemeinen Fall sind es bei |P| = m genau m·Φ(m) verschiedene Schl¨ ussel. Wir wenden uns nun der Entschl¨ usselung von affin-linearen Chiffren zu. Nehmen wir an, dass ggT(a, 26) = 1 und b ∈ Z26 gelten. Um einen Chiffretext y entschl¨ usseln, muss die Kongruenz y ≡ (ax + b) (mod 26)
(1.2)
bei bekanntem y in x (Klartext) gel¨ost werden. Zwar wissen wir bereits, dass es eine eindeutige L¨osung gibt, jedoch haben wir noch keinen effizienten Algorithmus daf¨ ur. Einen solchen geben wir im nachfolgenden Abschnitt 1.5 an. Wir haben schon gesehen (Satz 1.4.1 mit dem Spezialfall y = 1), dass jedes Element a ∈ Z ∗26 ein multipli∗ katives Inverses hat, das u ist. ¨blicherweise als a−1 geschrieben wird und das ebenfalls ein Element von Z26 −1 −1 ∗ Auch gilt (a ) = a f¨ ur alle solche a. Nebenbei: ist m = p eine Primzahl, gilt Zp = Zp \{0}, und jedes Element von Zp \{0} hat ein multiplikatives Inverses. Dann gilt auch Φ(p) = p−1. Die folgende Tabelle zeigt die multiplikativen Inversen der Gruppe (Z∗26 , ·): a=(a−1 )−1 a−1
1 1
3 9
5 21
7 15
11 17 25 19 23 25
Unsere zu l¨osende Kongruenz y ≡ (ax + b) (mod 26) is ¨aquivalent mit ax ≡ (y − b) (mod 26) . Da a ein multiplikatives Inverses hat, kann diese zur Multiplikation beider Seiten dieser Kongruenz verwendet werden: a−1 (ax) ≡ a−1 (y − b) (mod 26) ( ≡ (a−1 a)x (mod 26)) .
Kryptographie - Sommersemester 2004
9
Also l¨ost x = a−1 (y − b) mod 26 die Gleichung (1.2). ¨ Aus diesen Uberlegungen folgt endlich eine genaue Definition der affin-linearen Chiffre: Kryptosystem 1.4.3 Affin-lineare Chiffre Es seien P = C = Z26 , und K sei die Menge aller Paare {(a, b) | a, b ∈ Z26 und ggT(a, 26) = 1}. F¨ ur K = (a, b) ∈ K seien eK und dK folgendermaßen definiert: eK (x) dK (y)
= (ax + b) mod 26 = a−1 (y − b) mod 26,
f¨ ur alle x, y ∈ Z26 .
1.4.3
Beispiel: Wir betrachten K = (7, 3). Der Tabelle der Inversen modulo 26 entnehmen wir: 7−1 = 15. Die Ver- und Entschl¨ usselungsfunktionen sind: eK (x) dK (y)
= 7x + 3 = 15(y − 3)
= 15y − 19,
wobei diese Operationen (ebenso wie die nachfolgenden) modulo 26 zu verstehen sind. Die beiden Operationen sind in der Tat Inverse voneinander, denn es gilt: dK (eK (x))
= dK (7x + 3) = 15(7x + 3) − 19 = x + 45 − 19 = x.
Wir verschl¨ usseln zur Illustration den Text ‘axt’. Diese Buchstaben entsprechen folgenden Restklassen von 26: a = b 0, x = b 23 und t = b 19. Wir verschl¨ usseln: (7·0 + 3) mod 26 (7·23 + 3) mod 26 (7·19 + 3) mod 26
= 3 mod 26 = 164 mod 26 = 136 mod 26
= 3 = 8 = 6.
Das Chiffrewort heißt also 3 8 6 = b DIG.
1.5 1.5.1
Algorithmen zur L¨ osung modularer Gleichungen Ein wenig Gruppentheorie
Eine Untergruppe ist eine Teilmenge einer Gruppe, die auch eine Gruppe ist. In Abbildung 1.3 (rechts) ist z.B. {1, 2, 4, 8} eine Untergruppe. Satz 1.5.1 Lagrange Sei (G0 , ◦) Untergruppe einer endlichen Gruppe (G, ◦). Dann gilt: |G 0 | | |G| (d.h., |G0 | teilt |G|).
10
Vorlesungsskript von E. Best / Stand: 19. September 2005
Beweis: Sei H eine Untergruppe von G. Wir definieren a, b ∈ G als ¨aquivalent (bzgl. H), wenn a ◦ b−1 ∈ H. ¨ ¨ (Dass dies eine Aquivalenzrelation ist, ist leicht zu beweisen.) Insbesondere ist H die Aquivalenzklasse von e, der Einheit. Seien a, b ∈ G beliebig gew¨ahlt. Die Abbildung h ◦ a 7→ h ◦ b zwischen den beiden ¨ Aquivalenzklassen {h ◦ a | h ∈ H} und {h ◦ b | h ∈ H} kann unschwer als Bijektion erkannt werden. Also ¨ haben alle Aquivalenzklassen gleiche M¨achtigkeit, und |H| teilt |G|, weil G die disjunkte Vereinigung dieser ¨ 1.5.1 Aquivalenzklassen ist. Korollar 1.5.2 Falls (G0 , ◦) eine echte Untergruppe einer endlichen Gruppe (G, ◦) ist, gilt: |G 0 | ≤ 21 |G|.
1.5.2
Sei a ein Element einer Gruppe. Dann ist hai = {ak | k ≥ 1} eine Untergruppe, genannt die von a generierte Untergruppe. In Abbildung 1.3 (rechts) gilt z.B. h1i
=
h7i
=
h2i h4i
= =
{1},
{1, 2, 4, 8}, {1, 4},
{1, 4, 7, 13}.
Die Ordnung eines Elements a, bezeichnet mit ord (a), ist die kleinste positive Zahl t mit a t = 1, wobei 1 die Einheit der Gruppe bezeichnet. Oben gilt: ord (1) = 1, ord (2) = 4, ord (4) = 2 und ord (7) = 4. Satz 1.5.3 ord (a) = |hai|. Beweis: Sei t = ord (a). Wir zeigen zuerst ord (a) ≥ |hai|. Wegen at = 1 und at+k = at ◦ ak = ak f¨ ur k ≥ 1 gilt: wenn i > t, dann ai = aj , f¨ ur ein j ≤ t. Wir zeigen dann ord (a) ≤ |hai|. Annahme: ai = aj f¨ ur 1 ≤ i < j ≤ t. Dann ai+k = aj+k f¨ ur alle k ≥ 0, i+(t−j) j+(t−j) insbesondere f¨ ur k = (t−j). Also a =a = 1, im Widerspruch dazu, dass t die kleinste Zahl mit 1.5.3 at = 1 ist. Korollar 1.5.4 Die Folge a, a2 , a3 , . . . ist periodisch mit Periode t = ord (a), d.h.: ai = aj genau dann, wenn i ≡ j (mod t). 1.5.4 Korollar 1.5.5 Sei (G, ◦) eine endliche Gruppe. Dann gilt a|G| = 1, f¨ ur alle a ∈ G. Beweis: Langranges Satz und Satz 1.5.3 liefern ord (a) | |G|, also gilt a|G| = ak·ord(a) = 1. 1.5.5 Hieraus kann man die S¨atze von Euler und (den ‘kleinen’) von Fermat ableiten. Betrachte dazu speziell die Gruppe (Z∗m , ·). Das Folgende ist ein Korollar von Korollar 1.5.5.
Kryptographie - Sommersemester 2004
11
Korollar 1.5.6 Euler aΦ(m) ≡ 1 (mod m), f¨ ur alle a ∈ Z∗m .
1.5.6
Und das Folgende folgt aus Korollar 1.5.6 und der Gleichung Φ(p) = p−1 f¨ ur Primzahlen p. Korollar 1.5.7 Fermat ap−1 ≡ 1 (mod p), f¨ ur alle a ∈ {1, . . . , p−1} (falls p prim).
1.5.7
Daraus folgt auch, dass ap ≡ a (mod p) f¨ ur alle a ∈ {0, . . . , p−1}, falls p prim ist.
1.5.2
Berechnung des gr¨ oßten gemeinsamen Teilers
Satz 1.5.8 Linearkombination des ggT Der gr¨ oßte gemeinsame Teiler dPvon r nat¨ urlichen Zahlen a1 , . . . , ar (r > 0) l¨ asst sich ganzzahlig linear ur gewisse (nicht notwendigerweise eindeutige) ganzzahlige aus a1 , . . . , ar kombinieren: d = 1≤i≤r (xi ai ) f¨ x1 , . . . , x r . Dabei wird wieder die Konvention benutzt, dass jede nat¨ urliche Zahl ungleich 0 die 0 teilt. Der gr¨oßte gemeinsame Teiler von a ∈ N und b ∈ N ist also max(a, b), falls a oder b gleich 0 sind.
Zum Beweis des Satzes erweitern wir Addition, Subtraktion und Multiplikation auf Teilmengen von Z. Seien U, V ⊆ Z. Dann U + V = {u+v | u∈U, v∈V }, U − V = {u−v | u∈U, v∈V } und U V = {uv | u∈U, v∈V }.
Eine nicht leere Teilmenge A ⊆ Z heißt Ideal (von Z), wenn gilt: A−A ⊆ A und ZA ⊆ A. Falls d ∈ N, ist Z{d} ein Ideal, genannt das von d erzeugte Hauptideal.
Beispiele: Z{0} Z{1} Z{2} etc.
= = =
{0} (Das Nullideal) Z alle geraden Zahlen
Satz 1.5.9 Hauptidealsatz Jedes Ideal A von Z ist ein Hauptideal, n¨ amlich A = Z{d} mit d = min{|a| | a∈A}. Beweis: Die Behauptung stimmt ohne weiteres f¨ ur A = {0} mit d = 0. Sei also im Folgenden A 6= {0}.
Wegen A 6= ∅ und A 6= {0} gibt es eine Zahl a ∈ A mit a 6= 0. Wegen A−A ⊆ A ist auch a−a = 0 ∈ A, und nochmals wegen A−A ⊆ A ist auch 0−a = −a ∈ A. Es gibt also eine Zahl gr¨oßer gleich 1 in A. Definiere d = min{a ∈ A | a ≥ 1}. Wir behaupten A = Z{d} mit dieser Zahl d.
Z{d} ⊆ A gilt wegen ZA ⊆ A.
12
Vorlesungsskript von E. Best / Stand: 19. September 2005
Beweis von A ⊆ Z{d}: a∈A
⇒
(Zerlegung von a, Teiler d, Rest r) a = qd + r mit 0 ≤ r < d ⇒ (A−A ⊆ A und ZA ⊆ A) r = a − qd ∈ A ⇒ (d ≥ 1 minimal in {a ∈ A | a ≥ 1}; und r < d) r=0 ⇒ (qd ∈ Z{d}) a ∈ Z{d}.
Seien jetzt r > 0 und a1 , . . . , ar ∈ N. Betrachte die Menge A = Z{a1 }+ . . . +Z{ar }. Es ist klar, dass A ein Ideal P ist. Definiere d = min{|a| | a∈A}. Aus dem vorangegangenen folgt A = Z{d}. Wegen d ∈ A folgt d = 1≤i≤r (xi ai ), also die zu beweisende Zerlegung von d. Es bleibt nur noch zu zeigen, daß d der ggT der Zahlen a1 , . . . , ar ist. Da ai ∈ A (1 ≤ i ≤ r), gilt auch ai ∈ Z{d}, also teilt d die Zahl ai . Falls t alle ai teilt, teilt t auch alle Zahlen in A, und daher auch d. Also ist d tats¨achlich der ggT von a1 , . . . , ar , und der Beweis ist beendet. 1.5.9 Dieser Satz liefert insbesondere auch einen Beweis f¨ ur Satz 1.5.8. Der Algorithmus in Abbildung 1.4 berechnet den ggT von nat¨ urlichen Zahlen a und b, w¨ahrend der in Abbildung 1.5 gezeigte Algorithmus auch noch eine Darstellung von ggT (a, b) zur¨ uckgibt: ggT (a, b) = xa+yb. Die Existenz einer solchen Darstellung wie auch der Algorithmus folgen aus den vorangegangenen beiden S¨atzen u ¨ber den ggT und ihrem Beweis. Zum Nachweis der Korrektheit des zweiten Algorithmus, extended euclid , beachte man, dass b ab c = a div b gilt und dass zwischen den beiden Zuweisungen (d, x, y) := . . . und (x, y) := . . . in der zweiten Alternative der if -Anweisung die Rechnung d
( d ist - induktiv - die Darstellung der beiden Argumente von extended euclid ) b · x + (a mod b) · y = ( Definition von a div b = b ab c und a mod b ) b · x + (a − b ab c · b) · y = ( Arithmetik ) a · y + b · (x − b ab c · y)
=
aufgestellt werden kann. ↑
↓ ↓
proc euclid (a, b) : N; % a, b ∈ N begin if b = 0 → return a b 6= 0 → return euclid (b, a mod b) fi end; Abbildung 1.4: Berechnung von ggT(a, b).
Kryptographie - Sommersemester 2004
↑
13
↓ ↓
proc extended euclid (a, b) : Z3 ; % a, b ∈ N; Ausgabe : d, x, y begin if b = 0 → return (a, 1, 0) b 6= 0 → (d, x, y) := extended euclid (b, a mod b); (x, y) := (y, x−b ab c∗y); return (d, x, y) fi % d = ax+by und d = ggT (a, b) end; Abbildung 1.5: Berechnung und Darstellung von ggT(a, b). a
b
99 78 21 15 6 3
78 21 15 6 3 0
b ab c d 1 3 1 2 2 −
3 3 3 3 3 3
x
y
−11 3 −2 1 0 1
14 −11 3 −2 1 0
ee(99, 78) ee(78, 21) ee(21, 15) ee(15, 6) ee(6, 3) ee(3, 0)
3 = 99·(−11)+78·14 3 = 78·3+21·(−11) 3 = 21·(−2)+15·3 3 = 15·1+6·(−2) 3 = 6·0+3·1 3 = 3·1+0·0
Abbildung 1.6: Eine Anwendung von Algorithmus 1.5
√
(ee = extended euclid)
Eine Anwendung von Algorithmus 1.5 ist in Abbildung 1.6 gezeigt. Um die Laufzeit des Algorithmus euclid abzusch¨atzen, verwenden wir die Fibonacci-Zahlen, die vermittels der Rekursion F0 = 0, F1 = 1, Fk+2 = Fk+1 + Fk (k ∈ N) definiert sind. ´ Satz 1.5.10 Satz von Lame Sei k ∈ N, k ≥ 1. Seien a, b ∈ N mit a > b ≥ 0 und b < Fk+1 . Dann f¨ uhrt ein Aufruf von euclid(a, b) zu weniger als k rekursiven Aufrufen. Aus diesem Satz l¨asst sich eine Worst-Case-Analyse des Algorithmus euclid herleiten. Zun¨achst beobachten wir, dass euclid(F3 , F2 ), d.h. euclid(2, 1), genau einen rekursiven Aufruf macht. Außerdem gilt offenbar Fk+1 mod Fk = Fk−1 f¨ ur k ≥ 2. Deswegen gilt ggT(Fk+1 , Fk )
= ggT(Fk , (Fk+1 mod Fk )) = ggT(Fk , Fk−1 ).
Also f¨ uhrt ein Aufruf von euclid(Fk+1 , Fk ) zu genau k−1 rekursiven Aufrufen. Die durch den Satz von Lam´e gegebene obere Schranke wird hierdurch also erreicht (worst case).
14
Vorlesungsskript von E. Best / Stand: 19. September 2005
Beweis: Wir beweisen durch Induktion u ¨ber k, dass unter der Voraussetzung a > b ≥ 0 gilt: wenn euclid(a, b) zu k ≥ 1 rekursiven Aufrufen f¨ uhrt, dann gilt a ≥ Fk+2 und b ≥ Fk+1 . (Daraus folgt sofort der zu beweisende Satz.) Induktionsbeginn k = 1: Dann gilt b ≥ 1 = F2 , weil k = 1 rekursiver Aufruf stattfindet. Also gilt a ≥ 2 = F3 . Wegen b > (a mod b) ist das erste Argument in jedem rekursiven Aufruf strikt gr¨oßer als das zweite, die Bedingung a > b ≥ 0 ist also invariant u ¨ber alle rekursiven Aufrufe. Induktionsschritt k − 1 ; k: Wegen k ≥ 1 gilt, wie oben, b ≥ 1. Also ruft euclid(a, b) rekursiv euclid(b, a mod b) auf, was zu genau k−1 rekursiven Aufrufen f¨ uhrt. Die Induktionsvoraussetzung ergibt b ≥ Fk+1 und (a mod b) ≥ Fk . Wir haben: b + (a mod b)
= b + (a − (a div b) · b) ≤ a,
weil a > b > 0 auch a div b ≥ 1 nach sich zieht. Also: a
≥ b + (a mod b) ≥ Fk+1 + Fk = Fk+2 .
Insgesamt gilt a ≥ Fk+2 und b ≥ Fk+1 , was zu zeigen war.
1.5.3
1.5.10
L¨ osung linearer modularer Gleichungen
Wir betrachten schließlich das Problem, algorithmisch eine L¨osung x f¨ ur ax ≡ b (mod m)
(1.3)
zu finden, wobei m ∈ N\{0} und a, b ∈ N sind. Beispiele: 6x ≡ 1 (mod 8) und 6x ≡ 2 (mod 8). Die erste Gleichung hat keine L¨osung, die zweite hat L¨osungen (zum Beispiel x=3 oder x=7). Sei hai die von a generierte Untergruppe von (Zm , +). Beobachtung: (1.3) hat L¨osung ⇔ b ∈ hai. (Denn in unserem Fall gilt hai = {ak | k ≥ 1} = {ax mod m | x ≥ 1}.) Aus Satz 1.5.1 folgt: |hai| teilt m. Es gibt eine Charakterisierung von hai: Satz 1.5.11 Sei d = ggT(a, m). Dann gilt hai = hdi = {0, d, 2d, . . . , ( m d −1)·d}, und mithin auch |hai| =
m d.
Beweis: Zun¨achst zeigen wir d ∈ hai. Der Algorithmus extended euclid (a, m) liefert ganze Zahlen x 0 , y 0 mit ax0 + my 0 = d. Also ist ax0 ≡ d (mod m), und damit d ∈ hai. Dann gilt aber auch hdi ⊆ hai, weil das Vielfache eines Vielfachen von a ein Vielfaches von a ist. Um hai ⊆ hdi zu zeigen, sei q ∈ hai. Dann q = ax mod m f¨ ur eine ganze Zahl x, also q = ax + my f¨ ur eine ganze Zahl y. Da d sowohl a als auch m teilt, teilt d auch q, d.h. q ∈ hdi. m Da es genau m 1.5.11 d Vielfache von d zwischen 0 und m − 1 gibt, gilt dann auch |hai| = |hdi| = d .
Kryptographie - Sommersemester 2004
15
Satz 1.5.12 Sei d = ggT (a, m). Sei d = ax0 +my 0 (z.B. als Ausgabe von extended euclid ). Falls d | b, dann ist x0 = osung von (1.3). x0 ( db ) mod m eine L¨ Beweis: ax0
≡ ax0 ( db ) (mod m) ≡ d( db ) (mod m) ≡ b (mod m)
(Def. x0 ) (da ax0 ≡ d (mod m) wegen d = ax0 +my 0 ) 1.5.12
Korollar 1.5.13 (1.3) hat eine L¨ osung ⇔ ggT(a, m) teilt b. (Wegen Satz 1.5.11 und obiger Beobachtung.) Entweder (1.3) hat keine L¨ osung, oder d verschiedene (wobei d = ggT (a, m)).
1.5.13
Satz 1.5.14 Sei (1.3) l¨ osbar, d.h., d | b, wobei d = ggT(a, m), und sei x0 eine L¨ osung. Dann hat (1.3) genau d verschiedene L¨ osungen: xi = x0 +i·( m ) f¨ u r i = 0, 1, . . . , d−1 (modulo m). d m Beweis: Da m ur i = 0, 1, . . . , d−1, sind die Werte x0 , . . . , xd−1 alle verschieden. d > 0 und 0 ≤ i·( d ) ≤ m f¨ Aufgrung der Periodizit¨at der Folge ai mod m (Korollar 1.5.4) und weil x0 eine L¨osung ist, ist jedes xi eine L¨osung. Nach Korollar 1.5.13 gibt es genau d L¨osungen, so dass die x0 , . . . , xd−1 alle L¨osungen sein 1.5.14 m¨ ussen.
Betrachte beispielsweise 6x ≡ b (mod 8) mit b = 1, 2. Es ist ggT(6, 8) = 2. Da 2 - b mit b=1, hat 6x ≡ 1 (mod 8) keine L¨osung.
Da 2 | b mit b=2, hat 6x ≡ 2 (mod 8) genau zwei verschiedene L¨osungen, n¨amlich x = 3 und x = 7. Genauer: mit einer Darstellung des ggT von 6 und 8, die so lautet: 2 = 6 · ( −1 ) + 8 · (|{z} 1 ), |{z} y0
x0
berechnet sich das x0 aus Satz 1.5.12 als x0 = (−1)(1) mod 8 = (−1) mod 8 = 7. Das x1 aus Satz 1.5.14 berechnet sich als x1 = x0 + 28 = 11, also 3 (modulo 8). Zur Berechnung aller xi ergibt sich der Algorithmus 1.7. Weiteres Beispiel: |{z} 14 x ≡ |{z} 30 (mod |{z} 100 ). a
0
b
m
0
Dann wird (d, x , y ) zu (2, −7, 1) (Probe: 2 = 14·(−7)+100·(1)). 2 | 30 ⇒ es gibt L¨osungen.
Erste: x0 = (−7)·(15) mod 100 = 95. for-Schleife: mit i=0 und i=1 (wegen d=2) sind x0 = 95 und x1 = 45 L¨osungen.
16
Vorlesungsskript von E. Best / Stand: 19. September 2005
↓ ↓ ↓
proc L¨ ose mod eq(a, b, m); begin (d, x0 , y 0 ) := extended euclid (a, m); if d - b → keine L¨osungen“ ” d | b → x0 := x0 ( db ) mod m; for i := 0 to d−1 do x0 +i∗( m osung“ endfor d ) mod m ist L¨ ” fi end; Abbildung 1.7: L¨osung von ax ≡ b (mod m). Korollar 1.5.15 Sei m > 1. Falls ggT(a, m) = 1, dann hat ax ≡ b (mod m) genau eine L¨ osung modulo m. Speziell wenn b = 1, ist diese L¨ osung das multiplikative modulare Inverse von a (mod m). Dieses ist das x0 1.5.15 aus extended euclid . Der Algorithmus zur Berechnung eines multiplikativen modularen Inversen kann insbesondere zur Dechiffrierung einer affinen Chiffre (Kryptosystem 1.4.3) verwendet werden.
1.6
Permutationschiffre, Blockchiffren, ECB-Modus
Die bisher betrachteten Chiffren sind monoalphabetisch, d.h., jeder Buchstabe wird immer gleich chiffriert (z.B. wird bei ROT13 der Buchstabe a immer nur als N chiffriert). Diese Eigenschaft macht solche Chiffren Attacken (d.h. Entdeckungsversuchen durch Oscar) gegen¨ uber verwundbar. Um dies zu verhindern, kann man versuchen, den Klartext beizubehalten, die einzelnen Zeichen (z.B. die Buchstaben) aber in eine andere Reihenfolge zu bringen. In der Permutationschiffre geschieht dies blockweise, mit einer Blockl¨ange m. Wenn m > 1, dann ist die genannte Eigenschaft nicht zwingend vorhanden, d.h., ein Buchstabe kann, je nach Stelle des Vorkommens, durch verschiedene Chiffretexte codiert werden. Falls der Klartext eine L¨ange hat, die nicht durch m teilbar ist, kann er durch Anh¨angen von (pseudo-) zuf¨allig gew¨ahlten Buchstaben auf eine solche L¨ange gebracht werden. Chiffren wie die Permutationschiffre, durch die jeweils Bl¨ocke (gleicher L¨ange) des Klartextes gem¨aß einer Vorschrift in Bl¨ocke des Chiffretextes chiffriert werden, heißen generell Blockchiffren. Kryptosystem 1.6.1 Permutationschiffre Sei m ∈ N\{0}. Es seien P = C = Z26 , und K sei die Menge aller Permutationen von {1, . . . , m}. F¨ ur eine Permutation K = π seien eK und dK folgendermaßen definiert: eπ (x1 , . . . , xm ) dπ (y1 , . . . , ym )
= =
(xπ(1) , . . . , xπ(m) ) mod 26 (yπ−1 (1) , . . . , yπ−1 (m) ) mod 26. 1.6.1
Kryptographie - Sommersemester 2004
17
Beispiel: Wir betrachten m = 6 und die folgende Permutation π (und ihr Inverses π −1 ): ½ ¾ ½ ¾ 1 2 3 4 5 6 1 2 3 4 5 6 x x π: und π −1 : π(x) 3 5 1 6 4 2 π −1 (x) 3 6 1 5 2 4 Um den Klartext ‘blaukrautbleibtblaukraut’ zu chiffrieren, teilen wir ihn in Bl¨ocke der L¨ange m = 6 ein und permutieren jeden Block einzeln im Sinne von π: b A
l K
a B
u R
k U
r L
a T
u L
t A
b E
l B
e U
i T
b L
t I
b A
l B
a u B R
k U
r U
a T
u A
t K
Man muss hier etwas aufpassen: die Abbildung von x=2 auf π(x)=5 besagt zum Beispiel, dass die alte Position 5 auf die neue Position 2 gebracht wird (und nicht umgekehrt). Die Dechiffrierung geht umgekehrt, d.h., unter Benutzung von π −1 statt π. Oben wurde das b des Klartextes durch A, E, L, und schließlich wieder durch A chiffriert. Die Permutationschiffre ist somit nicht mono-, sondern polyalphabetisch. Dies (u.a.) unterscheidet sie von der Substitutionschiffre. Bemerkung: Im Beispiel oben wurde der Chiffretext sozusagen blockweise kontextfrei produziert, das heißt, jeder i te Chiffreblock h¨angt nur vom entsprechenden (i ten) Klartextblock und vom Schl¨ ussel π ab. Diese sehr naheliegende Art der Chiffrierung in einer Blockchiffre heißt Electronic Codebook Mode (ECB-Modus). Hierdurch werden gleiche Klartextbl¨ocke auch immer in gleiche Chiffrebl¨ocke codiert (also quasi ein Monoalphabetismus auf Blockebene), und es besteht immer noch eine gute Chance, dass sich Regelm¨aßigkeiten des Klartextes im Chiffretext wiederfinden lassen und dadurch eine Angriffsfl¨ache gegeben ist. Andere Modi sind auch mit der Permutationschiffre m¨oglich und werden sp¨ater beschrieben.
1.7
Hill-Chiffre
Die Hill-Chiffre (1929) ist ebenfalls polyalphabetisch und verallgemeinert die Permutationschiffre. Wir legen eine positive Zahl m fest und wollen Bl¨ocke der L¨ange m des Klartextes auf einmal in Bl¨ocke der L¨ange m des Chiffretextes umwandeln. Die m Zeichen des Chiffretextes sind definiert als Linearkombinationen der m Zeichen des Klartextes (modulo 26). Damit nicht notwendigerweise ein Buchstabe immer auf das gleiche Zeichen abgebildet wird, schließen wir m = 1 aus. Sei zum Beispiel m = 2. Man k¨onnte beispielsweise festlegen, dass y1 y2
= =
(11x1 + 3x2 ) mod 26 (8x1 + 7x2 ) mod 26
gelten soll, wobei (x1 , x2 ) zwei nebeneinander liegende Klartextzeichen, (y1 , y2 ) die entsprechenden Chiffrezeichen sind. In Matrixform kann man diese Transformation auch folgendermaßen schreiben: µ ¶ 11 8 (y1 , y2 ) = (x1 , x2 ) · 3 7 Beispiel: Wir wollen den Klartext ‘meer’ auf diese Weise verschl¨ usseln. Dazu bilden wir zun¨achst Bl¨ocke der L¨ange 2, also ‘me’ und ‘er’. Dann berechnen wir: µ ¶ 11 8 (12, 4) · = (132 + 12, 96 + 28) = (144, 124) = (14, 20) 3 7
18
Vorlesungsskript von E. Best / Stand: 19. September 2005
und (4, 17) ·
µ
11 3
¶
8 7
= (44 + 51, 32 + 119) = (95, 151) = (17, 21).
Der Chiffretext ist also OURV. Das e wurde einmal auf U und einmal auf R abgebildet. Um einen solchen Chiffretext zu dechiffrieren, ben¨otigt man das Inverse der (m, m)-Chiffrierungsmatrix (modulo 26). Wenn ein solches Inverses existiert, ist es wieder eine (m, m)-Matrix. In der linearen Algebra u ¨ber den reellen Zahlen existiert das Inverse einer quadratischen Matrix genau dann, wenn deren Determinante nicht 0 ist. In der linearen Algebra modulo einer nat¨ urlichen Zahl m ∈ N\{0} gibt es eine analoge Bedingung f¨ ur die Invertierbarkeit: eine quadratische Matrix K hat ein Inverses modulo m genau dann, wenn die Determinante det(K) von K und m teilerfremd sind. (Insbesondere darf die Determinante nicht 0 sein, genau wie im reellen Fall.) Im obigen Beispiel gilt det
µ
11 3
8 7
¶
= 11·7 − 8·3 = 53 ≡ 1 (mod 26),
und deswegen ggT(det(K), 26) = 1. Die Matrix ist also invertierbar. In der Tat findet man: µ
11 3
8 7
¶ µ 7 · 23
18 11
¶
=
µ
1 0
0 1
¶
und damit
µ
11 3
8 7
¶−1
=
µ
7 23
18 11
¶
,
nat¨ urlich modulo 26. Hier ist die genaue Definition des Hillschen Kryptosystems: Kryptosystem 1.7.1 Hill-Chiffre Sei m ∈ N\{0, 1}. Es seien P = C = (Z26 )m . Sei K die Menge der invertierbaren (m, m)-Matrizen u ¨ber Z26 . F¨ ur K ∈ K seien eK und dK folgendermaßen definiert: eK (x1 , . . . , xm ) dK (y1 , . . . , ym )
= =
x·K y · K −1 , 1.7.1
alles modulo 26.
Die Permutationschiffre ist ein Spezialfall des Hill-Chiffre, indem eine Permutation π von {1, . . . , m} durch eine (m, m)-Permutationsmatrix Kπ beschrieben wird. Dabei ist Kπ (i, j) als 1 definiert, wenn i = π(j), und als 0 sonst. Solche Matrizen sind stets invertierbar. Zum obigen Beispiel geh¨ort die Permutationsmatrix
Kπ =
0 0 1 0 0 0
0 0 0 0 1 0
1 0 0 0 0 0
0 0 0 0 0 1
0 0 0 1 0 0
0 1 0 0 0 0
Die Permutationschiffre ist a¨quivalent zur Hill-Chiffre mit dieser Matrix.
Kryptographie - Sommersemester 2004
1.8
19
Vigen` ere-Chiffre
Auch in der Vigen`ere-Chiffre (16. Jahrhundert) kann ein Buchstabe, je nach Stelle des Vorkommens, durch verschiedene Chiffretexte codiert werden. Die Idee ist, im Wesentlichen die Verschiebungschiffre zu verwenden, die Zahl der Positionen, um die verschoben wird, jedoch durch die Benutzung eines Schl¨ usselworts variabel zu gestalten. Ist z.B. ein Schl¨ usselwort ABC gegeben, identifizieren wir A wie u blich mit 0, B ¨ mit 1 und C mit 2 und verschl¨ usseln die ersten 3 Buchstaben des Klartextes erst durch Verschieben um 0 Positionen, dann um eine Position und dann um 2 Positionen. Das wird zyklisch so fortgesetzt, indem mit Hilfe des Schl¨ usselwortes ABC durch Iteration ein Schl¨ usselstring gebildet wird. Am Schluss wird der Klartext entweder aufgef¨ ullt, bis er eine durch 3 teilbare L¨ange hat, oder das Schl¨ usselwort wird nur teilweise verwendet. Beispiel: Klartext Schl¨ usselstring Chiffretext
m A M
i B J
t C V
t A T
e B F
r C T
n A N
a B B
c C E
h A H
t B U
a C C
m A M
s B T
e C G
e A E
Hier werden beispielsweise die drei t s auf drei verschiedene Chiffren abgebildet (V, T und U). `re-Chiffre Kryptosystem 1.8.1 Vigene Sei m ∈ N\{0}. Es seien P = C = K = (Z26 )m . F¨ ur K = (k1 , . . . , km ) ∈ K seien eK und dK folgendermaßen definiert: eK (x1 , . . . , xm ) dK (y1 , . . . , ym )
= =
(x1 + k1 , . . . , xm + km ) mod 26 (y1 − k1 , . . . , ym − km ) mod 26. 1.8.1
Mit m = 1 ist das gerade die Verschiebungschiffre. Oben ist eine Anwendung mit m = 3 gezeigt. Selbst f¨ ur kleine m (z.B. m = 6) ist der Keyspace recht groß, so dass sich vollst¨andige Suche kaum lohnt; es gibt jedoch andere Methoden zur Kryptanalyse.
1.9
Autokey-Chiffre, CBC-Modus
Eine wesentlich weniger leicht angreifbare Abwandlung von Kryptosystem 1.8.1 – ebenfalls auf Vigen`ere zur¨ uckgehend – beruht auf der Idee, den Klartext (die 1. Zeile im Vigen`ere-Verfahren) nachtr¨aglich (zeitversetzt) als Schl¨ usselwort zu verwenden. Dazu tr¨agt man in der 2. Zeile das gew¨ahlte Schl¨ usselwort nur einmal ein und danach den Klartext (minus m Buchstaben am Ende). Die Verschl¨ usselung geschieht nach der gleichen Methode wie bei der Vigen`ere-Chiffre. Beispiel mit m = 3 und Schl¨ usselwort ABC : Klartext Schl¨ usselstring Chiffretext
m A M
i B J
t C V
t e r M I T F M K
n T G
a c E R E T
h N U
t a A C T C
m H T
s T L
e A E
e M Q
20
Vorlesungsskript von E. Best / Stand: 19. September 2005
Dieses Kryptosystem heißt autokey encryption, weil der Klartext quasi sein eigener Schl¨ ussel ist. Mit einem nur dreistelligen initialen Schl¨ usselwort ist diese Chiffre unsicher, da es nicht mehr als (26)3 M¨oglichkeiten gibt. Mit m ≥ 6 ergibt sich jedoch eine gute Chiffrierung.
Bemerkung: Bei der Autokey-Chiffre wird der Chiffretext in Abh¨angigkeit vom schon gesehenen Klartext produziert, genauer: jeder i te Chiffreblock, i ≥ 2, der L¨ange m h¨angt vom i−1 ten Klartextblock (und anf¨anglich, f¨ ur i = 1, vom Schl¨ usselwort der L¨ange m) ab. Allgemeiner kann man die Produktion des i ten Chiffreblocks nicht nur vom vorangegangenen Klartext, sondern dazu noch (oder alternativ) vom initialen Schl¨ usselwort und/oder vom bisher produzierten Chiffretext abh¨angig machen. Eine solche Methode ist der Cipherblock Chaining Mode (CBC-Modus), zum Beispiel in Kombination mit einer Permutationschiffre.
Um den CBC-Modus zu beschreiben, betrachten wir ein bin¨ares Alphabet (zum Beispiel die Bin¨arcodierung eines Textes). Der zu verschl¨ usselnde Klartext sei x = 101100010100101, der blockweise mit Blockl¨ange 4 chiffriert werden soll. Da der Klartext 15 Zeichen enth¨alt, muss er, z.B. durch Anh¨angen einer 0, auf eine durch 4 teilbare Anzahl von Zeichen verl¨angert werden: x = 1011 | {z } 0100 | {z } 1010 | {z } | {z } 0001 x1
x2
x3
x4
Der Permutationsschl¨ ussel soll ¾ ½ 1 2 3 4 x π: π(x) 2 3 4 1
sein. Die Anwendung dieser Permutation auf einen Block der L¨ange 4 bezeichnen wir mit Â; zum Beispiel ist π Â (1011) = (0111). Als Initialisierungsvektor soll IV = (k1 , k2 , k3 , k4 ) = (1, 0, 1, 0) dienen, und ein neuer Chiffreblock yi+1 soll sowohl vom entsprechenden Klartextblock xi+1 als auch vom vorangegangenen Chiffreblock yi (und anf¨anglich von IV ) abh¨angen (indem xi+1 nach Maßgabe von yi ‘verschoben’ wird) und gem¨aß π verschl¨ usselt werden. ‘Schieben’ heißt in diesem speziellen Fall ‘Addieren modulo 2’; wir definieren dies als eine Operation ~ auf Bitstrings. Beispielsweise ist 1010 ~ 0111 = 1101. Die Generierung des Chiffretextes y 1 y2 . . . soll also durch y1 yi
= =
π Â (x1 ~ IV ) π Â (xi ~ yi−1 ), f¨ ur i ≥ 2
beschrieben werden. F¨ ur das Beispiel ergibt sich: IV y1 y2 y3 y4
= 1010 = π Â (x1 ~ IV ) = π Â (x2 ~ y1 ) = π Â (x3 ~ y2 ) = π Â (x4 ~ y3 )
= π Â (1011 ~ 1010) = π Â (0001 ~ 0010) = π Â (0100 ~ 0110) = π Â (1010 ~ 0100)
= π Â (0001) = π Â (0011) = π Â (0010) = π Â (1110)
insgesamt also der Chiffrestring y = 0010 0110 0100 1101.
= 0010 = 0110 = 0100 = 1101,
Kryptographie - Sommersemester 2004
1.10
21
Stromchiffre
Die Stromchiffre ist eine Verallgemeinerung der Autokey-Chiffrierung, worin sich neue Schl¨ usselelemente aus alten Schl¨ usselelementen und/oder aus alten Klartextelementen ergeben. Es wird ein Schl¨ usselstrom z1 z2 . . . generiert und zur Verschl¨ usselung des Klartextes x1 x2 . . . benutzt: y1 y2 . . . = ez1 (x1 )ez2 (x2 ) . . . Eine solche Chiffre heißt synchron, wenn sich die neuen Schl¨ ussel zi+1 allein aus den alten Schl¨ usseln {z1 , . . . , zi } ergeben (und nicht aus dem Klartext). Ein gutes Beispiel f¨ ur eine nicht-synchrone Chiffre ist die Autokey-Chiffre von Vigen`ere, die mit einem konstanten Ursprungsschl¨ ussel beginnt, dann aber bereits gesehene Klartextzeichen als Schl¨ usselzeichen weiterverwendet. Als (weiteres) Beispiel verwenden wir einen einstelligen Initialschl¨ ussel J (d.h., dem Buchstaben mit Code 9 in Z26 ). Um rendezvous zu verschl¨ usseln, konvertieren wir diesen Klartext zun¨achst in Zahlen, erhalten daraus den Schl¨ usselstrom und addieren modulo 26, um den Chiffretext zu erhalten, den Alice sendet: Klartext: Klartextcode: Schl¨ usselstrom: Verschl¨ usseln: Chiffretext:
r 17 9 0 A
e n d 4 13 3 17 4 13 21 17 16 V R Q
e z 4 25 3 4 7 3 H D
v o 21 14 25 21 20 9 U J
u 20 14 8 I
s 18 20 12 M
Die dritte Zeile dieser Tabelle entspricht den z1 z2 . . . einer Stromchiffre. Wenn Bob den Chiffretext entziffert, verf¨ahrt er folgendermaßen: In Kenntnis des initialen Schl¨ ussels 9 dechiffriert er der Reihe nach: x1 x2 x2
= d9 (0) = d17 (21) = d4 (17)
= (0 − 9) mod 26 = (21 − 17) mod 26 = (17 − 4) mod 26 .. .
= 17 = r = 4 = e = 13 = n .. .
Wir betrachten zuletzt noch eine synchrone Stromchiffre. Dazu betrachten wir wieder ein bin¨ares Alphabet. Dann sind Ver- und Entschl¨ usselung (‘Schieben’) gegeben durch: ez (x) = (x + z) mod 2 dz (y) = (y + z) mod 2
(= (y − z) mod 2)
was sich in Hardware sehr gut realisieren l¨asst. Dabei ist z der Schl¨ ussel, der von der gerade betrachteten Stelle des Klartextes und von den bis dahin bereits verwendeten Schl¨ usseln abh¨angt. Wichtig ist die Periode einer Stromchiffre, d.h. die kleinste Zahl d, f¨ ur die zi+d = zi (f¨ ur alle i ≥ 1) gilt. Die (einfache) Vigen`ereChiffre kann als eine (konstante) Stromchiffre mit Periode m aufgefasst werden. Die K¨ urze dieser Periode hilft bei der Kryptanalyse dieser Chiffre. Durch andere Festsetzungen kann man l¨angere Perioden erreichen. Setzt man zum Beispiel (¨ uber einem bin¨aren Alphabet) m = 4 und zi+4 = (zi + zi+1 ) mod 2,
(1.4)
dann erh¨alt man mit einem initialen Vektor ungleich (0, 0, 0, 0) die Periode 15. Im allgemeinen kann man so bei Blockl¨ange m eine Periode der L¨ange 2m − 1 erreichen, also eine exponentiell große Periode und damit eine sehr gute Verschl¨ usselung.
22
Vorlesungsskript von E. Best / Stand: 19. September 2005
Die Stromchiffre (1.4) l¨asst sich leicht in Hardware als ein Schieberegister mit m = 4 Elementen realisieren; siehe Abbildung 1.8. Der Vektor (Ursprungsschl¨ ussel) (k1 , k2 , k3 , k4 ) initialisiert dieses Register. Zu jedem Takt werden – bei Verschl¨ usselung – die folgenden Operationen gleichzeitig parallel ausgef¨ uhrt: • k1 wird als n¨achstes Element des Schl¨ usselstroms abgerufen und zur Verschl¨ usselung verwendet; • k2 , k3 , k4 werden um eine Stelle nach links geschoben; • k4 wird aus der Summe (modulo 2) von k1 und k2 (alte Werte) berechnet. ~ k1
k2
k3
k4
Abbildung 1.8: Schieberegister zur Chiffre (1.4) (1.4) ist ein spezielles Beispiel f¨ ur durch lineare Rekurrenzen gebildete Stromchiffren. Mit Blockl¨ange m ist die allgemeine Form einer solchen Chiffre durch zi+m =
m−1 X j=0
cj zi+j mod 2,
f¨ ur alle i ≥ 1,
gegeben. Dabei sind die c0 , . . . , cm−1 Konstanten aus Z2 (im Beispiel oben: m = 4, c0 = 1, c1 = 1, c2 = 0, c3 = 0). O.B.d.A. ist c0 = 1, denn sonst ginge statt m auch m−1 als Blockl¨ange; dann heißt m der Grad der Rekurrenz. Der Schl¨ ussel K, der eine Entschl¨ usselung solchermaßen chiffrierter Texte erm¨oglicht, hat hier die L¨ange 2m, denn er besteht aus den m Anfangswerten k1 , . . . , km von z1 , . . . , zm und den Koeffizienten c0 , . . . , cm−1 . Es ist Ziel von Oscar, dem Opponenten, diesen Schl¨ ussel (unbefugterweise) herauszufinden ...
Kapitel 2
Klassische Kryptanalyse In diesem Kapitel kommt Oscar zu seinem ‘Recht’. Es k¨onnte zum Beispiel der Fall vorkommen, dass er einen verschl¨ usselten Text auff¨angt und – vielleicht schon aus reiner Neugierde – versucht, diesen zu verstehen, oder sogar zu ‘knacken’, indem er herausfindet, welche Methode zum Verschl¨ usseln angewendet wurde (und welcher Schl¨ ussel). Wenn Oscar weiß, welches Kryptosystem verwendet wurde, ist es nat¨ urlich einfacher f¨ ur ihn, als wenn er dies nicht weiß. Trotzdem wird bei der Kryptanalyse u ¨blicherweise Kerkhoffs Prinzip: Der Opponent kennt das verwendete Kryptosystem. angenommen, denn auch so ist es normalerweise schon schwer, eine chiffrierte Nachricht zu verstehen, und außerdem sind wir ja normalerweise daran interessiert, Kryptosysteme sicher zu machen, selbst wenn der Opponent u ¨ber ihre Verwendung informiert ist.
2.1
Typen von Attacken
Man unterscheidet verschiedene Attacken bzw. Angriffe, die in der Praxis vorkommen k¨onnen: • Ciphertext-only-Attacke: Der Opponent kennt einen oder mehrere Chiffretexte y, ohne zu wissen, zu welchen Klartexten diese geh¨oren. Diese Attacke ist die ‘schw¨achste’, in dem Sinn, dass Oscar hier nur relativ wenige Informationen hat. • Known-plaintext-Attacke: Der Opponent hat einen oder mehrere Klartexte x und kennt die dazu geh¨origen Chiffretexte y. Dies ist die zweitschw¨achste Form der Attacke. • Chosen-plaintext-Attacke: Der Opponent hat tempor¨ar Zugriff zur Verschl¨ usselungsmaschinerie und kann einen Klartext x w¨ahlen und den zugeh¨origen Chiffretext y generieren. • Chosen-ciphertext-Attacke: Der Opponent hat tempor¨ar Zugriff zur Entschl¨ usselungsmaschinerie und kann einen Chiffretext y w¨ahlen und den zugeh¨origen Klartext x generieren. Einen Chiffretext zu brechen, ist nicht einfach; jede Art von Information kann helfen, nicht nur die Kenntnis des verwendeten Kryptosystems. Beispielsweise ist von Interesse, in welchen Umst¨anden und von wem zu 23
24
Vorlesungsskript von E. Best / Stand: 19. September 2005
wem der Text gesendet worden ist, damit man eine Basis hat, zu raten, welche Textst¨ ucke eventuell darin vorkommen k¨ onnten. Wir nehmen auch an, dass Oscar bereits weiß (oder zumindest geraten hat), dass ein Text in englischer Sprache chiffriert worden ist. Man chiffriert normalerweise Leerzeichen und Satzzeichen nicht mit, da dies die Aufgabe eines Opponenten nicht erschwert, sondern erleichtert. Wir arbeiten also weiterhin mit dem Alphabet A = {a, b, . . . , z}. Viele Techniken der Kryptanalyse beruhen auf statistischen Daten u ¨ber die H¨aufigkeit von Buchstaben in einer Sprache. Das ist leicht bei Substitutionschiffren zu sehen, denn hier werden Buchstaben auf (andere) Buchstaben abgebildet, und man kann davon ausgehen, dass im Chiffretext relativ h¨aufig vorkommende Buchstaben auch h¨aufig vorkommenden Klartextbuchstaben entsprechen. Durch empirische Studien (Auswertung von Romanen, Magazinen, Zeitungen) hat man eine Sch¨atzung u ¨ber die H¨aufigkeitsverteilung der 26 Buchstaben in der englischen Sprache erhalten, die in Abbildung 2.1 angegeben ist. Buchstabe a b c d e f g h i j k l m
Wahrscheinlichkeit .082 .015 .028 .043 .127 .022 .020 .061 .070 .002 .008 .040 .024
Buchstabe n o p q r s t u v w x y z
Wahrscheinlichkeit .067 .075 .019 .001 .060 .063 .091 .028 .010 .023 .001 .020 .001
Abbildung 2.1: Wahrscheinlichkeit des Auftretens der 26 Buchstaben im Englischen Danach kann man die 26 Buchstaben in f¨ unf Gruppen einteilen: 1. e, mit relativ hoher Wahrscheinlichkeit, ca. 0.120. 2. t, a, o, i, n, s, h, r, mit Wahrscheinlichkeiten zwischen 0.06 und 0.09. 3. d, l, mit Wahrscheinlichkeiten um 0.04. 4. c, u, m, w, f, g, y, p, b, mit Wahrscheinlichkeiten zwischen 0.015 und 0.028. 5. v, k, j, x, q, z, mit Wahrscheinlichkeiten kleiner als 0.01. Es ist auch wichtig, h¨aufig nebeneinander stehende Kombinationen zu ber¨ ucksichtigen. Es gibt Digramme (Gruppen von 2 Buchstaben) und Trigramme (Gruppen von 3 Buchstaben). Die h¨aufigsten davon sind (im Englischen) in absteigender Reihenfolge: • Digramme: th, he, in, er, an, re, ed, on, es, st, en, at, to, nt, ha, nd, ou, ea, ng, as, or, ti, is, et, it, ar, te, se, hi, of.
Kryptographie - Sommersemester 2004
25
• Trigramme: the, ing, and, her, ere, ent, tha, nth, was, eth, for, dth.
2.2
Kryptanalyse der affin-linearen Chiffre
Wir betrachten ein Beispiel f¨ ur die statistische Analyse unter Zuhilfenahme der empirischen Daten. Oscar habe den folgenden Chiffretext vorliegen: FMXVEDKAPHFERBNDKRXRSREFMORUDSDKDVSHVUFEDKAPRKDLYEVLRHHRH Das sind zwar nur 57 Buchstaben, aber schon genug, um eine affine Chiffrierung zu brechen. Die H¨aufigkeitsverteilung dieses Chiffretextes ist: A 2
B 1
C 0
D 7
E 5
F 4
G 0
H 5
I 0
J 0
K 5
L 2
M 2
N 1
O 1
P 2
Q 0
R 8
S 3
T 0
U 2
V 4
W 0
X 2
Y 1
Z 0
Die hier h¨aufigsten Buchstaben sind R(8), D(7), E, H, K(5) und F, S, V(4). Man k¨onnte zun¨achst annehmen, dass R die Verschl¨ usselung von e und D die Verschl¨ usselung von t ist, weil e und t die beiden h¨aufigsten Buchstaben im Englischen sind (Abbildung 2.1). Wenn wir dies annehmen, bekommen wir e K (4) = 17 und eK (19) = 3. Da (vermutlicherweise) die affine Chiffre benutzt wurde, in der die Verschl¨ usselung die Form eK (x) = ax + b hat, wobei a und b hier unbekannt sind, erhalten wir: 4a + b 19a + b
= 17 = 3,
also zwei Gleichungen mit zwei Unbekannten. Es ergibt sich a = 6, b = 19, was jedoch kein legaler Schl¨ ussel ist, da ggT(a, 26) > 1. Wir haben also falsch geraten. Als n¨achsten k¨onnten wir raten, dass R die Verschl¨ usselung von e ist und E die Verschl¨ usselung von t. Wie oben bekommt man a = 13, was wieder illegal ist. Wir probieren jetzt den Fall, dass R e und H t verschl¨ usseln. Wir erhalten a = 8, was wieder falsch ist. Seien R die Verschl¨ usselung von e und K die Verschl¨ usselung von t. Dadurch erh¨alt man a = 3, b = 5, was ein legaler Schl¨ ussel (K = (3, 5)) ist. Wir k¨onnen jetzt die dazu geh¨orige Entschl¨ usselungsfunktion ausrechnen und ausprobieren, ob eine sinnvolle Gesamt-Entschl¨ usselung dazu passt. Wir erhalten dK (y) = 9y − 19, und der oben angegebene Chiffretext wird zu Algorithms are quite general definitions of arithmetic processes. Damit ist die Entschl¨ usselung gelungen. Im Grunde ist die statistische Analyse hier eine Art clevere Heuristik, um das sonst n¨otige systematische Ausprobieren zu verfeinern und nach M¨oglichkeit schnell zum Erfolg zu f¨ uhren.
2.3
Kryptanalyse der Substitutionschiffre
Ein komplizierterer Fall ist die Substitutionschiffre. Wir nehmen an, dass der folgende Chiffretext vorliegt: YIFQFMZRWQFYVECFMDZPCVMRZWNMDZVEJBTXCDDUMJ NDIFEFMDZCDMQZKCEYFCJMYRNCWJCSZREXCHZUNMXZ NZUCDRJXYYSMRTMEYIFZWDYVZVYFZUMRZCRWNZDZJJ XZWGCHSMRNMDHNCMFQCHZJMXJZWIEJYUCFWDJNZDIR
26
Vorlesungsskript von E. Best / Stand: 19. September 2005
Die H¨aufigkeitsanalyse ergibt: A 0
B 1
C 15
D 13
E 7
F 11
G 1
H 4
I 5
J 11
K 1
L 0
M N 16 9
O 0
P 1
Q 4
R S 10 3
T 2
U 5
V 5
W 8
X 6
Y 10
Z 20
Daraus k¨onnte man zuerst dK (Z) = e ablesen. Die anderen Chiffretextbuchstaben mit signifikanter (10 oder mehr) H¨aufigkeit sind C, D, F, J, M, R, Y. Man k¨onnte also vermuten, dass diese Verschl¨ usselungen von t, a, o, i, n, s, h, r sind, man kann aber keine begr¨ undete Vermutung aufstellen, in welcher Reihenfolge. An dieser Stelle k¨onnte eine Digramm-Analyse weiterhelfen, insbesondere Digramme der Form −Z oder Z−, da wir vermuten, dass Z e verschl¨ usselt. Es kommen vor: viermal: dreimal: zweimal:
DZ, ZW NZ, ZU RZ, HZ, XZ, FZ, ZR, ZV, ZC, ZD, ZJ.
Da ZW viermal, WZ aber keinmal vorkommt, und da W weniger oft als andere Buchstaben vorkommt, kann man dK (W) = d raten. Weil DZ viermal vorkommt und ZD zweimal vorkommt, kann man d K (D) ∈ {r, s, t} vermuten, aber es ist unklar, welche der drei M¨oglichkeiten zuerst in Betracht kommt. Wegen des Digramms RW zu Beginn des Chiffretextes (und auch sp¨ater noch einmal), weil nd ein h¨aufiges Digramm ist, und weil R ein h¨aufiger Buchstabe im Chiffretext ist, k¨onnte man dK (R) = n versuchen. An dieser Stelle hat man folgende (versuchsweise) Teil-Entschl¨ usselung: end e ned e YIFQFMZRWQFYVECFMDZPCVMRZWNMDZVEJBTXCDDUMJ e e n d en e e NDIFEFMDZCDMQZKCEYFCJMYRNCWJCSZREXCHZUNMXZ e n n ed e e ne nd e e NZUCDRJXYYSMRTMEYIFZWDYVZVYFZUMRZCRWNZDZJJ ed n e ed d e n XZWGCHSMRNMDHNCMFQCHZJMXJZWIEJYUCFWDJNZDIR Als n¨achstes k¨onnte man dK (N) = h probieren, weil NZ ein h¨aufiges Digramm ist, ZN aber nicht. Wenn das stimmen sollte, legt das Klartext-Teilst¨ uck ne ndhe die Wahl dK (C) = a nahe. Danach h¨atte man: end a e a nedh e a YIFQFMZRWQFYVECFMDZPCVMRZWNMDZVEJBTXCDDUMJ h ea e a a nhad a en a e h e NDIFEFMDZCDMQZKCEYFCJMYRNCWJCSZREXCHZUNMXZ he a n n ed e e neandhe e NZUCDRJXYYSMRTMEYIFZWDYVZVYFZUMRZCRWNZDZJJ ed a nh ha a e ed a d he n XZWGCHSMRNMDHNCMFQCHZJMXJZWIEJYUCFWDJNZDIR Wir betrachten jetzt M, den zweith¨aufigsten Chiffretextbuchstaben. Das Chiffretextst¨ uck RNM (das, wie wir vermuten, nach nh− aufgel¨ost wird), legt nahe, dass mit h ein Wort beginnt, dass also M einen Vokal
Kryptographie - Sommersemester 2004
27
repr¨asentiert. Da a, e bereits ‘bekannt’ sind, versuchen wir dK (M) = i oder dK (M) = o. Weil ai ein viel h¨aufigeres Digramm ist als ao, legt das Chiffretext-Digramm CM zuerst die Wahl d K (M) = i nahe. Danach hat man: iend a i e a inedhi e a i YIFQFMZRWQFYVECFMDZPCVMRZWNMDZVEJBTXCDDUMJ h i ea i e a a i nhad a en a e hi e NDIFEFMDZCDMQZKCEYFCJMYRNCWJCSZREXCHZUNMXZ he a n in i ed e e ineandhe e NZUCDRJXYYSMRTMEYIFZWDYVZVYFZUMRZCRWNZDZJJ ed a inhi hai a e i ed a d he n XZWGCHSMRNMDHNCMFQCHZJMXJZWIEJYUCFWDJNZDIR Als n¨achstes k¨onnte man sich u ur die Verschl¨ usselung von o in Frage kommt. ¨berlegen, welcher Buchstabe f¨ Da o ein h¨aufiger Buchstabe ist, f¨allt die Wahl auf einen der Buchstaben D, F, J, Y. Dabei erscheint Y als das Wahrscheinlichste, weil man sonst l¨angere Vokalketten erhalten w¨ urde (z.B. aoi von CFM oder von CJM). Wir arbeiten also mit dK (Y) = o. Die verbleibenden h¨aufigen Chiffretextbuchstaben sind D, J, F. Wir vermuten, dass sie r, s, t in irgendeiner Reihenfolge verschl¨ usseln. Das Trigramm NMD tritt zweimal auf, und wir vermuten, dass es mit d K (D) = s his bedeuten k¨onnte. Der Abschnitt HNCFM k¨onnte chair bedeuten, was dK (F) = r und dK (H) = c ergeben w¨ urde, und danach auch dK (J) = t (weil die anderen M¨oglichkeiten ausgeschlossen wurden). Jetzt haben wir: o r riend ro arise a inedhise t ass it YIFQFMZRWQFYVECFMDZPCVMRZWNMDZVEJBTXCDDUMJ hs r riseasi e a orationhadta en ace hi e NDIFEFMDZCDMQZKCEYFCJMYRNCWJCSZREXCHZUNMXZ he asnt oo in i o redso e ore ineandhesett NZUCDRJXYYSMRTMEYIFZWDYVZVYFZUMRZCRWNZDZJJ ed ac inhischair aceti ted to ardsthes n XZWGCHSMRNMDHNCMFQCHZJMXJZWIEJYUCFWDJNZDIR Das ist schon fast die Entschl¨ usselung (und der Schl¨ ussel). Der ganze Klartext lautet: Our friend from Paris examined his empty glass with surprise, as if evaporation had taken place while he wasn’t looking. I poured some more wine and he settled back in his chair, face tilted up towards the sun. Gl¨ uck gehabt!
2.4
Kryptanalyse der Vigen` ere-Chiffre
Zun¨achst muss die L¨ange m des Schl¨ usselworts herausgefunden werden. Dazu gibt es zwei systematische Methoden: den Test von Babbage/Kasiski und den Koinzidenztest. Beide werden an einem Beispiel beschrieben.
28
Vorlesungsskript von E. Best / Stand: 19. September 2005
Der Test von Babbage/Kasiski beruht auf der Periodizit¨at des Schl¨ usselstrings. Wenn zwei gleiche Abschnitte des Klartextes n Stellen voneinander entfernt sind, wobei m | n gilt, dann ergeben sie auch gleiche Abschnitte des Chiffretextes. Wenn wir umgekehrt zwei gleiche (und nicht gerade ganz kurze) Abschnitte des Chiffretextes betrachten, dann ist die Chance nicht klein, dass sie gleichen Abschnitten des Klartextes entsprechen. Wir suchen also den Chiffretext nach gleichen Abschnitten der L¨ange 3 (oder mehr) ab und notieren die Vers¨atze, d.h., die Entfernungen dieser Kopien von Text im Chiffretext. Wenn es z.B. l solcher Entfernungen gibt, n1 , . . . , nl , dann sollte m alle diese nj teilen, d.h. auch den ggT(n1 , . . . , nl ). Beispiel: Der folgende Chiffretext stamme von einer Vigen`ere-Chiffrierung: CHREEVOAHMAERATBIAXXWTNXBEEOPHBSBQMQEQERBW RVXUOAKXAOSXXWEAHBWGJMMQMNKGRFVGXWTRZXWIAK LXFPSKAUTEMNDCMGTSXMXBTUIADNGMGPSRELXNJELX VRVPRTULHDNQWTWDTYGBPHXTFALJHASVBFXNGLLCHR ZBWELEKMSJIKNBHWRJGNMGJSGLXFEYPHAGNRBIEQJT AMRVLCRREMNDGLXRRIMGNSNRWCHRQHAEYEVTAQEBBI PEEWEVKAKOEWADREMXMTBHHCHRTKDNVRZCHRCLQOHP WQAIIWXNRMGWOIIFKEE Das Triplet CHR kommt f¨ unfmal im Chiffretext vor, an den Positionen 1, 166, 236, 276 und 286. Die Entfernungen vom ersten Vorkommen zu den anderen vier sind 165, 235, 275 und 285. Da der ggT dieser vier Zahlen 5 ist, legt der Babbage/Kasiski-Test eine Schl¨ usselwortl¨ange von m = 5 nahe. Der Koinzidenztest benutzt den Koinzidenzindex. Sei dazu x = x1 . . . xn ein Wort der L¨ange n mit Buchstaben xi . Der Koinzidenzindex Ic (x) ist definiert als die Wahrscheinlichkeit, dass zwei zuf¨allig ausgew¨ahlte Buchstaben in x gleich¡ sind. Genauer: seien h0 , . . . , h25 die H¨aufigkeiten von A, . . . , Z in x. Man kann zwei ¢ ¡ ¢ ur 0 ≤ i ≤ 25 gibt es h2i Arten, die beiden Buchstaben als den Buchstaben aus x auf n2 Arten w¨ahlen. F¨ i ten zu w¨ahlen. Also: P25 ¡hi ¢ P25 i=0 2 i=0 hi (hi − 1) ¡ n¢ . = Ic (x) = n(n − 1) 2
Sei nun x ein englischer Text. Mit p0 , . . . , p25 seien die in Abbildung 2.1 angegebenen Wahrscheinlichkeiten der erwarteten Buchstabenh¨aufigkeiten bezeichnet. Man w¨ urde erwarten, dass Ic (x) ≈ (
25 X
p2i ) = 0.065,
(2.1)
i=0
denn die Wahrscheinlichkeit, dass zwei zuf¨allig gew¨ahlte Buchstaben beide a (bzw. b, ...) sind, ist p20 (bzw. p21 , ...). Die ungef¨ahre Gleichung (2.1) muss aber auch f¨ ur den Chiffretext gelten (wann immer er monoalP25 phabetisch ist!), denn dieser permutiert ja nur die Buchstaben, wobei die Summe i=0 p2i konstant bleibt. Wir untersuchen nun einen Text y = y1 y2 . . ., der Vigen`ere-chiffriert worden ist, wie den oben angegebenen. Wir ‘raten’ m und schreiben den Text in m Zeilen, indem wir die Buchstaben mit Entfernung k·m zusammenfassen: y (1) y (2) .. .
= =
y1 ym+1 y2m+1 . . . y2 ym+2 y2m+2 . . .
y (m)
=
ym y2m y3m . . .
Kryptographie - Sommersemester 2004
29
Wenn das geratene das richtige m ist, sollten die m Koinzidenzindices Ic (y (j) ) (1 ≤ j ≤ m, also einer pro Zeile) alle ungef¨ahr bei 0.065 liegen, denn es handelt sich dabei um auf gleiche Weise verschl¨ usselten englischen Originaltext (bzw. um einen Teil davon). Wenn das geratene m aber nicht das richtige ist, werden die y (j) viel mehr wie Zufallstext aussehen, und der wird wegen Ic (z) = 26(
1 1 2 ) = = 0.038, 26 26
wenn z ein Zufallswort ist
mit einiger Wahrscheinlichkeit einen Koinzidenzindex haben, der nahe bei 0.038 liegt. Wenn nun umgekehrt die in Frage kommenden m so lange durchsucht werden, bis die wie eben gebildeten Koinzidenzindices n¨aher bei 0.065 als bei 0.038 liegen, kann man hoffen, dass das richtige m ‘erraten’ worden ist. Wir wenden die Methode am Beispiel an: m = 1 : 0.045 m = 2 : 0.046, 0.041 m = 3 : 0.043, 0.050, 0.047 m = 4 : 0.042, 0.039, 0.046, 0.040 m = 5 : 0.063, 0.068, 0.069, 0.061, 0.072. (TODO: Check diese Zahlen; ein Student meinte, sie seien – allerdings geringf¨ ugig – falsch.) Mit recht hoher Wahrscheinlichkeit ist somit die bereits vom Babbage/Kasiski-Test herr¨ uhrende Annahme m = 5 korrekt. n Jetzt muss noch der Schl¨ ussel K = (k1 , . . . , km ) bestimmt werden. Dazu sei n0 = m die L¨ange von y (j) . hi (j) Die mittlere H¨aufigkeitsverteilung der 26 Buchstaben in y ist n0 (0 ≤ i ≤ 25). Das Wort y (j) ist jedoch eine Verschl¨ usselung eines Klartextes mit Verschiebung kj . Also darf man hoffen, dass die verschobene H¨aufigkeitsverteilung h25+kj hk j ,..., 0 n n0 nahe bei der Verteilung p0 , . . . , p25 aus Abbildung 2.1 liegt (Indexrechnung nat¨ urlich modulo 26). Wir sind also interessiert an den Zahlen Mg =
25 X pi hi+g i=0
n0
f¨ ur alle Buchstaben 0 ≤ g ≤ 25, denn im Fall g = kj d¨ urfte man Mg ≈
25 X
p2i = 0.065
i=0
erwarten. Wenn g 6= kj , w¨ urde man erwarten, dass der Wert Mg erheblich kleiner als 0.065 ist. Hierdurch kann man erhoffen, den Wert kj f¨ ur alle 1 ≤ j ≤ m zu ‘errechnen’. Im Beispiel haben wir bereits (immer noch hypothetisch, aber mit guter Wahrscheinlichkeit) m = 5 festgelegt. Wir berechnen nun die Werte Mg f¨ ur 1 ≤ j ≤ 5 (siehe Abbildung 2.2). F¨ ur jedes j sehen wir uns einen Wert von Mg an, der m¨oglichst nahe bei 0.065 liegt. Diese 5 Werte bestimmen, wie das Schl¨ usselwort geraten wird. Ein wahrscheinlicher Schl¨ ussel, der sich aus Abbildung 2.2 ergibt, ist JANET. Dies ist in der Tat korrekt, denn es dechiffriert den Ausgangstext zu
30
Vorlesungsskript von E. Best / Stand: 19. September 2005 The almond tree was in tentative blossom. The days were longer, often ending with magnificent evenings of corrugated pink skies. The hunting season was over, with hounds and guns put away for six months. The vineyards were busy again as the well-organized farmers treated their vines and the more lackadaisical neighbors hurried to do the pruning they should have done in November.
j 1
.035 .038 .069 .045 .048 .066 .045 .033 .034 .037
2 3 4 5
.031 .038 .044 .046 .029 .035 .032 .029 .031 .036
.036 .045 .032 .042 .042 .038 .033 .036 .035 .045
.037 .036 .035 .037 .043 .036 .038 .040 .044 .032
.035 .030 .044 .032 .044 .045 .060 .044 .047 .029
Werte der Mg (y (j) ) .039 .028 .028 .042 .043 .036 .034 .036 .033 .034 .037 .032 .034 .038 .035 .027 .035 .034 .034 .034 .034 .037 .050 .034 .037 .043 .038 .044 .072 .037
.048 .033 .029 .034 .032 .034 .050 .034 .042 .027
.061 .049 .031 .043 .049 .036 .033 .039 .037 .031
.039 .043 .042 .032 .035 .035 .033 .044 .033 .048
.032 .042 .045 .026 .031 .046 .043 .038 .032 .036
.040 .036 .040 .047 .035 .040 .040 .035 .036 .037
Abbildung 2.2: Berechnung der Mg im Beispiel
2.5
Kryptanalyse der Hill-Chiffre
Die Hill-Chiffre mittels einer Ciphertext-only-Attacke zu brechen, kann sehr schwierig sein. Eine KnownPlaintext-Attacke (bzw. eine Chosen-Plaintext-Attacke) f¨ uhrt dagegen zum Erfolg. Wir nehmen zun¨achst an, dass Oscar schon den Wert von m kennt. Oscar hat bzw. generiert wenigstens m verschiedene Klartext/Chiffretextpaare: x(j) y (j)
= =
(j)
(j)
(x1 , . . . , xm ) (j) (j) (y1 , . . . , ym ), (j)
(j)
mit 1 ≤ j ≤ m und y (j) = eK (x(j) ) f¨ ur alle j. Mit den zwei (m, m)-Matrizen X = (xi ) und Y = (yi ) hat man dann die Matrixgleichung Y = X·K, wobei K der (unbekannte) Schl¨ ussel ist. Falls X invertierbar ist, kann Oscar K = X −1 ·Y berechnen und die Chiffre knacken. Falls X nicht invertierbar ist, muss Oscar weitere x/y-Paare bekommen bzw. generieren. Beispiel: Angenommen, wir wissen, dass in einer Hill-Chiffre mit Blockl¨ange m = 2 der Klartext friday in den Chiffretext PQCFKU u ¨bergeht. Daraus folgt: eK (5, 17) = (15, 16) und eK (8, 3) = (2, 5) und eK (0, 24) = (10, 20). Aus den ersten beiden Klartext/Chiffretextpaaren leitet man die Matrixgleichung µ ¶ µ ¶ 15 16 5 17 = ·K 2 5 8 3
Kryptographie - Sommersemester 2004
31
ab. Die Determinante der zweiten Matrix ist 19, letztere ist also wegen ggT(19, 26) = 1 invertierbar, und man rechnet aus: µ
5 8
17 3
¶−1
=
µ
9 2
1 15
¶
.
Es ergibt sich: K =
µ
9 2
1 15
¶ µ 15 · 2
16 5
¶
=
µ
7 8
19 3
¶
.
Die Probe mit dem dritten Klartext/Chiffretextpaar best¨atigt dieses K als Schl¨ ussel. Wenn Oscar die Blockl¨ange m nicht kennt, kann er m = 2, 3, . . . versuchen, bis der Schl¨ ussel gefunden ist. Um ein einmal ausgerechnetes (und als tats¨achliche Blockl¨ange vermutetes) m zu verifizieren, bietet es sich an, wenn m¨oglich, weitere Klartext/Chiffretextpaare zu generieren und zur Best¨atigung (oder Widerlegung) der Hypothese zu pr¨ ufen.
2.6
Kryptanalyse einer Stromchiffre
Wir betrachten die allgemeine Rekurrenzgleichung zi+m =
m−1 X
cj zi+j mod 2,
j=0
f¨ ur alle i ≥ 1,
(2.2)
wobei die m Anfangswerte (z1 , . . . , zm ) = (k1 , . . . , km ) sind und die Konstanten c0 , . . . , cm−1 ebenso wie die k1 , . . . , km herausgefunden werden m¨ ussen. Wenn Oscar einen Klartext-Bitstring x1 . . . xn und einen entsprechenden Chiffretext-Bitstring y1 . . . yn besitzt, kann er die Schl¨ ussel-Bits z1 . . . zn mittels zi = (xi + yi ) mod 2 errechnen. Wenn Oscar auch die Zahl m kennt, muss er nur noch die Konstanten c 0 , . . . , cm−1 herausfinden (angenommen nat¨ urlich, dass x1 das anf¨angliche Bit des Klartextes ist, und nicht der Anfang irgendeines Zwischenst¨ ucks). F¨ ur jedes i ≥ 1 ist aber die Gleichung (2.2) eine lineare Gleichung in m Unbekannten. Wir brauchen also nur n ≥ 2m, um aus dem bekannten Klartext/Chiffretextpaar m lineare Gleichungen in m Unbekannten extrahieren zu k¨onnen. Wenn dieses Gleichungssystem eine L¨osung (modulo 2) hat (und das ist beweisbar immer der Fall, wenn m der Grad der Rekurrenz (2.2) ist), kann es in den Unbekannten c0 , . . . , cm−1 gel¨ost werden. Damit ist die Chiffre gebrochen. Beispiel: Nehmen wir an, dass Oscar das Klartext/Chiffretextpaar in den beiden ersten Zeilen der folgenden Tabelle erh¨alt oder abh¨ort. Daraus kann er den Schl¨ usselstrom in der dritten Zeile berechnen: Klartext x: Chiffretext y: Schl¨ usselstrom z:
011001111111000 101101011110010 110100100001010
Nehmen wir weiter an, dass Oscar bekannt ist, dass ein Schieberegister der L¨ange 5 verwendet worden ist. Damit weiß Oscar, dass die ersten 10 Bits der o.a. Strings gen¨ ugen, um die c0 , . . . , c4 auszurechnen. Konkret
32
Vorlesungsskript von E. Best / Stand: 19. September 2005
stellt Oscar die folgende Matrixgleichung auf: 1 1 (0, 1, 0, 0, 0) = (c0 , c1 , c2 , c3 , c4 ) · 0 1 0
1 0 0 1 1 0 0 0 0 1
1 0 0 0 0 1 1 0 0 0
(der Vektor links ist z ab der sechsten Position, die Spalten der Matrix sind z ab den Positionen 1, 2, 3, 4, 5). Es gilt (modulo 2):
1 1 0 1 0
1 0 0 1 1 0 0 0 0 1
1 0 0 0 0 1 1 0 0 0
−1
=
0 1 0 0 1
1 0 0 0 0 0 1 0 0 1
0 1 1 0 0 1 1 1 1 0
Damit erh¨alt man:
(c0 , c1 , c2 , c3 , c4 ) = (0, 1, 0, 0, 0) · also wurde die Rekurrenz zi+5 = (zi + zi+3 ) mod 2 zur Verschl¨ usselung benutzt.
0 1 0 0 1
1 0 0 0 0 0 1 0 0 1
0 1 1 0 0 1 1 1 1 0
= (1, 0, 0, 1, 0),
Kapitel 3
DES und lineare Kryptanalyse DES (Digital Encryption Standard) war seit ca. 1975 bis ca. 1998 der“ Standard der digitalen Verschl¨ usse” lung. Es handelt sich um eine spezielle Blockchiffre. Aufgrund verschiedener Vorbehalte (auf die wir noch n¨aher eingehen) hat es in j¨ ungster Zeit eine Entwicklung zur Ersetzung von DES durch ein Nachfolge” modell“ gegeben. Diese neue Verschl¨ usselungsmethode heißt AES (Advanced Encryption Standard) und unterscheidet sich in einigen Details von DES, unter anderem in der (angenommenen bzw. erhofften) wesentlich verbesserten Angriffssicherheit. In diesem Kapitel werden DES und eine Angriffsmethode (die lineare Kryptanalyse) beschrieben, die insbesondere bei DES bereits einen gewissen Erfolg gehabt hat. AES wird in Kapitel 4 beschrieben.
3.1
SPN: ein Substitutions-/Permutationsnetzwerk
Ein Schwachpunkt aller Kryptosysteme ist die M¨oglichkeit, von Regelm¨aßigkeiten des Chiffretextes auf Regelm¨aßigkeiten des Klartextes r¨ uckschließen zu k¨onnen. Im Extremfall (optimale Verschl¨ usselung) w¨are der Chiffretext ein Zufallswort, aber dann w¨are nat¨ urlich auch u ¨berhaupt keine Dechiffrierung m¨oglich. Um die Spuren vom Chiffretext zum Klartext m¨oglichst stark zu verwischen, kann man auf die Idee kommen, Verschl¨ usselungen zu iterieren: Man verschl¨ usselt zun¨achst einen Klartext x, erh¨alt einen Chiffretext w (1) , verschl¨ usselt diesen weiter, erh¨alt danach einen Chiffretext w (2) , usw., bis nach N Verschl¨ usselungen der erhaltene Chiffretext w (N ) schließlich der endg¨ ultige (zu kommunizierende) Chiffretext y ist. Nicht alle Kryptosysteme eignen sich (alleine) zu solchem Iterieren. Wenn zum Beispiel im ersten Schritt die Verschiebungschiffre angewendet wird und im zweiten Schritt nochmals, dann ist nichts gewonnen, denn zwei Verschiebungen k¨onnen durch eine einzige ausgedr¨ uckt werden. Anders verh¨alt es sich mit Permutationen und Substitutionen: zwei Permutations- bzw. Substitutionsschritte nacheinander lassen sich nicht unbedingt als ein einziger Schritt ausdr¨ ucken, insbesondere dann nicht, wenn verschiedene Teile eines Textes permutiert werden. Das Folgende ist eine abstrakte, etwas genauere Beschreibung einer iterierten Chiffre. Dabei sind x der 33
34
Vorlesungsskript von E. Best / Stand: 19. September 2005
Klartext, y der Chiffretext: w(0) w(1) w(2) .. .
:= := :=
w(N −1) w(N ) y
:= g(w (N −2) , K (N −1) ) := g(w (N −1) , K (N ) ) := w(N ) .
x g(w (0) , K (1) ) g(w (1) , K (2) )
N ist die Anzahl der Iterationen (genannt Runden), K (1) , . . . , K (N ) sind die Rundenschl¨ ussel (subkeys), die sich nach gewissen Vorschriften aus einem globalen Schl¨ ussel K ergeben, und g ist die pro Runde angewendete Verschl¨ usselungsfunktion (die allgemeiner auch mit dem Rundenschl¨ ussel K (r) variieren k¨onnte, d.h., in (r) Runde r h¨atte man g statt g, f¨ ur 1 ≤ r ≤ N ). (0) Der Anfangszustand w ist als der Klartext definiert; der Zustand geht danach der Reihe nach in w (1) , . . . , w(N ) u ussel) abh¨angt; und ¨ber, wobei der jeweils aktuelle Zustand vom vorherigen (und vom aktuellen Rundenschl¨ der Chiffretext ist schließlich als der letzte Zustand w (N ) definiert. Damit das Resultat dechiffriert werden kann, muss diese Iteration r¨ uckg¨angig gemacht werden k¨onnen, die Funktion(en) g m¨ ussen also injektiv in ihrem ersten Argument sein. D.h., es muss eine Funktion g −1 mit g −1 (g(w, y), y) = w (f¨ ur alle w, y) existieren. Dechiffrierung geschieht dann folgendermaßen: w(N ) w(N −1) .. .
:= :=
w(1) w(0) x
:= g −1 (w(2) , K (2) ) := g −1 (w(1) , K (1) ) = w(0) .
y g −1 (w(N ) , K (N ) )
Jetzt soll eine einfache Chiffre beschrieben werden, die nach diesem Muster aufgebaut ist und schon relativ nahe bei AES liegt. Es seien l, m positive ganze Zahlen. Klartext und Chiffretext sind bin¨are Vektoren mit Blockl¨ange lm = l·m. Das SPN-Kryptosystem (Substitutions-/Permutationsnetzwerk) benutzt zwei Komponenten π S und πP : πS :
{0, 1}l → {0, 1}l
πP :
{1, . . . , lm} → {1, . . . , lm}.
Die Indices S und P stehen f¨ ur Substitution“ bzw. Permutation“ Die Permutation πS wird auch eine S” ” Box genannt (S-Boxen m¨ ussen aber nicht unbedingt Permutationen sein; wir werden sp¨ater andere Beispiele kennen lernen). Sie wird zur Ersetzung von l konsekutiven Bits benutzt, w¨ahrend die Permutation πP zur Reihenfolgen¨anderung von lm Bits eingesetzt wird. Dabei wird ein Bitstring x = x1 . . . xlm der L¨ange lm als eine Folge x(1) , . . . , x(m) von m Bitstrings x(i) = x(i−1)l+1 . . . xil (1 ≤ i ≤ m) aufgefasst. Beispiel: mit l = m = 4 wird der String x = 0010 | {z } 1011 | {z } 0111 | {z } | {z } 0110 x(1)
x(2)
x(3)
x(4)
der L¨ange 16 als eine Folge von m = 4 Strings x(1) , . . . , x(4) der L¨ange jeweils l = 4 aufgefasst, hier auch angedeutet durch etwas Zwischenraum zwischen den vier Teilstrings.
Kryptographie - Sommersemester 2004
35
Kryptosystem 3.1.1 SPN: Substitutions-/Permutationsnetzwerk Mit N ∈ N\{0} und l, m, πS , πP wie oben seien P = C = {0, 1}lm und K ⊆ ({0, 1}lm )N +1 , d.h., K ist eine Menge von Rundenschl¨ usseln K 1 , . . . , K N +1 (deren Generierung sp¨ater algorithmisch spezifiziert wird). Ein Klartext x wird dabei mit Hilfe des folgenden Algorithmus verschl¨ usselt: ↓ ↑
proc SPN(x, y ); begin w 0 := x; for r := 1 to N − 1 do ur := wr−1 ~ K r ; r for i := 1 to m do v(i) := πS (ur(i) ) endfor; wr := (vπr P (1) , . . . , vπr P (lm) ) endfor; uN := wN −1 ~ K N ; N for i := 1 to m do v(i) := πS (uN (i) ) endfor; N N +1 y := v ~ K ; return(y) end 3.1.1 Dieser Algorithmus ist insofern Input/Output-symmetrisch, als in der letzten Runde π P nicht angewendet wird. Als Konsequenz daraus kann der Algorithmus so, wie er definiert ist, auch f¨ ur die Entschl¨ usselung angewendet werden, wenn die S-Boxen durch ihre Inverse ersetzt werden und die Schl¨ usselgenerierung entsprechend modifiziert wird. Die erste und die letzte Operation in diesem Algorithmus sind ~-Operationen mit Hilfe der Schl¨ ussel K 1 bzw. K N +1 . Dies nennt man whitening, und es soll einen Angreifer davon abhalten, Ver- bzw. Entschl¨ usselung auch nur zu beginnen, wenn der Schl¨ ussel unbekannt ist.
3.2
Ein Beispiel
Es seien l = m = N = 4. πS ist in der folgenden Tabelle definiert. Dabei (und auch sp¨ater) codieren wir 4-Bit-Folgen z hexadezimal wie in den ersten beiden Zeilen: k πS (k)
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0 E
1 4
2 D
3 1
4 2
5 F
6 B
7 8
8 3
9 A
A 6
B C
C 5
D 9
E 0
F 7
(3.1)
Die Permutation πP ist folgendermaßen definiert1 : z πP (z)
1 1
2 3 5 9
4 13
5 6 7 2 6 10
8 14
9 3
10 11 12 7 11 15
13 4
14 8
15 12
16 16
Abbildung 3.1 zeigt dieses SPN. Die 16 S-Boxen wurden Sir genannt (1 ≤ i, r ≤ 4), um sp¨ater auf sie verweisen zu k¨onnen. Alle beinhalten die Permutation πS , die oben definiert wurde. 1 Diese
spezielle Permutation heißt auch der perfect shuffle, weil sie der idealen Mischsituation“ eines Kartendecks entspricht. ”
36
Vorlesungsskript von E. Best / Stand: 19. September 2005
Index
1
2
3
4
5
6
7
8
9
10 11 12
13 14 15 16
x K1 u1 S11
S21
S31
S41
S32
S42
S33
S43
S34
S44
v1 w1 K2 u2 S12
S22
v2 w2 K3 u
3 S13
S23
v3 w3 K4 u
4 S14
S24
v4 K5 y Abbildung 3.1: Ein Substitutions-/Permutationsnetzwerk
Kryptographie - Sommersemester 2004
37
Um die Definition zu vervollst¨andigen, muss noch beschrieben werden, wie die N + 1 Rundenschl¨ ussel K 1 , . . . , K N +1 – jeder davon ein 16-Bit-Wort – gewonnen werden. Eine (f¨ ur praktische Anwendungen allerdings etwas zu simple) M¨oglichkeit ist die Vorgabe eines l¨angeren Bitstrings (z.B. 32 Bits, K = k1 . . . k32 ) als (Global-) Schl¨ ussel und die Definition der K i als Ausschnitte davon (z.B. K r als der 16-Bit-String, der von k4r−3 bis k4r+12 reicht). Mit Schl¨ ussel K wie in der folgenden Tabelle ergeben sich die f¨ unf Rundenschl¨ ussel wie folgt: K K1 K2 K3 K4 K5
= 0011 1010 1001 0100 1101 0110 0011 1111 = 0011 1010 1001 0100 = 1010 1001 0100 1101 = 1001 0100 1101 0110 = 0100 1101 0110 0011 = 1101 0110 0011 1111 .
Wir wenden das soeben definierte SPN an, um den Klartext x
= 0010 0110 1011 0111
zu verschl¨ usseln: x = w0 K1 1 0 u = w ~ K1 v 1 = π S Â u1 w 1 = πP Â v 1 K2 2 1 u = w ~ K2 v 2 = π S Â u2 w 2 = πP Â v 2 K3 3 2 u = w ~ K3 v 3 = π S Â u3 w 3 = πP Â v 3 K4 4 3 u = w ~ K4 v 4 = π S Â u4 K5 4 y = v ~ K5
= = = = = = = = = = = = = = = = = =
0010 0110 1011 0111 0011 1010 1001 0100 0001 1100 0010 0011 0100 0101 1101 0001 0010 1110 0000 0111 1010 1001 0100 1101 1000 0111 0100 1010 0011 1000 0010 0110 0100 0001 1011 1000 1001 0100 1101 0110 1101 0101 0110 1110 1001 1111 1011 0000 1110 0100 0110 1110 0100 1101 0110 0011 1010 1001 0000 1101 0110 1010 1110 1001 1101 0110 0011 1111 1011 1100 1101 0110.
Um eine S-Box als eine Tabelle in Hardware zu implementieren, ben¨otigt man l2l Bits, weil 2l Werte (letzte Zeile der Tabelle von πS ) a` l Bits gespeichert werden m¨ ussen. 4-Bit-S-Boxen (wie hier) k¨onnen sehr gut in Hardware implementiert werden. Andererseits ist dieses SPN zu klein“, um realistisch zu sein. Realistischere ” iterierte Blockchiffren wie AES sind insgesamt gr¨oßer“, d.h., sie haben mehr Bits und mehr Runden. AES ” benutzt 8-Bit-S-Boxen, die ebenfalls noch gut in Hardware implementiert werden k¨onnen. Schon 16-BitS-Boxen verlangen 16·216 = 220 Bits, also 217 Bytes, d.h., etwa 128 Kilobytes (in Hardware). Das eben beschriebene SPN ist unsicher, vor allen Dingen weil die Schl¨ usselgr¨oße (32 Bits) eine Brute-Force-Attacke erlaubt. AES hat eine Schl¨ usselgr¨oße von mindestens 128 Bits, eine Mindestrundenanzahl von 10 und, wie
38
Vorlesungsskript von E. Best / Stand: 19. September 2005
gesagt, eine S-Box-Gr¨oße von 8 Bits. Viele weitere Variationen sind m¨oglich. Beispielsweise k¨onnte man statt einer einzigen auch verschiedene S-Boxen benutzen. Dies wird im DES realisiert: dort werden in jeder Runde acht unterschiedliche S-Boxen eingesetzt; siehe Abschnitt 3.4.
3.3
Lineare Kryptanalyse
3.3.1
Ein wenig Wahrscheinlichkeitstheorie
Definition 3.3.1 Zufallsvariable Eine diskrete Zufallsvariable X besteht aus einer endlichen Menge X und einer auf X definierten Wahrscheinlichkeitsverteilung. Die Wahrscheinlichkeit, dass X den Wert x ∈ X annimmt, wird mit P[X = x] bezeichnet. Wenn X ausP dem Kontext bekannt ist, wird P[X = x] manchmal als P[x] abgek¨ urzt. Es m¨ ussen 3.3.1 ∀x ∈ X : 0 ≤ P[x] und ( x∈X P[x]) = 1 gelten.
Beispielsweise kann der Wurf einer M¨ unze als eine Zufallsvariable definiert werden, die auf der Menge {Kopf, Zahl} definiert ist. Die zugeh¨orige Wahrscheinlichkeitsverteilung ist P[Kopf] = P[Zahl] = 12 . Wenn X eine auf X definierte Zufallsvariable ist und E ⊆ X gilt, dann ist die Wahrscheinlichkeit, dass X einen Wert x in E annimmt, gleich: X P[x ∈ E] = P[x]. (3.2) x∈E
E wird auch Ereignis genannt. Beispiel: Der Zufallswurf zweier W¨ urfel kann durch eine Zufallsvariable Z beschrieben werden, die Werte 1 f¨ ur alle (i, j) ∈ Z. Wir in der Menge Z = {1, 2, 3, 4, 5, 6} × {1, 2, 3, 4, 5, 6} annimmt, wobei P[(i, j)] = 36 betrachten die Summe der geworfenen Augen. Jede m¨ogliche Summe (von 2 bis 12) definiert ein Ereignis. Beispielweise definieren die m¨oglichen Summen 2, 3, 4 folgende Ereignisse: Summe 2: Summe 3: Summe 4:
Ereignis {(1, 1)} Ereignis {(1, 2), (2, 1)} Ereignis {(1, 3), (2, 2), (3, 1)}.
Es gilt daher P[2] =
1 36 ,
P[3] =
2 36
=
1 18
und P[4] =
3 36
=
1 12 .
Definition 3.3.2 Verbund- und bedingte Wahrscheinlichkeit Seien X und Y Zufallsvariablen, die auf endlichen Mengen X bzw. Y definiert sind. Die Verbundwahrscheinlichkeit P[x, y] ist die Wahrscheinlichkeit daf¨ ur, dass X den Wert x und Y den Wert y annehmen. Die bedingte Wahrscheinlichkeit P[x|y] ist die Wahrscheinlichkeit, dass X den Wert x annimmt, sofern Y den Wert y annimmt. Die Zufallsvariablen X und Y heißen unabh¨ angig, wenn f¨ ur alle x ∈ X und y ∈ Y gilt: P[x, y] = P[x]·P[y]. 3.3.2 Verbund- und bedingte Wahrscheinlichkeiten erf¨ ullen die Formeln P[x, y] = P[x|y]·P[y] und P[y, x] = P[y|x]·P[x]. Wegen P[x, y] = P[y, x] ergibt sich daraus der folgende
Kryptographie - Sommersemester 2004
39
Satz 3.3.3 Satz von Bayes Wenn P[y] > 0, dann gilt P[x|y] =
P[x]·P[y|x] . P[y]
Korollar 3.3.4 X und Y sind unabh¨ angige Zufallsvariablen genau dann, wenn P[x|y] = P[x] f¨ ur alle x ∈ X und y ∈ Y gilt. 3.3.4 Beispiel: Beim Wurf zweier W¨ urfel ist die Wahrscheinlichkeit, dass ein Pasch geworfen wird, 61 . Das sieht man einerseits, wenn man die beiden W¨ urfel als eine einzige Zufallsvariable mit 36 m¨oglichen Werten 6 = 61 gilt, andererseits auch, wenn man die beiden W¨ urfel als zwei getrennte Zufallsvariablen ansieht, weil 36 ansieht, weil die Wahrscheinlichkeit, dass der erste davon irgendeine Zahl liefert, 1 ist, und die bedingte Wahrscheinlichkeit, dass der zweite die gleiche Zahl liefert, 16 ist. Weiteres Beispiel: Sei X eine Zufallsvariable u urfel, also mit Werten in ¨ber die Summe der beiden W¨ {2, 3, . . . , 12}. Sei Y eine Zufallsvariable mit Werten in der zweielementigen Menge {NichtPasch, Pasch}. Wie eben gesehen, sind die Wahrscheinlichkeiten P[Pasch] = 61 und daher P[NichtPasch] = 56 . Die bedingte 1 1 , P[Pasch, 4] = 36 und P[4] = 12 . Wahrscheinlichkeit P[Pasch|4] ist gleich 31 , weil P[Pasch|4] = P[Pasch,4] P[4] 1 Genauso sieht man: P[4|Pasch] = 6 , und der Satz von Bayes wird mit Hilfe von P[Pasch|4]·P[4] =
1 = P[Pasch]·P[4|Pasch] 36
best¨atigt. Wir spezialisieren uns jetzt auf paarweise voneinander unabh¨angige bin¨are Zufallsvariablen X1 , X2 , . . ., d.h., die Wertemenge der Xi ist {0, 1}. Die Zahlen pi seien definiert durch: pi 1 − pi
= =
P[Xi = 0] P[Xi = 1], f¨ ur i = 1, 2, . . ..
Es gelte i 6= j. Die Unabh¨angigkeit von Xi und Xj impliziert: P[Xi P[Xi P[Xi P[Xi
= 0, Xj = 0, Xj = 1, Xj = 1, Xj
= 0] = 1] = 0] = 1]
= = = =
p i pj pi (1 − pj ) (1 − pi )pj (1 − pi )(1 − pj )
Wir betrachten die diskrete Zufallsvariable Xi ~ Xj . Diese hat folgende Wahrscheinlichkeitsverteilung: P[(Xi ~ Xj ) = 0] P[(Xi ~ Xj ) = 1]
= =
pi pj + (1 − pi )(1 − pj ) pi (1 − pj ) + (1 − pi )pj .
Der Bias (Verzerrung) von Xi ist definiert als 1 ²i = p i − . 2
40
Vorlesungsskript von E. Best / Stand: 19. September 2005
Es gelten nat¨ urlich −
1 1 1 1 ≤ ²i ≤ , P[Xi = 0] = + ²i und P[Xi = 1] = − ²i , f¨ ur i = 1, 2, . . .. 2 2 2 2
Wir werden die ~-Operation iteriert anwenden. Dazu ist anzumerken, dass sich ein iteriertes ~ nach folgender Regel berechnet: falls in den Argumenten eine gerade Anzahl von 1 en vorkommt, ist der Wert 0, sonst 1. Zum Beispiel gilt (1 ~ 0 ~ 1) = (0 ~ 0 ~ 0 ~ 0) = 0 und (1 ~ 0 ~ 1 ~ 0 ~ 1) = (1 ~ 0 ~ 1 ~ 1) = 1. Sei f¨ ur i1 < i2 < . . . < ik der Bias der Zufallsvariablen Xi1 ~ Xi2 ~ . . . ~ Xik mit ²i1 ,i2 ,...,ik bezeichnet. Es gilt ²i1 ,i2 = 2²i1 ²i2 , denn beide Terme sind gleich 2pi1 pi2 − pi1 − pi2 + 21 , wie man leicht ausrechnen kann. Genauso gilt ²i1 ,i2 ,i3 = 4²i1 ²i2 ²i3 , usw., und allgemein: Lemma 3.3.5 Piling-up-Lemma Es sei ²i1 ,...,ik der Bias der Zufallsvariablen Xi1 ~ . . . ~ Xik . Dann gilt ²i1 ,...,ik = 2k−1 Πkj=1 ²ij . Beweis: (Skizze.) Sehr leicht durch Induktion u 3.3.5 ¨ber k. Als Folge hiervon ist der Bias ²i1 ,...,ik der Zufallsvariablen Xi1 ~ . . . ~ Xik schon dann 0, wenn ein einziges der ²ij Null ist. Lemma 3.3.5 gilt tats¨achlich nur dann, wenn die Zufallsvariablen voneinander unabh¨angig sind. Um dies zu verdeutlichen, nehmen wir beispielsweise ²1 = ²2 = ²3 = 14 an. Dann gilt ²1,2 = ²1,3 = ²2,3 = 18 nach Lemma 3.3.5. Betrachten wir die Zufallsvariable X1 ~ X3 = (X1 ~ X2 ) ~ (X2 ~ X3 ). W¨aren (X1 ~ X2 ) und (X2 ~ X3 ) unabh¨angig voneinander (was sie aber nicht sind), erg¨abe Lemma 3.3.5 den 1 Wert ²1,3 = 2( 18 )2 = 32 , im Widerspruch zu ²1,3 = 81 .
3.3.2
Lineare Approximation von S-Boxen
Wir betrachten eine S-Box πS : {0, 1}m → {0, 1}n . πS muss nicht unbedingt eine Permutation sein; auch kann m 6= n gelten. Ein Eingabetupel soll X = (x1 , . . . , xm ) geschrieben werden. X sei zuf¨allig und gleichverteilt aus {0, 1}m , was bedeutet, dass jede Koordinate xi eine Zufallsvariable Xi u ¨ber {0, 1} mit Bias 0 ist, wobei je zwei dieser Variablen voneinander unabh¨angig sind. Ein Ausgabetupel werde als Y = (y1 , . . . , yn ) geschrieben. Wieder beschreibt jede Koordinate eine Zufallsvariable Yj u ¨ber {0, 1}, wobei die Frage nach dem Bias entsteht. Die Variablen Yj sind im Normalfall weder unabh¨angig voneinander noch unabh¨angig von den Xi . Zun¨achst gilt: ½ 0 falls (y1 , . . . , yn ) 6= πS (x1 , . . . , xm ) P[X1 = x1 , . . . , Xm = xm , Y1 = y1 , . . . , Yn = yn ] = 2−m falls (y1 , . . . , yn ) = πS (x1 , . . . , xm ). Die letzte Zeile gilt, weil die Wahrscheinlichkeit, dass die X1 , . . . , Xm die Werte x1 , . . . , xm annehmen, gleich 2−m ist. Wir berechnen nun den Bias einer Zufallsvariablen der folgenden Form: X i 1 ~ X i 2 ~ . . . ~ X i k ~ Y j1 ~ Y j2 ~ . . . ~ Y jl
Kryptographie - Sommersemester 2004
X1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
X2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
X3 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
X4 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Y1 1 0 1 0 0 1 1 1 0 1 0 1 0 1 0 0
Y2 1 1 1 0 0 1 0 0 0 0 1 1 1 0 0 1
Y3 1 0 0 0 1 1 1 0 1 1 1 0 0 0 0 1
41
Y4 0 0 1 1 0 1 1 0 1 0 0 0 1 1 0 1
X1 ~ X 4 ~ Y 2 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 1
X3 ~ X 4 ~ Y 1 ~ Y 4 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1
Abbildung 3.2: Werte von Xi , Yj , sowie von X1 ~ X4 ~ Y2 und X3 ~ X4 ~ Y1 ~ Y4 im Beispiel. allgemein. Beispiel: Betrachten wir die S-Box πS aus Abschnitt 3.2 (m = n = 4). In Abbildung 3.2 sind die m¨oglichen Werte der acht Zufallsvariablen X1 , . . . , X4 , Y1 , . . . , Y4 angegeben, zusammen mit den Werten der Variablen X1 ~ X4 ~ Y2 und X3 ~ X4 ~ Y1 ~ Y4 . Die Wahrscheinlichkeiten und die Verzerrungen ²1 , ²2 der beiden Variablen X1 ~X4 ~Y2 und X3 ~X4 ~Y1 ~Y4 sind: P[(X1 ~ X4 ~ Y2 ) = 0]
=
P[(X3 ~ X4 ~ Y1 ~ Y4 ) = 0]
=
8 16 2 16
und
²1
=
0
und
²2
=
− 83 .
Dazu sind einfach die Stellen, an denen die Variablen 0 werden, abzuz¨ahlen, und es ist durch 16 zu teilen. Im Prinzip kann auf diese Weise eine Tabelle aller 28 = 256 auf diese Weise gebildeter Zufallsvariablen zusammengestellt werden. Dazu wird jede Variable in der Form a1 X 1 ~ . . . ~ a 4 X 4 ~ b 1 Y1 ~ . . . ~ b 4 Y4
(3.3)
dargestellt, wobei die ai und bi Werte aus {0, 1} sind. Zum Beispiel ist a1 =1, a2 =0, a3 =0, a4 =1, b1 =0, b2 =1, b3 =0, b4 =0 f¨ ur die Variable X1 ~ X4 ~ Y2 . Die ai und die bi k¨onnen als jeweils ein hexadezimales Zeichen a bzw. b dargestellt werden. (Oben ist dann 1001 = 9 f¨ ur a und 0100 = 4 f¨ ur b.) Diese beiden Zeichen heißen die Eingabesumme bzw. die Ausgabesumme. So hat man eine Bijektion zwischen Paaren von Hexadezimalzeichen und Zufallsvariablen der Form (3.3). Die lineare Approximation einer S-Box ist diejenige Tabelle, die f¨ ur Eingabesumme a (aufgetragen in Zeilen)
42
Vorlesungsskript von E. Best / Stand: 19. September 2005
und Ausgabesumme b (aufgetragen in Spalten), z¨ahlt, wie oft die (a, b) entsprechende Zufallsvariable den Wert 0 annimmt. F¨ ur das Beispiel ist diese Tabelle in Abbildung 3.3 gezeigt. Es sei NL (a, b) der zu a und b geh¨orige Eintrag in dieser Tabelle. (Oben haben wir explizit NL (9, 4) = 8 und NL (3, 9) = 2 berechnet.) Der Bias einer zu (a, b) geh¨origen Zufallsvariablen der Form (3.3) berechnet sich offenbar folgendermaßen ²(a, b) =
NL (a, b) − 8 . 16
Beispielsweise sind ²1 = ²(9, 4) =
a 0 1 2 3 4 5 6 7 8 9 A B C D E F
b: | 0 16 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
1 8 8 8 8 10 6 10 6 8 8 12 12 6 10 10 6
8−8 16
= 0 und ²2 = ²(3, 9) =
2 3 4 5 8 8 8 8 6 6 8 8 6 6 8 8 8 8 8 8 8 6 6 4 6 8 6 8 6 12 10 8 8 10 10 4 8 8 8 8 6 6 8 8 6 10 4 8 8 4 12 8 12 6 6 8 10 8 6 12 10 8 6 4 4 6 6 8
6 7 8 9 8 8 8 8 6 14 10 10 6 6 8 8 8 8 10 2 6 8 8 6 12 10 6 8 8 10 8 6 10 8 6 8 8 8 6 10 6 6 4 8 10 6 10 10 12 8 8 8 10 8 10 8 8 10 4 6 8 10 6 8 10 8 8 6
2−8 16
A 8 8 10 6 8 4 10 10 10 6 8 8 10 10 8 12
= − 83 . B 8 8 10 6 10 10 12 8 6 10 8 8 12 8 6 6
C 8 10 8 10 10 8 6 12 10 8 10 8 8 10 4 6
D E F 8 8 8 10 8 8 8 2 10 10 6 6 4 10 8 6 6 8 8 8 8 10 8 10 6 6 2 12 10 6 10 8 8 8 8 8 10 8 6 8 8 10 10 6 8 8 10 8
Abbildung 3.3: Die lineare Approximationstabelle von πS aus Abschnitt 3.2.
3.3.3
Ein linearer Angriff auf SPN
Wenn man einen 16 Bit langen Schl¨ ussel mit Hilfe von Brute Force herausfinden m¨ochte, ben¨otigt man 215 = 21 ·216 Versuche im Mittel. Kann das Problem auf das Finden (durch Brute Force) von zwei 8-BitSchl¨ usseln heruntergebrochen werden, ben¨otigt man im Durchschnitt nur 28 = 2· 12 ·28 Versuche. (U.a.) diese Idee macht sich die lineare Kryptanalyse zunutze. Die Vorgehensweise wird am Beispiel des Abschnitts 3.2 illustriert. Wir w¨ahlen f¨ ur die Attacke einige Zufallsvariablen, die in bestimmter Weise mit den Zwischenzust¨anden ui und v i des Beispiel-SPNs zusammenh¨angen. Abbildung 3.4 zeigt die relevanten Bereiche von Abbildung 3.1 mit Hilfe von gerichteten Kanten. Relevant sind die S-Boxen S21 , S22 , S23 und S43 , und die beiden SBoxen S24 , S44 dienen zur Identifizierung von Schl¨ usselbits; wir wollen den letzten Rundenschl¨ ussel, K 5 , teilweise herausfinden. Die folgende Tabelle beschreibt die gew¨ahlten Zufallsvariablen, zusammen mit den
Kryptographie - Sommersemester 2004
43
Verzerrungen einiger relevanter S-Boxen: S-Box
Zufallsvariable
Bias
S21
T1 = U51 ~ U71 ~ U81 ~ V61
1 4
S22 S23
T2 = U62 ~ V62 ~ V82
− 41
3 3 3 T4 = U14 ~ V14 ~ V16
− 41
− 41
T3 = U63 ~ V63 ~ V83
S43
Die Verzerrungen in der letzten Spalte wurden dabei so ausgerechnet, wie es in Abschnitt 3.3.2 beschrieben wurde. Diese Kombination von S-Boxen und Zufallsvariablen wurde so gew¨ahlt, dass 1. (absolut gesehen) m¨oglichst hohe Verzerrungen erhalten werden, denn auf diese Weise gibt es eine Chance, dass der Bias auch bei Hintereinanderschalten“ noch sp¨ urbar von 0 abweicht; ” 2. das ~ aller Tj einen Ausdruck u usseltext und Teile von ¨brig l¨asst, der nur Variablen aus Klartext, Schl¨ u4 (d.h., der Eingabe f¨ ur die letzte Runde) enth¨alt. Die Variablen T1 –T4 sind nicht unabh¨angig. Allerdings geht man bei der linearen Attacke ( in erster N¨ahe” rung“) davon aus, dass sie sich ungef¨ahr unabh¨angig verhalten. Unter dieser vereinfachenden Annahme kann man den Bias der Zufallsvariablen T1 ~ T 2 ~ T 3 ~ T 4
1 3 nach dem Piling-Up-Lemma ausrechnen: 23 · 41 ·( −1 4 ) = − 32 . Man darf dann hoffen, dass der (immer nur 1 usselbits f¨ uhrt. ziemlich deutliche) Bias von − 32 zu einer Entdeckung von Schl¨ Wir rechnen zun¨achst den Term T1 ~ T2 ~ T3 ~ T4 aus. Mit Hilfe von Abbildung 3.4 sieht man:
T1
=
T2
=
T3
=
T4
=
U51 ~ U71 ~ U81 ~ V61 U62 ~ V62 ~ V82
U63 ~ V63 ~ V83
3 3 3 U14 ~ V14 ~ V16
=
= = =
X5 ~ K51 ~ X7 ~ K71 ~ X8 ~ K81 ~ V61 V61 ~ K62 ~ V62 ~ V82
V62 ~ K63 ~ V63 ~ V83
3 3 3 V82 ~ K14 ~ V14 ~ V16 .
Das ~ der vier rechten Seiten dieser Gleichungen ergibt: 3 3 3 X5 ~ X7 ~ X8 ~ V63 ~ V83 ~ V14 ~ V16 ~ K51 ~ K71 ~ K81 ~ K62 ~ K63 ~ K14
(3.4)
(dabei heben sich einige der V s gegenseitig weg). Nach (unpr¨aziser, aber sinnvoller) Annahme hat diese 1 . Wir eliminieren weiter: die Vj3 k¨onnen durch Ui4 und weitere Schl¨ Variable als einen Bias von − 32 usselbits 2 ausgedr¨ uckt werden : V63
V83
3 V14
3 V16
2 Es
= = = =
U64 ~ K64
4 4 U14 ~ K14
U84 ~ K84
4 4 U16 ~ K16 .
gilt ja allgemein: x = (y ~ z) genau dann, wenn y = (x ~ z).
44
Vorlesungsskript von E. Best / Stand: 19. September 2005
Eingesetzt in (3.4), ergibt dies: 4 4 3 4 4 , ~ K16 ~ K64 ~ K84 ~ K14 ~ K51 ~ K71 ~ K81 ~ K62 ~ K63 ~ K14 ~ U16 X5 ~ X7 ~ X8 ~ U64 ~ U84 ~ U14
(3.5)
d.h., einen Ausdruck, der nur noch Klartextbits, Schl¨ usselbits und Bits von u4 enth¨alt. Nehmen wir an, dass der Schl¨ ussel eine feste Gr¨oße ist; dann sind insbesondere die Schl¨ usselbits in (3.5) feste Gr¨oßen, und der 4 Teilausdruck K51 ~ . . . ~ K16 hat entweder den Wert 0 oder den Wert 1. Also hat die Zufallsvariable 4 4 ~ U16 X5 ~ X7 ~ X8 ~ U64 ~ U84 ~ U14
(3.6)
1 einen (deutlichen, und deshalb zur Attacke benutzbaren) Bias von ± 32 , wobei das Vorzeichen von den Schl¨ usselbits abh¨angt (die ja nicht bekannt sind). Sei nun T eine Menge von Klartext/Chiffretext-Paaren, die alle mit dem gleichen Schl¨ ussel K verschl¨ usselt 5 5 worden sind, und sei T = |T|. Wir wollen mit Hilfe von T die acht Bits in K(2) und K(4) herausbekommen, n¨amlich diejenigen Bits des f¨ unften Rundenschl¨ ussels K 5 , die mit dem Output der beiden (relevanten) 4 4 S-Boxen S2 und S4 mittels ~ verkn¨ upft werden: 5 5 5 5 K55 , K65 , K75 , K85 , K13 , K14 , K15 und K16 .
Es gibt 28 = 256 m¨ogliche Belegungen dieser 8 Variablen; jede davon ist zun¨achst ein Kandidat. F¨ ur jedes Paar (x, y) ∈ T und f¨ ur jeden der 256 Kandidaten berechnen wir die entsprechenden Werte von u4(2) und usselung von y u u4(4) durch Teilentschl¨ ¨ber v 4 nach u4 . Dann berechnen wir den tats¨achlichen Wert x5 ~ x7 ~ x8 ~ u46 ~ u48 ~ u414 ~ u416
(3.7)
4 4 der Zufallsvariablen X5 ~ X7 ~ X8 ~ U64 ~ U84 ~ U14 ~ U16 aus (3.6). F¨ ur jeden Kandidaten wird dabei gez¨ahlt (¨ uber alle (x, y) in T), wie oft in (3.7) der Wert 0 angenommen wird. Passt der Kandidat nicht, dann sind die Werte x5 , x7 , x8 und die (aus y errechneten) Werte u46 , u48 , u414 , u416 unabh¨angig voneinander und man darf in (3.7) eine ungef¨ahre Gleichverteilung von Nullen und Einsen erwarten. In diesem Fall sollte die Z¨ahlung also ungef¨ahr 12 ·T ergeben. Handelt es sich bei dem Kandidaten aber um den tats¨achlichen 1 (Teil-)Schl¨ ussel, kommt der Bias von ± 32 zum Tragen und man darf erwarten, dass die Z¨ahlung stattdessen 1 1 1 1 entweder 2 ·T + 32 ·T oder 2 ·T − 32 ·T ergibt. Der Algorithmus in Abbildung 3.5 implementiert diese Attacke, wobei die 256 Kandidaten als Paare von Hexadezimalzahlen unterschieden werden: (L1 , L2 ). Die Z¨ahlung geschieht in einem Feld Count. Eine lineare Attacke f¨ uhrt in der Regel zum Erfolg, wenn eine gen¨ ugend große Anzahl T von Klartext/Chiffretext-Paaren vorliegt. Erfahrungsgem¨aß sollte T dabei ungef¨ahr gleich c·²−2 sein, wobei ² der (absolute) Bias und c eine kleine“ Konstante sind (beispielsweise c = 10). Hier im Beispiel w¨aren ca. 8000 − 10000 Paare ” (x, y) in T vonn¨oten. Die große Schwachstelle der linearen Attacke ist die, dass man f¨ ur gr¨oßere Beispiele sehr viele solcher Paare braucht, die alle mit dem gleichen Schl¨ ussel K verschl¨ usselt sein m¨ ussen.
Kryptographie - Sommersemester 2004
Index
1
2
3
4
45
5
6
7
8
9
10 11 12
13 14 15 16
x K1 u1 S21
v1 w1 K2 u2 S22
v2 w2 K3 u
3 S23
S43
v3 w3 K4 u
4 S24
S44
v4 K5 y Abbildung 3.4: Lineare Attacke auf ein Substitutions-/Permutationsnetzwerk
46
Vorlesungsskript von E. Best / Stand: 19. September 2005
↓
↓
↑
proc Lineare Attacke (T, πS , maxkey); begin for (L1, L2) := (0, 0) to (F, F ) do Count[L1, L2] := 0 endfor; foreach (x, y) ∈ T do for (L1, L2) := (0, 0) to (F, F ) do 4 4 v(2) := L1 ~ y(2) ; v(4) := L2 ~ y(4) ; 4 4 u4(2) := πS−1 Â v(2) ; u4(4) := πS−1 Â v(4) ; 4 4 4 z := x5 ~ x7 ~ x8 ~ u6 ~ u8 ~ u14 ~ u416 ; if z=0 → Count[L1, L2] := Count[L1, L2]+1 else → skip f i endfor endforeach; (max, maxkey) := (0, (0, 0)); for (L1, L2) := (0, 0) to (F, F ) do if |Count − 12 ·T | > max → (max, maxkey) := (|Count − 21 ·T |, (L1, L2)) else → skip fi endfor; return(maxkey)
end Abbildung 3.5: Algorithmus zur linearen Attacke des SPN-Kryptosystems
3.4
DES: Digital Encryption Standard
DES (ver¨offentlicht als Publikation der Federal Information Processing Standards, FIPS 3 ) ist eine iterierte Feistel-Chiffre. In einer Feistel-Chiffre ist jeder Zustand ui in zwei gleich große H¨alften geteilt: ui = L i R i . Die Rundenfunktion g hat die Form (Li , Ri ) = g(Li−1 , Ri−1 , K i ), wobei mit einer Funktion f gilt: Li Ri
= =
Ri−1 Li−1 ~ f (Ri−1 , K i ).
Dieses Arrangement ist in Abbildung 3.6 gezeigt. Um diese Chiffre umkehrbar zu machen, muss f noch nicht einmal injektiv sein, denn es gilt: Li−1 Ri−1 3 Siehe
= Ri ~ f (Li , K i ) = Li .
http://www.itl.nist.gov/fipspubs/fip46-2.htm.
Kryptographie - Sommersemester 2004
47
Dabei folgt die zweite Gleichung aus der ersten oben, und die erste Gleichung folgt aus der zweiten oben, wenn man zus¨atzlich noch bedenkt, dass die Funktion f beide Male die gleichen Argumente hat (siehe auch die vorherige Fußnote). 32 Bits Li−1
Ri−1
f
Ki
48 Bits
~
Li
Ri
Abbildung 3.6: Die Rundenfunktion in DES DES hat 16 Runden und Blockl¨ange 64. Ein Klartext der Bitl¨ange 64 wird mit Hilfe eines Schl¨ ussels K der L¨ange 64 verschl¨ usselt. Von den Schl¨ ussel-Bits sind allerdings nur 56 Bits frei w¨ahlbar; das jeweils achte Bit in einem Byte ist per definitionem so gesetzt, dass die Quersumme der Bits in einem Byte immer ungerade ist. Die Rundenschl¨ ussel (K 1 , . . . , K 16 ) haben je 48 Bits und ergeben sich nach einer bestimmten Vorschrift aus K, die hier aber nicht weiter erkl¨art werden soll4 . Sei x ein Klartext. Vor der ersten Runde wird eine feste initiale Permutation IP angewendet, um den Anfangszustand L0 R0 zu erhalten, d.h., L0 R0 = IP(x), und ganz am Ende (nach der 16. Runde) wird der Chiffretext y aus dem Endzustand L16 R16 durch Anwendung der inversen Permutation erzeugt, d.h., y = IP−1 (R16 L16 ) (mit umgedrehter Reihenfolge RL). Die Permutation IP ist kryptographisch irrelevant, da sie nicht vom Schl¨ ussel abh¨angt; deswegen wird sie hier nicht diskutiert. Die Funktion f , die in jeder DES-Runde einmal zum Einsatz kommt, ist in Abbildung 3.7 beschrieben. Sie hat zwei Argumente, die hier mit A und J bezeichnet sind. A ist ein 32-Bit-Wort (R i−1 ), w¨ahrend J ein 48-Bit-Wort (der jeweilige Rundenschl¨ ussel K i ) ist. Um f (A, J) zu berechnen, werden die folgenden Schritte ausgef¨ uhrt: (1) A wird gem¨aß einer festen Expansionsfunktion E von 32 auf 48 Bits zu E(A) erweitert. (2) Es wird E(A) ~ J gebildet und das Resultat als Verkettung b1 b2 . . . b8 von acht 6-Bit-W¨ortern bi (1 ≤ i ≤ 8) geschrieben. (3) Die bi (jeweils 6 Bits) werden mit Hilfe von acht festen S-Boxen S1 , . . . , S8 in 4-Bit-Strings ci umgewandelt. 4 Siehe
z.B. http://www.tropsoft.com/strongenc/des.htm.
48
Vorlesungsskript von E. Best / Stand: 19. September 2005
A
J
E
E(A)
~ b1
b2
b3
b4
b5
b6
b7
b8
S1
S2
S3
S4
S5
S6
S7
S8
c1 c2 c3 c4 c5 c6 c7 c8
P
f (A, J)
Abbildung 3.7: Die Funktion f in einer Runde der DES-Verschl¨ usselung (4) Der Bitstring c1 c2 . . . c8 (der jetzt die L¨ange 32 hat) wird gem¨aß der (festen) Permutation P umsortiert. Das Resultat wird als f (A, J) definiert; es hat 32 Bits. Die acht S-Boxen sind in Abbildung 3.8 angegeben. Jede davon wird als eine Tabelle mit 4 Zeilen und 16 Spalten aufgeschrieben. Eine S-Box wandelt 6 Bits bi = bi,1 bi,2 bi,3 bi,4 bi,5 bi,6 in 4 Bits ci durch folgende Vorschrift um: Die Bits bi,1 bi,6 (d.h., das erste und das letzte Bit) geben eine Zeile an, w¨ahrend die Bits bi,2 bi,3 bi,4 bi,5 (d.h., die vier mittleren Bits) eine Spalte angeben, und der Eintrag in der Tabelle an dieser Stelle, geschrieben als 4-Bit-String, ist ci . Beispiel: Sei b1 = b1,1 b1,2 b1,3 b1,4 b1,5 b1,6 = 101000. Dies bestimmt Zeile 10, also die dritte(!) Zeile, und Spalte 0100, also die f¨ unfte Spalte. In S-Box S1 ist der dort zu findende Eintrag 13, das Ergebnis ist also c1 = 1101. Diese S-Boxen sind keine Permutationen, aber (und das haben wir bereits gesehen) die Funktion f muss ja auch nicht unbedingt injektiv sein. In jeder Zeile einer S-Box kommt jede der Zahlen zwischen 0 und 15 (inklusive) genau einmal vor5 . Ansonsten erscheinen diese Boxen relativ willk¨ urlich. Die Design-Entscheidungen, nach denen diese acht S-Boxen Mitte der Siebziger Jahre bei IBM entworfen und festgelegt worden sind, entziehen sich nach wie vor (wahrscheinlich aus Geheimhaltungsgr¨ unden) pr¨aziser Kenntnis. Anscheinend kannten die Kryptologen dort bereits Varianten der linearen Attacke, lange, bevor diese ca. 1994 publiziert und angewendet wurde, und haben die S-Boxen danach ausgerichtet, solche Angriffe zu verunm¨oglichen. 5 Hoffentlich;
wenn ich mich nicht vertippt habe.
Kryptographie - Sommersemester 2004
49
Es gibt Autoren, die vermuten (oder vermutet haben), dass in diese speziellen S-Boxen eine Hintert¨ ur“ ” eingebaut worden ist, die ein Abh¨oren“ (zum Beispiel durch die National Security Agency) gestattet. Harte ” Fakten in diese Richtung gibt es jedoch auch jetzt, fast 30 Jahre nach dem Design von DES, nicht. Die Expansionsfunktion E und die Permutation P in Abbildung 3.7 werden durch die folgenden Tabellen spezifiziert. Diese sind so zu lesen: Sei z.B. d = d1 d2 . . . d32 ein Bitstring der L¨ange 32. Dann sind E(d) = d32 d1 d2 d3 d4 d5 d4 d5 d6 . . . d31 d32 d1 und P (d) = d16 d7 d20 d21 d29 . . . d11 d4 d25 .
E 32 4 8 12 16 20 24 28
1 5 9 13 17 21 25 29
2 6 10 14 18 22 26 30
3 7 11 15 19 23 27 31
4 8 12 16 20 24 28 32
5 9 13 17 21 25 29 1
16 29 1 5 2 32 19 22
P 7 20 21 12 28 17 15 23 26 18 31 10 8 24 14 27 3 9 13 30 6 11 4 25
Damit ist DES – bis auf die initiale Permutation IP und die Generierung von Rundenschl¨ usseln – vollst¨andig beschrieben. Im Jahr 1994 hat eine lineare Attacke auf DES einen gewissen Erfolg gehabt: mit Hilfe von ca. 2 43 Klartext/Chiffretext-Paaren (d.h., |T| ≈ 243 ), deren Erzeugung 40 Tage dauerte, wurde innerhalb 10 weiterer Tage ein DES-Schl¨ ussel gefunden. Sp¨ater (1997-98) hat die Electronic Frontier Foundation einen BruteForce-DES-Cracker gebaut6 , der die vergleichsweise geringe Summe von 250000 Dollar gekostet hat und 88 Milliarden Schl¨ ussel pro Sekunde testen konnte. Im Juli 1998 hat diese Spezialmaschine einen DES-Schl¨ ussel in nur 56 Stunden gefunden. Im Januar wurde unter Zuhilfenahme eines verteilten Systems 7 , an dem sich viele Arbeitsgruppen beteiligt haben, ein DES-Schl¨ ussel innerhalb von 22 Stunden und 15 Minuten gefunden (hier wurden mehr als 245 Milliarden Schl¨ ussel pro Sekunde untersucht). U.a. aus (oben genannten) Gr¨ unden fehlender Sicherheit hat sich DES als Industriestandard nicht umfassend etabliert. Trotzdem wird DES in einer leicht abgewandelten Form auch heute benutzt und gilt als relativ sicher. Man kann n¨amlich durch Iterieren den Schl¨ usselraum auf einfache Weise vergr¨oßern. Eine hierf¨ ur weit verbreitete Methode ist Triple DES oder 3DES, wobei ein Klartext zun¨achst mit DES und einem Schl¨ ussel K1 verschl¨ usselt wird, das Ergebnis dann mit DES und einem anderen Schl¨ ussel K2 entschl¨ usselt, und das Ergebnis hiervon wieder mit DES und einem dritten Schl¨ ussel K3 verschl¨ usselt. So gewinnt man eine Verdreifachung des Schl¨ usselraums auf 192 Bits (wovon 3·56 = 168 Bits frei w¨ahlbar sind) und damit eine erhebliche bessere Sicherheit. Triple DES ist dreimal so langsam wie DES, aber das f¨allt der vielfach erh¨ohten Sicherheit gegen¨ uber wenig ins Gewicht.
6 Siehe
http://www.eff.org/Privacy/Crypto misc/DESCracker/.
7 http://www.distributed.net/.
50
Vorlesungsskript von E. Best / Stand: 19. September 2005
14 0 4 15
4 15 1 12
13 7 14 8
1 4 8 2
2 14 13 4
15 2 6 9
11 13 2 1
15 3 0 13
1 13 14 8
8 4 7 10
14 7 11 1
6 15 10 3
11 2 4 15
3 8 13 4
10 13 13 1
0 7 6 10
9 0 4 13
14 9 9 0
6 3 8 6
3 4 15 9
15 6 3 8
7 13 10 3
13 8 6 15
14 11 9 0
3 5 0 6
0 6 12 10
6 15 11 1
9 0 7 13
2 14 4 11
12 11 2 8
4 2 1 12
1 12 11 7
7 4 10 1
10 11 7 13 13 7 14 2
12 10 9 4
1 15 14 3
10 4 15 2
15 2 5 12
9 7 2 9
2 12 8 5
6 9 12 15
4 13 1 6
11 0 4 11
2 11 11 13
14 7 13 8
15 4 12 1
0 9 3 4
8 1 7 10
13 1 7 2
2 15 11 1
8 13 4 14
4 8 1 7
6 10 9 4
15 3 12 10
11 7 14 8
S1 8 3 10 1 10 6 11 15 12 7 5 11 S2 4 9 7 14 12 0 1 5 8 2 11 6 S3 5 1 13 10 2 8 0 11 1 7 4 15 S4 10 1 2 3 4 7 13 15 1 8 9 4 S5 6 8 5 1 5 0 8 15 9 13 6 15 S6 8 0 13 5 6 1 3 7 0 10 11 14 S7 13 3 12 10 14 3 14 10 15 7 9 5 S8 1 10 9 4 12 5 2 0 6 13 15 12
6 12 9 3
12 11 7 14
5 9 3 10
9 5 10 0
0 3 5 6
7 8 0 13
2 1 12 7
13 10 6 12
12 6 9 0
0 9 3 5
5 11 2 14
10 5 15 9
12 5 2 14
7 11 14 12 12 5 3 11
4 11 10 5
2 15 14 2
8 1 7 12
8 2 3 5
5 12 14 11
11 1 5 12
12 10 2 7
4 14 8 2
15 9 4 14
3 15 12 0
15 10 5 9
13 3 6 10
0 9 3 4
14 8 0 5
9 6 14 3
3 13 4 1
4 14 10 7
14 0 1 6
7 11 13 0
5 3 11 8
11 8 6 13
9 5 6 0
7 12 8 15
5 2 0 14
10 15 5 2
6 8 9 3
1 6 2 12
3 6 10 9
14 11 13 0
5 0 15 3
0 14 3 5
12 9 5 6
7 2 8 11
Abbildung 3.8: Die S-Boxen von DES
Kapitel 4
AES: Advanced Encryption Standard 4.1
Auswahlverfahren
Nachdem Ende der neunziger Jahre abzusehen war, dass DES unsicher werden w¨ urde, wurde (vom National Institute of Standards and Technology, NIST) nach einem Nachfolger f¨ ur DES (genannt Advanced Encryption Standard, AES) gesucht. Der erste Call for algorithms“ wurde am 12. September 1997 ver¨offentlicht. AES ” sollte eine Blockl¨ange von 128 Bits haben und Schl¨ ussell¨angen von 128, 192 und 256 unterst¨ utzen. Außerdem sollte AES weltweit frei verf¨ ugbar sein. Nach mehreren Konferenzen und Auswahlrunden wurden im August 1999 f¨ ur die Endauswahl f¨ unf Kandidaten ausgew¨ahlt: MARS, RC6, Rijndael, Serpent und Twofish. Am 2. Oktober 2000 wurde schließlich Rijndael (entwickelt von J. Daemen und V. Rijmen aus Belgien) als AES ausgew¨ahlt. Auswahlkriterien waren vor allem: • Sicherheit. Algorithmen, die gegen Attacken anf¨allig waren, wurden nicht weiter betrachtet. Das bedeutet nat¨ urlich nicht, dass AES absolut sicher ist, sondern nur, dass AES bekannten Attacken gegen¨ uber sicher zu sein scheint. • Kosten. Dies bezog sich auf die algorithmische Effizienz und die M¨oglichkeit der effizienten Implementierung in Hardware (z.B. in SmartCards). • Algorithmische Spezifika. Hiermit sind Einfachheit und Flexibilit¨at gemeint. Alle f¨ unf Kandidaten wurden als sicher angesehen. Rijndael wurde haupts¨achlich deswegen ausgew¨ahlt, weil es den anderen Kandidaten in der Kombination von Sicherheitsaspekten mit Eigenschaften der Performanz, der Effizienz, der Implementierbarkeit und der Flexibilit¨at als u ¨berlegen erachtet wurde. Rijndael benutzt Resultate aus der Theorie endlicher K¨orper, deren wichtigste im n¨achsten Kapitel erkl¨art sind.
4.2
Ein wenig K¨ orpertheorie
Eine Struktur (F, +, ·) heißt K¨ orper (engl.: field), wenn gilt: 51
52
Vorlesungsskript von E. Best / Stand: 19. September 2005 • (F, +) ist eine Abelsche Gruppe; das neutrale Element sei mit 0 bezeichnet. • (F \{0}, ·) ist eine Abelsche Gruppe; das neutrale Element sei mit 1 bezeichnet. • Es gelten die Distributivgesetze (wie bei Ringen, s. Abschnitt 1.2).
Offenbar sind K¨orper spezielle Ringe. Ein wesentlicher Unterschied ist, dass in der multiplikativen Gruppe gek¨ urzt“ werden darf und insbesondere dass aus a·b = 0 stets a = 0 ∨ b = 0 folgt. ” Wir interessieren uns speziell f¨ ur endliche K¨orper, d.h., f¨ ur den Fall, dass F eine endliche Menge ist. Beispiele kennen wir bereits: aus Satz 1.2.2 und Satz 1.2.3 folgt, dass Zp , die Menge der Restklassen von p, ein K¨orper ist, wenn p eine Primzahl ist. Selbstverst¨andlich ist Zp endlich. Es gilt sogar, dass Zp nur dann ein K¨orper ist, wenn p eine Primzahl ist. Denn andernfalls g¨alte p = m·n mit 1 < m, n < p und deshalb auch m·1 = m·(1+n), jedoch auch 1 6= 1+n, in Zp , was bedeutet, dass (Zp \{0}, ·) keine Gruppe w¨are. ¨ Sei F mit der Addition + und der Multiplikation · ein endlicher K¨orper. Wir wollen zun¨achst eine Ubersicht bekommen, was f¨ ur Mengen F daf¨ ur u ¨berhaupt in Frage kommen. Zun¨achst ist klar, dass F mindestens zwei Elemente haben muss, da die Null und die Eins verschieden sein m¨ ussen. Andererseits gen¨ ugen schon zwei Elemente, denn {0, 1} mit der Addition wie ~ und der Multiplikation wie logische Konjunktion ∧ ist {0, 1} bereits ein K¨orper. Betrachten wir das Einselement 1 und untersuchen, welche K¨orperelemente erreicht“ werden, wenn die ” Summen 1, 1 + 1, 1 + 1 + 1 usw. gebildet werden. Wir behaupten, dass mindestens eine (und dann auch unendlich viele) dieser Summen gleich 0 ist. Denn weil F endlich ist, kann es nicht unendlich viele Summen geben, die alle verschiedene Ergebnisse liefern. Es gibt also Zahlen m, n mit 1 + 1 + . . . + 1 = 1 + 1 + . . . + 1 und m < n. Dann gilt sicher auch 1 + 1 + . . . + 1 = 0, | | {z } {z } {z } | m-mal
n-mal
(n−m)-mal
weil man in der additiven Gruppe (F, +) ja wegk¨ urzen“ darf. ” Definition 4.2.1 Charakteristik eines endlichen K¨ orpers Sei F ein endlicher K¨orper. Die kleinste Zahl p mit 1 + 1 + . . . + 1 = 0 heißt die Charakteristik von F . {z } | p-mal
4.2.1
Die Charakteristik p von F muss eine Primzahl sein. Denn w¨are p = m·n mit 1 < m, n < p, dann g¨alte 0
=
1 + ... + 1 | {z } p-mal
und damit auch
=
(1 + . . . + 1) + . . . + (1 + . . . + 1) | {z } | {z } m-mal m-mal {z } | n-mal
entweder (1 + . . . + 1) = 0 oder, mit a = (1 + . . . + 1) 6= 0, | {z } | {z } m-mal
m-mal
a + . . . + a = a(1 + . . . + 1) = 0. | {z } | {z } n-mal
n-mal
Beide M¨oglichkeiten stehen im Widerspruch dazu, dass p die kleinstm¨ogliche Zahl mit der in Defintion 4.2.1 genannten Eigenschaft ist.
Kryptographie - Sommersemester 2004
53
Satz 4.2.2 Die Kardinalit¨ at eines endlichen K¨ orpers ist eine Primzahlpotenz Sei F ein endlicher K¨ orper. Dann gibt es eine Primzahl p und eine ganze Zahl n gr¨ oßer oder gleich 1, so dass |F | = pn gilt. Beweis: Die Menge P = {1, 1+1, 1+1+1, . . .} ist mit der aus F geerbten Addition und Multiplikation offensichtlich wieder ein K¨orper. Er wird Primk¨ orper von F genannt (diese Bezeichnung ist eindeutig, da es sich um den eindeutig bestimmten kleinsten Unterk¨orper von F handelt). Es gilt nach Obigem: p = |P | ist prim. Der K¨orper F kann als ein Vektorraum u ¨ber P angesehen werden, indem die skalare Multiplikation einer m-fachen Summe 1+ . . . +1 mit a ∈ F als die m-fache Summe a+ . . . +a definiert wird. F¨ ur jeden endlichen Vektorraum gibt es eine Zahl n und eine Basis mit n Elementen; außerdem hat dann auch jede Basis genau n Elemente. Indem wir eine Basis willk¨ urlich w¨ahlen und die Elemente von F durch ihre n Koordinaten bez¨ uglich dieser Basis darstellen, k¨onnen wir die Elemente von F als Vektoren der Dimension n mit Eintr¨agen aus P auffassen (Basiswechsel bewirkt nur eine Permutation auf der Menge der Koordinatenvektoren und a¨ndert nichts an der Abz¨ahlung der Anzahl der Vektoren). Also hat F genau |P |n = pn Elemente, da es so viele Vektoren der L¨ange n mit Eintr¨agen in P gibt, und da F mindestens 2 Elemente hat, gilt n ≥ 1. 4.2.2 Wir wenden uns der Frage zu, ob es zu jeder Kombination p, n aus Primzahl p und ganzer Zahl n ≥ 1 tats¨achlich einen K¨orper gibt, der genau pn Elemente hat. Diese Frage wird durch den n¨achsten Satz beantwortet. Satz 4.2.3 Konstruktion von K¨ orpern der Kardinalit¨ at pn Sei p prim und sei n eine ganze Zahl ≥ 1. Dann gibt es einen K¨ orper mit pn Elementen. Beweis: Sei zun¨achst n = 1; wir suchen einen K¨orper mit p = p1 Elementen. Wie weiter oben bereits gesehen, ist Zp ein solcher, denn Z∗p ist eine Abelsche Gruppe, Zp ist ein Ring, Zp = Z∗p ∪ {0} und |Zp | = p. Wir nennen diesen K¨orper Fp . Sei im Weiteren n > 1 eine feste ganze Zahl. Wir geben jetzt eine Methode an, wie ein K¨orper Fpn der Gr¨oße pn konstruiert werden kann. Dabei setzen wir den K¨orper Fp als bekannt voraus und machen ihn uns zunutze. Eigentlich wissen wir bereits, wie die Elemente aus Fpn definiert werden k¨onnen, n¨amlich als Vektoren der Dimension n mit Eintr¨agen aus Fp (danach ist Fp der Primk¨orper dieses so konstruierten K¨orpers). Das klappt zwar wunderbar f¨ ur die Addition, die als Vektoraddition definiert werden kann, jedoch nicht f¨ ur die (K¨orper-)Multiplikation, die u ¨berhaupt nicht leicht als Manipulation auf Vektoren definiert werden kann (und nat¨ urlich auch nichts mit dem Kreuzprodukt von solchen Vektoren, und erst recht nichts mit einem Skalarprodukt, zu tun hat). Deshalb stellen wir eine eineindeutige Beziehung zwischen Vektoren der Dimension n u ¨ber Fp und Polynomen in einer Variablen des Grades < n u ¨ber Fp her, denn u ¨ber Polynomen ist die Multiplikation leichter definierbar. Zun¨achst ist der Begriff eines solchen Polynoms zu erkl¨aren. Ein Polynom u ¨ber einem K¨orper K ist ein algebraischer Ausdruck a = am−1 xm−1 + am−2 xm−2 + . . . + a1 x1 + a0 x0 wobei die Koeffizienten am−1 , . . . , a0 Elemente von K sind. Der Grad eines solchen Polynoms ist der gr¨oßte Exponent eines nichtverschwindenden Terms, d.h., das gr¨oßte j, so dass aj xj ein Summand mit aj 6= 0 ist. Wenn zus¨atzlich der Koeffizient aj = 1 ist, heißt das Polynom normiert.
54
Vorlesungsskript von E. Best / Stand: 19. September 2005
Eigentlich ist solch ein Ausdruck a dazu gedacht, dass irgendwann einmal“ f¨ ur die Variable x ein Element ” aus K eingesetzt wird, woraufhin ein Wert ausgerechnet werden kann, der wiederum, sofern die Teilausdr¨ ucke aj xj als Multiplikation und das Zeichen + als Addition in K interpretiert werden, in K liegt. Da K ein K¨orper ist, d¨ urfen f¨ ur Polynome die Rechenregeln in nat¨ urlicher Weise aus K u ¨bernommen werden. Beispiel: Sei p = 2. Dann ist die Addition in K = F2 genau das exklusive oder, ~, und die Multiplikation ist · = ∧. Betrachten wir das Polynom 1x2 + 0x1 + 1x0 . Wenn hierin x = 1 gesetzt wird (und x0 , wie u ¨blich, f¨ ur alle x zu 1 gesetzt wird), erhalten wir 1·(1·1) ~ 0·1 ~ 1·1 = 1 ~ 0 ~ 1 = 0. Offensichtlich darf man den additiven Term mit Koeffizient 0 bereits auf der formalen Ebene weglassen, also das Polynom (1x2 + 0x1 + 1x0 ) als (1x2 + 1x0 ) – oder noch einfacher, als (x2 + 1) – schreiben. Wenn Polynome u ¨ber F2 addiert werden, darf man auch Terme wie (A + x2 + x2 + B) zu (A + B) vereinfachen, denn f¨ ur w ∈ F2 gilt stets (w ~ w) = 0. Ende des Beispiels. Wir betrachten jetzt K = Fp und statt m das spezielle, f¨ ur den Beweis von Satz 4.2.3 festgelegte n. Ein Polynom an−1 xn−1 + . . . + a1 x + a0 vom Grad < n ist also eindeutig durch seine genau n Koeffizienten an−1 , . . . , a0 bestimmt. Daraus ergibt sich sofort eine Bijektion zwischen Polynomen vom Grad < n und Vektoren der Dimension n mit Eintr¨agen aus Fp , denn diese Eintr¨age k¨onnen gerade als die Koeffizienten eines zugeh¨origen Polynoms verstanden werden. (Wichtig ist es, sich auf eine Reihenfolge festzulegen; wir verwenden die Reihenfolge, von links nach rechts, absteigender Exponenten von x.) Beispiel: Sei wieder p = 2. Die aj sind also Werte in {0, 1}. Sei n = 8 (der in AES angenommene Normalfall). Ein Polynom a7 x7 + a6 x6 + . . . a1 x1 + a0 x0 vom Grad < 8 wird mit dem 8-Bit-Vektor (a7 , a6 , . . . , a1 , a0 ) identifiziert, wobei die beiden Teile des Vektors, a7 , . . . , a4 und a3 , . . . , a0 , auch hexadezimal geschrieben werden k¨onnen. Beispielsweise identifizieren wir folgendermaßen: 8-Bit-Vektor 10000011 01010111 00000011 00000010 00000001 00000000
hexadezimal 83 57 03 02 01 00
Polynom Grad x7 + x + 1 7 x 6 + x4 + x2 + x + 1 6 x+1 1 x 1 1 0 0 0
Man sieht u urlicher Weise als Polynome des Grades 0 angesehen ¨brigens auch, dass die Elemente von Fp in nat¨ werden k¨onnen; hier in diesem Beispiel gibt es wegen p = 2 davon genau zwei. Ende des Beispiels. Wir betrachten nun zuerst die Addition zweier Polynome. Diese ist sinnvollerweise definiert als die termweise Addition (verstanden modulo p) zusammengeh¨origer Koeffizienten. Diese Additionsdefinition ist sinnvoll, weil – wie hier aber nicht im Detail nachgewiesen wird – f¨ ur beliebige Werte x = w mit w ∈ Fp der Wert der Summe zweier Polynome an der Stelle w stets genau gleich der Summe der Werte der beiden Polynome an der Stelle w ist. Beispiele: Mit p = 2 und n = 8 betrachten wir (x2 +x) + (x+1) = x2 + (x+x) + 1 7 6 4 2 (x +x+1) + (x +x +x +x+1) = x7 + x6 + x4 + x2 + x + x + 1 + 1
= (x2 +1) = x 7 + x6 + x4 + x2 .
Die erste dieser beiden Gleichungen ist allgemeing¨ ultig zu verstehen, da es sich um eine algebraische Manipulation handelt, deren G¨ ultigkeit in jedem zugrunde liegenden K¨orper K verankert ist. Die zweite ist jedoch speziell nur dann g¨ ultig, wenn K = F2 ist, da sie das Gesetz ∀w∈F2 : (w ~ w) = 0 benutzt.
Kryptographie - Sommersemester 2004
55
Die Addition l¨asst sich f¨ ur p = 2, n = 8 mit Hilfe der bereits definierten Bijektion zwischen Polynomen und 8-Bit-Vektoren auch in bin¨are bzw. hexadezimale Schreibweise u ¨bersetzen: 10000011 | {z } + x7 +x+1
01010111 | {z }
=
x6 +x4 +x2 +x+1
11010100 | {z }
bzw. 57 ~ 83 = D4.
x7 +x6 +x4 +x2
Sie entspricht genau der bitweisen ~-Bildung und kann in Hardware direkt und sehr effizient realisiert werden. Ende der Beispiele. Wir betrachten dann die Multiplikation zweier Polynome. Diese ist (wie u ¨blich) als komponentenweise Multiplikation zweier Klammerausdr¨ ucke definiert. Diese Definition der Multiplikation von Polynomen ist genau so sinnvoll wie die der Addition, denn der Wert eines Produkts zweier Polynome an der Stelle w ∈ F p ist stets das Produkt der Werte der beiden Polynome an der gleichen Stelle w. Beispiel: (x7 + 1) · (x7 + x + 1)
x14 + x8 + x7 + x7 + x + 1
=
=
x14 + x8 + x + 1.
Wieder gilt hier die erste Gleichung allgemein, die zweite nur unter der Annahme p = 2. Ende des Beispiels. Schließlich betrachten wir noch die Division zweier Polynome, wobei der Divisor nicht das Nullpolynom 0 sein soll. Der in der Grundschule gelehrte Divisionsalgorithmus kann fast wortgetreu auf Polynome u ¨bertragen werden, indem von den h¨ochstrangigen Koeffizienten ausgegangen wird und schrittweise die Exponenten verringert werden. Man kann auch, wie bei ganzen Zahlen, die Operationen div und mod auf Polynomen definieren. Beispiel: (Hier wird p = 2 angenommen.) (x12 + x9 + x + 1) x12 +x8 +x7 +x5 +x4
:
(x8 + x4 + x3 + x + 1)
=
x4 + x + 1
(Rest x7 +x4 +x3 +x2 +x)
x9 +x8 +x7 +x5 +x4 +x+1 x9 +x5 +x4 +x2 +x x8 +x7 +x2 +1 x8 +x4 +x3 +x+1 x7 +x4 +x3 +x2 +x Es gilt also: und
(x12 +x9 +x+1) div (x8 +x4 +x3 +x+1) (x12 +x9 +x+1) mod (x8 +x4 +x3 +x+1)
= x4 +x+1 = x7 +x4 +x3 +x2 +x.
Ende des Beispiels. Klar ist, dass a mod b stets einen echt kleineren Grad als b hat, sofern der Grad von b nicht 0 ist. Eine Modifikation des Euklidischen Algorithmus, siehe Abbildung 4.1, liefert zu zwei Polynomen a und b, die nicht beide 0 sind, einen gr¨oßten (im Sinne von: gr¨oßtm¨oglicher Grad) gemeinsamen Teiler d = poly euclid(a, b). Wenn der Grad von d Null ist, heißen a und b auch teilerfremd. Wenn d ein Teiler von a ist, dann ist auch w·d f¨ ur jedes w ∈ K\{0} ein solcher Teiler, denn gilt a = c·d, dann gilt auch a = (w −1 ·c) · (w·d). Die Grade der Polynome in diesen Ausdr¨ ucken variieren nicht, da es
56
Vorlesungsskript von E. Best / Stand: 19. September 2005
sich bei w und w −1 nur um konstante Faktoren handelt. Wenn d speziell die Ausgabe von Algorithmus poly euclid bei Eingabe a, b ist, hat man also eine gewisse Wahl, welches der Polynome {w·d | w ∈ K\{0}}, ¨ letztendlich als der ggT von a und b definiert werden soll. Ublicherweise w¨ahlt man w = d−1 j , wenn dj der h¨ochstrangige Koeffizient von d ist, d.h., man w¨ahlt die normierte Version“ von d als den ggT von a und b. ” Programmtechnisch kann dies realisiert werden, indem vor das return a in der ersten Zeile des Programms ugt wird, der das Polynom a durch seinen h¨ochsten Koeffizienten ungleich poly euclid ein letzter Schritt eingef¨ 0 dividiert. ¨ Ahnlich wie nach der Theorie, die wir in Abschnitt 1.5 kennen gelernt haben, gibt es zu zwei Polynomen a, b außerdem zwei Polynome u, v mit ggT(a, b) = a·u + b·v. Dazu kann der Algorithmus extended euclid aus Abschnitt 1.5.2 analog modifiziert werden. (Ohne Normierung geht es sehr einfach, mit Normierung muss man etwas mehr aufpassen.) Wir testen den Algorithmus poly euclid auf zwei Polynomen u ¨ber dem K¨orper Q der rationalen Zahlen. Die Aufgabe sei es, den gr¨oßten gemeinsamen Teile der Polynome a = (x2 + 2) und b = x2 zu bestimmen: a (b) (x2 + 2) x2
b (Rest) x2 2
: :
= =
Quotient 1 1 2 2x
Rest 2 0
Normieren von 2 (Ergebnisfeld) durch Multiplizieren mit dem Inversen von 2 in Q ergibt 2· 12 = 1 als gr¨oßten gemeinsamen Teiler. Die beiden Polynome sind teilerfremd. ↑
↓ ↓
proc poly euclid (a, b) : Polynom u ¨ber K; % a, b ∈ Polynome u ¨ber K begin if b = 0 → return a b 6= 0 → return poly euclid (b, a mod b) fi end; Abbildung 4.1: Berechnung des ggT(a, b) zweier Polynome a, b u ¨ber K. Wir kommen nun zur¨ uck zur urspr¨ unglichen Absicht, einen K¨orper der Gr¨oße pn zu konstruieren. Die Elemente dieses K¨orpers seien die Polynome vom Grad < n u ¨ber Fp . Die Null sei das Nullpolynom 0 = 0x0 0 und die Eins sei das Polynom 1 = 1x . Die Addition sei die Polynomaddition; diese f¨ uhrt nicht aus dem Bereich der Polynome vom Grad < n heraus, denn der Grad der Summe zweier Polynome vom Grad k bzw. l ist max(k, l). Anders verh¨alt es sich mit der Polynommultiplikation, denn der Grad des Produkts zweier Polynome vom Grad k bzw. l ist k+l; und letzteres kann durchaus gr¨oßer oder gleich n sein. Wir suchen deshalb nach einer M¨oglichkeit, das Produkt zweier Polynome so zu reduzieren, dass ein Grad < n dabei herauskommt. Innerhalb der ganzen Zahlen entspricht dies einer Reduktion modulo p, f¨ ur die Polynome u ¨ber Fp verwenden wir stattdessen irreduzible Polynome vom Grad n. Definition 4.2.4 Irreduzible Polynome Ein Polynom a u ¨ber K heißt irreduzibel u ¨ber K, wenn die einzigen Teiler von a die Polynome von der Form 4.2.4 w·1 oder w·a sind (mit w ∈ K).
Kryptographie - Sommersemester 2004
57
Beispiel: Sei p = 2. Das Polynom f = (x4 + 1) ist nicht irreduzibel, denn es gilt: x4 + 1 = (x + 1)4 . Das Polynom M = (x8 +x4 +x3 +x+1) ist irreduzibel. (Ohne Beweis.) Insbesondere ist jedes Polynom a h¨ochstens 7. Grades teilerfremd mit M und besitzt deswegen – mit den gleichen Argumenten wie in Abschnitt 1.2 – ein multiplikatives Inverses modulo M = (x8 +x4 +x3 +x+1), d.h. ein Polynom a−1 (ebenfalls h¨ochstens 7. Grades) mit a · a−1 ≡ 1 (mod M ). Ende des Beispiels. Ein Polynom M vom Grad genau n heißt Reduktionspolynom bezogen auf n (der Name macht nur Sinn im Zusammenhang mit der Verwendung, die wir jetzt f¨ ur solche Polynome finden). Definiert man die Multiplikation a · b von Polynomen vom Grad < n als (a · b) mod M , dann f¨allt das Resultat nicht aus der betrachteten Menge der Polynome vom Grad < n heraus, und man erh¨alt auf der Menge der Polynome vom Grad < n – wie leicht zu verifizieren ist – eine Ringstruktur. W¨ahlt man aber M zus¨atzlich als irreduzibel, dann erh¨alt man speziell einen K¨orper, denn M ist dann teilerfremd zu allen Polynomen vom Grad < n, und deswegen sind alle solchen Polynome invertibel modulo M . Damit ist der Satz 4.2.3 bewiesen, denn man kann zeigen, dass irreduzible Polynome vom Grad n stets 4.2.3 existieren (ohne weiteren Beweis). Zur Verdeutlichung f¨ uhren wir die Konstruktion f¨ ur den Fall p = 2 und n = 2 durch. Man erh¨alt so einen K¨orper der Gr¨oße 22 = 4. Der zugrundeliegende K¨orper ist F2 = {0, 1}. Die Polynome vom Grad < 2 sind: 0, 1, x, x+1. Wir w¨ahlen das Polynom 2. Grades x2 + x + 1 als Reduktionspolynom. Es ist irreduzibel. Die folgenden Tafeln spiegeln die Addition und die Multiplikation in der Menge {0, 1, x, x+1} wider, so wie sie sich aus der Konstruktion im Beweis von Satz 4.2.3 ergeben: + 0 1 x x+1
0 0 1 x x+1
1 1 0 x+1 x
x x x+1 0 1
x+1 x+1 x 1 0
· 0 1 x x+1
0 1 0 0 0 1 0 x 0 x+1
x 0 x x+1 1
x+1 0 x+1 1 x
Beispielsweise ergibt sich der Eintrag x+1 auf der Diagonalen der rechten Tabelle als Rest der Division von x2 durch x2 +x+1. Weiterhin gilt, dass die gerade angegebenen Konstruktionen in gewisser Weise kanonisch sind, denn: Satz 4.2.5 Alle endlichen K¨ orper gleicher Kardinalit¨ at sind isomorph Seien F und F 0 endliche K¨ orper mit |F | = |F 0 |. Dann sind F und F 0 isomorph. Der Isomorphiebegriff ist hier nicht definiert, er gleicht aber ¨ahnlichen Begriffe dieser Art und l¨auft darauf hinaus, dass man F und F 0 bis auf Umbenennung der Elemente identifizieren kann. Der Beweis von Satz 4.2.5 ist hier weggelassen. (TODO: erg¨anzen.) Definition 4.2.6 Galois-Feld Der (nach Satz 4.2.5 bis auf Isomorphie eindeutig bestimmte) K¨orper der Kardinalit¨at pn wird Galois-Feld genannt und mit GF (pn ), oder auch mit Fpn , bezeichnet. 4.2.6
58
Vorlesungsskript von E. Best / Stand: 19. September 2005
Der Fall p = 2 und n = 8 ist der f¨ ur AES verwendete Spezialfall. Das Polynom M = (x8 +x4 +x3 +x+1) 8. Grades wird in AES als Reduktionspolynom benutzt. Die Additions- und Multiplikationsgruppentafeln des entstehenden K¨orpers GF (28 ) haben 256·256 = 65536 Eintr¨age, aber eine direkte Implementierung der Operationen durch solche Tabellen ist viel zu speicherintensiv. Die Addition entspricht ja sowieso der ~-Bildung von 8-Bit-Vektoren und ist deswegen speziell mit 8-Bit-Prozessoren direkt implementierbar. F¨ ur die Multiplikation kann man die Tatsache verwenden, dass die multiplikative Gruppe GF (p n )\{0} zyklisch ist: Satz 4.2.7 Zyklizit¨ at der multiplikativen Gruppe eines Galois-Feldes Sei (GF (pn )\{0}, ·) die multiplikative Gruppe des K¨ orpers GF (pn ). Es existiert ein erzeugendes Element n n a ∈ GF (p )\{0}, d.h., ein Element a mit GF (p )\{0} = hai. (Zur Notation hai siehe Abschnitt 1.5.1.)
(TODO: Beweis erg¨anzen.)
Hat man – in der oben angegebenen Konstruktion – ein erzeugendes Polynom a, kann man eine Tabelle der Potenzen von a erstellen, und weiterhin zu jedem Polynom b 6= 0 eine Tabelle, die den kleinsten Exponenten k mit b = ak angibt. Dann heißt k auch der Logarithmus von b (zur Basis a). Diese beiden Tabellen sind, verglichen mit einer Tabelle von 65536 Eintr¨agen, sehr klein. In nur drei Schritten kann mit Hilfe dieser Tabellen multipliziert werden, indem, wie u ¨blich, auf Logarithmen addiert wird. Beispiel: Wir erg¨anzen das oben schon betrachtete Beispiel GF (22 ) = {0, 1, x, x+1}. Sowohl x als auch x+1 sind erzeugende Polynome. Wir w¨ahlen a = (x+1). Die folgende Tabelle listet alle Elemente b ∈ GF (22 ) in unterschiedlicher Weise: b als:
Polynom 0 1 x x+1
2-Bit-Vektor 00 01 10 11
Potenz von a − a0 a2 a1
Logarithmus von b − 0 2 1
Beispielsweise gilt a2 = x wegen a2 = (x+1)2 = x2 +1 ≡ x mod x2 +x+1.
4.3
AES im Detail
AES ist eine iterierte Blockchiffre. Die Grundlage von AES, Rijndael (eine Entwicklung von Joan Daemen und Vincent Rijmen aus Belgien), l¨asst als Blockl¨angen und als Schl¨ usselwortl¨angen 128, 192 und 256 zu. F¨ ur den Standard AES wurde jedoch nur die Blockl¨ange 128 evaluiert und aufgenommen. Die Anzahl der Runden, N , h¨angt von der Schl¨ usselwortl¨ange ab: Schl¨ usselwortl¨ange 128 192 256
N = Anzahl der Runden 10 12 14
AES funktioniert nach folgendem Algorithmus:
Kryptographie - Sommersemester 2004
59
1. Sei ein Klartext x gegeben. Initialisiere den Zustand als x und f¨ uhre AddRoundKey aus, d.h., berechne das ~ (exklusives oder) vom Zustand mit dem Rundenschl¨ ussel. 2. F¨ ur jede der ersten N − 1 Runden: f¨ uhre mit Hilfe einer S-Box eine Substitutionsoperation SubBytes auf dem Zustand aus; f¨ uhre eine Permutation ShiftRows auf dem Zustand aus; f¨ uhre eine Operation MixColumns auf dem Zustand aus; und f¨ uhre AddRoundKey aus. 3. Runde N : f¨ uhre SubBytes aus; f¨ uhre ShiftRows aus; und f¨ uhre AddRoundKey aus. [In der letzten Runde gibt es also keine N te MixColumns-Operation mehr.] 4. Definiere den so erhaltenen Zustand als den Chiffretext. ¨ Die Ahnlichkeit mit SPN (Abschnitt 3.1) ist unverkennbar: Alle Runden haben round key mixing (durch AddRoundKey) und einen Substitutions-, gefolgt von einem Permutationsschritt. Außerdem gibt es white” ning“ in beiden F¨allen. AES ist allerdings substantiell gr¨oßer“ als SPN, und es gibt in jeder Runde eine ” weitere, bislang unerkl¨arte Operation: MixColumns. Wir beschreiben im Folgenden nur diejenige Version von AES, die Blockl¨ange 128 = 16·8 hat. Die anderen Versionen sind ganz ¨ahnlich, mit kleineren Abweichungen. Alle AES-Operationen sind Byte- und damit 8-Bit-Prozessor-orientiert, und auch alle Variablen bestehen aus einer geeigneten Anzahl von Bytes. (Deshalb auch die Wahl des K¨orpers GF (28 ).) Der Klartext x ist zum Beispiel eine Aneinanderreihung von 16 Bytes, bezeichnet mit x0 , . . . , x15 . Der Zustand ist definiert als ein 4 × 4-Feld von Bytes, wie folgt: s0,0 s1,0 s2,0 s3,0
s0,1 s1,1 s2,1 s3,1
s0,2 s1,2 s2,2 s3,2
s0,3 s1,3 s2,3 s3,3
Anf¨anglich besteht der Zustand aus den 16 Klartext-Bytes (in senkrechter Reihenfolge aufgeschrieben): s0,0 s1,0 s2,0 s3,0
s0,1 s1,1 s2,1 s3,1
s0,2 s1,2 s2,2 s3,2
s0,3 s1,3 s2,3 s3,3
:=
x0 x1 x2 x3
x4 x5 x6 x7
x8 x9 x10 x11
x12 x13 x14 x15
Die Operation SubBytes f¨ uhrt auf jedem der 16 Bytes des Zustands (unabh¨angig voneinander) eine Substitution mit Hilfe einer S-Box πS aus. Diese S-Box ist also eine Bijektion von {0, 1}8 nach {0, 1}8 (d.h., eine Permutation von {0, 1}8 ). Um πS darzustellen, verwenden wir wieder hexadezimale Notation f¨ ur Bytes; ein Byte besteht dann aus zwei aufeinanderfolgenden hexadezimalen Ziffern. π S ist in Abbildung 4.2 folgendermaßen angegeben: der Eintrag, der zu Zeile X und Spalte Y dieser Tabelle geh¨ort, ist πS (XY ). Beispiel: πS (11101101) = πS (ED) = 55 = 01010101. Im Gegensatz zu den S-Boxen von DES, die wie zuf¨allig gew¨ahlt“ aussehen, kann die (einzige) S-Box πS von ” AES auch algebraisch erkl¨art werden; siehe dazu Abschnitt 4.4 sp¨ater in diesem Kapitel. Design-Kriterien oder -Heuristiken1 f¨ ur diese S-Box waren: (a) maximale Nichtlinearit¨at (dies ist die einzige nichtlineare 1 Die hier und im Folgenden angegebenen Kriterien und Heuristiken k¨ onnen weder in wenigen S¨ atzen vollst¨ andig beschrieben noch in kurzer Zeit vollst¨ andig verstanden werden. Sie beruhen auf oft langj¨ ahrigen Forschungsanstrengungen.
60
Vorlesungsskript von E. Best / Stand: 19. September 2005
Stelle in AES, sie wird aber an verschiedenen Punkten des Algorithmus verwendet), und (b) algebraische Komplexit¨at. Letzteres bedeutet, dass es keinen einfachen (z.B. sehr kurzen) algebraischen Ausdruck geben soll, der den Effekt der S-Box beschreibt. Ersteres (maximale Nichtlinearit¨at) bedeutet, dass diese S-Box so widerstandsf¨ahig wie m¨oglich gegen eine lineare Attacke sein soll, und auch gegen eine differentielle Attacke (die hier im Skriptum nicht beschrieben worden ist). Insbesondere sollen lineare Approximationstabellen wie etwa Abbildung 3.3 uniform sein.
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 63 CA B7 04 09 53 D0 51 CD 60 E0 E7 BA 70 E1 8C
1 7C 82 FD C7 83 D1 EF A3 0C 81 32 C8 78 3E F8 A1
2 77 C9 93 23 2C 00 AA 40 13 4F 3A 37 25 B5 98 89
3 7B 7D 26 C3 1A ED FB 8F EC DC 0A 6D 2E 66 11 0D
4 F2 FA 36 18 1B 20 43 92 5F 22 49 8D 1C 48 69 BF
5 6B 59 3F 96 6E FC 4D 9D 97 2A 06 D5 A6 03 D9 E6
6 6F 47 F7 05 5A B1 33 38 44 90 24 4E B4 F6 8E 42
7 C5 F0 CC 9A A0 5B 85 F5 17 88 5C A9 C6 0E 94 68
8 30 AD 34 07 52 6A 45 BC C4 46 C2 6C E8 61 9B 41
9 01 D4 A5 12 3B CB F9 B6 A7 EE D3 56 DD 35 1E 99
A 67 A2 E5 80 D6 BE 02 DA 7E B8 AC F4 74 57 87 2D
B C 2B F E AF 9C F 1 71 E2 EB B3 29 39 4A 7F 50 21 10 3D 64 14 DE 62 91 EA 65 1F 4B B9 86 E9 CE 0F B0
D D7 A4 D8 27 E3 4C 3C FF 5D 5E 95 7A BD C1 55 54
E AB 72 31 B2 2F 58 9F F3 19 0B E4 AE 8B 1D 28 BB
F 76 C0 15 75 84 CF A8 D2 73 DB 79 08 8A 9E DF 16
Abbildung 4.2: Die S-Box von AES Die Operation ShiftRows bewirkt die folgende Zuweisung: s0,0 s1,0 s2,0 s3,0
s0,1 s1,1 s2,1 s3,1
s0,2 s1,2 s2,2 s3,2
s0,3 s1,3 s2,3 s3,3
:=
s0,0 s1,1 s2,2 s3,3
s0,1 s1,2 s2,3 s3,0
s0,2 s1,3 s2,0 s3,1
s0,3 s1,0 s2,1 s3,2
Mit anderen Worten: die i te Zeile (0 ≤ i < 4) wird um i Stellen zyklisch nach links verschoben. Ein Design-Kriterium war sehr gute Diffusion. Deswegen werden f¨ ur die Verschiebungen der Zeilen verschiedene Abst¨ande (Offsets) benutzt. Im autoritativen Bericht u ¨ber AES2 ist genau erkl¨art, welche Typen von Attacken hiermit ausgeschlossen werden sollen. Die Operation MixColumns bezweckt eine gute Durchmischung“ der Bits einer Spalte. Design-Kriterium ” war ebenfalls eine optimale Diffusion, insofern, als m¨oglichst jedes Byte mit jedem anderen Byte in Wechselwirkung tritt, ohne dass es auff¨allige H¨aufungen von Abh¨angigkeiten gibt. Daneben sollte diese Operation linear und effizient implementierbar sein. Jede Spalte des Zustands besteht aus 4 Bytes. Diese 4 Bytes werden als die Koeffizienten eines Polynoms mit Grad < 4, aber u ¨ber GF (28 ) (d.h.: mit Koeffizienten aus GF (28 )), 2 J.
Daemen, V. Rijmen: The Design of Rijndael, Springer-Verlag (2002).
Kryptographie - Sommersemester 2004
61
aufgefasst und die Spalte wird ersetzt durch das Produkt dieses Polynoms mit einem festen, vorgegebenen Polynom c, ebenfalls u ¨ber GF (28 ), reduziert modulo x4 + 1. Das Polynom c ist c = 03·x3 + 01·x2 + 01·x + 02. Es ist teilerfremd mit x4 + 1. Beide Polynome, c und x4 + 1, wurden aufgrund leichter Implementierbarkeit ausgew¨ahlt, wobei die Koeffizienten von c auch einige gew¨ unschte Diffusionseigenschaften garantieren. Rechnet man s0 = c · s mod (x4 +1) aus, wobei s ein beliebiges Polynom u ¨ber GF (28 ) ist, bekommt man eine 0 0 Darstellung der vier neuen Koeffizienten dieses Produkts, s0 , . . . , s3 , als Produkt der alten Koeffizienten, s0 , . . . , s3 , mit einer aus den Koeffizienten von c gebildeten Matrix: 0 02 03 01 01 s0 s0 s01 01 02 03 01 s1 0 = (4.1) s2 01 01 02 03 · s2 s3 03 01 01 02 s03 In MixColumns wird also jede Spalte des Zustands (ein 4-Byte-Vektor) durch eine neue Spalte gem¨aß der in (4.1) angegebenen Multiplikation im K¨orper GF (28 ) ersetzt. Die Konstruktion von Rundenschl¨ usseln ist wortorientiert, wobei ein Wort aus 4 Bytes (oder 32 Bits) besteht. Wir ben¨otigen 11 Rundenschl¨ ussel, von denen jeder 4 W¨orter (d.h., 16 Bytes oder 128 Bits) lang ist. Die Konkatenation der Rundenschl¨ ussel wird der erweiterte Schl¨ ussel genannt; er besteht aus 44 W¨ortern. Er wird mit w[0]w[1] . . . w[43] bezeichnet, wobei jedes w[i] ein Wort ist. Also: w[0]w[1]w[2]w[3] ist der erste Rundenschl¨ ussel, w[4]w[5]w[6]w[7] der zweite, . . ., w[40]w[41]w[42]w[43] der elfte. Der erweiterte Schl¨ ussel wird durch den Algorithmus in Abbildung 4.3 konstruiert. Dessen Eingabe ist der 128-Bit-Schl¨ ussel K, der als Feld K = K[0] . . . K[15] aufgefasst wird (wobei jedes K[i] ein Byte ist), und die Ausgabe ist die Liste w von oben. KeyExpansion benutzt zwei externe Operationen RotWord und SubWord. RotWord bewirkt eine zyklische Drehung von vier Bytes B0 , B1 , B2 , B3 : RotWord(B0 , B1 , B2 , B3 ) = (B1 , B2 , B3 , B0 ). SubWord wendet die AES-S-Box auf jedes von vier Bytes B0 , B1 , B2 , B3 an: SubWord(B0 , B1 , B2 , B3 ) = (SubBytes(B0 ), SubBytes(B1 ), SubBytes(B2 ), SubBytes(B3 )). RCon ist ein Feld mit zehn konstanten W¨ortern, die in Hexadezimalnotation zu Beginn des Algorithmus initialisiert werden. Auch diese Konstruktion (insbesondere die etwas willk¨ urlich anmutende Besetzung des Feldes RCon) hat einen algebraischen Hintergrund, auf den hier jedoch nicht weiter eingegangen wird. Design-Kriterien waren neben Effizienz: Brechung von Symmetrien (durch die Verwendung der Konstanten RCon), gute Diffusion und Nichtlinearit¨at (durch Benutzung der AES-S-Box). Nach der 11. Runde wird der Chiffretext y wieder spaltenweise aus dem Zustand ausgelesen: y0 y1 y2 y3
y4 y5 y6 y7
y8 y9 y10 y11
y12 y13 y14 y15
:=
s0,0 s1,0 s2,0 s3,0
s0,1 s1,1 s2,1 s3,1
s0,2 s1,2 s2,2 s3,2
s0,3 s1,3 s2,3 s3,3
62
Vorlesungsskript von E. Best / Stand: 19. September 2005
↓
↑
proc KeyExpansion(K , w); begin external RotWord, SubWord; RCon[1] := 01000000; RCon[2] := 02000000; RCon[3] := 04000000; RCon[4] := 08000000; RCon[5] := 10000000; RCon[6] := 20000000; RCon[7] := 40000000; RCon[8] := 80000000; RCon[9] := 1B000000; RCon[10] := 36000000; for i := 0 to 3 do w[i] := (K[4i], K[4i+1], K[4i+2], K[4i+3]) endfor; for i := 4 to 43 do temp := w[i−1]; if i≡0(mod 4) → temp := SubWord(RotWord(temp)) ~ RCon[ 4i ] w[i] := w[i−4] ~ temp endfor; return(w[0] . . . w[43])
else → skip f i;
end Abbildung 4.3: Der Schl¨ usselgenerierungsalgorithmus von AES Es stellt sich heraus, dass eine der großen St¨arken des AES-Algorithmus in seiner effizienten Implementierbarkeit liegt. Nach Koeune, Hachez, Quisquater: Implementation of Four AES Candidates on Two Smart Cards, UCL Crypto Group, 2000 gab es die folgenden empirischen Ergebnisse: RC6 Rijndael Twofish
8051 (3, 57 MHz) 165 3005 525
ARM (28, 56 MHz) 151260 311492 56289
Dabei sind die Zahlen als Bytes pro Sekunde“ zu lesen. ”
4.4
Algebraische Definition der AES-S-Box
Man hat gezeigt, dass die Funktion Inv, die jedem Polynom a 6= 0 in GF (2 8 ) sein Inverses a−1 (modulo M ) zuordnet (und das Nullpolynom auf sich selbst abbildet), besonders gute Diffusionseigenschaften hat. Diese Funktion hat jedoch eine simple algebraische Darstellung, die bestimmte Arten von Attacken (Interpolationsattacken) erlaubt. Deshalb ist die AES-S-Box als eine Verkn¨ upfung von Inv mit einer invertierbaren affinen Transformation G aufgebaut: S = Inv ◦ G. Man kann G geeignet w¨ahlen, so dass G selbst zwar eine einfache algebraische Darstellung hat, S aber nur eine h¨ochst komplexe. Zus¨atzlich wurde von G gefordert, dass es weder zu Fixpunkten noch zu Antifixpunkten von S f¨ uhrt: ∀a ∈ GF (28 ) : 00 6= (S(a) ~ a) 6= F F.
Kryptographie - Sommersemester 2004
63
Es ist zwar keine Attacke bekannt, die die Existenz von Fixpunkten oder Antifixpunkten ausnutzt; diese Forderung wurde jedoch zur Sicherheit gegen potenzielle zuk¨ unftige Attacken erhoben. Die affine Transformation G wurde insgesamt folgendermaßen festgelegt: b7 1 1 1 1 1 0 0 0 a7 0 b6 0 1 1 1 1 1 0 0 a6 1 b5 0 0 1 1 1 1 1 0 a5 1 b4 0 0 0 1 1 1 1 1 a4 = · ~ 0 (4.2) b3 1 0 0 0 1 1 1 1 a3 0 b2 1 1 0 0 0 1 1 1 a2 0 b1 1 1 1 0 0 0 1 1 a1 1 b0 1 1 1 1 0 0 0 1 a0 1 wobei die ai die Koeffizienten des Eingabepolynoms und die bi die Koeffizienten des Ausgabepolynoms sind. Wenn man S nach dieser Maßgabe ausrechnet, ergibt sich die Tabelle in Abbildung 4.2. Beispiel: Der Eingabewert sei 04, bin¨ar 00000100. Das entsprechende Polynom ist x2 . Um die Funktion Inv anzuwenden, rechnen wir (x2 )−1 mod M aus und erhalten das Polynom x7 + x6 + x3 + x + 1. Daraus ergeben sich die Eingabewerte a7 . . . a0 = 11001011 f¨ ur die Transformation G in. Die Rechnung gem¨aß (4.2) ergibt b7 . . . b0 = 11110010, also F 2. Hieraus erkl¨art sich der Eintrag πS (04) = F 2 in Abbildung 4.2. Algebraische Darstellungen von S wurden in aktuellen Forschungsarbeiten untersucht. Eine davon ist die folgende (erhalten durch Lagrange-Interpolation3 ), wobei die Koeffizienten Elemente von GF (28 ) sind: S = 05·x254 + 09·x253 + F 9·x251 + 25·x247 + F 4·x239 + 01·x223 + B5·x191 + 8F ·x127 + 63. (Quelle: The Design of Rijndael.)
3 http://mathworld.wolfram.com/LagrangeInterpolatingPolynomial.html.
64
Vorlesungsskript von E. Best / Stand: 19. September 2005
Kapitel 5
Das Public-Key-Kryptosystem RSA Bisher haben wir Secret-Key-Kryptosysteme betrachtet (Abbildung 1.1). Mit diesem Kapitel wenden wir uns ¨ der Public-Key-Kryptographie zu (Abbildung 1.2). In der Public-Key-Kryptographie wird zur Ubermittlung einer Nachricht nicht ein einziger Schl¨ ussel (secret key), der nur Sender und Empf¨anger bekannt ist, benutzt, ¨ sondern ein Paar von Schl¨ usseln (public key, private key). W¨ahrend der public key der Offentlichkeit zur Verf¨ ugung steht und dem Sender einer Nachricht zum Verschl¨ usseln dient, wird zum Entschl¨ usseln der nur dem Empf¨anger bekannte private key benutzt. In einem Secret-Key-Kryptosystem ist der geheime Schl¨ ussel idealerweise ein Geheimnis zwischen genau N (N −1) Schl¨ ussel vorhanden sein. Außerdem m¨ ussen zwei Partnern. Bei N Teilnehmern m¨ ussen also bis zu 2 diese Schl¨ ussel auf sicherem Weg zwischen der beiden betroffenen Partnern ausgetauscht werden, bevor chiffrierte Kommunikation stattfinden kann. In einem Public-Key-Kryptosystem sind dagegen pro Partner nur zwei Schl¨ ussel n¨otig, der ¨offentliche und der private. Bei N Teilnehmern braucht man also nur 2N Schl¨ ussel, die zudem nicht vorab (mit allen Risiken der Entdeckung) ausgetauscht werden m¨ ussen. Ein gewichtiger Nachteil von Public-Key-Kryptosystemen ist ihre (im Vergleich mit Secret-Key-Kryptosystemen) erhebliche Ineffizienz. Auf der Webseite von PGP 1 ist die Rede von einem Effizienzgef¨alle von 1000%. Public-Key-Kryptosysteme sind also u ¨berall da interessant, wo zwischen den Teilnehmern nicht von vorneherein ein Vertrauensverh¨altnis oder eine Sicherheitsabsprache vorausgesetzt werden kann, es aber trotzdem (oder gerade deswegen) wichtig ist, dass ein Empf¨anger zum Beispiel verifizieren kann, dass eine erhaltene Nachricht tats¨achlich vom angegebenen Sender stammt. Außerdem sind sie interessant, wenn es sich um (relativ) kleine Datenvolumina handelt. Typische Anwendungsbeispiele sind elektronische Vertr¨age, Passwortsysteme, elektronische Auftr¨age, elektronischer Geldverkehr, sichere Identifizierung / Authentifizierung im Internet, und digitale Signaturen (Unterschriften). Die großen Dateien auf dem PC verschl¨ usselt man jedoch tunlichst mit einem effizienteren Verfahren, z.B. mit AES (Kapitel 4). In diesem Kapitel wird das wichtigste und am weitesten verbreitete Public-Key-Kryptosystem RSA (benannt nach seinen Entwicklern: Ron Rivest, Adi Shamir und Leonard Adleman) beschrieben. Gegen Ende des Kapitels wenden wir uns auch der Kryptanalyse und den Sicherheitsrisiken dieses Systems zu. Im n¨achsten 1 Siehe www.pgpi.com. PGP ist ein hybrides System, das sowohl Anteile von Secret-Key-Kryptographie enth¨ alt als auch Ideen aus der Public-Key-Kryptographie (speziell aus RSA) verwendet.
65
66
Vorlesungsskript von E. Best / Stand: 19. September 2005
Kapitel betrachten wir ein weiteres Public-Key-Kryptosystem, das im Hinblick auf die Kryptanalyse gewisse Vorteile gegen¨ uber RSA bietet.
5.1
Mehr Zahlentheorie
5.1.1
Der Chinesische Restsatz
RSA benutzt Zahlen n = pq, die Produkt zweier Primzahlen p und q sind. Manchmal m¨ochte man die Modulo-n-Rechnung auf zwei einfachere Modulo-Rechnungen bez¨ uglich kleinerer Zahlen, p und q, zur¨ uckf¨ uhren. Der Chinesische Restsatz stellt eine allgemeine Methode daf¨ ur bereit. Beispiel: (zugeschrieben Sun-Tsu, 100 a.D.) Wir suchen eine ganze Zahl, die Reste 2 bzw. 3 bzw. 2 l¨asst, wenn sie durch 3 bzw. 5 bzw. 7 geteilt wird. Satz 5.1.1 Chinesischer Restsatz Sei N = n1 · . . . · nk mit paarweise teilerfremden nat¨ urlichen Zahlen ni (i = 1, . . . , k). Die Relation ρ
⊆
ZN × (Zn1 × . . . ×Znk )
mit (a, (a1 , . . . , ak )) ∈ ρ gdw. ai = a mod ni f¨ ur alle i = 1, . . . , k ist ein Isomorphismus, d.h., eine strukturerhaltende Bijektion zwischen ZN und Zn1 × . . . ×Znk . Dabei heißt ρ strukturerhaltend (oder operationstreu), wenn alle Operationen (die 0, die 1, die Addition und die Multiplikation) mit ρ vertauschbar sind, genauer: wenn (0, (0, . . . , 0)) ∈ ρ, (1, (1, . . . , 1)) ∈ ρ, und wenn mit (a, (a1 , . . . , ak )) ∈ ρ und (b, (b1 , . . . , bk )) ∈ ρ auch (a+b mod n, (a1 +b1 mod n1 , . . . , ak +bk mod nk )) (ab mod n, (a1 b1 mod n1 , . . . , ak bk mod nk ))
und
∈ ∈
ρ ρ
gilt. Beweis: Wir betrachten die Zahlen Ni = N/ni f¨ ur i = 1, . . . , k. Aus der paarweisen Teilerfremdheit der ni und der Eindeutigkeit der Primzahlzerlegung einer Zahl folgt, dass ni ein Teiler von Nj ist, sofern i 6= j ur i = 1, . . . , k. Die ci gilt, und dass ggT(ni , Ni ) = 1 gilt. Wir definieren weiterhin: ci = Ni · (Ni−1 mod ni ) f¨ sind wegen ggT(ni , Ni ) = 1 wohldefiniert. Außerdem gilt cj ci
≡
≡
Nj (Ni ·Ni−1 )
≡
≡
0 (mod ni ) 1 (mod ni )
falls i 6= j
(weil ni ein Teiler von Nj ist)
D.h., es gilt (ci , (0, . . . , 0, 1, 0, . . . , 0)) ∈ ρ, wobei (0, . . . , 0, 1, 0, . . . , 0) ein Vektor mit k Eintr¨agen ist, der u ¨berall 0 ist, außer an der i ten Stelle, wo eine 1 steht. Wir beweisen jetzt, dass ρ eine Bijektion ist. Zun¨achst ist ρ eine Funktion, weil die ai sich aus a nach der eindeutigen Vorschrift ai = a mod ni ergeben. Wir zeigen, dass ρ auch surjektiv ist. Sei n¨amlich ein Vektor (a1 , . . . , ak ) ∈ Zn1 × . . . ×Znk gegeben. Mit Hilfe der oben definierten ci setzen wir a = (a1 c1 + a2 c2 + . . . + ak ck ) mod N
Kryptographie - Sommersemester 2004 und berechnen: a mod ni
= = = =
67
( Definition von a ) ((a1 c1 + a2 c2 + . . . + ak ck ) mod N ) mod ni ( wegen ni | N ) (a1 c1 + a2 c2 + . . . + ak ck ) mod ni ( weil cj mod ni gleich 0 f¨ ur j6=i und gleich 1 f¨ ur j=i ist ) ai mod ni ( weil ai ∈ Zni gilt ) ai .
Also gilt ai = a mod ni f¨ ur alle i = 1, . . . , k, und daher (a, (a1 , . . . , ak )) ∈ ρ nach Definition von ρ. Die Mengen ZN und Zn1 × . . . ×Znk sind gleich groß, denn beide haben genau N Elemente. Jede surjektive Funktion von einer Menge in eine gleich große Menge muss auch injektiv sein. Also ist ρ surjektiv und injektiv und somit eine Bijektion. Die Operationstreue von ρ kann unschwer nachgewiesen werden. 5.1.1 Bemerkung: ZN ist isomorph zu Zn1 × . . . ×Znk , da beides zyklische Gruppen der Ordnung N sind, wobei 1 und (1, . . . , 1) Erzeugende der jeweiligen Gruppen sind. Die Zuordnung 1 7→ (1, . . . , 1) bestimmt daher bereits eindeutig einen Isomorphismus, und zwar, wie man dann sieht, ρ. Ende der Bemerkung. Beispiel (Fortsetzung): Wir suchen Zahlen x mit 3 ) ( x ≡ |{z} 2 mod |{z} a1
n1
und
5 ) ( x ≡ |{z} 3 mod |{z} a2
n2
und
7 ). ( x ≡ |{z} 2 mod |{z} n3
a3
105 3
(5.1)
105 5 −1
Wir bilden N = 3 · 5 · 7 = 105. Danach berechnen wir die Ni : N1 = = 35, N2 = und die ci : c1 = N1 · (N1−1 mod n1 ) = 35 · (35−1 mod 3) = 35 · 2 = 70, c2 = 21 · (21 c3 = 15 · (15−1 mod 7) = 15 · 1 = 15. Schließlich bilden wir
= 21, N1 = 105 7 = 15 mod 5) = 21 · 1 = 21,
a = (a1 c1 + a2 c2 + a3 c3 ) mod N = (2·70 + 3·21 + 2·15) mod 105 = 233 mod 105 = 23. Die Zahl x = 23 hat also die gesuchte Eigenschaft (5.1). Die Menge aller solcher Zahlen ist die von 23 erzeugte Restklasse von 105, also {23 + l·105 | l ∈ Z}. Ende des Beispiels. Dieses Beispiel zeigte bereits eine Hauptanwendung des Chinesischen Restsatzes, n¨amlich die L¨osung vorge¨ gebener Systeme von modularen Aquivalenzen. Es gibt eine andere Anwendung, n¨amlich die Erleichterung von modularen Rechnungen. Ist N eine große Zahl und kennt man die Faktorenzerlegung von N , dann kann das Rechnen modulo N manchmal mit Vorteil auf das Rechnen modulo der Faktoren einer paarweise teilerfremden Faktorenzerlegung von N zur¨ uckgef¨ uhrt werden, zum Beispiel im Sinne des folgenden Korollars; man hat dann mehr Gleichungen, aber kleinere Moduln. Korollar 5.1.2 Rechnen modulo N und modulo ni Seien n1 , . . . , nk paarweise relativ prim und sei N = n1 · . . . ·nk . Dann sind f¨ ur alle Zahlen x und a die beiden folgenden Aussagen ¨ aquivalent: (i) x ≡ a (mod N ); (ii) x ≡ a (mod ni ) f¨ ur alle i = 1, . . . , k.
5.1.2
Aus dem Chinesischen Restsatz kann die Multiplikativit¨at der Eulerschen Φ-Funktion hergeleitet werden:
68
Vorlesungsskript von E. Best / Stand: 19. September 2005
Korollar 5.1.3 (Schwache) Multiplikativit¨ at von Φ Seien n1 , . . . , nk paarweise teilerfremde nat¨ urliche Zahlen. Dann gilt Φ(n1 · . . . · nk ) = Φ(n1 ) · . . . · Φ(nk ). Beweis: Sei N = n1 · . . . · nk . Aus der Teilerfremdheit der ni folgt: ggT(x, N ) = 1 genau dann, wenn f¨ ur alle i = 1, . . . , k gilt: ggT(x, ni ) = 1. Folglich ist die Restriktion ρ0
=
ρ ∩ (Z∗N × (Z∗n1 × . . . ×Z∗nk ))
ebenfalls eine Bijektion. Die Mengen Z∗N und Z∗n1 × . . . ×Z∗nk sind also gleich groß, d.h., es gilt Φ(N ) = Φ(n1 ) · . . . · Φ(nk ). 5.1.3
5.1.2
Modulare Exponentiation
In RSA wird Exponentiation sehr großer Zahlen mit sehr großen Exponenten ben¨otigt. Wir geben in diesem Abschnitt einen Algorithmus zur Berechnung der Zuweisung d := ab mod n f¨ ur a, b ∈ N und n ∈ N\{0} an, der auch f¨ ur große a, b und n effizient d berechnet. Er beruht auf wiederholtem Quadrieren“, einer ” Methode, die auch f¨ ur das Multiplizieren verwendet werden kann und dann als wiederholtes Verdoppeln“ ” schon seit alters her bekannt ist2 . Der Algorithmus ist in Abbildung 5.1 gezeigt. Es wird vorausgesetzt, dass der Exponent b bin¨ar vorliegt. Die Eingaben des Algorithmus sind also a, n und die Bin¨ardarstellung bk−1 . . . b0 von b (mit dem h¨ochstwertigen Bit links). Die Ausgabe des Algorithmus ist d. Zum Verst¨andnis des Algorithmus dient die Hilfsvariable c (die ansonsten auch weggelassen werden k¨onnte). ↓ ↓ ↓
proc modexp(a, b, n); Ausgabe (globaler Parameter): d begin {c := 0} d := 1; i := k − 1; {inv 0 ≤ c ≤ b ∧ d = ac mod n} do i ≥ 0 → {c := 2∗c} d := (d∗d) mod n if bi = 0 → skip bi = 1 → {c := c+1} d := (d∗a) mod n f i; i := i−1 od; {c = b ∧ d = ac mod n} end; Abbildung 5.1: Algorithmus zur modularen Exponentiation. 2 Z.B.
unter dem Namen russische Bauernregel“, siehe auch http://mathforum.org/dr.math/faq/faq.peasant.html. ”
Kryptographie - Sommersemester 2004
69
Beispiel: Wir berechnen 7560 mod 561, d.h., die Zuweisung d := modexp(7, 560, 561). Die Bin¨ardarstellung von b mit dem h¨ochstwertigen Bit links ist 1000110000 (zehnstellig; also ist k = 10). Die Tabelle in Abbildung 5.2 gibt Werte an, die im Verlauf des Algorithmus berechnet werden. Die Ausgabe ist d = 1, es gilt also 7560 ≡ 1 (mod 561). Ende des Beispiels. i bi c d
9 8 1 0 1 2 7 49
7 0 4 157
6 0 8 526
5 1 17 160
4 1 35 241
3 0 70 298
2 0 140 166
1 0 280 67
0 0 560 1
Abbildung 5.2: Beispiel zur modularen Exponentiation. Wenn die drei Eingaben a, b und n jeweils Zahlen mit ` Bits sind, dann ben¨otigt ein Aufruf modexp(a, b, n) O(`) arithmetische Operationen und O(`3 ) Bitoperationen: O(`) wegen der ¨außeren Schleife und O(`2 ) wegen der modularen Multiplikationen innerhalb der Schleife (in Bits umgerechnet). Benutzung eines Taschenrechners: Auch auf einem 08/15-Taschenrechner kann die modulare Exponentiation relativ leicht ausgef¨ uhrt werden. Als Beispiel rechnen wir 323 mod 47 auf einem 8-stelligen Taschenrechner. Zuerst zerlegt man den Exponenten additiv in handhabbare Teile, beispielsweise 23 = 10 + 10 + 3. Also rechnen wir 3 23 = 310 · 310 · 33 : 310 : Taschenrechner: 59049.
Um 59049 modulo 47 zu nehmen, dividieren wir: 59049/47 : Taschenrechner: 1256.3617. Davon wird der ganze Anteil abgezogen: 1256.3617 − 1256 : Taschenrechner: 0.3617. Das wird mit 47 multipliziert: 0.3517 · 47 : Taschenrechner: 16.9999.
Der Wert von 310 mod 47 ist also 17. Jetzt rechnen wir
17 · 17 · 33 : Taschenrechner: 7803 .../47 : Taschenrechner: 166.02127 ... − 166 : Taschenrechner: 0.02127 ... · 47 : Taschenrechner: 0.99969. Das Endresultat (der Wert von 323 mod 47) ist somit 1.
5.1.3
Hinreichende Bedingungen fu ¨ r Zerlegbarkeit
In RSA werden schnelle Primzahltests ben¨otigt. Solche Algorithmen beruhen oft auf hinreichenden Bedingungen f¨ ur die Zerlegbarkeit einer Zahl n. Zwei Bedingungen dieser Natur werden im Folgenden angegeben. ∗ Sei Z+ = Zn \{0}. Falls n prim ist, dann gilt Z+ n n = Zn .
70
Vorlesungsskript von E. Best / Stand: 19. September 2005
Definition 5.1.4 Pseudoprimalit¨ at n−1 ≡ 1 (mod n). Eine nicht-prime Zahl n heißt pseudoprim zur Basis a (a ∈ Z+ n ), wenn gilt: a
5.1.4
Falls n prim ist, dann gilt an−1 ≡ 1 (mod n) f¨ ur alle a ∈ Z+ n nach Korollar 1.5.7 (dem kleinen Fermat). + ¨ Wenn man also, bei gegebenem n, ein a ∈ Zn finden kann, f¨ ur das diese Aquivalenz nicht gilt, dann ist n sicher keine Primzahl. Die Existenz einer solchen Zahl a ist also hinreichend f¨ ur die Zerlegbarkeit von n. Ein a mit dieser Eigenschaft heißt auch Zeuge (witness) gegen (die Primalit¨at von) n. Zur Herleitung einer zweiten hinreichenden Bedingung f¨ ur die Zerlegbarkeit einer Zahl ben¨otigen wir ein zahlentheoretisches Resultat, das hier ohne Beweis zitiert wird3 : Satz 5.1.5 n te Wurzeln Sei p prim und sei a ∈ Z relativ prim zu p (also a 6≡ 0 (mod p)). Dann hat die Kongruenz x n ≡ a (mod p) genau ggT(n, p − 1) L¨ osungen oder genau 0 L¨ osungen, je nachdem ob ab ≡ 1 (mod p) oder ab 6≡ 1 (mod p) ,
wobei b =
p−1 , ggT(n, p − 1)
gilt. Wir brauchen diesen Satz f¨ ur n = 2 und p 6= 2; in der folgenden Form geht er auf Euler zur¨ uck: Korollar 5.1.6 Quadratwurzeln / Eulersches Kriterium Sei p eine ungerade Primzahl und sei a 6≡ 0 (mod p). Dann hat x2 ≡ a (mod p) genau 2 L¨ osungen oder genau 0 L¨ osungen, je nachdem ob ab ≡ 1 (mod p) oder ab ≡ −1 (mod p) ,
wobei b =
p−1 , 2
gilt. Beweis: Mit b =
p−1 2
gilt ab ≡ ±1 (mod p), weil
(ab − 1) · (ab + 1) ≡ ap−1 − 1 ≡ 0 (mod p) nach Korollar 1.5.7. Es gilt also ab 6≡ 1 (mod p) genau dann, wenn ab ≡ −1 (mod p). Außerdem gilt ggT(2, p − 1) = 2, weil p ungerade ist. Die Behauptung folgt nun direkt aus Satz 5.1.5. 5.1.6
Wir brauchen hiervon den Spezialfall a = 1:
Korollar 5.1.7 Nichtexistenz nichttrivialer Einheitswurzeln Sei p eine ungerade Primzahl. Dann gibt es keine Zahl x 6≡ ±1 (mod p) mit x 2 ≡ 1 (mod p). 3 Theorem
2.28 in Niven/Zuckerman: An Introduction to the Theory of Numbers, 4. Auflage, Wiley.
Kryptographie - Sommersemester 2004
71
Beweis: 1 und −1 sind bereits zwei L¨osungen von x2 ≡ 1 (mod p), die nicht ¨aquivalent sind, da p ungerade 5.1.7 ist. Weitere L¨osungen kann es laut Korollar 5.1.6 nicht geben. Wiederum l¨asst die Existenz einer nichttrivialen Einheitswurzel, d.h. einer Zahl x mit den Eigenschaften x 6≡ ±1 (mod n) und x2 ≡ 1 (mod n), den Schluss zu, dass n nicht prim ist. Auch in diesem Fall wird x ein Zeuge gegen die Unzerlegbarkeit von n genannt. Beispielsweise gilt 6 2 ≡ 1 (mod 35), aber 6 6≡ ±1 (mod 35). Jetzt wissen wir, dass 35 zerlegbar ist; 6 hat dies bezeugt.
5.1.4
Quadratische Reste
Aus Korollar 5.1.6 ergibt sich zwar ein Algorithmus, der die L¨osbarkeit einer quadratischen Gleichung pr¨ uft. Dieser ist jedoch nicht effizient. Zum Beispiel f¨ uhrt die Frage, ob die Kongruenz x2 ≡ 19 (mod 61) l¨osbar ist, auf eine sehr lange Rechnung. TODO: Erg¨anze diesen Abschnitt.
5.2
RSA im Detail
RSA benutzt eine (sehr große) nat¨ urliche Zahl n, die das Produkt zweier Primzahlen ist, und erlaubt die Chiffrierung von Zahlen zwischen 0 und n−1 (inklusive). Der Klartextraum (und auch der Chiffretextraum) ist also Zn . Kryptosystem 5.2.1 RSA-Kryptosystem Es sei n eine Zahl, die Produkt zweier ungerader Primzahlen p und q ist: n = p·q mit 2 6= p 6= q 6= 2. Seien P = C = Zn und sei K (der Schl¨ usselraum) die Menge der Tupel {(n, e, p, q, d) | e, d ∈ {2, . . . , Φ(n) − 1} ∧ e·d ≡ 1 (mod Φ(n))}. F¨ ur einen Schl¨ ussel K = (n, e, p, q, d) definieren wir Ver- und Entschl¨ usselung: eK (x) dK (y)
= xe mod n = y d mod n,
f¨ ur alle x, y ∈ Zn . Das Paar (n, e) ist der public key, das Tripel (p, q, d) der private key. Es muss gezeigt werden, dass dK tats¨achlich das Inverse von eK ist: Satz 5.2.2 Korrektheit von RSA F¨ ur alle x ∈ Zn gilt dK (eK (x)) = x, d.h., dK (eK (x)) ≡ x (mod n).
5.2.1
72
Vorlesungsskript von E. Best / Stand: 19. September 2005
Beweis: Da n = pq mit Primzahlen p, q, gilt Φ(n) = (p − 1)(q − 1). Da ed ≡ 1 (mod Φ(n)), kann ed als ed = 1 + k(p − 1)(q − 1) f¨ ur eine ganze Zahl k geschrieben werden. Sei x ∈ Zn beliebig. Falls p - x, dann gilt: (xe )d
= = = = ≡
xed x1+k(p−1)(q−1) x · xk(p−1)(q−1) x · (xp−1 )k(q−1) x (mod p) ( wegen des Satzes von Fermat, Korollar 1.5.7 )
Falls aber p | x, dann gilt ebenfalls (xe )d ≡ x (mod p), weil beide Seiten ≡ 0 (mod p) sind. Genauso zeigt man, dass (xe )d ≡ x (mod q) f¨ ur alle x ∈ Zn gilt. Nach Korollar 5.1.2 zum Chinesischen Restsatz gilt dann auch (xe )d ≡ x (mod n), was zu zeigen war.
5.2.2
Ein RSA-System wird durch die folgenden Schritte hergestellt: (1) Zwei (große) Primzahlen p und q werden generiert. (2) Es werden n := pq und Φ(n) := (p − 1)(q − 1) gesetzt. (3) Es wird ein Exponent e mit 2 ≤ e < Φ(n) und ggT(e, Φ(n)) = 1 gew¨ahlt. Letzteres garantiert die Invertierbarkeit von e modulo Φ(n). (4) Es wird d := e−1 mod Φ(n) gesetzt. (Danach gilt ed ≡ 1 (mod Φ(n)).) (5) Der ¨offentliche Schl¨ ussel ist (n, e), der private Schl¨ ussel ist (p, q, d). Beispiel: Bob m¨ochte ein RSA-System aufsetzen, damit (ihm bekannte, oder auch ihm unbekannte) Partner ihm verschl¨ usselte Botschaften schicken k¨onnen, die nur er entziffern kann. Er w¨ahlt p = 101 und q = 113 (Schritt 1). (Das sind allerdings ganz unrealistisch kleine Zahlen.) Dann ergeben sich n = 11413 und Φ(n) = 11200 (Schritt 2). Es gilt 11200 = 26 52 7. Deshalb kann ein Exponent e zwischen 2 und 11200 genau dann verwendet werden, wenn er nicht durch 2, 5 oder 7 teilbar ist. Bob wird in der Regel Φ(n) nicht faktorisieren, sondern f¨ ur Zahlen e, die als Exponenten in Frage kommen k¨onnten, nachpr¨ ufen, ob ggT(e, 11200) = 1 gilt. Dies geschieht mit dem Algorithmus extended euclid aus Abschnitt 1.5.2 (mit der Berechnung von e −1 als Nebeneffekt). Annahme: Bob w¨ahlt e = 3533 (Schritt 3). Dann ergibt sich: e−1 mod 11200 = 6597. Bobs Entschl¨ usselungsschl¨ ussel ist also d = 6597 (Schritt 4). Nun ver¨offentlicht Bob n = 11413 und e = 3533 im Netz, beh¨alt aber die Zahl d f¨ ur sich, genauso wie p und q (Schritt 5). Zur Bekanntgabe o¨ffentlicher Schl¨ ussel gibt es spezielle Webseiten, aber Bob k¨onnte auch (oder zus¨atzlich) seine eigene Webpr¨asenz w¨ahlen. Angenommen nun, dass Alice den Klartext 9726 verschl¨ usselt an Bob schicken m¨ochte. Alice l¨adt e = 3533 und n = 11413 aus dem Netz, berechnet 97263533 mod 11413 = 5761,
Kryptographie - Sommersemester 2004
73
und schickt den Chiffretext 5761 u ¨ber einen (unsicheren, ¨offentlichen) Kanal an Bob. Wenn Bob diesen Chiffretext bekommt, benutzt er seinen geheimen Entschl¨ usselungsexponenten d = 6597 und berechnet 57616597 mod 11413 = 9726. Er kann den Klartext also problemlos lesen. Wichtig ist, dass kein anderer ihn entziffern kann; auf diese Frage kommen wir noch zur¨ uck. Wie k¨onnte Alice tats¨achliche Texte – nicht nur Zahlen – in RSA verschl¨ usseln? Eine Methode ist die Folgende. Im Besitz der Zahl n = 11413 und von 26 Buchstaben bildet Alice zun¨achst eine Blockl¨ange k = blog26 (11413)c = 2 und rechnet Bl¨ocke von Buchstaben der L¨ange k in Zahlen zur Basis 26 um, deren Ziffern Buchstaben entsprechen und deren Zahlenwert (wegen der Wahl von k) zwischen 0 – inklusive – und 11413 – exklusive – liegt. Fortsetzung des Beispiels: Alice ist treu; sie m¨ochte – wie schon in Abschnitt 1.1 – den Klartext ic hl ie be di ch verschl¨ usseln. Sie bildet also sechs Bl¨ocke der L¨ange k = 2 (oben schon durch Zwischenr¨aume angedeutet) und interpretiert diese als Zahlen x1 , . . . , x6 zur Basis 26: ic ; (8, 2) hl ; (7, 11) ie ; (8, 4) be ; (1, 4) di ; (3, 8) ch ; (2, 7)
; x1 ; x2 ; x3 ; x4 ; x5 ; x6
= = = = = =
8·26 + 2 7·26 + 11 8·26 + 4 1·26 + 4 3·26 + 8 2·26 + 7
= 210 = 193 = 212 = 30 = 86 = 59.
Die entstehenden Zahlen werden nacheinander RSA-verschl¨ usselt: y1 y2 y3 y4 y5 y6
= 2103533 = 1933533 = 2123533 = 303533 = 863533 = 593533
mod 11413 mod 11413 mod 11413 mod 11413 mod 11413 mod 11413
= = = = = =
4697 2137 1525 11215 8077 10881
; ; ; ; ; ;
6·262 + 24·26 + 17 ; 3·262 + 4·26 + 5 ; 2·262 + 6·26 + 17 ; 16·262 + 15·26 + 9 ; 11·262 + 24·26 + 17 ; 16·262 + 2·26 + 13 ;
GYR DEF CGR QPJ LYR QCN .
Wenn die so berechneten Zahlen mit Ziffern zur Basis 26 geschrieben werden, gen¨ ugen drei solche Ziffern. Der entstehende Chiffretext ist: GYR DEF CGR QPJ LYR QCN. Ende des Beispiels. Im Allgemeinen kann auf diese Weise ein Klartext der Blockl¨ange k auf einen Chiffretext der Blockl¨ange k + 1 injektiv abgebildet werden. Man k¨onnte ein RSA-System problemlos auch als Secret-Key-Kryptosystem betreiben. AES (Kapitel 4) ist jedoch, wie bereits erw¨ahnt, sehr viel effizienter. Im Rest dieses Kapitels besch¨aftigen uns drei Fragen:
74
Vorlesungsskript von E. Best / Stand: 19. September 2005 • Welche Exponenten e sind geeignet? • Wie kann man geeignete Primzahlen p und q (und damit auch RSA-Moduln n = pq) generieren? • Welche Attacken gegen RSA bzw. welche Sicherheitsl¨ ucken von RSA gibt es?
5.3
Auswahl eines Exponenten
Der ¨offentliche Schl¨ ussel e soll eine effiziente Verschl¨ usselung gew¨ahrleisten (weswegen kleine e eine gute Wahl sind) und gleichzeitig die Sicherheit nicht gef¨ahrden (weswegen große e eine gute Wahl sind). Die Wahl e = 2 ist ausgeschlossen, weil (p − 1)(q − 1) eine gerade Zahl ist. Also w¨are 3 das kleinstm¨ogliche e. Verschl¨ usseln mit e = 3 l¨auft auf Quadrieren mit nachfolgendem Multiplizieren hinaus. Mit kleinen e ist aber die Low-Exponent-Attacke m¨oglich, die auf folgendem Satz (hier formuliert f¨ ur e = 3) beruht: Satz 5.3.1 Low-Exponent-Attacke Seien n1 , n2 , n3 paarweise teilerfremd und sei m ∈ N mit 0 ≤ m < min(n1 , n2 , n3 ). Sei c ∈ N mit c ≡ m3 mod ni f¨ ur i = 1, 2, 3 und 0 ≤ c < n1 n2 n3 . Dann gilt c = m3 . Beweis: Die Zahl c0 = m3 erf¨ ullt die simultane Kongruenz c0 ≡ m3 mod n1 , c0 ≡ m3 mod n2 , c0 ≡ m3 mod n3 , 0 und es gilt 0 ≤ c < n1 n2 n3 wegen 0 ≤ m < min(n1 , n2 , n3 ). Da eine solche L¨osung nach dem Chinesischen 5.3.1 Restsatz eindeutig ist, folgt c = c0 . Eine Low-Exponent-Attacke ist m¨oglich, wenn der gleiche Exponent (z.B. 3) mit der gleichen Nachricht, aber verschiedenen (zueinander teilerfremden) Moduln n benutzt wird. Das k¨onnte z.B. vorkommen, wenn eine Bank die gleiche Nachricht an verschiedene Kunden schickt, die verschiedene ¨offentliche Schl¨ ussel (die auch noch teilerfremd sind, was gut vorkommen k¨onnte) haben. Oscar kennt die Schl¨ usseltexte ci = x3 mod ni (i = 1, 2, 3). Mit dem Chinesischen Restsatz berechnet er eine ganze Zahl c mit c ≡ c 1 mod n1 , c ≡ c2 mod n2 , c ≡ c3 mod n3 und 0 ≤ c < n1 n2 n3 . Nach Satz 5.3.1 gilt c = x3 . Also findet Oscar den Klartext x, indem er aus c die dritte Wurzel zieht. Gegen eine Low-Exponent-Attacke kann vorgesorgt werden, indem gr¨oßere Exponenten verwendet werden, oder auch, indem verhindert wird, dass die gleiche Nachricht mehrfach geschickt wird (etwa durch Einf¨ ugen von ein paar zuf¨allig gew¨ahlten Bits). Ein großer Exponent, der oft f¨ ur RSA-Systeme gew¨ahlt wird und trotz seiner Gr¨oße eine (relativ) effiziente Verschl¨ usselung zul¨asst, ist e = 216 + 1 (eine Primzahl).
5.4
Primzahlerzeugung
Die beiden Primzahlen p und q des RSA-Systems sollen sowohl groß sein, als auch relativ nahe (aber nicht zu nahe) beieinander liegen (und noch ein paar weitere Kriterien erf¨ ullen), damit nicht schon der allereinfachste Faktorierungsversuch der Zahl pq, die ja ver¨offentlicht werden soll, erfolgreich ist. Wir k¨onnen den folgenden Algorithmus zur Erzeugung einer zuf¨alligen Primzahl m einer vorgegebenen Bitl¨ange ` verwenden: (1) Erzeuge einen zuf¨alligen Bitvektor m0 der L¨ange ` − 2. Zu diesem Zweck kann ein Zufalls- oder ein Pseudozufallsgenerator verwendet werden4 . 4 Siehe
http://random.mat.sbg.ac.at/.
Kryptographie - Sommersemester 2004
75
(2) Setze das erste und das letzte Bit von m auf 1, den Rest dazwischen auf m 0 . ¨ ¨ (3) Uberpr¨ ufe, ob m eine Primzahl ist. Falls ja: fertig. Falls nein: Zur¨ uck zu Schritt (1). Die Uberpr¨ ufung der Primzahleigenschaft von m kann in zwei Schritten geschehen: (3a) Pr¨ ufe, ob eine der Primzahlen in einer Liste (typischerweise die Liste der Primzahlen kleiner als 106 ) m teilt. Falls nein, wende das Verfahren an, das im Rest dieses Abschnitts beschrieben wird, oder ein anderes mit dem gleichen Effekt. (Dieses Verfahren kann nat¨ urlich auch schon sofort eingesetzt werden, ohne die Primzahlliste zu bem¨ uhen.) Im Jahr 2002 ist es Manindra Agarwal, Neeraj Kayal und Nitin Saxena gelungen, nachzuweisen 5 , dass das komplexit¨atstheoretische Problem PRIMES:
Gegeben n ∈ N\{0, 1}. Ist n prim?
in P liegt, d.h., dass ein deterministischer Algorithmus zu seiner L¨osung existiert, der polynomiell viel Zeit in der Gr¨oße der Eingabe ben¨otigt. Dieser Algorithmus ist inzwischen bekannt als der AKS-Algorithmus. Die Gr¨oße der Eingabe ist dabei die L¨ange der Darstellung der Zahl n, nicht die Zahl selbst. Wenn wir nicht gerade das Bierdeckelsystem benutzen, ist die L¨ange der Darstellung von n logarithmisch in der Zahl n. Denn wenn man das Zehnersystem benutzt, braucht man genau dlog 10 (n + 1)e Ziffern zur Darstellung von n, und wenn man das dyadische System benutzt (nur 0, 1 sind Ziffern, also die Bitdarstellung), braucht man dlog2 (n + 1)e viele Ziffern. Andererseits k¨onnen alle p-adischen Darstellungen von n (mit p ≥ 2) bis auf konstante Faktoren ineinander umgerechnet werden. Beispielsweise ist die dyadische Darstellung von n immer, d.h., f¨ ur jedes n, ca. 3.322-mal so lang wie die Darstellung von n im Zehnersystem, denn es gilt 3.322 ≈ log2 (10). Eine sehr nahe liegende Methode, eine (ungerade) Zahl n auf Zusammengesetztheit zu u ufen, ist die ¨berpr¨ Probedivision. Man geht alle Zahlen zwischen 2 und n durch und pr¨ u ft, ob sie n teilen. Man braucht sogar √ nur die Zahlen von 3 bis b nc zu untersuchen, denn wenn n u ¨berhaupt einen echten Teiler hat, dann auch einen innerhalb dieser Menge. Man braucht auch die Vielfachen von 2 nicht zu untersuchen, weil n ja nicht gerade ist. Diese Idee kann noch verfeinert werden, denn auch die Vielfachen von 3 (außer 3 selbst) m¨ ussen nicht als m¨ogliche Teiler betrachtet werden, und genausowenig die Vielfachen von 5 (außer 5), usw.; diese Idee ist als Sieb des Eratosthenes bekannt. Trotz des Herausstreichens von Vielfachen schon untersuchter ugend viele √ Primzahlen bleiben noch gen¨ Zahlen u ¨brig, die als m¨ogliche Teiler von n in Frage kommen; b nc ist zwar eine obere Schranke, aber auch eine ziemlich gute. Der Probedivisionsalgorithmus ist daher keineswegs polynomiell in der Eingabegr¨oße, p √ sondern exponentiell. Denn n = exp(ln(n)) = exp( 21 ln(n)), und das ist exponentiell in der L¨ange der Zifferndarstellung von n in einem beliebigen p-adischen System (p ≥ 2). Um zu sehen, wie viele Zahlen gr¨oßenordnungsm¨aßig als m¨ogliche Teiler ussen, kann √ betrachtet werden m¨ man die Anzahl der Primzahlen unterhalb von n bzw. unterhalb von n mit Hilfe des folgenden Satzes absch¨atzen, der wegen seiner Bedeutung auch der Primzahlsatz“ genannt wird. ” Satz 5.4.1 Primzahlsatz Sei k ∈ N. Mit π(k) sei die Anzahl der Primzahlen ≤ k bezeichnet. Dann gilt: π(k) ∼ 5 Siehe
k , ln(k)
genauer: f¨ ur k ≥ 17 gilt
k k < π(k) < 1.25506· . ln(k) ln(k)
http://www.cse.iitk.ac.in/news/primality.html.
76
Vorlesungsskript von E. Best / Stand: 19. September 2005
Diese Absch¨atzung ist schon f¨ ur kleine k (wie 109 ;-) ziemlich gut: es gilt 109 / ln(109 ) = 48 254 942 und 9 π(10 ) = √ 50 847 478.√Wenn man eine Zahl mit 75 Dezimalstellen per Probedivision testet, braucht man mehr als 1075 / ln( 1075 ) > 0.36·1036 Probedivisionen, was außerhalb des Bereichs des M¨oglichen ist und eindrucksvoll die Exponentialit¨at des Algorithmus belegt, wenn man diesen Zeitverbrauch mit der Eingabel¨ange, also der L¨ange der Darstellung einer (dezimal) 75-stelligen Zahl vergleicht, die ja noch auf eine normal lange Zeile passt. Wir stellen nun Algorithmen vor, die sehr viel effizienter sind und die Eigenschaft einer (großen) Zahl, prim zu sein, mit sehr hoher Wahrscheinlichkeit – aber nicht mit hundertprozentiger Sicherheit – feststellen k¨onnen. Diese Algorithmen nutzen hinreichende – aber nicht notwendige – Bedingungen daf¨ ur aus, dass eine Zahl nicht-prim ist. Zwei solche Bedingungen wurden in Abschnitt 5.1.3 beschrieben. Oft werden Algorithmen dieser Art probabilistisch genannt. Aber man kann sie auch semi-exakt nennen, denn probabilistische Argumente gehen nur insofern ein, als man die Wahrscheinlichkeiten des Auftretens einer falschen“ Antwort eines solchen Algorithmus absch¨atzen kann bzw. m¨ochte. Die Formulierung eines ” solchen Algorithmus geschieht ohne Zuhilfenahme von Wahrscheinlichkeiten. Wir k¨onnen zum Beispiel a = 2 w¨ahlen und pr¨ ufen, ob a ein Zeuge f¨ ur die erste der in Abschnitt 5.1.3 angegebenen Bedingungen ist: prim(n)
⇒
2n−1 ≡ 1 (mod n).
(5.2)
Mit anderen Worten: wenn die rechte Seite dieser Implikation nicht gilt, ist n sicher nicht prim. Dies motiviert den semi-exakten Algorithmus in Abbildung 5.3. ↓
proc pseudoprim(n); Ausgabe: nicht prim“ bzw. wahrscheinlich prim“ ” ” begin if modexp(2, n−1, n) 6= 1 → return sicher keine Primzahl“ (Zeuge: a = 2) ” else → return wahrscheinlich Primzahl“ ” fi end; Abbildung 5.3: Auf Fermats Satz beruhender Test pseudoprim. Dieser Algorithmus irrt sich“ erstaunlich selten. Beispielsweise gibt es unter den Zahlen n < 10 000 nur 22, ” f¨ ur die er ein falsches Ergebnis liefert. Die Idee ist nahe liegend, pseudoprim in eine Schleife einzubetten, in der mehrere a ∈ Z+ uft werden, nicht nur a = 2. Leider gen¨ ugt das nicht, um die Primalit¨at von n gepr¨ n sicher nachzuweisen, denn es gibt Zahlen n, die nicht prim sind, f¨ ur die aber an−1 ≡ 1 (mod n) f¨ ur alle a ∈ Z∗n gilt. Diese Zahlen werden Carmichael-Zahlen genannt: n ist Carmichael-Zahl
gdw.
¬ prim(n) ∧ ∀a ∈ Z∗n : an−1 ≡ 1 (mod n).
Die drei kleinsten Carmichael-Zahlen sind 561(= 3·11·17), 1105 und 1729. Carmichael-Zahlen sind selten, aber (und das weiß man sogar erst seit 1992) es gibt unendlich viele. Der Miller-Rabin-Test, der als n¨achstes beschrieben wird, umgeht den Carmichael-Schwachpunkt“ des ” pseudoprim-Tests, indem die zweite in Abschnitt 5.1.3 angegebene hinreichende Bedingung f¨ ur die Zerlegbarkeit von n mit in die Betrachtung einbezogen wird: prim(n)
⇒
2 ¬∃x ∈ Z+ n : x ≡ 1 (mod n) ∧ x 6≡ ±1 (mod n).
(5.3)
Kryptographie - Sommersemester 2004
77
Im Algorithmus von Miller-Rabin wird die Bedingung auf der rechten Seite von (5.3) ¨ahnlich wie die vorige Bedingung in (5.2) benutzt: wenn eine Zahl x gefunden wird, die x2 ≡ 1 (mod n) erf¨ ullt, aber weder ≡ 1 (mod n) noch ≡ −1 (mod n) ist, wenn also die rechte Seite der Implikation in (5.3) nicht gilt, dann kann n nicht prim sein. ↑
↓ ↓
proc witness (a, n) : {false, true}; begin Sei bk−1 . . . b0 die Bin¨ardarstellung von (n−1)“; ” d := 1; i := k − 1; do i ≥ 0 → x := d; d := (d∗d) mod n; if (d = 1) ∧ (x 6= 1) ∧ (x 6= (n−1)) → return true else → skip f i; if bi = 0 → skip bi = 1 → d := (d∗a) mod n f i; i := i−1 od; if d 6= 1 → return true % Ausgang (1) d = 1 → return false fi end;
% Ausgang (2)
Abbildung 5.4: Unterprogramm witness f¨ ur den Miller-Rabin-Test.
↓ ↓
proc Miller Rabin(n, s); Ausgabe: nicht prim“ bzw. sehr wahrscheinlich prim“ ” ” begin W¨ahle a1 , . . . , as zuf¨allig und paarweise verschieden aus {1, . . . , n−1}“; ” for j := 1 to s do if witness(aj , n) → return sicher keine Primzahl“ ” else → skip fi endfor; return sehr wahrscheinlich Primzahl“ ” end; Abbildung 5.5: Miller-Rabin-Primzahltest. Das Programm besteht aus zwei Teilen: der Funktion witness (Abbildung 5.4) und dem Hauptprogramm Miller Rabin (Abbildung 5.5). In der Funktion witness wird gepr¨ uft, ob a ein Zeuge gegen n auf Grund der Bedingung (5.2) – mit a anstelle von 2 – ist, und gleichzeitig, ob ein Zeuge x gegen n auf Grund von Bedingung (5.3) existiert. Im Wesentlichen ist witness der modexp-Algorithmus mit zus¨atzlichen Vorkehrungen f¨ ur die Entdeckung von Zeugen x. Im Hauptprogramm Miller Rabin wird witness f¨ ur insgesamt s zuf¨allig
78
Vorlesungsskript von E. Best / Stand: 19. September 2005
ausgew¨ahlte Zeugenkandidaten aufgerufen. Wir erkl¨aren die Funktionsweise dieses Algorithmus am Beispiel n = 561 mit a 1 = 7 als Kandidaten f¨ ur den Zeugenstand. Beim Aufruf von witness(7, 561) wird die Tabelle erzeugt, die in Abbildung 5.6 angegeben ist. Dies ist fast die gleiche Tabelle wie diejenige aus Abbildung 5.2, außer dass zus¨atzlich die Variable x belegt wird. Falls im i ten Schritt bi = 0 ist, enth¨alt x den alten Wert von d. Im letzten Schritt der Abarbeitung (i = 0) wird in der Zeile mit Ausgang (2)“ entdeckt, dass ” 2
(7280 ) ≡ (7560 ) ≡ 1 (mod 561) {z } | 2
x = 67, d = 67 (mod 561), d = 1, c = 560, d = 7
560
7280 ≡ 67 6≡ ±1 (mod 561) | {z }
und mod 561
x = 67, x 6= 1, x 6= n−1, altes c = 280, x = 7
. 280
mod 561
Die Zahl 561 wird also durch den Miller-Rabin-Test als zusammengesetzt erkannt. Im Gegensatz dazu behauptet das Programm pseudoprim f¨alschlicherweise, dass die Zahl 561 prim sei, selbst wenn alle Zahlen a ∈ Z∗560 durchgetestet werden. i bi c d x
9 8 1 0 1 2 7 49 1 7
7 0 4 157 49
6 0 8 526 157
5 1 17 160 103
4 1 35 241 355
3 0 70 298 241
2 1 0 0 140 280 166 67 298 166
0 0 560 1 67
Abbildung 5.6: Beispiel f¨ ur die Funktionsweise von witness. Generell liefert die Funktion witness u ¨berhaupt nur dann true, wenn n keine Primzahl ist. Denn wenn true auf Grund von Ausgang (1) zur¨ uckgeliefert wurde, ist a ein Zeuge gegen die Primalit¨at von n wegen des Satzes von Fermat. Wenn aber true auf Grund des Ausgangs (2) resultiert, ist x ein Zeuge gegen die Primalit¨at von n nach Bedingung (5.3), wie im eben besprochenen Beispiel. Zum Schluss sch¨atzen wir noch die Wahrscheinlichkeit ab, dass sich der Miller-Rabin-Algorithmus irrt“. ” Dazu zitieren wir einen Satz ohne Beweis: Satz 5.4.2 Absch¨ atzung der Anzahl der Zeugen Sei n ungerade und keine Primzahl. Dann gibt es h¨ ochstens sind.
n−1 4
Zahlen in Z+ n , die keine Zeugen gegen n
Aus diesem Satz folgt sofort der Folgende. Satz 5.4.3 Absch¨ atzung der Fehlerh¨ aufigkeit des Miller-Rabin-Tests Sei n ungerade und sei s > 0. Die Wahrscheinlichkeit, dass Miller Rabin(n,s) ein falsches Ergebnis liefert, ist h¨ ochstens 2−2s . Beweis: Wenn n zusammengesetzt ist, findet eine einzelne Ausf¨ uhrung der for-Schleife in Abbildung 5.5 mit Wahrscheinlichkeit ≤ 14 keinen Zeugen daf¨ ur; dies folgt aus Satz 5.4.2. Miller-Rabin liefert u ¨berhaupt nur dann ein falsches Ergebnis, wenn s-mal hintereinander ein Zeuge nicht gefunden wird. Die Wahrscheinlichkeit f¨ ur eine solch ungl¨ uckliche Kette von Fehlern ist h¨ochstens 4−s = 2−2s . 5.4.3
Kryptographie - Sommersemester 2004
79
In der Praxis stellt sich heraus, dass der Miller-Rabin-Test in der Regel noch zuverl¨assiger ist, als die oben angegebene Absch¨atzung suggeriert. Da Miller Rabin im Wesentlichen eine s-malige Wiederholung einer modularen Exponentiation ist, ben¨otigt der Algorithmus O(s`) arithmetische Operationen und O(s`3 ) Bit-Operationen, wenn mit ` die Anzahl der Bits von n bezeichnet wird. Der AKS-Algorithmus ist bedeutend langsamer; der Algorithmus in der Originalversion des Papiers hat einen Exponenten von 12, d.h., ben¨otigt Zeit O(`12 ). In der Zwischenzeit sind jedoch sehr viele Effizienzverbesserungen gefunden worden; unter Zuhilfenahme unbewiesener Vermutungen und/oder probabilistischer Elemente konnte der Exponent auf 6 und 4 gedr¨ uckt werden. Der aktuelle Stand dieser sehr im Fluss befindlichen Forschungsanstrengungen kann unter dem URL http://www.utm.edu/research/primes/prove/prove4 3.html, einer Sammelstelle f¨ ur neue und allerneueste Resultate, nachgelesen werden.
5.5
Faktorisierung und andere Attacken auf RSA
Die in Abschnitt 5.3 schon erw¨ahnte Low-Exponent-Attacke auf RSA ist bei weitem nicht die einzige und auch nicht die gef¨ahrlichste. Ein Problem der Public-Key-Kryptographie generell (und RSA im Besonderen) ist die Sensitivit¨at der ¨offentlichen Schl¨ ussel. Angenommen, Oscar m¨ochte den Nachrichtenverkehr von Alice zu Bob beobachten. Er kann versuchen, Alice einen eigenen ¨offentlichen Schl¨ ussel e0 unterzuschieben 0 und zu behaupten, e sei Bobs ¨offentlicher Schl¨ ussel. Zum Beispiel benutzt er, wenn es so etwas gibt, eine Webseite, auf der ¨offentliche Schl¨ ussel ver¨offentlicht werden k¨onnen, ohne dass die Identit¨at des Ver¨offentlichenden verifiziert wird. Selbst wenn eine solche Seite nach der Ver¨offentlichung von Schl¨ usseln vor weiteren Ver¨anderungen gesch¨ utzt ist, kann Oscar sich dort unehrlicherweise unter Bobs Namen und Adresse anmelden und den Schl¨ ussel e0 angeben. Wenn Alice nun den Schl¨ ussel e0 benutzt, um an Bob Nachrichten zu schicken, kann Oscar diese Nachrichten mit seinem geheimen Schl¨ ussel d0 entziffern, lesen, und dann mit Bobs eigentlichem Schl¨ ussel e verschl¨ usselt an Bob weiterschicken, sodass die beiden unter Umst¨anden noch nicht einmal merken, dass jemand lauscht“. ” Diese Attacke wird Man-in-the-middle-Attacke (MITM) genannt, oder auch Impersonation Attack 6 . Um sie abzuwenden, gibt es kaum einen anderen Weg, als die o¨ffentlichen Schl¨ ussel nicht irgendwo, sondern bei (z.B. staatlich anerkannten) Stellen abzulegen. Solche Stellen heißen Trusted Third Parties (TTP) oder ¨ auch Certification Authorities. Eine Ubersicht ist unter http://www.qmw.ac.uk/∼tl6345/ca.htm zu finden. Die M¨oglichkeit der MITM-Attacke zeigt auch, dass unsere vorherige Behauptung, in der Public-KeyKryptographie sei kein Schl¨ usselaustausch u ¨ber sichere Kan¨ale n¨otig, sich in der Praxis als etwas optimistisch herausstellt – allerdings sind die Probleme von durchaus anderer Art als bei der Secret-Key-Kryptographie. Attacken vom Man-in-the-Middle-Typ sind auch auf andere Weisen m¨oglich. Zum Beispiel kann es vorkommen, dass Alice ihre Nachricht an Bob (ichliebedich) u ¨ber etliche Server und Workstations sendet. Da Jeder an Bob verschl¨ usselte Nachrichten senden kann, w¨are es ein Leichtes f¨ ur Oscar (der z.B. ein eifers¨ uchtiger Postmaster einer dieser Server ist), die Datei mit der verschl¨ usselten Nachricht zu l¨oschen und Bob stattdessen ichliebedichnicht verschl¨ usselt zu schicken. Dies wirft das Problem der Authentifizierung auf: Bob sollte besser sicher gehen, dass die Nachricht, die er erhalten hat, tats¨achlich von Alice stammt, und von niemand anderem. Dieses Problem kann auf verschiedene Weisen gel¨ost werden, unter anderem durch die Verwendung digitaler Signaturen. 6 F¨ ¨ ur impersonation gibt es keine sehr gute deutsche Ubersetzung; http://dict.leo.org/ kennt Betr¨ ugerisches Auftreten und Personifikation (was beides in etwa, aber nicht ganz genau, passt).
80
Vorlesungsskript von E. Best / Stand: 19. September 2005
Sowohl auf Zertifizierung als auch auf digitale Signaturen gehen wir in einem sp¨ateren Kapitel genauer ein7 . Ein cleverer Angriff auf RSA wurde von M.J. Wiener im Jahr 1990 entdeckt. Er funktioniert, wenn der Entschl¨ usselungsexponent d klein“ ist und p und q sehr nahe beieinander liegen, genauer, wenn ” 1 3d < n 4 und q < p < 2q gilt. Dieser Angriff heißt Low-Decryption-Exponent-Attacke, wird hier aber nicht n¨aher beschrieben. Die Multiplikativit¨ at von RSA, d.h., die Eigenschaft eK (x1 )eK (x2 ) mod n = eK (x1 x2 ) mod n er¨offnet eine Reihe von Betrugsm¨oglichkeiten, insbesondere Chosen-Ciphertext-Attacken. Ein Angriff dieser Art kann folgendermaßen beschrieben werden: Oscar bekomme einen Chiffretext y = x e mod n in die H¨ande und sei am Klartext x = y d mod n interessiert. Er w¨ahlt k ∈ Zn beliebig, aber invertierbar modulo n (also mit der Eigenschaft ggT(k, n) = 1) und bildet den Chiffretext“ ” y 0 = (y·k e ) mod n = ((y mod n)·(k e mod n)) mod n, der f¨ ur Bob wie Double Dutch“ (unverst¨andliches und vor allen Dingen auch ungef¨ahrliches Kauderwelsch) ” aussieht. Auf irgend eine Weise u ¨berredet er Bob, diesen Text y 0 zu dechiffrieren, oder er kommt auf eine andere Weise an die Dechiffrierung x0 = (y 0 )d mod n heran (auch x0 wird ungef¨ahrlich“ aussehen). Nun ” rechnet Oscar folgendermaßen: x0
=
(y 0 )d mod n
= = = = =
(yk e )d mod n y d k ed mod n ((y d mod n)(k ed mod n)) mod n ((y d mod n)·k) mod n (xk) mod n.
Im Besitz des Klartexts“ x0 und der invertierbaren Zahl k kann Oscar somit x ausrechnen – was sein ” eigentliches, urspr¨ ungliches Ziel war. Eine weitere Unsicherheit von RSA besteht in protocol failure, worunter man im weiteren Sinn nachl¨assige ” Benutzung“ verstehen kann. Wenn Alice zum Beispiel ihren Text ichliebedich nicht wie in Abschnitt 5.2 verschl¨ usselt, sondern simpler, indem sie die Buchstaben als Zahlen x in {0, . . . , 25} auffasst und diese dann direkt mit Hilfe von xe mod n umrechnet, kann Oscar recht schnell verstehen, was sie meint, ohne d zu kennen. Die Verschl¨ usselung in Abschnitt 5.2 ist zwar besser, aber auch nicht optimal, da bei Blockl¨ange 2 nur Zahlen der maximalen Gr¨oße 25·26 + 25 = 675 verschl¨ usselt werden k¨onnen. Der Modul n = 11413 w¨ urde viel gr¨oßere Zahlen zulassen, bleibt aber knapp unterhalb von 25·262 + 25·26 + 25 = 17525, was eine Blockl¨ange von 3 erm¨oglichen w¨ urde. Er ist also f¨ ur den Zweck der Verschl¨ usselung von aus 26 Buchstaben zusammengesetztem Text relativ schlecht gew¨ahlt. Eine andere protocol failure“ ergibt sich, wenn Bob und Charlie RSA mit dem gleichen Modul n, aber mit ” verschiedenen Verschl¨ usselungsexponenten e1 , e2 mit ggT(e1 , e2 ) = 1 benutzen. Wenn Alice unter diesen Umst¨anden an Bob und an Charlie den gleichen Klartext x schickt und Oscar beide Chiffrate y 1 = xe1 mod n und y2 = xe2 mod n abf¨angt und liest, kann er mit Hilfe von c1 c2 x1 7 Wenn
:= := :=
e−1 1 mod b2 ; (c1 e1 − 1)/b2 ; y1c1 (y2c2 )−1 mod n
die Zeit reicht ...
Kryptographie - Sommersemester 2004
81
den urspr¨ unglichen Klartext berechnen (x1 = x). Die direkteste Art und Weise, RSA zu knacken“, besteht aber aus dem Versuch, aus den ¨offentlichen Daten ” (n, e) die privaten Daten (p, q, d) zu (re)konstruieren. Drei M¨oglichkeiten bieten sich an: (A) Faktorisieren: man gewinnt p und q aus n (und e). (B) Berechnung des Entschl¨ usselungsexponenten: man gewinnt d aus e (und n). (C) Berechnung von Φ(n): man gewinnt Φ(n) aus n (und e). RSA beruht wesentlich darauf, dass das Faktorisierungsproblem f¨ ur große n sehr schwer zu l¨osen ist8 . Es stellt sich auch heraus, und darauf gehen wir zum Schluss dieses Abschnitts ein, dass die M¨oglichkeiten (B) und (C) tats¨achlich – mehr oder weniger – ¨aquivalent zur Faktorisierung sind. (A) Faktorisierung: Das Problem der Faktorisierung einer Zahl n ist noch schwerer als das der Feststellung, ob n prim ist. Die Primzahltestprogramme (z.B. Miller Rabin) helfen so gut wie nicht bei der Faktorisierung. Auch der AKS-Algorithmus liefert keine Faktorzerlegungen. Der Probedivisionsalgorithmus kann im Prinzip zur Faktorisierung verwendet werden, ist aber ausgesprochen ineffizient. Mit den besten heute vorhandenen Faktorisierungsalgorithmen gelingt die Faktorisierung von Zahlen der Bitl¨ange > 500 nur mit Anstrengung. RSA Security (http://www.rsasecurity.com) ist sich der Wichtigkeit dieser Frage sehr bewusst, denn schließlich h¨angt das RSA-Verfahren insgesamt entscheidend von der Behauptung ab, dass Faktorisieren schwer sei. Auf der RSA-Webpage werden RSA Challenges ausgeschrieben. Auf die Faktorisierung einer 640-Bit-Zahl (193 Dezimalstellen) ist (heute, im Juni 2004) ein Preis von 20 000 USD ausgelobt; eine 576-Bit-Zahl mit einem Preisgeld von 10 000 USD wurde immerhin im Dezember 2003 erfolgreich faktorisiert (nat¨ urlich unter Verwendung von Supercomputern). Wir stellen hier zwei Faktorisierungsalgorithmen vor, einen im Detail, den anderen nur im Konzept. Die heute u urlich bei ¨blichen Verfahren sind oft Abwandlungen bzw. Weiterentwicklungen davon. Es geht nat¨ allen Verfahren darum, in der Zeitkomplexit¨at n0.5 des Probedivisionsverfahrens die Parameter zu dr¨ ucken: entweder die 0.5 zu verringern oder das n allm¨ahlich in Richtung log(n) zu verlagern. Das erste vorgestellte Verfahren – Pollards ρ-Heuristik – schafft in vielen F¨allen eine Verbesserung von n0.5 auf n0.25 . Die Grundidee bei diesem Verfahren ist die Betrachtung einer zuf¨alligen Folge von Zahlen x1 , x2 , . . . aus Zn , wobei n die zu faktorisierende Zahl ist. Ab wann (d.h., ab welchem Index i) darf man mit erheblicher (> 12 ) Wahrscheinlichkeit erwarten, dass eine k te Zahl xk , i ≤ k, eine Wiederholung einer schon vorher da√ undung gewesenen Zahl xj , j < i, d.h., xj = xk , ist? Die Antwort lautet: ungef¨ahr i = b1.17· nc. Die Begr¨ f¨ ur diese Antwort9 ist die gleiche wie beim bekannten Geburtstagsparadox: Wie groß ist die Wahrscheinlichkeit, dass von 23 in einem Raum anwesenden Personen zwei am gleichen Tag Geburtstag haben? Die Antwort lautet – vielleicht u ¨berraschenderweise, und deswegen spricht man von einem Paradox“ –: gr¨oßer ” als 21 . Beispielsweise findet sich in Abbildung 5.7 (links) eine ziemlich zuf¨allig aussehende Folge von Zahlen x1 = 2, x2 = 3, x3 = 8, x4 = 63 . . . aus Z1387 . Die erste Wiederholung gibt es bei x18 (das ist n¨amlich gleich x6 ), also etwas fr¨ uher als erwartet, denn die Wurzel aus 1387 ist ungef¨ahr 37. Wenn wir die Folge so erzeugen, dass sich xi+1 eindeutig aus xi ergibt, dann wissen wir, dass ab der ersten Wiederholung ein Kreis gebildet wird. Mit xj = xk gilt dann n¨amlich auch xj+1 = xk+1 , xj+2 = xk+2 , usw. 8 Vorsichtiger 9 Die
gesagt: zu sein scheint. hier nicht streng hergeleitet wird.
82
Vorlesungsskript von E. Best / Stand: 19. September 2005
996
310 396
814
x007
x7 84
177
31
x006
x6 x18
1186
120
18
1194
x4
529
339
63
26
x04 595
1053
63
x003
x03 8
8
x06
8
x02
x2 3
x002 3
16
x01
x1 mod 1387
47
x004
6
x3
2
11
x005
x5
3
x05 2
mod 19
x001 2
mod 73
Abbildung 5.7: Ein Beispiel zum Pollard Rho-Verfahren mit n = 1387 = 19·73. Nehmen wir nun einen nichttrivialen Faktor m von n und betrachten auch die Zahl m 0 = n/m. Die Folge x1 , x2 , . . . induziert zwei weitere Folgen, x01 = x1 mod m , x02 = x2 mod m , . . .
und
x001 = x1 mod m0 , x002 = x2 mod m0 , . . . ,
die außerdem nach dem gleichen Muster aufgebaut sind: x0i+1 = ((x0i )2 − 1) mod n, denn es gilt x mod nmod m = x mod m. Nehmen wir zus¨atzlich ggT(m, m0 ) = 1 an. Dann sind die Folge x1 , x2 , . . . und das Folgenpaar x01 , x02 , . . . und x001 , x002 , . . . nach dem Chinesischen Restsatz zueinander ¨aquivalent, d.h., man kann nicht nur Letzteres aus x1 , x2 , . . . erzeugen, sondern auch x1 , x2 , . . . aus x01 , x02 , . . . und x001 , x002 , . . . Insbesondere gilt dann, dass die beiden kleineren“ Folgen x01 , x02 , . . . und x001 , x002 , . . . die gleiche ρ-Form haben wie die Ursprungsfolge, weil ” xi+1 mod m und xi+1 mod m0 sich eindeutig aus xi mod m bzw. xi mod m0 ergeben. Abbildung 5.7 zeigt ein 0 Beispiel mit m = 19 und die Folge x01 , x02 , . . . √ m = 73. Wie oben (Geburtstagsparadox) erwartet man, dass 00 00 sich √ nach ungef¨ahr b mc (im Beispiel = 4) Schritten wiederholt, und die Folge x1 , x2 , . . . nach ungef¨ahr b m0 c (im Beispiel = 8) Schritten. Die Wiederholungen in der Folge x01 , x02 , . . . sind sehr interessant in Bezug auf die Teiler von n, denn es gilt: x0i = x0i+l
⇒
m | (xi+l − xi ),
(also ggT(xi+l − xi , n) > 1)
(5.4)
Kryptographie - Sommersemester 2004
83
direkt aus der Definition der x0i . Außerdem geschehen Wiederholungen modulo m schneller als Wiederholungen modulo n. Das Pollard Rho-Verfahren macht sich dies folgendermaßen zunutze: Es wird sukzessive eine Folge x 1 , x2 , x3 , . . . generiert und es wird von diesen Zahlen in immer gr¨oßeren Abst¨anden eine gesichert. Wenn ein Wert xk erzeugt wird, so dass der vorher gesicherte Wert auf einem kleinen“ Kreis f¨ ur m liegt (z.B. auf dem Kreis ” x03 → x04 → x05 f¨ ur die Zahl m = 19, siehe Bildmitte von Abbildung 5.7), dann wird irgenwann eine gesamte Kreisumdrehung (im kleinen Kreis) erfolgen, ohne dass zwischendurch gesichert wird (weil dies in immer gr¨oßeren Abst¨anden passiert), es wird also – wegen (5.4) – eine Zahl xi geben mit xi ≡ y (mod m), wobei y der gesicherte Wert ist. Dann ist ein Faktor (vermutlich m oder ein Vielfaches von m) entdeckt. Genauer: seien t, j kleinste Zahlen mit j 6= 0 und x0t+i = x0t+j+i f¨ ur alle i ≥ 0. D.h., t ist der Index der ersten Wiederholung und j ist die L¨ange des (kleinsten) daraus entstehenden Kreises. Dann gilt x0t+i = x0t+j+i
⇒
( wegen der Definition der x0i ) )
⇒
( wie oben )
m | (x0t+i = x0t+j+i )
(5.5)
ggT(x0t+i = x0t+j+i , n) > 1.
√ Da der kleinste Primfaktor p von n h¨ochstens von der Gr¨oße b nc ist und die Gr¨oße eines zu p geh¨origen 1 √ ur die Pollard-ρ-Methode, der in der Kreises h¨ochstens b pc, kommt es zu dem Erwartungswert von n 4 f¨ Praxis durchaus best¨atigt wird. Die Pollard-ρ-Methode ist besonders gut dazu geeignet, kleine Primfaktoren einer (riesigen) Zahl zu entdecken. Der Pseudocode des Algorithmus ist in Abbildung 5.8 dargestellt. Zur zuf¨alligen“ Erzeugung von xi+1 ” aus xi wird die Funktion f (x) = (x2 − c) mod n mit c = 1 verwendet. Der Algorithmus k¨ onnte auch eine Endlosschleife produzieren, das kommt in der Praxis jedoch kaum vor. Wenn diese Gefahr bestehen sollte, ist es angeraten, den Parameter c zu ¨andern. Alle c sind daf¨ ur geeignet (außer c = 0 und c = 2, die besser vermieden werden sollten). In Abbildung 5.7 sind diejenigen x-Werte, die als y gesichert werden, schattiert eingezeichnet. Die dicken Pfeile zeigen, wie weit der Algorithmus rechnet, bis ein Faktor von 1387 entdeckt wird. Der Faktor 19 wird entdeckt, sobald x7 = 177 berechnet und ggT(63 − 177, 1387) = 19 ausgewertet wurde. Die d¨ unnen Pfeile sind im Bild nur eingezeichnet, damit die ρ-Form erkennbar wird; sie entsprechen den Werten von x, die errechnet werden w¨ urden, wenn das Verfahren nicht beendet werden w¨ urde. Allgemein: Falls Pollard Rho einen Wert xk auf y gesichert hat, mit k ≥ t, dann ist y mod m immer auf dem kleinen Kreis“ modulo m. Falls k ≥ j, wird der kleine Kreis umfahren, ohne dass y neu gesetzt wird. ” Irgendwann wird dann xi ≡ y mod m, also (wie in (5.5)) ggT(y − xi , n) > 1; deswegen die Abfrage d 6= 1. Viele Faktorisierungsalgorithmen (z.B. das Quadratische Sieb) beruhen auf einer anderen Idee. Nehmen wir an, dass n zum Faktorisieren vorgegeben ist und dass wir Zahlen x und y finden k¨onnen, f¨ ur die gilt: x2 ≡ y 2 (mod n), aber x 6≡ ±y (mod n). Dann gilt n | (x − y)·(x + y), aber weder x−y noch x+y sind durch n teilbar. Daraus folgt, dass sowohl ggT(x−y, n) als auch ggT(x+y, n) nichttriviale Faktoren von n sind. Beispielsweise gilt 102 ≡ 322 (mod 77). Wir finden den Faktor 7 von 77 durch die Berechnung von ggT(10 + 32, 77). Um zwei Zahlen x und y mit den oben genannten Eigenschaften zu finden, kann man folgendes Verfahren anwenden. Wir suchen (wie, wird hier nicht beschrieben) eine Reihe von Zahlen z 1 , z2 , z3 , . . ., so dass alle
84
Vorlesungsskript von E. Best / Stand: 19. September 2005
↓
proc Pollard Rho(n); erhoffte Ausgabe: ein Teiler d von n begin i := 1; w¨ahle x zuf¨allig aus {0, . . . , n − 1}“; ” y := x; k := 2; do true → i := i + 1; x := (x2 − 1) mod n; d := ggT(y − x, n); if d 6= 1 ∧ d 6= n → return d else → skip f i; if i = k → y := x; k := 2·k else → skip fi od end; Abbildung 5.8: Algorithmus Pollard Rho zur Faktorisierung einer Zahl n. Primfaktoren von zi2 , modulo n, in einer Menge B liegen, die Faktorbasis genannt wird. Dann versuchen wir, die Zahlen zi so zu einem Quadrat zu kombinieren, dass jeder Faktor eine gerade Anzahl von Malen vorkommt. Beispiel: Sei n = 15770708441. Betrachte B = {2, 3, 5, 7, 11, 13} und drei Kongruenzen 83409341562 120449429442 27737000112
≡ ≡ ≡
3 · 7 (mod n) 2 · 7 · 13 (mod n) 2 · 3 · 13 (mod n)
Das Produkt auf beiden Seiten bilden, ergibt: (8340934156 · 12044942944 · 2773700011)2 ≡ (2 · 3 · 7 · 13)2 (mod n). Reduzieren innerhalb der Klammern ergibt: 95034357852 ≡ 5462 (mod n) und mit euclid kann der Faktor ggT(9503435785 − 546, 15770708441) = 115759 von n ausgerechnet werden. Das eigentliche Problem ist es, die Zahlen z1 , z2 , . . . geeignet zu w¨ahlen. Hierf¨ ur gibt es verschiedene Methoden, die hier jedoch nicht besprochen werden k¨onnen. Zum Schluss betrachten wir die wesentliche ¨ Aquivalenz von (A), (B) und (C): Kennt man die Faktorisierung n = pq (A), dann kennt man nat¨ urlich sofort auch (C) Φ(n) = (p − 1)(q − 1) und (B) d als Inverses von e modulo Φ(n).
Kryptographie - Sommersemester 2004
85
Kennt man umgekehrt Φ(n) (C), dann kann leicht die Faktorisierung von n daraus berechnet werden. Dazu betrachtet man ein System von zwei Gleichungen in zwei Unbekannten p und q: n Φ(n)
= pq = (p − 1)(q − 1).
Nach Aufl¨osen bekommt man eine quadratische Gleichung, deren zwei L¨osungen p und q sind. Beispiel: Betrachte n = 84773093. Oscar hat gerade herausgefunden, dass Φ(n) = 84755668 gilt. Er formt die beiden Gleichungen oben zu der quadratischen Gleichung p2 − 18426·p + 84773093 = 0 um und berechnet daraus p = 9539 und q = 8887. Es bleibt nun noch zu zeigen, dass aus dem Entschl¨ usselungsexponenten d (B) auch die Faktorisierung n = pq (A) mit vertretbarem Aufwand (d.h.: polynomiell) berechnet werden kann. Dies kann von gr¨oßerer praktischer Bedeutung sein. Denn wenn Bob zum Beispiel seinen Verschl¨ usselungsexponenten d aus Versehen bekannt gibt, gen¨ ugt es aufgrund dieser Tatsache nicht, dass er sich ein neues Paar (e, d) aussucht (bei gleich bleibendem n), sondern er muss auch ein neues n definieren, d.h., sein RSA-System v¨ollig neu konzipieren. Wir ben¨otigen einige weitere gruppen- und zahlentheoretische Resultate. Satz 5.5.1 Sei G eine Gruppe, sei g ∈ G und sei k ∈ N. Dann gilt g k = 1 genau dann, wenn ord (g) | k. Beweis: Sei α = ord (g). Sei g k = 1 und sei k = qα + r mit 0 ≤ r < α. Dann gilt g r = g k−qα = g k (g α )−q = 1. Da r < α und α die kleinste positive Zahl mit g α = 1 ist, gilt r = 0 und damit k = qα, also α | k. Wenn umgekehrt α | k, dann gilt k = lα und g k = (g α )l = 1. 5.5.1 Wir nehmen nun an, dass n, e, d bekannt sind und dass weiterhin bekannt ist, dass n das Produkt zweier Primzahlen ist; diese beiden wollen wir herausfinden. Setze zun¨achst s := max{t ∈ N | 2t teilt (ed − 1)}
und
r =
(ed − 1) . 2s
Die Zahl s kann man durch einen sehr einfachen Algorithmus finden, indem man die niedrigwertigen Nullen in der Bin¨arentwicklung von (ed − 1) z¨ahlt. Lemma 5.5.2 F¨ ur alle a ∈ Z∗n gilt ord (ar ) ∈ {2i | 0 ≤ i ≤ s}. Beweis: Sei a ∈ Z∗n . Mit Hilfe von Satz 5.2.2 findet man: a(ed−1) ≡ aed a−1 ≡ aa−1 ≡ 1 (mod n). s
Daraus folgt (ar )2 ≡ 1 (mod n). Nach Satz 5.5.1 ist die Ordnung von ar in Z∗n ein Teiler von 2s .
5.5.2
86
Vorlesungsskript von E. Best / Stand: 19. September 2005
Satz 5.5.3 Existenz echter Teiler Sei a ∈ Z∗n . Wenn die Ordnung von ar modulo p und modulo q verschieden ist, dann gibt es ein t ∈ t {0, 1, . . . , s − 1} mit 1 < ggT(a2 ·r − 1, n) < n. t
Mit anderen Worten, ggT(a2 ·r − 1, n) ist dann ein echter Teiler von n. Beweis: Die Ordnung von ar modulo p und modulo q liegt als Folge von Lemma 5.5.2 in der Menge {2i | 0 ≤ i ≤ s}. O.B.d.A. sei die Ordnung von ar mod p gr¨oßer als die von ar mod q. Es gelte ord (ar mod q) = 2t . t t t Dann gilt t < s und a2 ·r ≡ 1 (mod q), aber a2 ·r 6≡ 1 (mod p), und daher ggT(a2 ·r − 1, n) = q. 5.5.3 Um n zu faktorisieren, w¨ahlt man zuf¨allig (und gleichverteilt) eine Zahl a in Zn . Dann berechnet man ggT(a, n). Ist dieser ggT gr¨oßer als 1, hat man schon einen nichttrivialen Faktor von n gefunden. Ist er aber gleich 1, dann ist a ∈ Z∗n . Jetzt berechnet man g = ggT(a2
t
·r
− 1, n)
f¨ ur
t = s−1, s−2, . . . , 0.
Findet man dabei einen Teiler g von n, hat man Erfolg. Andernfalls wird ein neues a gew¨ahlt und der Algorithmus wird erneut ausgef¨ uhrt. In jeder Iteration ist die Wahrscheinlichkeit daf¨ ur, dass ein Primteiler von n gefunden wird, wenigstens 1/2. Denn es gilt (ohne Beweis): Satz 5.5.4 ur die ar mod p und mod q eine verschiedene Ordnungen hat, ist wenigstens Die Anzahl der Zahlen in Z∗n , f¨ (p − 1)(q − 1)/2. Nach w Wiederholungen des Algorithmus ist die Wahrscheinlichkeit, einen Primteiler von n gefunden zu haben, also gr¨oßer als 1 − 2−w , d.h. beliebig nahe bei 1“. Damit ist die Wahrscheinlichkeit, dass Oscar in ” Kenntnis des Entschl¨ usselungsschl¨ ussels d (B) auch die Faktorisierung von n (A) findet, praktisch gleich 1. Zum Schluss ein Beispiel: Es seien n = 253, e = 3 und d = 147. Es gilt ed − 1 = 440. Wir suchen einen Faktor von n. Da 440 durch 8, aber nicht durch 16 teilbar ist, berechnen sich s = 23 = 8 und r = 440/8 = 55. Wir beginnen die Faktorsuche mit a = 2. Da ggT(2, 253) = 1, ist a nicht selbst schon ein Faktor. Als N¨achstes berechnen wir der Reihe nach f¨ ur t = 2:
2
ggT(22 r , 253) 1
f¨ ur t = 1:
ggT(22 r , 253)
f¨ ur t = 0:
20 r
ggT(2
, 253)
=
ggT(2220 , 253)
=
1,
=
ggT(2110 , 253)
=
1,
=
55
=
23.
ggT(2 , 253)
Damit ist ein Faktor, n¨amlich 23, von 253 gefunden.
Kapitel 6
Auf diskreten Logarithmen beruhende Kryptosysteme Das Public-Key-Kryptosystem, das in Kapitel 5 vorgestellt worden ist, beruht auf der Schwierigkeit, große Zahlen zu faktorisieren. Den Kryptosystemen, die in diesem Kapitel behandelt werden, liegt ein anderes, ebenfalls (wie allgemein angenommen wird) schwieriges, zahlentheoretisches Problem zu Grunde: die Berechnung diskreter Logarithmen. Bevor wir dies erkl¨aren, schieben wir einen Abschnitt mit Nachtr¨agen zu den vorigen Kapiteln ein.
6.1
Zwei Nachtr¨ age
6.1.1
Das Geburtstagsparadox
Bei der Besprechung des Pollard-Rho-Faktorisierungsalgorithmus haben wir das Geburtstagsparadox zitiert, nach dem die Grenze f¨ ur eine Wahrscheinlichkeit von ≥ 21 , dass zwei von k Personen den gleichen Geburtstag √ haben, bei ungef¨ahr k ≥ 1.17· 365 liegt. Dieses Ergebnis leiten wir jetzt her.
Seien Personen {1, . . . , k} in einem Zimmer, sei die Anzahl der Tage im Jahr n = 365 (wir ignorieren also ur i = 1, . . . , k und r = 1, . . . , n, Schaltjahre), seien Geburtstage gleichm¨aßig verteilt, so dass P(bi = r) = n1 f¨ wobei bi den Tag des Jahres bezeichne, an dem Person i Geburtstag hat, und seien Geburtstage unabh¨angig voneinander (wir ignorieren z.B. Zwillinge). Die Wahrscheinlichkeit, dass Personen i und j mit i 6= j am gleichen Tag r Geburtstag haben, ist 1 . n2
P(bi = r, bj = r) = P(bi = r) · P(bj = r) =
Die Wahrscheinlichkeit, dass beide auf den gleichen Tag fallen, ist also n X 1 P(bi = r, bj = r) = P(bi = bj ) = 2 n r=1 r=1 n X
87
=
1 . n
88
Vorlesungsskript von E. Best / Stand: 19. September 2005
Um die Wahrscheinlichkeit zu analysieren, dass wenigstens 2 von k Leuten am gleichen Tag Geburtstag haben, betrachten wir das umgekehrte Ereignis; denn die Wahrscheinlichkeit, dass zwei Geburtstage gleich sind, ist 1 minus der Wahrscheinlichkeit, dass alle Geburtstage verschieden sind. Das Ereignis, dass k Leute verschiedene Geburtstage haben, ist Bk
k−1 \
=
Ai ,
i=1
wobei Ai das Ereignis ist, dass der Geburtstag bi+1 von Person i+1 verschieden von allen Geburtstagen b1 , . . . , bi ist, d.h.: Ai
=
(bi+1 6= b1 ) ∧ (bi+1 6= b2 ) ∧ . . . ∧ (bi+1 6= bi ).
Wegen Bk = Ak−1 ∩ Bk−1 gilt P(Bk )
=
P(Bk−1 ) · P(Ak−1 |Bk−1 ),
(6.1)
wenn wir anf¨anglich P(B1 ) = 1 setzen. Wenn die b1 , . . . , bk−1 alle verschieden sind, ist die bedingte Wahrscheinlichkeit, dass bk 6= bi f¨ ur 1 ≤ i ≤ k−1, gleich (n−k+1)/n, denn von den n m¨oglichen Tagen sind n−k+1 noch nicht belegt“. Aus (6.1) folgt durch Iterieren: ” P(Bk )
= = =
P(B1 ) · P(A1 |B1 ) · P(A2 |B2 ) · . . . · P(Ak−1 |Bk−1 ) n−2 n−k+1 ) 1 · ( n−1 n ) · ( n ) · ... · ( n
1 · (1 − n1 ) · (1 − n2 ) · . . . · (1 −
k−1 n )
Die interessante1 Ungleichung 1+x ≤ ex ergibt P(Bk )
≤
2
1
(e− n ) · (e− n ) · . . . · (e−
=
e−
Pk−1
=
e−
k·(k−1) 2n
k−1 n
)
i i=1 n
,
und der letzte Ausdruck ist ≤ 21 (die interessierende Wahrscheinlichkeit gleicher Geburtstage also ≥ ≤ ln 21 , d.h. (nach L¨osen einer quadratischen Gleichung), wenn wenn − k·(k−1) 2n k ≥
1 2 ),
p 1 ·(1 + 1 + (8 ln 2)n). 2
Bei n = 365 ergibt dies k ≥ 23. Bei einem Marsgeburtstag (n = 669) m¨ ussten sich schon 31 Marsmenschen im gleichen Raum aufhalten, damit die Wahrscheinlichkeit, dass zwei davon am gleichen Tag Geburtstag √ haben, ≥ 21 ist. Die H¨alfte von 8 ln 2 ist u ahr gleich 1.17; daher der zu Beginn des Abschnitts ¨brigens ungef¨ erw¨ahnte Faktor. 1 Denn man kann e damit charakterisieren: e ist die einzige positive Zahl, die die Eigenschaft 1+x ≤ e x f¨ ur alle reellen x erf¨ ullt. Siehe http://www.mathe-online.at/galerie/log/log.html.
Kryptographie - Sommersemester 2004
6.1.2
89
Erzeugende Elemente
Ist eine Gruppe zyklisch, dann ist es oft von Vorteil, ein erzeugendes Element a zu kennen. Beispielsweise erleichtert, wie wir gesehen haben, ein erzeugendes Element a in der multiplikativen Gruppe von GF (p n ) das Multiplizieren in dieser Gruppe dadurch, dass auf Logarithmen bez¨ uglich a addiert werden kann. Wir besch¨aftigen uns mit dem Problem, ein erzeugendes Element zu finden, wenn noch keins bekannt ist. Ist die Gruppe klein (wie z.B GF (28 )), ist Durchprobieren eine Option. Ist die Gruppe groß (wie z.B. Z∗n mit einer großen Zahl n), h¨atte man gerne eine andere Methode. Wir stellen zwei vor, wobei wir uns auf die multiplikative Gruppe (Z∗p , ·), mit einer Primzahl p, beschr¨anken (dann gilt ja Z∗p = {1, 2, . . . , p − 1}, die Gruppe hat also Ordnung p − 1). Man nennt ein erzeugendes Element von Z ∗p auch Primitivwurzel zum Modul p. Die erste Methode ist probabilistisch, etwa wie Miller Rabin. Wir w¨ahlen ein a ∈ Z∗p zuf¨allig und gleichverteilt. Wie groß ist die Wahrscheinlichkeit, dass a eine Primitivwurzel ist? Dazu zitieren wir zuerst ohne Beweis eine Absch¨atzung f¨ ur Φ(n): Satz 6.1.1 Untere Schranke f¨ ur Φ(n) F¨ ur jede nat¨ urliche Zahl gilt Φ(n) ≥
n . 6 ln ln n
Wir wissen schon (Satz 4.2.7 bzw. sein Analogon f¨ ur Primzahlmoduln), dass die Gruppe Z∗p (mit primem p) zyklisch ist, d.h. mindestens eine Primitivwurzel hat. Jetzt berechnen wir die Anzahl der Primitivwurzeln modulo p. Satz 6.1.2 Anzahl der Primitivwurzeln modulo p In Z∗p gibt es genau Φ(p − 1) Primitivwurzeln modulo p. Beweis: Sei a eine Primitivwurzel modulo p. Dann kann jedes b ∈ Z∗p (auch a!) (in eindeutiger Weise) geschrieben werden als b = ai mit 0 ≤ i ≤ p − 2. Die Ordnung von b ist ord (b)
=
p−1 ggT(p − 1, i)
(dies folgt daraus, dass die Ordnung von a gleich p − 1 ist). Also ist b eine Primitivwurzel genau dann, wenn ggT(p − 1, i) = 1. 6.1.2 Achtung: Die Menge Z∗p−1 steht mit der Menge der Primitivwurzeln von p in keiner nennenswerten Beziehung, außer dass beide Mengen gleich groß sind; die Argumentation im Beweis bezog sich n¨amlich auf die Logarithmen i zur Basis a von b. Zusammen ergeben diese beiden S¨atze, dass die Chance, bei einem zuf¨allig gew¨ahlten a ∈ Z∗p eine Primitivwurzel modulo p zu finden, ziemlich gut sind, weil 6 ln ln p − 1 viel kleiner als p − 1 ist. Notfalls kann die Auswahl iteriert werden. Das verbleibende Problem ist es, f¨ ur ein gegebenes a nachzupr¨ ufen, ob a tats¨achlich eine Primitivwurzel ist. Wenn die Faktorisierung von p − 1 bekannt ist, z.B. als p − 1 = Πq prim,q | (p−1) q e(q) , dann kann man folgenden Satz benutzen, um einen schnellen Algorithmus zu finden:
90
Vorlesungsskript von E. Best / Stand: 19. September 2005
Satz 6.1.3 Sei q ein Primteiler von p − 1 und sei f (q) die gr¨ oßte ganze Zahl mit 0 ≤ f (q) ≤ e(q) und mit a(p−1) / (q
f (q)
)
≡ 1 (mod p).
Dann gilt f¨ ur die Ordnung von a: |hai| = Πq | (p−1) q e(q)−f (q) . Beweis: Nach Satz 5.5.1 ist die Ordnung von a von der Form Πq | (p−1) q x(q) mit 0 ≤ x(q) ≤ e(q)−f (q) f¨ ur alle q | (p − 1). Nach Definition von f (q) gilt aber sogar x(q) = e(q)−f (q) f¨ ur 6.1.3 alle q | (p − 1). Beispiel: Sei G die prime Restklassengruppe modulo 101. Ihre Ordnung ist 100 = 2 2 ·52 . Also gilt e(2) = e(5) = 2. Betrachte a = 2. Wir berechnen zun¨achst die Zahlen f (q) aus dem Beweis des Satzes: f (2) = 0, da wir mit f (2) = 1 haben: 2100/(2
1
)
= 250 ≡ −1 6≡ 1 (mod 101),
und dann auch erst recht mit f (2) = 2 gilt: 2100/(2 1
100/(5 )
2
20
)
6≡ 1 (mod 101).
Es gilt auch 2 = 2 ≡ −6 6≡ 1 (mod 101), und damit f (5) = 0. Laut Satz 6.1.3 ist die Ordnung des Elements 2: |h2i| = 22−0 · 52−0 = 100. Also ist Z∗101 zyklisch (das wussten wir schon) und 2 ist ein erzeugendes Element (das wissen wir seit eben). Ende des Beispiels. Mit dem n¨achsten Korollar (das aus Satz 6.1.3 direkt folgt) kann man verifizieren, ob eine vorgelegte Zahl m die Ordnung eines vorgegebenen Elements g ist. Korollar 6.1.4 Sei m ∈ N und gelte g m = 1 sowie g m/q 6= 1 f¨ ur jeden Primteiler q von m. Dann ist m die Ordnung von 6.1.4 g. Beispiel 1: Wir behaupten, dass 25 die Ordnung der Restklasse 5 in der primen Restklassengruppe modulo 101 ist. Es gilt tats¨achlich 525 ≡ 1 (mod 101) und 55 ≡ −6 (mod 101). Die Behauptung folgt also aus Korollar 6.1.4. Ende von Beispiel 1. In dem besonders einfachen Fall p − 1 = 2 · q mit einer Primzahl q braucht man nur zu pr¨ ufen, ob a2 ≡ 1 (mod p) oder aq ≡ 1 (mod p) ist. Wenn diese beiden Kongruenzen nicht erf¨ ullt sind, ist a eine Primitivwurzel modulo p. Beispiel 2: Sei p = 23. Dann ist p − 1 = 22 = 2 · 11. Um zu pr¨ ufen, ob eine ganze Zahl a eine Primitivwurzel modulo 23 ist, muss man verifizieren, dass sowohl a2 6≡ 1 (mod 23) als auch a11 6≡ 1 (mod 23) gelten. Hier ist eine Tabelle mit den entsprechenden Resten f¨ ur Primzahlen zwischen 2 und 17: g g 2 mod 23 g 11 mod 23
2 3 5 4 9 2 1 1 −1
7 3 −1
11 6 −1
13 17 8 13 1 −1
Kryptographie - Sommersemester 2004
91
Also sind die Zahlen 5, 7, 11, 17 Primitivwurzeln modulo 23, die Zahlen 2, 3, 13 jedoch nicht. Nat¨ urlich sind 5, 7, 11, 17 nicht die einzigen Primitivwurzeln modulo 23; laut Satz 6.1.2 gibt es Φ(22) = 10 Primitivwurzeln modulo 23, also sechs weitere. Ende von Beispiel 2. Wenn die Faktorisierung von p − 1 nicht bekannt ist, ist es bedeutend aufw¨andiger, nachzupr¨ ufen, ob a tats¨achlich eine Primitivwurzel ist. Eine andere Methode, Primitivwurzeln modulo p zu finden, besteht darin, aus einem a, das noch keine ist (d.h. ord (a) < p − 1 erf¨ ullt), ein a ˜ zu konstruieren, f¨ ur das ord (a) < ord (˜ a) ≤ p − 1 gilt. Diese Konstruktion bricht sicherlich irgendwann ab und liefert eine Primitivwurzel. Sei also a ∈ Z∗p mit ord (a) < p − 1 gegeben. Wir w¨ahlen beliebig ein b ∈ Z∗p \hai. Wenn ord (b) > ord (a) gilt, dann setzen wir a ˜ = b. Nehmen wir an, dass ord (b) ≤ ord (a) gilt; dann f¨ uhrt folgende iterative Konstruktion zu einem geeigneten a ˜. Seien α = ord (a) und β = ord (b). Zun¨achst gilt β - α, denn jede zyklische Gruppe hat zu jedem Teiler der Gruppenordnung genau eine Untergruppe. G¨alte β | α, m¨ usste die Gruppe hβi mit der entsprechenden Untergruppe von hαi u bereinstimmen, was wegen β ∈ / hαi unm¨ oglich ist. ¨ Nun definieren wir eine Folge (αi , βi ) von Zahlenpaaren: α0
= α
αi
=
αi−1 ggT(αi−1 , βi−1 )
,
β0
=
β ggT(α, β)
,
βi
=
βi−1 ·ggT(αi−1 , βi−1 )
f¨ ur i ≥ 1
Diese Folge wird ab einem gewissen i station¨ar. Es gilt n¨amlich: αi
=
α0 , ggT(α0 , β0 ) · . . . · ggT(αi−1 , βi−1 )
also k¨onnen nur endlich viele der ggT(αi−1 , βi−1 ) ungleich 1 sein. Sei (α∗ , β∗ ) das erste der konstruierten Zahlenpaare mit ggT(α∗ , β∗ ) = 1. Es gilt: (i) (ii) (iii)
α∗ · β∗ = kgV(α, β) α∗ | α und β∗ | β ggT(α∗ , β∗ ) = 1.
(kgV = kleinstes gemeinsames Vielfaches)
Denn sei allgemein expq (m) der Exponent der Primzahl q in der Faktorisierung einer Zahl m (vor Satz 6.1.3 waren die Exponenten expq (p − 1) einfach e(q) genannt worden). Wenn expq (α) ≥ expq (β) gilt, dann gilt q - β, also q - ggT(αi−1 , βi−1 ) und q - βi . Daraus folgt einerseits expq (α∗ ) = expq (α), denn vom q-Anteil kann sich nichts herausheben, und andererseits exp q (β∗ ) = 0. Wenn expq (α) < expq (β) gilt, dann ist expq (α0 ) = expq (α) und expq (β0 ) = expq (β) − expq (α) > 0. Solange αi−1 und βi−1 beide noch q-Teiler besitzen, wird sich der Anteil bei αi verringern und bei βi vermehren, bis expq (α∗ ) = 0 und expq (β∗ ) = expq (β) erreicht ist. Auf Grund von (ii) sind die Elemente aα/α∗ und bβ/β∗ wohldefiniert; ihre Ordnungen sind α∗ bzw. β∗ . Auf Grund von (iii) sind diese Ordnungen teilerfremd, also hat das Produkt a ˜
=
(aα/α∗ ) · (bβ/β∗ )
die Ordnung α ˜ = α∗ · β∗ . Nach (i) und wegen β - α gilt α ˜ = kgV(α, β) > α. Also ist a ˜ ein Element mit gr¨oßerer Ordnung als a. (Dass α ˜ ≤ p − 1 gilt, folgt aus dem Satz von Fermat.)
92
Vorlesungsskript von E. Best / Stand: 19. September 2005
Beispiel: Wir betrachten noch einmal Z∗23 mit 22 Elementen. Oben haben wir bereits gesehen, dass 2 keine Primitivwurzel ist. Genauer gesagt, generiert 2 die folgende Untergruppe: h2i = {20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 210 } = {1, 2, 4, 8, 16, 9, 18, 13, 3, 6, 12} der Ordnung 11. Mit a = 2 haben wir also den Startwert α = α0 = 11. W¨ahlen wir nun eine Zahl b aus Z∗23 \h2i. Zumeist werden wir eine Ordnung ord (b) > 11 bekommen (und damit schon ord (b) = 22, denn die Ordnung von b teilt die Gruppenordnung). W¨ahlen wir zuf¨allig“ b = 22. Dann gilt ord (b) = 2 (denn es ” gilt f¨ ur jede ungerade Primzahl p, dass ord (p − 1) = 2 in Z∗p ). Wir haben also β = 2 und einen Startwert β0 = 2/ggT(11, 2) = 2. Offensichtlich ist die Folge hier schon station¨ar, denn ggT(2, 11) = 1, und wir k¨onnen setzen: a ˜ = (211/11 ) · (222/2 ) = 44 ≡ 21(mod 23). So finden wir die Primitivwurzel 21 von Z∗23 . Da Z∗23 , wie wir gesehen haben, zehn Primitivwurzeln hat, sind alle Zahlen außerhalb von h2i ∪ {22} Primitivwurzeln modulo 23. Ende des Beispiels.
6.2
Diffie-Hellman-Schlu ¨ sselaustausch
Hier wird ein Problem gel¨ost, das bei der Secret-Key-Kryptographie auftritt. Alice und Bob wollen mit Hilfe eines geheimen Schl¨ ussels kommunizieren, haben diesen Schl¨ ussel aber noch nicht ausgetauscht. Sie k¨onnen nicht zueinander reisen und die Verbindung zwischen ihnen ist unsicher. Das Diffie-Hellman-Protokoll erlaubt einen Schl¨ usselaustausch unter solchen Bedingungen. Es beruht nicht auf Faktorisierung, sondern auf dem Problem der (Berechnung von) diskreten Logarithmen. F¨ ur eine Primzahl p ist die prime Restklassengruppe Z∗p zyklisch von der Ordnung p−1. Sei g (ein Generator) eine feste Primitivwurzel modulo p. Aus Satz 6.1.2 wissen wir, dass genau Φ(p − 1) solche g existieren. Es gibt f¨ ur jede Zahl b ∈ {1, 2, . . . , p − 1} genau einen Exponenten a ∈ {0, 1, . . . , p − 2} mit b ≡ g a (mod p). Dieser Exponent heißt der diskrete Logarithmus von b zur Basis g (manchmal auch der Index von b, obwohl es vielleicht besser Hochindex hieße). Man schreibt a = log g (b) oder a = indg (b). Diese Definition l¨asst sich sofort verallgemeinern f¨ ur zyklische Gruppen G der Ordnung n: wenn g die Gruppe G erzeugt und b ∈ G gilt, dann gibt es eine eindeutige Zahl a ∈ {0, 1, . . . , n − 1} mit b = g a ; diese Zahl heißt der diskrete Logarithmus von b zur Basis g. Beispiele waren bereits in Kapitel 4 angegeben worden (siehe Ende von Abschnitt 4.2). Unter dem DL-Problem verstehen wir die Berechnung des diskreten Logarithmus a = log g (b) aus g, der Gruppenordnung n, und b. Das Diffie-Hellmann-Verfahren l¨asst sich in allen Gruppen anwenden, in denen das DL-Problem schwer, die Ausf¨ uhrung von Gruppenoperationen aber leicht ist. (Analog dazu h¨angt RSA davon ab, dass Faktorisieren schwer, Multiplizieren und Potenzieren aber leicht sind.) Es ist keineswegs in allen Gruppen schwer, zu logarithmieren. In der additiven Gruppe (Zn , +) ist beispielsweise das Logarithmieren so leicht wie der erweiterte euklidische Algorithmus2 . In der multiplikativen Gruppe (Z∗p , ·) (p prim) ist das Logarithmieren allerdings viel schwerer. Angenommen nun, dass Alice und Bob sich auf einen Schl¨ ussel K einigen wollen. K ist noch unbekannt und wird mit den folgenden Schritten berechnet. Zuerst einigen sich Alice und Bob auf eine Primzahl p und eine 2 Das
sieht man, wenn man obige Definitionen in additive Schreibweise bringt.
Kryptographie - Sommersemester 2004
93
Primitivwurzel g modulo p mit 2 ≤ g ≤ p − 2. Diese beiden Zahlen k¨onnen ruhig auch ¨offentlich bekannt werden. Alice w¨ahlt dann zuf¨allig eine Zahl a ∈ {0, 1, . . . , p − 2} und berechnet A = g a mod p. Die Zahl A schickt sie an Bob, aber sie h¨alt den Exponenten a geheim bei sich. Bob w¨ahlt eine Zahl b ∈ {0, 1, . . . , p − 2} zuf¨allig und berechnet B = g b mod p. Er schickt B an Alice und h¨alt b geheim. Es gilt nun: B a mod p = g ab mod p = Ab mod p. | {z }
(6.2)
K
Mit der Wahl K = g ab mod p k¨onnen sowohl Alice als auch Bob K berechnen, denn Alice kann die linke Seite, d.h. B a mod p, von (6.2) berechnen,und Bob die rechte Seite, d.h. Ab mod p. Es wird jedoch behauptet, dass es f¨ ur jeden anderen, insbesondere f¨ ur Oscar, den Angreifer, praktisch unm¨oglich ist, den Schl¨ ussel K nur aus g, a, A, B zu berechnen. Beispiel: Sei p = 17, g = 3. Alice w¨ahlt a = 7, berechnet g a mod p = 11 und schickt A = 11 an Bob. Bob w¨ahlt b = 4, berechnet g b mod p = 13 und schickt B = 13 an Alice. Alice berechnet B a mod p = 4, Bob berechnet Ab mod p = 4. Der gemeinsame Schl¨ ussel ist K = 4. Um dieses Protokoll zu brechen, kann Oscar versuchen, zu lauschen. Er erf¨ahrt maximal die Zahlen p, g, A und B. Er muss den geheimen Schl¨ ussel K = g ab mod p berechnen. Dieses Problem heißt Diffie-HellmanProblem. Wenn Oscar in der Lage w¨are, die Logarithmen a von A und b von B zu berechnen, dann k¨onnte er sicherlich den Schl¨ ussel K berechnen. Das Diffie-Hellman-Verfahren beruht also entscheidend darauf, dass das Berechnen diskreter Logarithmen als schwierig angenommen wird. Ob auch umgekehrt die L¨osung des Diffie-Hellman-Problems die L¨osung des DL-Problems nach sich zieht3 , ist bislang unbekannt. Das DiffieHellman-Verfahren ist auch anderen Attacken, wie zum Beispiel dem Man-in-the-Middle-Angriff, gegen¨ uber sensitiv; entsprechende Vorsicht bei der Erzeugung geheimer Schl¨ ussel ist sicherlich angebracht. Man kann das Diffie-Hellman-Verfahren nicht nur in primen Restklassengruppen anwenden, sondern in allen Gruppen, in denen das DL-Problem schwer ist, die Gruppenoperationen aber leicht sind. (Es ist ganz leicht, obige Definitionen f¨ ur diesen Fall umzuschreiben.) Dies ist ein wichtiger Unterschied zwischen Diffie-Hellman (und anderen auf dem DL-Problem basierenden Verfahren) und RSA: w¨ahrend RSA grunds¨atzlich gebrochen w¨are, wenn f¨ ur das Faktorisierungsproblem eine effiziente L¨osung gefunden w¨ urde, k¨onnten Diffie-Hellman und die anderen Verfahren im Prinzip noch auf andere Gruppen ausweichen“, wenn das DL-Problem im ” zahlentheoretischen Bereich sich – wider Erwarten – doch als relativ leicht l¨osbar herausstellen sollte. Aus diesem Grund gibt es zur Zeit sehr viel Forschung u ¨ber Gruppen, in denen das DL-Problem noch erheblich h¨arter zu sein scheint als in Restklassen modulo p (z.B. in Punktgruppen elliptischer Kurven u ¨ber einem endlichen K¨ orper, aber auch in anderen exotischen“ Gruppen). ”
6.3
Das ElGamal-Kryptosystem
Technisch beruht das ElGamal-Kryptosystem auf dem gleichen Grundgedanken wie das Diffie-HellmanVerfahren, n¨amlich auf der angenommenen Schwierigkeit des DL-Problems, es handelt sich jedoch um ein 3 Ob
also die L¨ osung des DL-Problems die einzige Methode ist, das Diffie-Hellman-Problem zu l¨ osen.
94
Vorlesungsskript von E. Best / Stand: 19. September 2005
Public-Key-Kryptosystem mit einem ¨ahnlichen Anwendungsbereich wie RSA. Wir formulieren es hier nur f¨ ur die Restklassengruppe modulo einer Primzahl p, die Verallgemeinerung auf andere Gruppen bereitet aber keine Schwierigkeit. Kryptosystem 6.3.1 ElGamal-Kryptosystem Es seien p eine Primzahl und g ∈ Z∗p eine Primitivwurzel modulo p. Seien P = Z∗p , C = Z∗p × Z∗p , und K (der Schl¨ usselraum) gleich der Menge der Tupel {(p, g, a, A) | A ≡ g a (mod p)}. Das Tripel (p, g, A) ist der public key, die Zahl a ist der private key. F¨ ur einen Schl¨ ussel K = (p, g, a, A), einen Klartext x ∈ P und eine (geheime) zuf¨allige Zahl k ∈ Zp−1 definieren wir Ver- und Entschl¨ usselung folgendermaßen: eK (x, k) dK (B, y)
= ( g k mod p , x·Ak mod p ) = y·(B a )−1 mod p,
mit (B, y) ∈ C.
6.3.1
Der Chiffretext (B, y) h¨angt sowohl vom Klartext x ab, als auch von einer Zufallszahl k, die vom Absender einer Nachricht gew¨ahlt und geheim gehalten wird. Das bedeutet, dass ein und derselbe Klartext bei zwei verschiedenen Verschl¨ usselungen durchaus zwei verschiedene Chiffretexte ergeben kann, was die Kryptanalyse (z.B. die Anwendung statistischer Tests) erschwert. Bei der Chiffrierung im ElGamal-System wird ein Klartext x zun¨achst durch Multiplikation mit Ak mas” kiert“ und ergibt dann den Teil-Chiffretext y. Der Wert g k wird als Teil B des Chiffretextes mitgeliefert. Der Chiffretext ist also ca. doppelt so groß wie der Klartext. Das ist als message expansion (Nachrichtenexpansion) bekannt. Bei der Dechiffrierung wird die Maske entfernt“, indem y durch Ak dividiert wird. ” Beispiel: Seien p = 2579 und g = 2, eine Primitivwurzel modulo 2579. Sei a = 765, also A = 2765 mod 2579 = 949. Der o¨ffentliche Schl¨ ussel ist mithin (2579, 2, 949). Nehmen wir an, dass Alice die Nachricht x = 1299 an Bob schicken m¨ochte. Nehmen wir weiter an, dass sie die Zufallszahl k = 853 w¨ahlt. Danach berechnet sie: B y
= 2853 mod 2579 = 1299 · 949853 mod 2579
= =
435 2396.
Nachdem Bob den Chiffretext (435, 2396) erhalten hat, rechnet er folgendermaßen: x
= 2396 · (435765 )−1 mod 2579
=
1299
und (re)produziert damit den Klartext, den Alice ihm schicken wollte.
6.4
Effizienz des ElGamal-Verfahrens
Es folgt ein Effizienzvergleich zwischen dem RSA- und dem ElGamal-Verfahren. Die Entschl¨ usselung erfordert bei beiden Verfahren eine modulare Exponentiation. Beim RSA-Verfahren kann die Entschl¨ usselung
Kryptographie - Sommersemester 2004
95
jedoch mit dem Chinesischen Restsatz maximal um einen Faktor 4 beschleunigt werden 4 . Die Verschl¨ usselung erfordert beim RSA-Verfahren eine modulare Exponentiation, beim ElGamal-Verfahren aber zwei. Dabei sind die beiden Moduln (n im ersten Fall und p im zweiten Fall) ungef¨ahr von der gleichen Gr¨oßenordnung. Die Werte bk mod p und g k mod p k¨onnen allerdings auf Vorrat“ berechnet werden, weil sie ” unabh¨angig von der zu verschl¨ usselnden Nachricht x sind. Diese vorberechneten Werte m¨ ussen nur in einer sicheren Umgebung (z.B. auf einer Chipkarte) aufbewahrt werden. Dann ben¨otigt eine Verschl¨ usselung nur eine Multiplikation modulo p, ist also effizienter als die Verschl¨ usselung im RSA-Verfahren. Ein wesentlicher Effizienznachteil des ElGamal-Verfahrens besteht in der Nachrichtenexpansion, wodurch der Schl¨ usseltext ca. doppelt so lang wird wie der Klartext. Ein wesentlicher Vorteil ist dagegen, dass das ElGamal-Verfahren, im Gegensatz zum RSA-Verfahren, ein Ausweichen“ auf andere Gruppen erlaubt, die ” nicht direkt mit den Restklassen modulo einer Primzahl zu tun haben, sollte es sich herausstellen, dass auf diesen Restklassen die zu Grunde liegenden zahlentheoretischen Probleme (das DL-Problem bzw. das Faktorisierungsproblem) wider Erwarten doch algorithmisch einfach zu l¨osen sind. Schließlich sei erw¨ahnt, dass das ElGamal-Verfahren und das Diffie-Hellman-Problem (Abschnitt 6.2) gleich schwer zu brechen sind: Angenommen, Oscar kann das Diffie-Hellman-Problem l¨osen, d.h., aus p, g, A, B den geheimen Schl¨ ussel g ab mod p berechnen. Oscar kennt einen ¨offentlichen ElGamal-Schl¨ ussel (p, g, A) und m¨ochte den ElGamalSchl¨ usseltext (B, y) entschl¨ usseln. Er kann dann K = g ab mod p bestimmen und hiermit aus (B, y) den Klartext x folgendermaßen rekonstruieren: x = K −1 y mod p. Angenommen, dass Oscar umgekehrt das ElGamal-Verfahren brechen kann. Oscar hat p, g, A, B und m¨ochte K = g ab mod p ermitteln. Dazu wendet er das ElGamal-Entschl¨ usselungsverfahren mit y = 1 an und erh¨alt eine Nachricht x. Er weiß, dass 1 = g ab x mod p ist. Daher kann er g ab = x−1 mod p berechnen und hat K = g ab mod p gefunden. Wer diskrete Logarithmen berechnen kann, ist in der Lage, sowohl Diffie-Hellman als auch ElGamal zu brechen. F¨ ur ElGamal sieht man das folgendermaßen: Wenn Oscar das DL-Problem l¨osen kann, kann er aus A den geheimen Exponenten a ermitteln und aus einem ElGamal-Chiffretext (B, y) dann x = y·(B a )−1 mod p berechnen. Wir befassen uns deswegen im n¨achsten Abschnitt ausf¨ uhrlicher mit (relativ) effizienten Algorithmen zur L¨osung des DL-Problems.
6.5
Algorithmen zur Berechnung diskreter Logarithmen
Gegeben sei eine endliche, zyklische Gruppe G mit |G| = n und neutralem Element 1 und einem erzeugenden Element g ∈ G. Wir gehen davon aus, dass n und g bekannt sind. Sei a irgend ein Gruppenelement. Das DL-Problem besteht darin, die kleinste nicht negative ganze Zahl x zu finden, f¨ ur die gilt: a = gx ,
d.h.:
x = indg (a) bzw. x = logg (a).
(6.3)
Das Brute-Force“-Verfahren heißt hier Enumeration (Aufz¨ahlen): dabei werden alle Zahlen x von 0 bis ” maximal n − 1 der Reihe nach gepr¨ uft, ob sie (6.3) erf¨ ullen. Beispiel: Um den diskreten Logarithmus von 3 zur Basis 5 in Z∗2017 zu bestimmen, braucht man im Enumerationsverfahren 1029 Multiplikationen modulo 2017 und 1030 Vergleiche, denn es gilt 5 1030 ≡ 3 (mod 2017). Man braucht allerdings nur wenig Speicherplatz: n¨amlich Platz f¨ ur die drei Gruppenelemente g, a und x bzw. ax . Ende des Beispiels. 4 Es
ist nicht ganz trivial, eine solche Beschleunigung n¨ aherungsweise zu implementieren.
96
Vorlesungsskript von E. Best / Stand: 19. September 2005
Wir stellen zun¨achst einen Satz vor, der einen Zusammenhang zwischen Kongruenzen auf Potenzen und Kongruenzen auf den Hochzahlen (den Indices, oder den Logarithmen) herstellt, denn einige Algorithmen machen davon Gebrauch. Sei die Gruppe (Z∗n , ·) zyklisch und sei g eine Primitivwurzel von Z∗n , d.h., Z∗n = hgi. ¨ ber diskrete Logarithmen Satz 6.5.1 Basissatz u Es gilt g x ≡ g y (mod n) genau dann, wenn x ≡ y (mod Φ(n)). Beweis: (⇒:) Wegen |hgi| = Φ(n) ist die Folge der Potenzen von g periodisch mit der Periode Φ(n) = |Z ∗n | (siehe auch Korollar 1.5.4). Deswegen folgt aus der Kongruenz g x ≡ g y (mod n) die Kongruenz x ≡ y (mod Φ(n)). (⇐:) Sei x ≡ y (mod Φ(n)). Daraus folgt x = y + k·Φ(n) f¨ ur ein k ∈ Z, und es gilt: gx
≡
( wegen x = y + k·Φ(n) ) g y+k·Φ(n) (mod n) ≡ ( Umgruppieren ) g y · (g Φ(n) )k (mod n) ≡ ( Euler ) gy (mod n),
insgesamt also g x ≡ g y (mod n).
6.5.1
6.5.1
Der Babystep-Giantstep-Algorithmus von Shanks
Bei diesem Verfahren ben¨otigt man viel weniger Gruppenoperationen, aber viel mehr Speicherplatz als beim √ Enumerationsverfahren. Man setzt m = d ne und dividiert x mit Rest durch m: x = q · m + r, 0 ≤ r < m. Dabei kann auch q auf q < m eingeschr¨ankt werden, weil gilt: x ≤ n − 1 ≤ m2 − 1 = (m − 1)m + (m − 1); jedes x zwischen 0 und n − 1 kann so dargestellt werden. Der Babystep-Giantstep-Algorithmus berechnet q und r. Dazu erzeugt der Algorithmus im Prinzip zwei Listen der L¨ange jeweils m, die Paare folgender Form enthalten: Liste 1 (die Giantsteps“): ” Liste 2 (die Babysteps“): ”
Paare (q, dq ) mit 0 ≤ q < m und d = g m ; Paare (r, a · g −r ) mit 0 ≤ r < m.
Findet man in den beiden Listen zwei Paare, die zwei gleiche zweite Eintr¨age haben, so ist man fertig (mit x = qm + r), weil dann gilt: dq = a · g −r , d.h., g qm = a · g −r , d.h., g qm+r = a. Andererseits findet man in jedem Fall zwei Paare mit gleichen zweiten Eintr¨agen, denn jedes m¨ogliche x liegt zwischen 0 und n − 1, hat daher eine Darstellung x = qm + r mit 0 ≤ q, r < m, und alle solche Darstellungen
Kryptographie - Sommersemester 2004
↓
97
↓ ↓ ↓ ↑
proc BabyStep GiantStep(G, n, g , a, x); √ begin m := d ne; d := g m ; for q := 0 to m − 1 do berechne dq endfor; L1 := bez¨ uglich der zweiten Koordinate sortierte Liste der m Paare (q, dq ); for r := 0 to m − 1 do berechne a · g −r endfor; L2 := bez¨ uglich der zweiten Koordinate sortierte Liste der m Paare (r, a · g −r ); finde zwei Paare (q, z) und (r, z) in L1 bzw. L2 mit gleicher zweiter Komponente; x := (q · m + r) mod n end; Abbildung 6.1: Babystep-Giantstep-Algorithmus zur Berechnung des diskreten Logarithmus. werden durch den Algorithmus produziert. Der Pseudocode ist in Abbildung 6.1 gezeigt (weil nach zweiten Eintr¨agen verglichen wird, werden die Listen entsprechend sortiert). Beispiel: Wir betrachten (Z∗809 , ·). Da 809 prim ist, gilt n = |Z∗809 | = 808. Das Element g = 3 ist eine Primitivwurzel. Gegeben sei die Aufgabe, log 3 (525) in dieser Gruppe zu berechnen. Wir berechnen zun¨achst √ m = d 808e = 29 und d = 329 mod 809 = 99. Die erste Liste enth¨alt die Zahlen (q, 99q mod 809), f¨ ur 0 ≤ q ≤ 28: (0, 1) (8, 207) (16, 781) (24, 676)
(1, 99) (9, 268) (17, 464) (25, 586)
(2, 93) (10, 644) (18, 632) (26, 575)
(3, 308) (11, 654) (19, 275) (27, 295)
(4, 559) (12, 26) (20, 528) (28, 81) ,
(5, 329) (13, 147) (21, 496)
(6, 211) (14, 800) (22, 564)
(7, 664) (15, 727) (23, 15)
die zweite Liste enth¨alt die Zahlen (r, (525 · (3r )−1 ) mod 809), f¨ ur 0 ≤ r ≤ 28: (0, 525) (8, 724) (16, 399) (24, 259)
(1, 175) (9, 511) (17, 133) (25, 356)
(2, 328) (10, 440) (18, 314) (26, 658)
(3, 379) (11, 686) (19, 644) (27, 489)
(4, 396) (12, 768) (20, 754) (28, 163) ,
(5, 132) (13, 256) (21, 521)
(6, 44) (14, 355) (22, 713)
(7, 554) (15, 388) (23, 777)
und seien L1 und L2 die sortierten Versionen dieser beiden Listen. Geht man L1 und L2 simultan durch, findet man ein Paar (10, 644), das in L1 liegt, und ein Paar (19, 644) mit der gleichen zweiten Komponente, das in L2 liegt. Wir berechnen also x = (29 · 10 + 19) mod 808 = 309,
mit der Probe: 3309 ≡ 525 (mod 809).
Also ist x = log3 (525) = 309 gefunden. Ende des Beispiels. Der Algorithmus kann noch optimiert oder ver¨andert werden. Beispielsweise kann man zuerst die Menge der Babysteps berechnen: BS = {(r, a · g −r ) | 0 ≤ r < m}. Findet man ein Paar (1, r), so kann man x = r setzen und ist fertig (da ja 1 = a · g −x gleichbedeutend mit g x = a ist). Andernfalls berechnet man d = g m und weiter, ob f¨ ur q = 1, 2, . . . , m − 1 ein Paar (r, dq ) in BS
98
Vorlesungsskript von E. Best / Stand: 19. September 2005
vorkommt. Sobald dies der Fall ist, gilt a · g −r = dq = g qm , und man darf wieder √ x = qm + r setzen. Das n) in Bezug auf Zeit und asymptotische Verhalten des Algorithmus ist jedoch in all solchen Variationen O( √ O( n) bez¨ uglich Speicherplatz. Er ist also f¨ ur (sehr) große n undurchf¨ uhrbar.
6.5.2
Der Pollard-Rho-Algorithmus zur Berechnung diskreter Logarithmen
¨ Ahnlich wie beim entsprechenden Algorithmus zur Faktorisierung, bilden wir eine Folge b 1 , b2 , . . . (vorher x1 , x2 , . . . genannt) von Elementen von G. Sobald diese Sequenz eine Wiederholung, d.h., eine Kollision der Form bi = bj mit i < j, aufweist, k¨onnen wir (hoffentlich) das DL-Problem l¨osen. Genau wie vorher suchen wir Kollisionen der Art bi = b2i , um Zeit und Speicherplatz zu sparen. Wir suchen wieder die Zahl x = logg (a) in einer Gruppe der Ordnung n. Wir k¨onnen x auch als ein Element von Zn auffassen. • 2 ∪G • 3 eine Partition in ungef¨ Sei G = G1 ∪G ahr Iterationsfunktion hgi × Zn × Zn → hgi × Zn × Zn (ab, y, z + 1) f: (b2 , 2y, 2z) (b, y, z) → 7 (gb, y + 1, z)
gleich große Mengen G1 , G2 und G3 . Wir definieren eine
falls b ∈ G1 falls b ∈ G2 falls b ∈ G3 .
F¨ ur jedes durch f (ab-)gebildete Tripel (b, y, z) wollen wir die Eigenschaft b = g y az
(6.4)
sicherstellen. Wir fangen mit einem Tripel an, das diese Eigenschaft hat, z.B. mit (1, 0, 0); und man kann unschwer sehen, dass f so aufgebaut ist, dass (6.4) nicht verletzt wird, d.h., es gilt: wenn (b, y, z) die Eigenschaft (6.4) hat, dann auch f (b, y, z). Im Pollard-Rho-DL-Algorithmus werden die Tripel (bi , yi , zi ) und (b2i , y2i , z2i ) verglichen, bis ein Wert i ≥ 1 mit bi = b2i gefunden ist. Dann gilt – wegen (6.4) – n¨amlich g yi azi = g y2i az2i , und es folgt: g yi azi = g y2i az2i
⇒ ( da x = logg (a), also g x = a ) g yi +x·zi = g y2i +x·z2i ⇒ ( wie in Satz 6.5.1, weil g die Ordnung n hat ) yi + x·zi ≡ y2i + x·z2i (mod n) ⇒ ( Umschreiben ) x·(z2i − zi ) ≡ yi − y2i (mod n).
Falls jetzt ggT(y2i − yi , n) = 1 gilt, kann man die letzte Zeile nach x aufl¨osen und x = (yi − y2i ) · (z2i − zi )−1 mod n berechnen. Der Algorithmus ist insgesamt in Abbildung 6.2 dargestellt. Beispiel: Dieses Beispiel zeigt gleichzeitig, dass der Algorithmus auch dann funktioniert, wenn g nicht unbedingt die ganze Gruppe generiert, aber bekannt ist, dass a in hgi liegt. Betrachte p = 809. Das Element
Kryptographie - Sommersemester 2004
99
↓ ↓ ↓
function f (b, y , z); begin if b ∈ G1 → b ∈ G2 → b ∈ G3 → fi end f ;
return (ab, y, (z + 1) mod n) return (b2 , 2y mod n, 2z mod n) return (gb, y + 1, z)
begin MAIN: Pollard-Rho-DL • 2 ∪G • 3; bilde eine Partition G = G1 ∪G 0 0 0 (b, y, z) := (1, 0, 0); (b , y , z ) := f (b, y, z); do b 6= b0 → (b, y, z) := f (b, y, z); (b0 , y 0 , z 0 ) := f (b0 , y 0 , z 0 ); (b0 , y 0 , z 0 ) := f (b0 , y 0 , z 0 ) od; if ggT(z 0 − z, n) = 1 → return ((y − y 0 )(z 0 − z)−1 mod n) else → return FAILURE“ f i ” end; Abbildung 6.2: Algorithmus Pollard-Rho-DL zur Berechnung des diskreten Logarithmus. g = 89 hat in Z∗809 die Ordnung n = 101. Das Element a = 618 ist in der Untergruppe h89i von Z ∗809 . Wir berechnen x = log89 (618) durch eine Anwendung des Algorithmus Pollard-Rho-DL (Abbildung 6.2). Zuerst definieren wir die Mengen Gi folgendermaßen: G1
=
{b ∈ Z809 | b ≡ 1 (mod 3)}
G2
=
{b ∈ Z809 | b ≡ 0 (mod 3)}
G3
=
{b ∈ Z809 | b ≡ 2 (mod 3)}.
Es wurde daf¨ ur Sorge getragen, dass 1 nicht in G2 liegt, weil die Tripelfolge sonst station¨ar bleiben w¨ urde. Man bekommt hier sukzessive die folgenden Tripel: i 1 2 3 4 5 6 7 8 9 10 11
(bi , yi , zi ) (618, 0, 1) (76, 0, 2) (46, 0, 3) (113, 0, 4) (349, 1, 4) (488, 1, 5) (555, 2, 5) (605, 4, 10) (451, 5, 10) (422, 5, 11)
(b2i , y2i , z2i ) (76, 0, 2) (113, 0, 4) (488, 1, 5) (605, 4, 10) (422, 5, 11) (683, 7, 11) (451, 8, 12) (344, 9, 13) (112, 11, 13) (422, 11, 15) ...
Die erste Kollision passiert also bei den Indices i = 10, 2i = 20. Die aufzul¨osende Gleichung ergibt sich zu x = (11 − 5) · (11 − 15)−1 mod 101 = 6 · 25 mod 101 = 49.
100
Vorlesungsskript von E. Best / Stand: 19. September 2005
Der diskrete Logarithmus von 618 zur Basis 89 modulo 809 ist deswegen 49. Ende des Beispiels. √ Der Algorithmus hat asymptotisches Zeitverhalten O( n) und ben¨otigt konstanten Speicherplatz, ist also viel speichereffizienter als der Algorithmus von Shanks. Der FAILURE“-Fall ist u ¨brigens weniger schlimm, ” als es klingt. Wenn der ggT, der ungleich 1 ist und deswegen zu diesem Fall f¨ uhrt, klein ist, kann man die richtige L¨osung durch Ausprobieren herausfinden. Geht das nicht, kann der Algorithmus mit einem anderen Startwert als (1, 0, 0) wiederholt werden.
6.5.3
Der Pohlig-Hellman-Algorithmus
Wir betrachten weiterhin eine zyklische Gruppe G der Ordnung |G| = n, einen Generator g von G, ein Element a ∈ G, und das Problem der Berechnung der kleinsten nat¨ urlichen Zahl x mit a = g x , also x = logg (a). Der Pohlig-Hellman-Algorithmus setzt voraus, dass die Faktorisierung n = Πp | n pe(p) von n bekannt ist. Er berechnet x in diesem Fall schneller als eins der beiden bislang betrachteten Verfahren. Zun¨achst kann man das Problem reduzieren, indem man die Faktoren pe(p) von n getrennt betrachtet. Denn setzen wir np = n/pe(p) , gp = g np und ap = anp , dann ist pe(p) die Ordnung von gp und es gilt gpx = ap . Das Element ap liegt also in der von gp erzeugten zyklischen Untergruppe von G. Deswegen existiert der diskrete Logarithmus x(p) von a p zur Basis gp , d.h.: x(p) ur jeden Primteiler p von n, kann man x, den diskreten gp = ap . Kennt man diesen, d.h., die Zahl x(p), f¨ Logarithmus von a zur Basis g, auf Grund des folgenden Satzes berechnen: Satz 6.5.2 Mit den Bezeichnungen wie oben sei x ∈ Zn L¨ osung der simultanen Kongruenz x ≡ x(p) (mod pe(p) ), u ¨ber alle Primteiler p von n. Dann gilt x = log g (a). Beweis: F¨ ur einen Primteiler p von n gilt (g −x · a)np = gp−x(p) · ap = 1. Daher ist die Ordnung des Elements g −x ·a ein Teiler von np . Da dies f¨ ur alle Primteiler p von n gilt, teilt die Ordnung des Elements g −x · a auch den gr¨oßten gemeinsamen Teiler aller np , d.h., die Zahl 1. Die Ordnung 6.5.2 von g −x · a ist also gleich 1, und somit gilt a = g x . Man kann also x berechnen, indem man zuerst alle x(p) bestimmt und danach den Chinesischen Restsatz p anwendet. Zur Berechnung einer Zahl x(p) braucht einer der vorher genannten Algorithmen O( pe(p) ) viele Schritte. Allein durch diese Reduktion ist also, besonders wenn n = |G| aus vielen (und auch noch relativ kleinen) Primzahlen zusammengesetzt ist, schon viel gegen¨ uber einer direkten Anwendung des Shanks- oder des Pollard-Rho-DL-Algorithmus auf G gewonnen. Beispiel: G sei die prime Restklassengruppe modulo 2017. Ihre Ordnung ist 2016 = 2 5 · 32 · 7. Wir wollen x = log5 (3) in dieser Gruppe bestimmen (aus Abschnitt 6.5 wissen wir schon, dass 1030 herauskommen m¨ usste). Nach obiger Methode werden aus den Parametern g = 5 und a = 3 drei Zahlen x(2), x(3) und
Kryptographie - Sommersemester 2004
101
x(7) in Untergruppen der Ordnung 25 = 32, 32 = 9 und 7 von G berechnet. Wie man das macht, wird erst zwar erst im Folgenden beschrieben, wir nehmen aber die Ergebnisse vorweg, um zu zeigen, wie Satz 6.5.2 angewendet wird: x(2) = 6, x(3) = 4 und x(7) = 1. Dann erhalten wir laut Satz 6.5.2 x als L¨osung der simultanen Kongruenz x ≡ 6 (mod 32) , x ≡ 4 (mod 9) , x ≡ 1 (mod 7). Nach bekannter Art und Weise (Abschnitt 5.1.1) kann nun x = 1030 ausgerechnet werden. (Vorl¨ aufiges) Ende des Beispiels. Das verbleibende Problem ist der Fall n = pe , dass also n eine Primzahlpotenz ist. Wir suchen nun x mit g x = a in einer Gruppe G der Ordnung n = pe . Da x < pe gilt, kann man schreiben: x = x0 + x1 p + . . . + xe−1 pe−1 mit 0 ≤ xi < p und 0 ≤ i ≤ e − 1.
(6.5)
Jeder Koeffizient xi kann, wie wir gleich sehen werden, als L¨osung eines DL-Problems in einer gewissen Gruppe der Ordnung p berechnet werden. Insgesamt hat man dann e DL-Probleme √ in Gruppen der Ordnung √ p zu l¨osen, der asymptotische Zeitbedarf liegt also bei O(e · p) (und nicht bei O( pe ), was der Fall w¨are, wenn eine der Methoden Shanks oder Pollard-Rho-DL direkt auf G mit der Ordnung p e angewendet w¨ urde). Aus g x = a, der gew¨ unschten Beziehung, ergibt sich durch Potenzieren: g x·p
e−1
= ap
e−1
,
und nach (6.5) gilt: x · pe−1 = x0 · pe−1 + pe · (x1 + x2 p + . . . + xe−1 pe−2 ). Aus den beiden zuletzt genannten Gleichungen und dem Satz von Fermat erh¨alt man: (g p
e−1
)x 0 = a p
e−1
,
(6.6)
denn die Gruppenordnung ist pe . Laut (6.6) ist x0 L¨osung eines DL-Problems in einer Gruppe der Orde−1 nung p, weil g p die Ordnung p hat. Die anderen Koeffizienten berechnet man iterativ. Angenommen, x0 , x1 , . . . , xi−1 sind schon bekannt (i ≥ 1). Es gilt g xi p
i
+...+xe−1 pe−1
= a · g −(x0 +x1 p+...+xi−1 p | {z dies sei ai genannt
Potenzieren mit pe−1−i liefert (g p
e−1
)xi = (ai )p
e−1−i
i−1
)
}
.
, 0 < i ≤ e − 1.
(6.7)
Mit der Festsetzung a0 = a ist diese Gleichung f¨ ur i = 0 konsistent mit Gleichung (6.6). Fortsetzung des Beispiels: Wir haben g = 5, a = 3 und n = 2016 = 25 · 32 · 7. Setzen wir p1 = 2, p2 = 3 und p3 = 7. Mit den Bezeichnungen weiter oben (vor Satz 6.5.2) ist np1 = 2016/25 = 32 · 7, gp1 = 53
2
·7
und ap1 = 33
2
·7
; ebenso: np2 = 2016/32 = 25 · 7, usw.
102
Vorlesungsskript von E. Best / Stand: 19. September 2005
Die Zahl x(2) ist mithin eine L¨osung der Kongruenz (53
2
·7 x(2)
)
≡ 33
2
·7
(mod 2017), d.h., nach Ausrechnen: 500x(2) ≡ 913 (mod 2017).
Um diese Kongruenz zu l¨osen, wenden wir die zuletzt beschriebenen Konstruktionen mit Elementen gb = 500 und b a = 913 an. Wir wissen schon, dass gb eine Untergruppe der Ordnung 2 5 = 32 von Z∗2017 erzeugt. Weil f¨ ur die erste Primzahl p der Exponent 5 ist, setzen wir zun¨achst p = 2, e = 5 und schreiben: x(2) = x0 (2) + x1 (2) · 2 + x2 (2) · 22 + x3 (2) · 23 + x4 (2) · 24 , genau wie oben (angewendet auf x(2), mit e−1 = 4). Den Wert x0 (2) berechnen wir aus der Gleichung (6.6), die hier folgende Form annimmt: 2016x0 (2) ≡ 1 (mod 2017),
4
4
denn es gilt: 2016 = 5002 mod 2017 und 1 = 9132 mod 2017.
Damit ist x0 (2) = 0, und es folgt a1 = 913. Den Wert x1 (2) berechnen wir aus der Gleichung (6.7), die jetzt folgende Form annimmt: 2016x1 (2) ≡ 2016 (mod 2017),
4
denn es gilt: 2016 = 5002 mod 2017 und 2016 = 9132
4−1
mod 2017.
Damit ist x1 (2) = 1. So fortfahrend, ergeben sich x2 (2) = 1, x3 (2) = 0 und x4 (2) = 0. Damit kann man x(2) ausrechnen: x(2) = (0 + 1·2 + 1·22 + 0·23 + 0·24 ), also x(2) = 6 . Zur Probe findet man, dass 5006 modulo 2017 tats¨achlich kongruent zu 913 modulo 2017 ist. F¨ ur x(3) betrachten wir die Kongruenz (52
5
·7 x(3)
)
≡ 52
5
·7
(mod 2017), d.h., nach Ausrechnen, 576x(3) ≡ 1933 (mod 2017),
und machen den Ansatz x(3) = x0 (3) + x1 (3) · 3. Auf ¨ahnliche Weise erhalten wir zuerst x0 (3) = 1, dann x1 (3) = 1 und somit x(3) = 4 . Schließlich wird analog x(7) = 1 ausgerechnet. Aus den drei eingekasteten Ergebnissen ergibt sich eine simultane Kongruenz, die bereits betrachtet worden ist und die L¨osung x = 1030 hat. (Endg¨ ultiges) Ende des Beispiels. √ Die Laufzeit des Pohlig-Hellman-Algorithmus wird offenbar dominiert von p, wobei p die gr¨oßte Primzahl in der Faktorisierung von n ist. Man √ tut also gut daran, Zahlen n zu w¨ahlen, in deren Faktorzerlegung auch große Primzahlen (mindestens nahe n) vorkommen.
6.5.4
Die Index-Calculus-Methode
In dieser Methode wird, ganz ¨ahnlich wie beim Faktorisierungsansatz durch das Quadratische Sieb (siehe Abschnitt 5.5), eine Faktorbasis benutzt. Die Methode funktioniert – im Gegensatz zu den bislang vorgestellten Algorithmen – speziell nur auf Gruppen Z∗n , weil von der Primzahlzerlegung der Gruppenelemente (nicht der Gruppenordnung) Gebrauch gemacht wird. In diesem Spezialfall ist die Methode aber schneller als der Algorithmus von Pohlig-Hellman.
Kryptographie - Sommersemester 2004
103
Des Weiteren wird vorausgesetzt, dass Z∗n zyklisch ist. Das ist z.B. der Fall, wenn n = p eine Primzahl ist5 . Sei also n = p eine Primzahl und sei g eine Primitivwurzel modulo p, d.h., ein Generator der Gruppe Z ∗p . Sei auch a wieder ein Element in Z∗p , dessen diskreten Logarithmus x = log g (a) wir gerne berechnen m¨ochten. Sei B = {p1 , p2 , . . . , pB } (die Faktorbasis) eine Menge von kleinen“ Primzahlen mit pi < p f¨ ur alle 1 ≤ i ≤ B. Der Index-Calculus-Algorithmus ” besteht aus zwei Phasen: • Erste Phase (pre-processing): Wir suchen (und finden hoffentlich auch) die Logarithmen (zur Basis g) aller Elemente pi von B. • Zweite Phase (main): Mit der Kenntnis der Logarithmen aller pi versuchen wir, den Logarithmus von a zu bestimmen. Sei C ein wenig gr¨oßer als B, z.B. C = B + 10. In Phase 1 des Algorithmus werden C Kongruenzen modulo p konstruiert, die die folgende Form haben: g zj
y
y
y
p11,j p22,j . . . pBB,j (mod p) ,
≡
f¨ ur geeignete Zahlen zj und f¨ ur 1 ≤ j ≤ C. Unter Ausnutzung von Satz 6.5.1 und wegen Φ(p) = p−1 k¨onnen diese Kongruenzen ¨aquivalent auch so geschrieben werden: zj
≡
y1,j logg (p1 ) + y2,j logg (p2 ) + . . . + yB,j logg (pB ) (mod p − 1) ,
f¨ ur 1 ≤ j ≤ C. Dies sind insgesamt C Kongruenzen in B Unbekannten (n¨amlich den gesuchten Logarithmen logg (pi ) f¨ ur 1 ≤ i ≤ B), so dass man hoffen darf, dass es eine eindeutige L¨osung modulo p gibt. Man kann z.B. versuchen, dieses System von Kongruenzen durch einen geeignet modifizierten Gauß-Algorithmus zu l¨osen. Wie k¨onnen C Kongruenzen dieser Art erzeugt werden? Eine einfache Methode ist die Folgende: man w¨ahlt eine Zufallszahl z, berechnet g z mod p und entscheidet (z.B. durch Probedivision), ob alle Faktoren von g z mod p in B liegen; wenn ja, ist eine Kongruenz gefunden und z wird zu den Zahlen z 1 , z2 , . . . hinzugef¨ ugt, wenn nein, oder wenn bis zu diesem Zeitpunkt weniger als C Kongruenzen gefunden worden sind, wird eine neue Zufallszahl z ausprobiert. In Phase 2 nehmen wir an, dass wir die diskreten Logarithmen log g (pi ) aller pi ∈ B bereits kennen, 1 ≤ i ≤ B. Wir berechnen den Logarithmus logg (a) durch einen Trial-and-Error-Ansatz. Dazu wird eine Zahl s in {1, 2, . . . , p − 2} zuf¨allig gew¨ahlt. Wir berechnen c = a · g s mod p. Jetzt versuchen wir, c u ¨ber der Faktorbasis B zu faktorisieren. Gelingt das, bekommen wir eine Kongruenz der Form a · gs
≡
pv11 pv22 . . . pvBB (mod p) ,
5 Man kann allgemein charakterisieren, wann Z∗ zyklisch ist: das ist genau dann der Fall, wenn n = 2 oder n = 4 oder n = p e n oder n = 2pe , wobei p eine ungerade Primzahl ist und e eine ganze Zahl ≥ 1 ist. Der Beweis dieser Tatsache ist elementar, aber nicht ganz einfach.
104
Vorlesungsskript von E. Best / Stand: 19. September 2005
die ¨aquivalent so geschrieben werden kann: logg (a) + s
≡
v1 logg (p1 ) + v2 logg (p2 ) + . . . + vB logg (pB ) (mod p − 1) .
In dieser Kongruenz sind alle Terme außer x = log g (a) bekannt, man kann sie also leicht nach log g (a) aufl¨osen und dadurch x errechnen. Beispiel: Sei p die Primzahl 10007. Die Zahl g = 5 ist eine Primitivwurzel von Z∗10007 . Sei a = 9451. Wir suchen also (das kleinste nichtnegative) x mit 5x ≡ 9451 (mod 10007). Die erste Phase ist unabh¨angig von a. Wir betrachten die Faktorbasis B = {2, 3, 5, 7}. Der Logarithmus von 5 zur Basis 5 ist nat¨ urlich 1, also ben¨otigen wir noch drei Logarithmen, n¨amlich die von 2, 3 und 7. Um C ≥ 3 Kongruenzen aufzustellen, w¨ahlen wir in Phase 1 mindestens drei Zahlen z1 , z2 und z3 . Angenommen, wir w¨ahlen zuf¨allig“ ” z1 = 4036, z2 = 5136, z3 = 9865. Wir berechnen 54036 mod 10007 55136 mod 10007 59865 mod 10007
= = =
42 54 189
= 2·3·7 = 2 · 33 = 33 · 7
und freuen uns, dass alle Faktoren in B liegen. Nach Satz 6.5.1 sind diese drei Gleichungen ¨aquivalent zu: log5 (2) + log5 (3) + log5 (7) log5 (2) + 3· log5 (3) 3· log5 (3) + log5 (7)
≡ 4063 (mod 10006) ≡ 5136 (mod 10006) ≡ 9865 (mod 10006).
Nun haben wir drei Kongruenzen in drei Unbekannten, und es gibt zuf¨allig“ eine eindeutige L¨osung modulo ” 10006, n¨amlich log5 (2) = 6578 , log5 (3) = 6190 , log5 (7) = 1301 . Damit ist die Phase 1 abgeschlossen. In Phase 2 versuchen wir, den Logarithmus x von a = 9451 zu finden. Wir w¨ahlen zuf¨allig“ s = 7736, berechnen ” 9451 · 57736 mod 10007 = 8400 = 24 · 31 · 52 · 71 und freuen uns auf ein Neues, dass alle Faktoren in B liegen. Jetzt rechnen wir: log5 (9451)
= (4 · log5 (2) + log5 (3) + 2 · log5 (5) + log5 (7) − s) mod 10006 = (4 · 6578 + 6190 + 2 · 1 + 1301 − 7736) mod 10006 = 6057 .
Die Probe ergibt 56057 ≡ 9451 (mod 10007), wir haben also x = log 5 (9451) = 6057 gefunden.
Kryptographie - Sommersemester 2004
105
Zur Analyse der Laufzeit dieses Algorithmus: Definiere f¨ ur reelle Zahlen n, u, v, wobei n > e (hier ist e ≈ 2, 71828 die Eulersche Zahl): Ln [u, v]
=
exp(v(log n)u (log log n)1−u ).
Dann gilt Ln [0, v] und Ln [1, v]
= =
exp(v(log n)0 (log log n)1 ) = (log n)v exp(v(log n)1 (log log n)0 ) = exp(v log n).
Hat also ein Algorithmus, der die Zahl n als Eingabe erh¨alt, die Laufzeit Ln [0, v], ist diese polynomiell, hat er die Laufzeit Ln [1, v], ist sie exponentiell. Hat ein Algorithmus die Laufzeit Ln [u, v], f¨ ur ein u, das echt zwischen 0 und 1 liegt, ist sie subexponentiell. Man kann durch eine etwas l¨angerwierige Untersuchung (mit einigen vereinfachenden Annahmen) zeigen, dass die Index-Calculus-Methode, ebenso wie das Quadratische Sieb, im Wesentlichen eine subexponentielle Laufzeit hat, die als Lp [1/2, c + o(1)] abgesch¨atzt werden kann (wobei p die eingegebene Primzahl ist, c eine implementierungsabh¨angige Konstante ist, und v = c + o(1) ungef¨ahr bedeutet: der Parameter v wird h¨ochstens minimal gr¨oßer als c) – also eine sehr gute Performanz, die auch in der Praxis best¨atigt wird. Ein Nachteil der Index-Calculus-Methode ist ihre Anh¨angigkeit von der Zerlegung von Gruppenelementen in Primfaktoren. Es ist noch nicht gelungen, eine generische Variante (will heißen: eine, die auf beliebigen Gruppen anwendbar ist) dieses Algorithmus zu finden.
106
Vorlesungsskript von E. Best / Stand: 19. September 2005
Kapitel 7
Hashfunktionen und Signaturschemata ¨ Mit einer digitalen Unterschrift (digitale Signatur) soll etwas Ahnliches bewirkt werden wie mit einer Unterschrift im u ¨blichen Sinn. Wenn Alice zum Beispiel bei einer Bank Geld abheben m¨ochte, dann soll sie (als Bedingung der Bank) ein Dokument unterzeichnen, auf Grund dessen die Bank sp¨ater gegebenenfalls beweisen kann, dass Alice die Abhebung tats¨achlich autorisiert hat. Es ist dazu n¨otig, dass Alices Unterschrift auch von Dritten (z.B. von einem Richter) verifiziert werden kann. Wir werden in Abschnitt 7.2 sehen, wie Public-Key-Kryptographie zu diesem Zweck eingesetzt werden kann. Unter Umst¨anden sind die Dokumente, die unterzeichnet werden sollen, recht lang (z.B. umst¨andliche Kaufvertr¨age). Eine Unterschrift ist jedoch nur kurz. Im nicht-digitalen Bereich unterzeichnet man zum Beispiel bei wichtigen Dokumenten jede Seite extra, und manchmal sogar einzelne besonders wichtige Stellen im Dokument. Im digitalen Bereich zieht man kryptographische Hashfunktionen heran, die die Eigenschaft haben, dass sie einen (l¨angeren) Text durch einen (k¨ urzeren) Text, kryptographisch gesehen, eindeutig charakterisieren. Solche Funktionen werden u.a. als Hilfsmittel f¨ ur digitale Signaturen eingesetzt. Wir besprechen sie daher zuerst, in Abschnitt 7.1.
7.1
Kryptographische Hashfunktionen
Eine Hashfunktion ist eine Abbildung h : Σ ∗ → Σl ,
l ∈ N,
die beliebig lange W¨orter (mit Buchstaben aus einem endlichen, nicht leeren Alphabet Σ) auf W¨orter der festen L¨ange l abbildet. Eine solche Funktion kann unter den gegeben Voraussetzungen nicht injektiv sein. Beispiel: Die Funktion, die einer Zahl k die 0 zuordnet, wenn k gerade ist, und die 1, wenn k ungerade ist, ist eine Hashfunktion. Die Quersummenfunktion (von Dezimalzahlen) ist keine Hashfunktion, da die Quersumme nach oben nicht beschr¨ankt ist und daher nicht Werte in einer endlichen Menge Σl annehmen kann. 107
108
Vorlesungsskript von E. Best / Stand: 19. September 2005
Eine Kompressionsfunktion ist eine Abbildung h : Σ m → Σl ,
m, l ∈ N, m > l,
die W¨orter der L¨ange m auf (k¨ urzere) W¨orter der L¨ange l abbildet. Auch solche Funktionen k¨onnen (f¨ ur endliche, nicht leere Σ) nicht injektiv sein. Beispiel: Die Quersumme von (Dezimal-)Zahlen der L¨ange m ≥ 3 ist eine Kompressionsfunktion.
Um als kryptographische Hilfsmittel zu taugen, m¨ ussen Hash- und Kompressionsfunktionen einige Eigenschaften erf¨ ullen, die jetzt skizziert werden. Sei dazu h eine solche Funktion, sei D ihr Definitionsbereich (d.h.: D = Σ∗ , wenn h Hashfunktion ist, und D = Σm , wenn h eine Kompressionsfunktion ist) und sei W = Σl ihr Wertebereich. Dan heißt h eine Einwegfunktion, wenn das Problem (Urbildproblem) Gegeben: Finde:
die Funktion h und ein Element y ∈ W ; ein Element x ∈ D mit h(x) = y
(7.1)
kryptographisch schwer“ ist. ” Das ist keine ganz scharfe Definition, weil der Begriff kryptographisch schwer“ nicht formal definiert ist. Er ” soll informell ungef¨ahr so verstanden werden, wie fr¨ uher die Aussage diskrete Logarithmen sind schwer be” rechenbar“. Ob es (beweisbar) kryptographisch schwere Funktionen gibt, ist unbekannt. Bekannt ist jedoch, dass es Funktionen gibt, bei denen alle Versuche der leichten Berechenbarkeit“ bisher gescheitert sind, die ” also im Wesentlichen (bislang) nicht geknackt“ worden sind. ” Eine Funktion h der obigen Art heißt kollisionsresistent (manchmal auch: stark kollisionsresistent, zur Unterscheidung von ¨ahnlichen Begriffen), wenn das Problem (Kollisionsproblem) Gegeben: Finde:
die Funktion h; zwei Elemente x1 , x2 ∈ D mit x1 6= x2 und h(x1 ) = h(x2 ) (also eine Kollision)
(7.2)
kryptographisch schwer ist. Man kann zeigen, dass aus der Kollisionsresistenz die Einwegfunktionseigenschaft folgt. Angenommen, es g¨abe einen Algorithmus, der zu einem Bild y ∈ W ein Urbild x ∈ D mit y = h(x) ausrechnet. Man w¨ahlt zuf¨allig einen Text x0 ∈ D, berechnet y = h(x0 ) und dazu ein Urbild x ∈ f −1 (y). Die Wahrscheinlichkeit, dass x 6= x0 , ist groß, und wenn das der Fall ist, dann ist (x1 , x2 ) = (x, x0 ) eine Kollision. Die Kollisionsresistenz von h kann mit einer Geburtstagsattacke auf die Probe gestellt werden. Dazu w¨ahlt man so viele Hashwerte ( Geburtstage“) wie m¨oglich, sortiert diese und sucht nach einer Kollision. Die ” Geburtstagsanalyse aus Abschnitt 6.1.1 zeigt: nimmt man die Hashwerte als gleich verteilt an und w¨ahlt man k Argumente x ∈ D zuf¨allig, wobei k ≥
1 · (1 + 2
q
1 + (8 ln 2)·|Σ|l )
gilt, dann ist die Wahrscheinlichkeit, dass zwei von diesen Argumenten den gleichen Hashwert haben, gr¨oßer oder gleich 1/2. Oscar darf also, grob gerechnet, nicht mehr als exp(l/2) Hashwerte bilden k¨onnen. Dazu muss l entsprechend groß sein; heutzutage w¨ahlt man deshalb l = 128, l = 160 oder sogar l ≥ 256.
Man kann Kompressionsfunktionen h aus Verschl¨ usselungsfunktionen eK konstruieren. Dazu ben¨otigt man ein Kryptosystem mit P = C = K = {0, 1}l und Verschl¨ usselungsfunktionen eK : {0, 1}l → {0, 1}l f¨ ur
Kryptographie - Sommersemester 2004
109
K ∈ {0, 1}l . Um die Geburtstagsattacke zu verhindern, muss l ≥ 128 sein (deswegen scheidet DES schon aus). Mindestens auf folgende Weisen kann man Kompressionsfunktionen h : {0, 1} 2·l → {0, 1}l definieren: h(K, x) h(K, x) h(K, x) h(K, x)
= = = =
eK (x) ~ x eK (x) ~ x ~ K eK (x ~ K) ~ x eK (x ~ K) ~ x ~ K.
Ist das Verschl¨ usselungsverfahren sicher, so scheinen es auch die auf eine dieser Weisen abgeleiteten Kompressionsfunktionen zu sein. Man kann weiterhin Hashfunktionen aus Kompressionsfunktionen konstruieren (iterated hash functions), und zwar so, dass die Kollisionsresistenz einer konstruierten Hashfunktion aus der Kollisionsresistenz der benutzten Kompressionsfunktionen folgt. Hier wird ein Verfahren beschrieben, das auf I.B. Damgard und R. Merkle (unabh¨angig voneinander) zur¨ uckgeht. Sei dazu g : {0, 1}m → {0, 1}l ,
m, l ∈ N, m > l,
eine Kompressionsfunktion und sei r = m − l ≥ 2 (typischerweise gilt z.B. l = 128 und r = 512). Aus g will man eine Hashfunktion h : {0, 1}∗ → {0, 1}l konstruieren. Sei also x ∈ {0, 1}∗ . Vor x wird eine minimale Anzahl von Nullen geschrieben, so dass die neue L¨ange durch r teilbar ist. An diesen Bitstring werden noch r Nullen angeh¨angt. Jetzt wird die Bin¨arentwicklung der L¨ ange des originalen Strings x bestimmt. Sie wird so um Nullen erg¨anzt, dass die L¨ange des entsetehenden Strings durch r − 1 teilbar ist. Vor diesen String und vor jedes (r − 1)·j te Zeichen, j = 1, 2, 3, . . ., wird eine Eins geschrieben. Dieser neue String wird an den vorigen angeh¨angt. Der Gesamtstring wird in eine Folge x1 x2 . . . xt , xi ∈ {0, 1}r , 1 ≤ i ≤ t zerlegt. Beispiel: Mit r = 4 und x = 111011 wird schrittweise folgender String erzeugt: x = 111011 ; 00111011 ; 001110110000 ; 0011101100001110 = 0011 | {z } 0000 | {z } 1110 | {z } | {z } 1011 x1
x2
x3
x4
Es ist also t = 4. Vorl¨ aufiges Ende des Beispiels. Der Hashwert h(x) wird iterativ berechnet: H0 Hi h(x)
= 0l (d.h., der aus l Nullen bestehende String) = g(Hi−1 ◦ xi ) f¨ ur 1 ≤ i ≤ t (wobei ◦ die Konkatenation zweier Strings bedeuten m¨oge) = Ht .
Fortsetzung des Beispiels: Seien m = 5 und l = 1 (keine sehr realistische Annahme); also, wie eben auch, r = 4. Dann berechnet sich h(111011) folgendermaßen, wobei die oben ausgerechneten x 1 , . . . , x4 benutzt
110
Vorlesungsskript von E. Best / Stand: 19. September 2005
werden: H0 H1 H2 H3 H4 h(x)
= 0 = g(0 0011) = b1 = g(b1 1011) = b2 = g(b2 0000) = b3 = g(b3 1110) = b4 = b4 ,
mit vier Bits b1 , b2 , b3 , b4 , die von g abh¨angen. Ende des Beispiels. Diese Konstruktion garantiert, dass h kollisionsresistent ist, sofern g schon kollisionsresistent ist. (Ohne Beweis.) In der Praxis werden Hashfunktionen benutzt, die ganz ¨ahnlich aufgebaut sind, beispielsweise SHA-1, ein NIST-Standard1 . Der Entwurf iterierter Hashfunktionen ist durchaus kritisch. Ein alternativer Vorschlag, MD4 (wobei MD f¨ ur message digest“ steht) kann nicht mehr als sicher gelten. Seine Weiterentwicklung, ” MD5, gilt (noch) als relativ sicher2 . Auch der unmittelbare Vorg¨anger von SHA-1, SHA, wurde Opfer einer publizierten Kollisions-Attacke mit 261 x-Werten (und schon vorher einer wahrscheinlich ¨ahnlichen, aber ¨ bisher geheim gehaltenen Attacke), weswegen die Anderung zu SHA-1 durchgef¨ uhrt wurde. SHA-1 wurde 3 k¨ urzlich durch neue Standards erg¨anzt , die f¨ ur die Hashwerte (message digests) auch gr¨oßere L¨angen als nur“ l = 128 oder l = 160 vorsehen, insbesondere l = 256, l = 384 und l = 512. ”
7.2
Digitale Signaturen
Digitale Signaturen (Unterschriften) werden mit Hilfe ¨ahnlicher Ideen realisiert, wie sie auch der Public-KeyKryptographie zu Grunde liegen. Will Alice ein Dokument signieren, ben¨otigt sie einen privaten, geheimen Schl¨ ussel d und einen ¨offentlichen Schl¨ ussel. Der private Schl¨ ussel ist sicher gespeichert, z.B. auf einer Chipkarte. Der ¨offentliche Schl¨ ussel liegt in einem read-only-Verzeichnis, zu dem jeder Zugang hat. Um ein Dokument x zu signieren, erzeugt Alice aus x und ihrem privaten Schl¨ ussel d eine digitale Signatur s(d, x). Unter Verwendung des ¨offentlichen Schl¨ ussels kann dann jeder nachpr¨ ufen, dass die Signatur korrekt ist, d.h., von Alice stammt. Dieses Signaturverfahren ist nur dann sicher, wenn niemand ohne Kenntnis von Alices privatem Schl¨ ussel die Signatur eines Dokuments errechnen kann (selbst dann nicht, wenn Signaturen anderer Dokumente bereits bekannt sind) und wenn die ¨offentlichen Schl¨ usselverzeichnisse vor Ver¨anderungen gesch¨ utzt sind. Denn sonst k¨onnte jemand in Alices Namen f¨alschlicherweise signieren.
7.2.1
RSA-Signaturen
Das RSA-Verschl¨ usselungsverfahren eignet sich ganz besonders zur Erzeugung digitaler Signaturen. Die Idee ist, dass Alice ein Dokument x signiert, indem sie ihr Entschl¨ usselungsverfahren auf x anwendet, also s(d, x) = xd mod n 1 Siehe
http://www.itl.nist.gov/fipspubs/fip180-1.htm. SHA steht f¨ ur Secure Hash Algorithm“. ” z.B. http://passcracking.com/ in diesem Zusammenhang interessant ist. 3 Siehe http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf.
2 Obwohl
Kryptographie - Sommersemester 2004
111
berechnet, wobei n Teil des ¨offentlichen Schl¨ ussels ist (wie in RSA). Bob verifiziert diese Signatur, indem er darauf das Verschl¨ usselungsverfahren anwendet, d.h., s(d, x)e mod n berechnet. Im Detail funktioniert das Verfahren in drei Schritten: • Schl¨ usselerzeugung: Alice w¨ahlt zwei große Primzahlen p, q und einen Exponenten e mit 1 < e < (p − 1)(q − 1) und ggT(e, (p − 1)(q − 1)) = 1. Sie berechnet n = pq und d mit 1 < d < (p − 1)(q − 1) und de ≡ 1 (mod (p − 1)(q − 1)). Ihr ¨offentlicher Schl¨ ussel ist (n, e) und ihr geheimer Schl¨ ussel ist d. (Also ganz wie bei RSA.) • Erzeugung einer Signatur: Wir erkl¨aren, wie Alice eine (kurze) Nachricht x ∈ {0, 1, . . . , n − 1} signiert. Sp¨ater kann sie l¨angere Nachrichten unter Zuhilfenahme von Hashfunktionen signieren. Um die Zahl x zu signieren, berechnet Alice den Wert s = xd mod n. Die Signatur ist s. Diese Methode birgt noch Gefahren und ist verbesserungsbed¨ urftig; darauf kommen wir zur¨ uck. • Verifikation einer Signatur: Um die Signatur s zu verifizieren, besorgt sich Bob den ¨offentlichen Schl¨ ussel (n, e) von Alice und berechnet x0 = se mod n. Wenn die Signatur s korrekt gebildet wurde, gilt x0 = x (das folgt aus Satz 5.2.2, zusammen mit der Tatsache, dass (xd )e mod n = (xe )d mod n). Was hat Bob durch die Verifikation erreicht? Er kennt jetzt x. Außerdem weiß er, dass s die Signatur von x ist (dazu braucht er x vorher nicht zu kennen). Er weiß auch, dass Alice die Signatur erzeugt hat, denn solange das RSA-Verfahren sicher ist, kann niemand ohne Kenntnis des geheimen Schl¨ ussels d die Signatur von x berechnen. Diese Verifikation kann jeder durchf¨ uhren, der den o¨ffentlichen Schl¨ ussel von Alice kennt. Will Bob z.B. einem Richter gegen¨ uber beweisen, dass Alice den Text x wirklich signiert hat, braucht er nur die Signatur s und den o¨ffentlichen Schl¨ ussel (n, e) von Alice vorzulegen. Der Richter kann die Verifikation x0 = ne mod n und x0 = x dann selber vornehmen. (Wenn Alice danach behauptet, jemand habe ihren geheimen Schl¨ ussel gestohlen, hat der Richter etwas mehr zu tun...) (Kein allzu gutes) Beispiel: Alice w¨ahlt p = 11, q = 23 und e = 3. Daraus ergibt sich n = 253 und d = 147. Der ¨offentliche Schl¨ ussel von Alice ist (253, 3). Ihr geheimer Schl¨ ussel ist 147. Ende des (nicht allzu guten) Beispiels. Alice will an einem Geldautomaten Geld abheben und den Betrag von e 111 signieren. Dazu berechnet sie s = 111147 mod 253 = 89. Der Geldautomat erh¨alt s = 89 und berechnet x = s3 mod 253 = 111. Damit weiß der Automat, dass 111 abgehoben werden sollen, und dass es Alice ist, die diesen Betrag abheben m¨ochte. (Notfalls kann der Automat das auch Dritten gegen¨ uber beweisen...) Ende des Beispiels. So, wie das Verfahren bisher beschrieben wurde, ist es zum Beispiel Man-In-The-Middle-Attacken gegen¨ uber verwundbar. Aber es gibt auch andere Angriffe: Oscar w¨ahlt zuf¨allig eine Zahl s ∈ {0, 1, . . . , n − 1}. Dann behauptet er, dass s eine von Alice erzeugte RSA-Signatur ist. Wer diese Signatur verifizieren will, berechnet x = se mod n und glaubt, Alice habe x signiert. Wenn x ein sinnvoller Text ist, wurde Alice damit die Unterschrift unter einen sinnvollen Text untergeschoben. Diese Art der T¨auschung nennt man existentielle F¨ alschung (existential forgery).
112
Vorlesungsskript von E. Best / Stand: 19. September 2005
Beispiel: Alice w¨ahlt, wie im vorigen Beispiel, (p, q, e) = (11, 23, 3). Es ergibt sich n = 253 und d = 147. Oscar m¨ochte aus Alices Konto Geld abheben. Er schickt einfach s = 123 an den Geldautmaten und hofft, dass das die Signatur eines m¨oglichst großen Geldbetrags ist. Der Geldautomat berechnet x = 123147 mod 253 = 117 und glaubt, dass Alice e 117 abheben m¨ochte. Tats¨achlich hat Alice die 117 aber nie unterschrieben. Ende des Beispiels. Eine weitere Gefahr beim Signieren von RSA kommt von der Multiplikativit¨at des RSA-Verfahrens. Sind x1 , x2 ∈ {0, . . . , n − 1} und sind s1 = xd1 mod n und s2 = xd2 mod n die jeweiligen Signaturen, dann ist s = s1 s2 mod n = (x1 x2 )d mod n die Signatur von x1 x2 . Aus zwei g¨ ultigen Signaturen kann man also leicht eine dritte herstellen. Zwei dieser drei Angriffe k¨onnen abgewehrt werden, wenn nur solche Texte x signiert werden, deren Bin¨ardarstellung von der Form ww ist (w ∈ {0, 1}∗ ), also aus zwei gleichen H¨alften besteht. Der interessierende Text ist die erste H¨alfte w, aber signiert wird ww. Bei der Verifikation wird zuerst gepr¨ uft, ob die Bin¨arentwicklung des erhaltenen Textes die Form ww hat; wenn nicht, wird die Signatur zur¨ uckgewiesen. Die existentielle F¨alschung kann dann nicht mehr angewendet werden, weil unbekannt ist, wie man eine Signatur, deren verifizierter Text eine Bin¨arentwicklung der geforderten Form hat, zuf¨allig“ und ohne ” Kenntnis des privaten Schl¨ ussels finden kann. Auch ist unwahrscheinlich, dass (x1 x2 ) mod n eine Bin¨arentwicklung der geforderten Form hat, wenn dies f¨ ur x1 und x2 zutrifft. Deswegen kann die Multiplikativit¨at nicht ausgenutzt werden. Statt einer Verdopplung k¨onnen zur Abwehr der Angriffe auch andere Redundanzfunktionen verwendet werden. Bisher wurde beschrieben, wie Texte aus {0, 1, . . . , n − 1} signiert werden. Jetzt sollen l¨angere Texte signiert werden. Dazu schalten wir eine Hashfunktion vor. Sei h : {0, 1}∗ → {0, 1, . . . , n − 1} eine ¨offentlich bekannte, kollisionsresistente Hashfunktion4 . Weil h kollisionsresistent ist, ist h auch eine Einwegfunktion. In der Praxis konstruiert man h mit einer g¨angigen kollisionsresistenten Hashfunktion, die z.B. einen 160-Bit-String erzeugt. Darauf wendet man eine Expansionsfunktion an. Dieses Verfahren ist im Standard PKCS5 Nr. 1 genau festgelegt. Die Signatur eines (langen) Textes x ist dann s = h(x)d mod n. Aus dieser Signatur l¨asst sich nur der Hashwert des Textes rekonstruieren, nicht der Text selbst. Daher wird zur Verifikation (jetzt) der Text x ben¨otigt. Nachdem Alice die Signatur s des Textes x erzeugt hat, sendet sie diese, zusammen mit x, an Bob. Bob berechnet H = se mod n und vergleicht das Ergebnis H mit dem Hashwert h(x) (den er ja berechnen kann, da er sowohl x als auch die ¨offentlich bekannte Hashfunktion h zur Verf¨ ugung hat). Stimmen H und h(x) u ultig, anderfalls wird sie verworfen. ¨berein, so ist die Signatur g¨ Dieses Verfahren wendet die existentielle F¨alschung ab. Denn angenommen, Oscar w¨ahlt eine Signatur sb, um eine existentielle F¨alschung zu versuchen. Dann muss er auch einen Text x produzieren und an Bob schicken. Bob berechnet H = sb e mod n und vergleicht H mit dem Hashwert h(x). Er akzeptiert die Signatur nur dann, wenn beide u ¨bereinstimmen. Oscar muss also sicherstellen, dass h(x) = H gilt. Er muss seinen Text x so w¨ahlen, dass er unter h ein Urbild von H ist, d.h., er muss das Urbildproblem (7.1) l¨osen. Das geht nicht, weil h eine Einwegfunktion ist. Aus dem gleichen Grund kann Oscar die Multiplikativit¨at von RSA nicht ausnutzen. 4 Um
ein solches h auf die in Abschnitt 7.1 angegebene Form zu bringen, nehmen wir eine sinnvolle Wahl von l an. Cryptography Standard, siehe http://www.rsasecurity.com/rsalabs/node.asp?id=2124.
5 Public-Key
Kryptographie - Sommersemester 2004
113
Schließlich kann Oscar den Text x, der von Alice signiert wurde, auch nicht durch einen anderen Text x b mit der gleichen Signatur ersetzen. Denn dann w¨are das Paar (x, x b) eine Kollision von h, d.h., Oscar muss das Kollisionsproblem (7.2) l¨osen. Das geht nicht, weil h als kollisionsresistent angenommen wurde.
7.2.2
Andere Public-Key-Signaturen
Im Prinzip kann jedes andere Public-Key-Verfahren in ¨ahnlicher Weise verwendet werden. Nicht alle sind jedoch bez¨ uglich Ver- und Entschl¨ usselung so symmetrisch (d.h.: vertauschbar) wie das RSA-Verfahren. Deshalb bedarf es leichter Abwandlungen, um zum Beispiel aus dem ElGamal-Kryptosystem ein Signaturverfahren zu gewinnen. Das ist m¨oglich, wird hier aber nicht genauer beschrieben. Ein Problem bei der direkten Anwendung von ElGamal ist die L¨ange der Signatur; diese ist n¨amlich wegen message expansion“ doppelt so lang wie die benutzte Primzahl. Das Signaturschema von C.P. Schnorr ” benutzt zwei Primzahlen, um die Signaturl¨ange zu optimieren. Seien dazu p, q zwei Primzahlen mit q | (p−1). Typischerweise wird p die Bitl¨ange 1024 haben, q aber nur die Bitl¨ange 160. Das Schnorr-Signaturschema benutzt eine Untergruppe der Ordnung 160 von Z p . Die Sicherheit des Schemas beruht auf der Vermutung, dass das DL-Problem in dieser Untergruppe kryptographisch schwer ist. Sei g ∈ Z∗p eine q te Wurzel von 1 modulo p, d.h., es gelte g q ≡ 1 (mod p). Ein solches g kann zum Beispiel (p−1)/q
mod p. Das folgendermaßen gefunden werden: Sei g0 eine Primitivwurzel von Z∗p ; setze dann g = g0 Schorr-Schema integriert eine Hashfunktion direkt in den Signieralgorithmus (anstelle der signiere-und” dann-hashe“-Methode, die im vorigen Abschnitt diskutiert wurde). Sei also h : {0, 1}∗ → Zq eine sichere (kollisionsresistente) Hashfunktion. Die Schl¨ usselmenge des Schnorr-Schemas ist K = { (p, q, g, a, b) | b ≡ g a (mod p), 0 ≤ a ≤ q−1}.
F¨ ur x ∈ {0, 1}∗ , K = (p, q, g, a, b) und eine (geheime) Zahl k mit 1 ≤ k ≤ q − 1 definieren wir die Signatur als einen Bitvektor der folgenden Art:
mit und
sK (x, k) γ δ
= (γ, δ) = h(x◦(g k mod p)) = k + a·γ mod q,
wobei ◦ die Konkatenation zweier Bitstrings bedeutet. Wenn die Primzahl q aus 160 Bits besteht, ist die Signatur also ein Bitvektor der L¨ange 320. Zur Verifikation einer solchen Signatur (γ, δ) ∈ Zq × Zq berechnet Bob den Wert h( x ◦ (g δ ·b−γ mod p) ) und vergleicht ihn mit γ. Stimmen die beiden u ¨berein, ist die Signatur verifiziert, andernfalls nicht. Der Standard DSA (Digital Signature Algorithm6 ) ist eine Variante des Schnorr-Signaturverfahrens. Die Parameterwahl ist bei DSA ganz genau vorgeschrieben: als q soll eine 160-Bit-Primzahl verwendet werden, 6 Siehe
http://csrc.nist.gov/cryptval/dss.htm.
114
Vorlesungsskript von E. Best / Stand: 19. September 2005
als p eine Primzahl mit mindestens 512, h¨ochstens 1024 Bits, und an der Stelle von h wird SHA-1 verwendet. Die Sicherheit von DSA h¨angt von der Ermittlung diskreter Logarithmen in der, q entsprechenden, ca. 2 160 elementigen Untergruppe der multiplikativen Gruppe einer großen Primzahl, n¨amlich p, ab. Dies erscheint heutzutage und auf einige absehbare Zeit noch als kryptographisch schwer, und außerdem ist es die einzige derzeit bekannte Methode, DSA zu brechen. DSA gilt also (noch) als sicher.
Index brute force, 6
Advanced Encryption Standard (AES), 58 Affin-lineare Chiffre, 9 Algorithmus Lineare Attacke, 46 modexp, 68 poly euclid, 56 BabyStep GiantStep (von Shanks), 97 L¨o se mod eq, 16 Miller Rabin, 77 Pollard Rho DL, 99 Pollard Rho, 84 euclid , 12 extended euclid , 13 pseudoprim, 76 witness, 77 Index-calculus, 102 Pohlig-Hellman, 100 probabilistisch, 76 Quadratisches Sieb, 83 semi-exakt, 76 Alice, 1 Atbash, 6 Attacke Chosen-ciphertext, 23 Chosen-plaintext, 23 Ciphertext-only, 23 Impersonation, 79 Known-plaintext, 23 Low-decryption-exponent, 80 Low-exponent, 74 Man-in-the-middle, 79 autokey encryption, 20
Carmichael-Zahl, 76 Certification Authority, 79 Charakteristik, 52 Chiffretext, 1 Chinesischer Restsatz, 66 Cipherblock Chaining Mode (CBC), 20 ciphertext, 2 decryption, 2 Diffie-Hellman-Problem, 93 Digital Encryption Standard (DES), 47 Digital Signature Algorithm (DSA), 113 digitale Signatur, 110 Digramm, 24 diskrete Logarithmen, 92 DL-Problem, 92 Einheitswurzel, 70 Einwegfunktion, 108 Electronic Codebook Mode (ECB), 17 ElGamal-Kryptosystem, 94 ElGamal-Signaturen, 113 encryption, 2 Entschl¨ usselungsfunktion, 2 Ereignis, 38 Eulersche Φ-Funktion, 8 exhaustive search, 6 existential forgery, 111 existentielle F¨alschung, 111 Faktorbasis, 102 Faktorisierung, 81 Feistel-Chiffre, 46
bedingte Wahrscheinlichkeit, 38 Bias, 39 Blockchiffre, 16 Bob, 1
Galois-Feld, 57 Geburtstagsattacke, 108 115
Geburtstagsparadox, 87 Geheimschl¨ ussel, 2 Grad, 53 gr¨oßter gemeinsamer Teiler (ggT), 5 Gruppe, 4 Abelsche, 4 Hashfunktion, 107 Hill-Chiffre, 18 irreduzibel, 56 iterated hash function, 109 iterierte Chiffre, 33 Kerkhoff-Prinzip, 23 keyspace, 2 Klartext, 1 kleinstes gemeinsames Vielfaches (kgV), 91 Koeffizient, 53 K¨orper, 51 Koinzidenzindex, 28 Koinzidenztest, 28 Kollisionsproblem, 108 kollisionsresistent, 108 Kompressionsfunktion, 108 kongruent modulo einer Zahl, 4 Kongruenz, 4 Kryptanalyse, 1 Kryptographie, 1 Kryptologie, 1 Kryptosystem, 1 asymmetrisches, 3 symmetrisches, 2 lineare Approximation, 41 Logarithmus, 58 MARS, 51 Merkle-Damgard-Verfahren, 109 message expansion, 94 Modulare Exponentiation auf einem Taschenrechner, 69 monoalphabetisch, 16 NIST, 51, 110 normiert, 53
Ordnung, 10 Oscar, 1 Permutationschiffre, 16 Piling-Up-Lemma, 40 plaintext, 1 polyalphabetisch, 17 Polynom, 53 Addition, 54 Division, 55 Multiplikation, 55 Primitivwurzel, 89 Primk¨orper, 53 Primzahlsatz, 75 private key, 3, 65 Probedivision, 75 protocol failure, 80 pseudoprim, 70 public key, 3, 65 Public-key-Kryptographie, 3 Quadratwurzel, 70 RC6, 51 Reduktionspolynom, 57 relativ prim, 5 Restklasse, 4 Rijndael, 51 Ring, 4 kommutativer, 4 RSA, 71 RSA-Signaturen, 110 Runde, 34 Rundenschl¨ ussel, 34 S-Box, 34 Satz von Bayes, 39 Euler, 11 Fermat, 11 Lagrange, 9 Lam´e, 13 Schl¨ usselraum, 2 Schnorr-Signaturverfahren, 113 secret key, 2 Secret-key-Kryptographie, 3
Serpent, 51 SHA-1, 110 Sieb des Eratosthenes, 75 Stromchiffre, 21 subexponentiell, 105 subkey, 34 Substitutions-/Permutationsnetzwerk (SPN), 35 Substitutionschiffre, 7 synchrone Chiffre, 21 teilerfremd, 5 teilerfremde Polynome, 55 Trigramm, 24 Triple DES (3DES), 49 Trusted Third Party (TTP), 79 Twofish, 51 unabh¨angige Zufallsvariablen, 38 Untergruppe, 9 Urbildproblem, 108 Verbundwahrscheinlichkeit, 38 Verschiebungschiffre, 6 Verschl¨ usselungsfunktion, 2 Verzerrung, 39 Vigen`ere-Chiffre, 19 Wahrscheinlichkeit, 38 whitening, 35 Zufallsvariable, 38