Kryptologie (Version 20041015)

Transcription

Kryptologie (Version 20041015)
Kryptologie (Version 20041015)
Josef F. Bürgler
18. Oktober 2004
Inhaltsverzeichnis
1 Einführung
1.1 Was ist Kryptologie . . . . . .
1.2 Warum braucht es Kryptologie
1.3 Einige Begriffe . . . . . . . .
1.4 Was wir lernen wollen . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 Geschichte
2.1 Altertum . . . . . . . . . . . . . . . . . .
2.1.1 Skytala von Sparta . . . . . . . .
2.1.2 Cäsar Chiffren . . . . . . . . . .
2.1.3 Steganographie . . . . . . . . . .
2.2 Mittelalter . . . . . . . . . . . . . . . . .
2.2.1 Vigenère Chiffre . . . . . . . . .
2.2.2 Vernam Chiffre . . . . . . . . . .
2.2.3 Playfair Chiffre . . . . . . . . . .
2.3 Neuzeit . . . . . . . . . . . . . . . . . .
2.3.1 Chiffrierzylinder . . . . . . . . .
2.3.2 Die Enigma - eine Rotormaschine
2.4 Kryptanalyse . . . . . . . . . . . . . . .
2.4.1 Monoalphabetische Chiffren . . .
2.4.2 Vigenère-Chiffre . . . . . . . . .
2.4.3 Enigma . . . . . . . . . . . . . .
Literaturverzeichnis
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
1
3
7
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
9
9
11
15
15
16
17
18
20
20
21
23
25
25
29
32
ii
1 Einführung
Diese Vorlesung führt die Studenten der Abteilung Informatik oder andere Interessierte in die
Grundlagen der Kryptologie ein. Diese Wissenschaft beschäftigt sich mit der Sicherung digitaler Informationen und ist zentral im gesamten Umfeld der Computersicherheit.
Digitale Informationen können beliebig oft und (fast) ohne Aufwand kopiert, d.h. reproduziert
werden, sowie beliebig lange, ohne Qualitätsverlust aufbewahrt, d.h. archiviert werden. Dies
unterscheidet sie wesentlich von fast allen anderen Resourcen unserer Zeit, wie Kapital oder
Arbeit. Es besteht deshalb ein grosses Interesse, digitale Informationen aller Art vor unberechtigtem Zugriff zu schützen.
Die Kryptologie ist ein sehr aktives Forschungsgebiet und befasst sich auch mit aufregenden
Themen wie Zero Knowledge Proofs, Anonymität oder Steganographie, d.h. das Verstecken
von Informationen.
1.1 Was ist Kryptologie
Kryptologie umfasst die beiden Hauptgebiete Kryptographie und Kryptoanalyse. Kryptologie
und Kryptographie stammen aus dem Griechischen: κρυπτ oσ steht für geheim, λoγoσ für Wort
oder Sinn steht) und γραϕιν für schreiben.
Die Kryptographie ermöglicht eine Nachricht (Klartext) zu verschlüsseln und daraus den Geheimtext (Chiffrat) herzustellen. Leute, die sich damit beschäftigen nennt man Kryptographen:
sie entwickeln Algorithmen und Protokolle, mit deren Hilfe Daten verschlüsselt werden können.
Auf der Gegenseite befinden sich die Kryptanalytiker oder Kryptoanalytiker (engl: CodeBreakers) und versuchen Verschlüsselungen zu brechen. Die Kryptanalyse oder Kryptoanalyse befasst sich also mit dem Brechen von Codes.
Die Kryptologie verwendet Wissen aus den unterschiedlichsten Gebieten der Informatik, Mathematik, Kommunikationstechnik, Elektronik und Physik.
1.2 Warum braucht es Kryptologie
Früher wurde Kryptologie fast ausschliesslich beim Militär in der Diplomatie und in Geheimdiensten eingesetzt. Private hatten meist weder das nötige Wissen, noch die Maschinen (sprich
1
1 Einführung
die finanziellen Mittel). In diesem Umfeld beschränkte sie sich auf den Einsatz von unsichtbarer Tinte oder Geheimbotschaften, die in normalen Texten untergebracht wurden und nur Eingeweihten offenstanden. Und sollte sich doch jemand wirklicher Kryptographie bedient haben,
war er sicher vom Teufel besessen, eine Hexe, Meuterer, Terrorist, Aufwiegler, etc.
Im Internet Zeitalter, wo E-Mails wie Postkartengrüsse über die Leitungen geschickt werden,
immer öfters elektronisch eingekauft wird, abgestimmt und bald einmal die Steuern deklariert
werden sollen, müssen die Daten vor unberechtigtem Zugriff geschützt werden. Dank der revolutionären Entwicklung in der Halbleiterindustrie ist es jedem/jeder möglich, die komplexesten,
kryptographischen Algorithmen mit Hilfe von geeigneten Programmen anzuwenden und innert
kürzester Zeit riesige Datenmengen zu verschlüsseln: dies auch mit einem moderaten Budget,
den die PC-Preise sind inzwischen unter die 1000-CHF Grenze gefallen!
Mittlerweile wird nicht mehr jeder als Verbrecher abgestempelt, wenn er seine Daten auf dem
Notebook verschlüsselt. Denn wer auch nichts zu verbergen hat, möchte den Inhalt der gestohlenen Harddisk nicht irgend wann mal im Internet präsentiert sehen. Auch wenn ihm das heute
vielleicht egal ist, so könnte es doch in 10, 20 oder 30 Jahren weitaus stärkere Konsequenzen
haben. Ein Notebook-Dieb kann die gestohlenen Daten lesen, manipulieren oder ganz einfach
auf einem Server in Hinterchina ins Netz stellen!
Zumal Passwörter meist unverschlüsselt in der Swap-Partition liegen und nur darauf warten,
dass sie gelesen und verwendet werden!
Die Kryptographie wird heute (und morgen) eingesetzt um die folgenden grundlegenden Problem der modernen Datenverarbeitung zu lösen:
Geheimhaltung oder Vertraulichkeit bedeutet, dass beispielsweise nicht jemand eine Kommunkation zwischen zwei Partnern im Internet abhören kann. Informationen kann man
auch schützen, indem man deren Existenz verbirgt: diese Wissenschaft wird Steganographie genannt.
Authentizität stellt sicher, dass sich nicht jemand als jemand anderer ausgeben kann: also
verifizierbar echt!
Integrität oder Unversehrtheit stellt sicher, dass beispielsweise eine Nachricht nicht auf ihren Weg vom Absender zum Adressaten verändert wird. Sie ist eigentlich ein spezieller
Aspekt der Authentizität.
Verbindlichkeit, (engl: non repudiation) oder nicht-Abstreitbarkeit stellt sicher, dass sich
nicht jemand aus der Verantwortung stehlen kann: man kann also zweifelsfrei nachweisen, dass er/sie beispielsweise eine bestimmte Nachricht gesendet hat oder einen Vortrag
digital unterschrieben hat.
Anonymität ermöglicht zum Beispiel bargeldlosen Verkehr im Internet, ohne dass man zurückverfolgen kann, wer eine bestimmte, digitale Münze ausgegeben hat. Sie ermöglicht
aber auch, dass man anonym abstimmen oder anonym im Internet surfen kann.
...
2
1 Einführung
1.3 Einige Begriffe
Ein zu verschlüsselnder Text besteht aus Zeichen eines Alphabets: typischerweise a, b, c, . . .
oder A, B, C, . . ..
Ein Alphabet Σ ist eine nichtleere, endliche Menge von Symbolen (hier meist die Zeichen des
jeweiligen Alphabets):
Σ := {a, b, c, . . . , z}
Beispiel 1.1. Verwendet man nur die binären Werte, so hat man:
Σ := {0, 1}
Ein Wort über dem Alphabet Σ ist eine endliche Zeichenkette von Elementen aus Σ.
Beispiel 1.2. Für das im Computerumfeld verwendete binäre Alphabet
Σ := {0, 1}
ist jeder endliche Bit-String ein Wort; also beispielsweise:
m := 1, 0, 1, 0, 0, 0, 1, 1
Im folgenden wollen wir solche Wörter verschlüsseln. Wenn wir dies können, dann ist es auch
klar, wie man Texte mit vielen Wörtern verschlüsselt: man verschlüsselt einfach jedes Wort in
diesem Text!
Der Text, den wir verschlüsseln möchten, heisst Klartext (engl: plain-text): Für diesen verwenden wir meist Kleinbuchstaben a, b, c, . . ..
Den Text, den wir über einen unsicheren Kanal übermitteln heisst Geheimtext (engl: ciphertext) oder auch Kryptogramm: Für diesen verwenden wir meist Grossbuchstaben A, B, C, . . ..
Der Prozess, welcher aus dem Klartext den zugehörigen Geheimtext berechnet, heisst Verschlüsseln oder Chiffrieren (engl: encrypt). Die Umkehrung nennt man Entschlüsselung oder
Dechiffrieren (engl: decrypt).
Der Verschlüsselungsalgorithmus (engl: cipher) liefert eine eindeutige Vorschrift, wie aus
einem bestimmten Klartext und einem Schlüssel (engl: key) der zugehörige Geheimtext erzeugt
wird.
Die obigen Begriffe lassen sich mathematisch präzise ausgedrücken: falls wir mit Σ ∗ die Menge
aller endlichen Folgen von Zeichen aus dem Alphabet Σ bezeichnet, so gilt für die Menge der
Klartexte (Nachrichtenraum):
M ⊂ Σ∗
3
1 Einführung
Falls wir für den verschlüsselten Text das selbe Alphabet verwenden, so gilt für die Menge der
Geheimtexte (Chiffratraum):
C ⊂ Σ∗
Der Chiffratraum braucht nicht zwingend das selbe Alphabet zu verwenden: man kann auch ein
völlig anderes verwenden! Man könnte als Chiffratraum die Menge der Hyroglyphen (altägyptische Schriftzeichen) verwenden und als Klartextmenge die englische Sprache.
Meistens bewegt man sich aber ohnehin in der Bit-Welt und dort gilt sicher C = M!
Der Schlüssel ist ein Element des Schlüsselraums für den typischerweise ebenfalls gilt:
K ⊂ Σ∗
Ein Verschlüsselungsalgorithmus (engl: Cipher) ist eine Transformation
E : K × M → C, (k, m) 7→ c = E(k, m) = Ek (m)
die einem Paar, bestehend aus Schlüssel und Klartext (k, m) ∈ K × M einen Geheimtext
c = E(k, m) = Ek (m) ∈ C zuordnet.
Damit auch entschlüsselt werden kann (sonst macht das Ganze schliesslich keinen grossen
Sinn), muss ein Entschlüsselungsalgorithmus existieren, d.h. eine Transformation
D : K × C → M, (k, c) 7→ m = D(k, c) = Dk (m)
für die natürlich gelten muss:
Dk (Ek (m)) = D(k, E(k, m)) = m,
∀m ∈ M
Die folgende Definition verallgemeinert das oben vorgestellt in dem Sinne, dass auch asymmetrische Verschlüsselungsverfahren eingeschlossen werden.
Definition 1.3.1 (Cryptosystem). Ein Kryptosystem ist ein Quintupel (M, C, K, E, D) wobei
M, C und K die Mengen der Klartexte, Geheimtexte und Schlüssel sind, E = {E k |k ∈ K} eine
Familie von Verschlüsselungsfunktionen Ek : M → C und D = {Dk |k ∈ K} eine Familie von
Entschlüsselungsfunktionen Dk : C → M sind, wobei für jeden Schlüssel e ∈ K ein Schlüssel
d ∈ K existiert, so dass gilt:
Dd (Ee (m)) = m, ∀m ∈ M.
Man nennt das Kryptosystem symmetrisch (engl: symmetric oder private-key), falls d = e oder
falls d aus e einfach berechnet werden kann.
Man nennt das Kryptosystem asymmetrisch (engl: asymmetric oder public-key), falls d 6= e
und es praktisch unmöglich ist, den privaten Schlüssel d aus dem öffentlichen Schlüssel e zu
berechnen.
4
1 Einführung
Beispiel 1.3. Stellen Sie die symmetrische Verschlüsselung mit Hilfe eines Block-Diagramms dar.
Lösung: Die beiden Blöcke links und rechts stehen für die Verschlüsselung und die Entschlüsselung.
k
m
E
k
c = Ek (m)
D
Dk (c) = m
Beispiel 1.4. Stellen Sie die asymmetrische Verschlüsselung mit Hilfe eines Block-Diagramms dar.
Lösung: Die beiden Blöcke links und rechts stehen für die Verschlüsselung und die Entschlüsselung.
e
m
E
d
c = Ee (m)
D
Dd (c) = m
Man beachte, dass jedermann (-frau) verschlüsseln kann (mit dem Schlüssel e) aber nur der oder diejenige entschlüsseln kann, der (oder die) im Besitz des entsprechenden Schlüssels d ist. Man beachte auch,
dass man d nicht einfach aus e berechnen kann!
Da mit Hilfe des Computers ver- und entschlüsselt wird, verwendet man zu Schulzwecken meist
anstelle von Buchstaben die Zahlen 0 bis 25: 0 steht also für a (oder A), 1 steht für b (oder B),
usw. Der Einfachheit halber werden wir nicht zwischen Gross- und Kleinbuchstaben unterscheiden. Sie werden lediglich feststellen, dass wir für den Klartext meist kleine und für den
Geheimtext meist grosse Buchstaben verwenden.
Ein wichtiges Hilfsmittel in der Kryptologie ist die modulare Arithmetik. Sind a und b zwei
ganze Zahlen (a, b ∈ ∠Z), und m eine positive Zahl (m ∈ IN), dann schreibt man
a ≡ b (mod m)
genau dann, wenn m|(b − a), d.h. wenn m ein Teiler von b − a ist. Man sagt dann auch: a ist
kongruent zu b modulo m. Die Zahl m wird Modul genannt.
Wir verwenden a mod m (ohne Klammern), um den Rest r zu bezeichnen, der bei der Division
von a durch m entsteht: dabei soll gelten: 0 ≤ r < m!
5
1 Einführung
Beispiel 1.5. Berechne 101 mod 7 sowie −101 mod 7!
Lösung: 3, 4
Dadurch kann man die Arithmetik modulo m definieren: man rechnet also in
∠Zm = {0, 1, . . . , m − 1}
und verwendet dort die Rechenoperationen Addition “+” und Multiplikation “·”. Die Addition
und Multiplikation modulo m funktioniert genau gleich wie die normalen Operationen: lediglich am Schluss (oder auch zwischendurch) nimmt man das Resultat modulo m.
Beispiel 1.6. Berechnen sie 11 + 13 sowie 11 · 13 in ∠Z 16 .
Lösung: 8, 15
Beispiel 1.7. Stellen Sie eine Multiplikationstafel für ∠Z 5 auf. Welche Zahlen x ∈ ∠Z5 haben ein multi-
plikatives Inverses?
Beispiel 1.8. Programmieren Sie den euklidischen und den erweiterten euklidischen Algorithmus. Ers-
terer kann verwendet werden, um den grössten gemeinsamen Teiler zweier (oder auch mehrerer - wie
geht das?) Zahlen zu bestimmen. Zweiterer kann verwendet werden, um das modulare Inverse einer Zahl
6
1 Einführung
zu bestimmen.
1.4 Was wir lernen wollen
Wir werden in den folgenden Kapiteln die nachstehenden Gebiete teilweise ausführlich behandeln, aber auch ab und zu nur streifen:
Geschichte der Kryptologie oder wie man aus Fehlern lernen kann.
Mathematische Grundlagen - dadurch bekommt die Kryptologie ein solides Fundament!
Symmetrische Verschlüsselung oder private key encryption
Kryptographische Hilfsfunktionen wie Einweg- und Hash-Funktionen und Zufallsgeneratoren.
Asymmetrische Verschlüsselung oder public key encryption
Hybride Verfahren - aus Effizienzgründen
Digitale Signaturen, Zertifikate, etc. - und wie man eine Zertifizierungsstelle einrichtet.
Kryptographische Protokolle - sie sind das Herzstück jeder Krypto-Applikation.
Zero-Knowledge Protokolle - oder wie beweise ich jemandem, dass ich etwas weiss, ohne
das Geheimnis zu verraten?
Digitales Geld - oder wie kann man sich digitale Münzen vorstellen?
7
1 Einführung
Kryptographie in der Praxis - jeder schliesst seine Wohnung ab, wenn er in die Ferien geht:
warum verschickt man aber vertrauliche Informationen ungeschützt über’s Netz?
Wir werden dabei von Anfang an möglichst viele praktische Beispiele machen. Damit werden
wir dann
• E-Mails oder andere vertrauliche Daten verschlüsseln.
• Files, Directories und Partitionen verschlüsseln.
• Files sicher löschen (wipe, secure delete [Gutman], etc.).
• Daten sicher übertragen (ssh, stunnel, IPSec, etc.)
• Daten verstecken (steganographie)
• Zero-Knowledge Proofs
• Digital Signieren ...
• Integrität checken ...
• Authentisierung und Autorisierung analysisieren ...
8
2 Geschichte
2.1 Altertum
Die Ägypter verschlüsselten einige ihrer Hyroglyphen (The clay of Phaistos, Cretan-Minoan,
1700 BC).
Skytala von Sparta ...
Cäsar Chiffren ...
Playfair Chiffren ...
Nachricht unter dem Kopfhaar welche erst sichtbar wird, wenn man das Kopfhaar abrassiert.
2.1.1 Skytala von Sparta
Bereits die Griechen verwendeten rund 500 v. Chr. in Sparta die Skytala, bestehend aus einem
Zylinder (meist ein Rundholz), um welchen ein Papyrusband spiralförmig gewickelt wurde.
Die Meldung wurde dann parallel zur Längsachse des Zylinders so aufgeschrieben, dass jeweils in Querrichtung zum Papyrusband genau ein Zeichen aufgeschrieben wurde (siehe Abbildung 2.1).
Übermittelt wurde lediglich das Papyrusband. Die EmpfängerIn konnte die Nachricht nur mit
einem Zylinder gleichen Durchmessers lesen.
Die Verschlüsselung besteht darin, dass der Klartext auf n Zeilen aufgeteilt wird und dann zeilenweise aufgeschrieben wird. Die Anzahl Spalten entspricht dann der Anzahl Umwicklungen
des Zylinders. Der Schlüssel in diesem Verfahren ist n.
Übermittelt wird dann der spaltenweise gelesene Text: dieser entspricht dem Geheimtext.
Der Empfänger entschlüsselt die Nachricht, indem er den erhaltenen Geheimtext spaltenweise
aufschreibt indem er in jeder Spalte genau n Zeichen aufschreibt. Den Klartext kann er dann
zeilenweise ablesen.
Dieser Cipher verändert nicht die einzelnen Zeichen des Klartextes, sondern deren Position im
Geheimtext. Es handelt sich deshalb um eine Transpositions-Chiffre.
9
2 Geschichte
Abbildung 2.1: Skytala von Sparta.
Beispiel 2.1. Im folgenden Beispiel schreiben wir die Meldung
DiesisteinegeheimeNachrichtdiemitderSkytalauebermitteltwirdende
zeilenweise auf (wobei wir natürlich nur die Buchstaben, kodieren wollen), und zwar so, dass wir n = 9
Buchstaben auf dem Umfang des Zylinders annehmen (der Zylinder soll also den Umfang 9 haben). Wir
verwenden also 9 Zeilen.
D
E
E
H
I
R
A
I
I
I
I
I
R
E
S
U
T
R
E
N
M
I
M
K
E
T
D
S
E
E
C
I
Y
B
E
E
I
G
N
H
T
T
E
L
N
S
E
A
T
D
A
R
T
D
T
H
C
D
E
L
M
W
E
Der Papyrusstreifen enthält folgende Geheimschrift:
DEEHIRAIIIIIRESUTRENMIMKETDSEECIYBEEIGNHTTELNSEATDARTDTHCDELMWE
Zum Entschlüsseln muss ein Zylinder mit entsprechendem Durchmesser (von n Zeichen) verwendet werden.
Für einen Angreifer bedeutet dies herauszufinden, welche Zahl n verwendet wurde. Dazu braucht er
maximal soviele Versuche, wie die Zeichenkette Zeichen enthält, und dies sind hier 9 · 7 = 63.
Beispiel 2.2. Überlegen Sie sich eine mathematische Beschreibung dieses Verschlüsselungssystems.
Tipp: setzen Sie M = C = K = ∠Z?26 , d.h. die Menge der Klar- und Geheimtexte sowie der Schlüsselraum sind endliche Ketten von Zahlen zwischen 0 und 25.
10
2 Geschichte
2.1.2 Cäsar Chiffren
Julius Cäsar (100-44 v. Chr.) verwendete eine einfache Ersetzung (Sustitution) um seine Nachrichten zu verschlüsseln.
Beim Cäsar-Cipher wird jedem Buchstaben im Alphabet durch denjenigen Buchstaben ersetzt,
der im Alphabet drei Stellen weiter hinten steht: Einem a wird also D, einem b wird E, usw.
zugeordnet. Damit den Buchstaben x, y und z ebenfalls Buchstaben zugeordnet werden können, denkt man sich das Alphabet auf einer (Endlos-) Schleife geschrieben, d.h. nach z kommt
wieder a, b, etc.
Es handelt sich hier um einen Verschiebechiffre (shift-cipher) und zwar um 3 Stellen. Statt 3
könnte man auch jede andere Zahl zwischen 1 und 25 nehmen.
Der Verschlüsselungs Algorithmus besteht also darin, die Buchstaben des Alphabets um eine
bestimmte Anzahl Stellen n, (0 ≤ n < 26) zu verschieben 1 .
Der Schlüssel ist in diesem Verfahren nichts anderes als die Anzahl Stellen n, um die verschoben
wird. Der Schlüsselraum, d.h. die Menge aller Schlüssel hat also die Mächtigkeit 26, da er
exakt 26 Schlüssel enthält (wenn man den schwachen Schlüssel mit n = 0 dazunimmt).
Mathematisch gesehen ist die Cäsar Chiffre ein Spezialfall eines Verschiebe-Chiffre (und zwar
um 3 Stellen), die wie folgt definiert ist: Sei M = C = K = ∠Z?26 .
Für k ∈ K definiert man die Verschlüsselung des Klartextes m ∈ M durch
Ek (m) = E(m, k) = (m + k) mod 26
und die Entschlüsslung eine Geheimtextes c ∈ C durch
Dk (c) = D(c, k) = (m − k) mod 26
Dabei haben wir angenommen, dass der Klartext m von der Form m = (m 1 , m2 , . . .) mit
mk ∈ ∠Z26 vorliegt und die obige Addition bzw. Subtraktion Zeichenweise, d.h. für jedes m k
bzw ck erfolgt.
Es ist klar, dass man diese Verschlüsselung durch brute force, d.h. mit roher Gewahlt (also ohne
Hirn) knacken kann: man muss schliesslich nur 26 (genauer sogar nur 25) mögliche Schlüssel
überprüfen. Eine systematische Schlüsselsuche (engl: exhaustive key search) führt also schnell
zum Ziel. Wir schliessen daraus, dass der Schlüsselraum genügend gross sein muss, um diese
Art von Angriff abzuwehren!
Beispiel 2.3. Aus dem Klartext
diesisteinegeheimenachricht
wird mit k = 3 sofort der Geheimtext
1
Der exakte Leser bemerkt sofort, dass ich hier auch die Zahl 0 zugelassen habe: es handelt sich hierbei um einen
schwachen Schlüssel welcher eine Gefahr für jedes Verschlüsselungsverfahrens darstellt.
11
2 Geschichte
Abbildung 2.2: Scheibe für Cäsar Chiffre.
GLHVLVWHLQHJHKHLPHQDFKULFKW
Faktisch verschiebt man also das Alphabet (zyklisch) um drei Stellen nach hinten.
Beispiel 2.4. Statt dass man eine Verschiebung um drei Stellen wählt, kann man auch jede andere Zahl
von 0 bis 25 nehmen. Wenn man um 13 Stellen verschiebt, wird die Verschlüsselung involutorisch, d.h.
zweimaliges Verschlüsseln liefert wieder den ursprünglichen Schlüssel. Diese Art der Verschlüsselung
wird oft in Foren und Newsgruppen verwendet, um beispielsweise obszöne Witze zu verschleiern. Das
folgende, simple Shellscript genügt dazu:
#!/bin/sh
#
# rot13:
#
# Einfachste ’Verschluesselung’! Dieses Programm ersetzt
# (zyklisch) jeden Buchstaben durch _den_ Buchstaben, der
# im Alphabet 13 Stellen weiter hinten vorkommt.
#
# Benutzung:
#
rot13 < EingabeFile > AusgabeFile
#
PATH=/usr/bin; export PATH
#
tr ’[a-m][A-M][n-z][N-Z]’ ’[n-z][N-Z][a-m][A-M]’
12
2 Geschichte
Eine Verbesserung stellt die affine Chiffre (oder Tauschchiffre) dar. Hier lautet die Verschlüsselungstransformation:
y = E(x) = (ax + b) mod 26
und die Entschlüsselungsfuntkion:
x = D(y) = a−1 (y − b) mod 26
Dabei ist der Schlüsselraum gegeben durch
K = {(a, b) ∈ ∠Z26 × ∠Z26 | ggT(a, 26) = 1 }
Hier steht ggT für grösster gemeinsamer Teiler (engl: greatest common divisor, gcd) und a −1
ist das Inverse von a modulo 26.
Beispiel 2.5. Überlegen Sie sich, was das modulare Inverse bedeutet! Tipp: verwenden Sie den erweiterten Euklidischen Algorithmus.
Beispiel 2.6. Zeigen Sie, dass bei der Affinen- (oder Tausch-) Chiffre die Zahl a nur die Werte 1, 3, 5,
7, 9, 11, 15, 17, 19, 21, 23, 25 annehmen kann! Warum ist das so? Wie gross ist der Schlüsselraum?
Die folgenden Überlegungen sollen zeigen, wann die Entschlüsselung möglich ist. Sie ist nämlich nur
dann eindeutig, wenn die Gleichung
ax + b ≡ y
(mod 26)
für jedes y ∈ ∠Z26 genau eine Lösung x ∈ ∠Z26 hat. Statt der obigen Gleichung kann man auch nacheinander schreiben:
ax ≡ y − b
≡ y
(mod 26)
(mod 26)
13
2 Geschichte
Letzteres gilt deshalb, weil wir jedes y ∈ ∠Z 26 betrachten. Also nimmt y − b (mod 26) genau so wie y
(mod 26) alle Werte aus ∠Z26 an. Die Gleichung
ax ≡ y
(mod 26)
hat aber nur dann eine eindeutige Lösung, wenn ggT(a, 26) = 1.
Der Schlüsselraum ist daher von der Mächtigkeit 12 · 26 = 312, wobei wir auch schwache Schlüssel
mitgezählt haben.
Beispiel 2.7. Bestimmen Sie die Verschlüsselungsfunktion für den Schlüssel k = (a, b) = (7, 3). Wie
lautet die Entschlüsselungsfunktion?
Lösung: Man hat
Ek (x) = 7x + 3
(mod 26)
Die Entschlüsselungsfunktion ist allgemein gegeben durch
Dk (y) = a−1 (y − b)
(mod 26)
Mit a−1 = 7−1 = 15 hat man nämlich
Dk (y) = 15(y − 3)
(mod 26)
= 15y − 19)
(mod 26)
Man stellt auch sehr schnell fest, dass nacheinander gilt
Dk (Ek (x)) = Dk (7x + 3)
= 15(7x + 3) − 19
= 105x + 45 − 19
= x + 26
= x
wobei wir immer modulo 26 gerechnet haben.
Die zwei oben genannten (Cäsar- und Affine-) Chiffren sind Beispiele von monoalphabetischen
Chiffren. Dabei wird ein bestimmtes Klartext Zeichen immer auf das selbe Geheimtext Zeichen
abgebildet. Sind Klar- und Geheimtext Alphabet gleich, so entspricht die monoalphabetische
Verschlüsselung einer Permutation der Zeichen des Alphabets. Der Schlüssel ist dann die jeweilige Permutation. Es gibt also 26! Schlüssel.
Beispiel 2.8. Betrachte folgende, monoalphabetische Verschlüsselung (genannt Schlüsselwort-Chiffre):
Wähle ein Schlüsselwort und einen Schlüsselbuchstaben. Man streiche im Schlüsselwort jeden Buchstaben, der bereits vorher irgendwo im Schlüsselwort auftrat. Dann schreibe man das Schlüsselwort unter
die Buchstaben des Alphabets wobei man unter dem Schlüsselbuchstaben beginnt. Schliesslich fülle man
die restlichen Stellen der Reihe nach mit den noch verbleibenden Buchstaben des Alphabets auf. Dadurch
erhält man eine Vorschrift, die jedem Klartextzeichen genau ein Geheimtextzeichen zuordnet.
Verwendet man das Schlüsselwort SCHLUESSELWORT, und den Schlüsselbuchstaben g, so hat erhält
man folgende Tabelle:
14
2 Geschichte
a b c d e f g h i j k l m n o p q r s t u v w x y z
P Q V X Y Z S C H L U E W O R T A B D F G I J K M N
Nach Streichen der bereits verwendeten Buchstaben verbleibt SCHLUEWORT welches, beginnend unter dem Schlüsselbuchstaben g, geschrieben wird.
Mit dieser Tabelle lässt sich ein beliebiger Text kodieren!
Die Cäser-, Affine- und Schlüsselwort-Chiffre sind Beispiele von Substitutions-Chiffren: sie
ersetzen ein bestimmtes Zeichen im Klartext durch ein bestimmtes (meist anderes) Zeichen.
Dadurch werden statistische Eigenschaften des Klartext auf den Geheimtext übertragen. Damit
dies nicht der Fall ist, verwendet man die homophone Substitution, bei welcher die Zeichen
des Klartext auf eines von mehreren Geheimtext Zeichen abgebildet werden können. Dabei
beachtet man die Häufigkeiten mit der die einzelnen Buchstaben im Klartext vorkommen: für
Buchstaben, die häufiger vorkommen werden mehr Geheimtextzeichen bereit gestellt!
Im Gegensatz zu Substitutions-Chiffren gibt es nämlich auch Transpositions-Chiffren: bei
diesen wird ein bestimmtes Klartext Zeichen einfach an eine andere Stelle des Geheimtextes
gesetzt (wie z.B. bei der Skytala).
2.1.3 Steganographie
Die Stegonographie beschäftigt sich mit dem Verstecken von Informationen in einem unverdächtigen Träger (Bild, Movie, oder Movie-Stream). Diese Methode wurde erstmals im Altertum verwendet, als einem Sklaven ein Stadtplan auf die Kopfhaut des kahl rasierten Kopfes
tätowiert wurde. Nachdem das Kopfhaar nachgewachsen war, wurde dieser Sklave durch die
feindlichen Linien zum Adressaten geschickt. Dieser rasierte die Kopfhaare und konnte den
Stadtplan für seinen Angriff verwenden.
Wie man sieht, wurde in diesem Fall die Existenz der Information verheimlicht. Dies im Gegensatz zu einer Verschlüsselten Nachricht: deren Existenz ist bekannt, nicht aber deren Inhalt.
Nun kommen natürlich findige Köpfe darauf, dass man die eintätowierte Nachricht auch noch
verschlüsseln könnte. Natürlich wird das auch gemacht: nur für den Fall, dass irgend etwas
schief geht! Ganz nach dem Prinzip:
In einem Kryptosystem sollten immmer mehrere Verteidigungslinien (engl: multiple lines of
defence) verwendet werden!
2.2 Mittelalter
Im Mittelalter beschäftigte sich vor allem der Klerus mit der Kryptologie. Sie wurde aber auch
weiterhin im Militär und vermehrt auch in der Diplomatie eingesetzt.
Die folgenden Chiffren sollen näher betrachtet werden:
Vigenère Chiffre (ca. 16. Jh.)
15
2 Geschichte
Vernam Chiffre (ca. 16. Jh.)
Der Playfair Chiffre (ca. 19. Jh.)
2.2.1 Vigenère Chiffre
Ist eine polyalphabetische Verschlüsselung, welches von Blaise de Vigenère (1523-1596) abgeleitet wurde aus einem Verfahren von Johannes Trithemius (1462-1516). Die Chiffre galt
während der folgenden rund 350 Jahren als sicher.
Zuerst schreibt man den Klartext auf eine Zeile (oder mehrere, wobei man dann immer zwei
Zeilen frei lässt). Danach wählt man ein (möglichst langes und nicht leicht zu erratendes)
Schlüsselwort und schreibt dieses unter den Text, wobei man es bei einem langen Text mehrere Male hintereinander schreiben muss: Klartext und der Text aus dem Aneinanderreihen des
Schlüsselwort müssen gleich lang sein.
Danach werden Klartext- und Schlüsselwortzeichen addiert: dabei bedeutet Addition das selbe
wie bei der Cäsar-Chiffre! Es wird also zuerst in Zahlen zwischen 0 und 25 umgewandelt und
danach modulo 26 addiert. Anschliessend wird wieder in Buchstaben umgewandelt.
Beispiel 2.9. Verschlüsseln Sie Vom Eise befreit sein mit dem Schlüsselwort Caesar. Zur Vereinfachung
lassen wir alle Satz- und Leerzeichen weg und wandeln alles in Grossbuchstaben um (etwas, was früher
auch gemacht wurde).
Mathematisch lässt sich dieses Verfahren wie folgt beschreiben: Sei m ∈ IN eine postive
ganze Zahl gleich der Länge des Schlüssels k = (k1 , k2 , . . . , km ) und seien M = C =
K = ∠Z?26 : dann wird der Klartext in Blöcke der Länge m unterteilt, wobei allenfalls der
letzte Block mit zufälligen Zeichen aufgefüllt werden muss. Ein solcher Block hat die Form
m = (m1 , m2 , . . . , mm ) und wird nun gemäss folgender Vorschrift verschlüsselt:
c = Ek (m) = (m + k) mod 26
16
2 Geschichte
wobei hier wieder zeichenweise modulo 26 addiert wird. Die Entschlüsselung ist dann gegeben
durch:
m = Dk (c) = (c − k) mod 26
wobei auch hier (c − k) gliedweise gebildet werden, d.h. man hat:
(p + k) mod 26 = ((p1 + k1 ) mod 26, (p2 + k2 ) mod 26, . . . , (pm + km ) mod 26)
Beispiel 2.10. Führen sie das obige Beispiel 2.9 mit Hilfe von Zahlen durch!
Beispiel 2.11. Die Vigenère-Chiffre wird mit leichten Modifikationen in WINCRYPT mit einem 512-Bit
Schlüssel verwendet.
2.2.2 Vernam Chiffre
Dabei handelt sich um die bitweise Vigenère-Chiffre. Der Schlüssel ist also eine endliche Bitfolge. Die Chiffrierung besteht darin, dass man diese, unter Umständen, wiederholte Bitfolge
mit dem Klartext XOR-verknüpft: dies ist ja faktische einfach eine Addition modulo 2!
Die Dechiffrierung funktioniert genau gleich: die unter Umständen wiederholte Bitfolge wird
mit dem Geheimtext XOR-verknüpft.
Dass dies wieder zum Klartext führt, zeigt die Identität:
(p ⊕ k) ⊕ k = p
Beispiel 2.12. Schreiben Sie ein Programm, welches die Vernam-Chiffre implementiert. Dabei soll beliebige Daten verschlüsselt werden können. Das Schlüsselwort (in ASCII) soll in einen Bit-String umgewandelt werden.
17
2 Geschichte
2.2.3 Playfair Chiffre
Obwohl die Chiffre den Namen von Baron Playfair hat, wurde diese eigentlich von seinem
Freund Charles Wheatstone (Wheatstone-Bridge!) erfunden (1854): ersterer hat aber im Parlament dermassen für diese Chiffre lobbyiert, dass die Chiffre seinen Namen bekam.
Interessanterweise wird dieser Chiffre nachgesagt, dass sie auch von John F. Kennedy (JFK)
während des 2. Weltkrieges im Gebiet der Midway-Inseln im Kampf gegen die Japaner eingesetzt wurde. JFK war damals Marineleutnant und befehligte ein kleines Patroullienboot, mit
dem die Besatzung eine Fahrrinne beobachtete, die häufig von Japanern benutzt wurde. In einer
sehr dunklen Nacht wurde das Patroullienboot von einem japanischen Kreuzer gerammt und
ging unter. JFK rettete dabei den einzigen schwer verletzten Matrosen, indem er ihn ans mehrere Meilen entfernte Ufer einer unbewohnten Insel zog. In der nächsten Nacht soll er zu einer von
Eingeborenen bewohnten Insel geschwommen sein. Dort habe er einem der Eingeborenen eine
mittels Playfair verschlüsselte Meldung an die Amerikaner übergeben, welche dieser am nächsten Tag den auf der Hauptinsel stationierten Amerikanern übergab. Von diesem heldenhaften
Verhalten konnte JFK als Kandidat für die Präsidentschaft der USA erheblich profitieren.
Die Playfair Ciffre ist eine der ersten Block-Chiffren. Es verschlüsselt nicht einzelne Buchstaben, sondern Paare von Buchstaben. Dazu muss die Meldung zuerst in Paare von Buchstaben unterteilt werden. Doppelbuchstaben werden dabei durch ein X oder ein Z getrennt (statt
freedom verschlüsselt man frexedom. Entsprechend geht man vor, wenn sich drei gleiche
Buchstaben folgen: so wird nicht congress shall sondern congresxsz shall verschlüsselt. Schliesslich füllt man am Schluss mit irgend einem Buchstab auf, so dass man auch
Paare bilden kann.
Der Schlüssel ist ein Wort, welches fortlaufend (oben links beginnend) so in ein Rechteck von
5 × 5 Feldern eingetragen wird, dass kein Buchstabe zweimal vorkommt: sobald ein Buchstabe
das zweite (oder dritte) Mal vorkommt, wird er weggelassen. Da nur 25 Felder zur Verfügung
stehen, setzt man i = j. Sind gewisse Felder noch nicht besetzt, so werden sie wieder der Reihe
nach mit den noch fehlenden Buchstaben des Alphabets aufgefüllt (wobei i = j berücksichtigt
wird).
Verschlüsselt werden nun Paare von Buchstaben. Man sucht diese beiden Buchstaben im oben
beschriebenen Quadrat. Dabei gibt es drei Fälle:
gleiche Zeile: Man ersetzt die beiden Buchstaben durch die jeweils eine Stelle weiter hinten
vorkommenden Buchstaben, wobei dies zyklische gemacht wird.
gleiche Spalte: geht analog
sonst: Die beiden Buchstaben bilden zwei Ecken eines Quadrates. Sie werden ersetzt durch
die auf den anderen zwei Ecken vorkommenden Buchstaben, wobei die Ersetzung durch
den Buchstaben auf der gleichen Zeile erfolgt.
Die Entschlüsselung erfolgt umgekehrt: man hat einfach das Passwort und erstellt daraus das
5 × 5-Quadrat.
18
2 Geschichte
Beispiel 2.13. Verschlüsseln und Entschlüsseln Sie folgenden Text mit Hilfe der Playfair-Chiffre:
Wir sind unter Nordwand beim Winkelhorn untergetaucht!
Als Schlüssel soll very secret phrase verwendet werden.
Lösung: Man hat sofort folgende Tabelle:
v
c
b
k
q
e
t
d
l
u
r
p
f
m
w
y
h
g
n
x
s
a
i
o
z
Der Klartext wird wie folgt vorbehandelt:
wi rs in du nt er no rd wa nd be im wi nk el ho rn un te rg et au ch tx
Wir erhalten unter Anwendung der obigen Regeln den folgenden Geheimtext:
ZF YV GO LE LH RY OK EF ZP LG DV FO ZF OL TU AN YM XL DT YF TD TZ TA HU
Beispiel 2.14. Erstellen Sie ein Programm, welches vom Standard Input liest und auf dem Standard
Output schreibt und dabei ein Passwort übernimmt. Verschlüsselt soll nach der Playfair-Chiffre.
Genüber der monoalphabetischen Chiffrierung hat man hier eine bessere Sicherheit. Man betrachtet 26 × 26 = 676 Digramme und würde daher eine gleich grosse Tabelle brauchen um
die Häufigkeiten festzuhalten. Da immer noch sehr viel Informationen (Digramme) vom Klartext im Geheimtext auftreten, Kann die Playfair-Chiffre mit einigen hundert Geheimtextzeichen
gebrochen werden. Wesentlich beschleunigen kann man ein Angriff, wenn man beachtet, dass
• Permutationen der Zeilen oder Spalten der Matrix den Schlüssel nicht ändern, sowie
• Geheimtextzeichen nur in der selben Zeile wie oder direkt unter dem Klartextzeichen
stehen können.
19
2 Geschichte
2.3 Neuzeit
In der Neuzeit, also ab etwa dem 19. Jahrhundert traten vor allem Rotormaschinen in den Vordergrund. Der Höhepunkt dieser Ära bildete sicher die Enigma, die von den Deutschen während
dem 2. Weltkrieg verwendet wurde.
Die ersten zwei Themen der folgenden Aufzählung sollen in diesem Kapitel vertieft betrachtet
werden: die nachfolgenden Themen werden dann in den späteren Kapiteln behandelt.
Chiffrierzylinder ...
Rotormaschinen - die Enigma ...
DES in den 70er Jahren.
Public-Key Kryptographie ebenfalls in den 70er Jahren.
Zero-Knowledge Protokolle in den 80er Jahren.
Massenhafte Verbreitung der Kryptographie (Internet, Mobilfunk, Pay-TV, digitale Signature, E-stuff).
2.3.1 Chiffrierzylinder
Anfangs des letzten Jahrhunderts spielten Chiffrierzylinder eine grosse Rolle: Dies sind Scheiben, auf deren Rändern permutierte Alphabete eingraviert sind.
Abbildung 2.3: Handhabung des Chiffrierzylinders.
Die Anordnung der Scheiben entspricht dem Schlüssel: bei 30 Scheiben hat man 30! ≈ 2.6 10 32
Möglichkeiten der Anordnung. Man muss davon ausgehen, dass der Gegner in den Besitz der
Scheiben kommt! Die Chiffriermaschine M-94 der US-Army, die von 1922 bis 1943 im Einsatz
war, bestand aus 25 Metallzylindern.
20
2 Geschichte
Abbildung 2.4: Ursprüngliches Design der Enigma.
2.3.2 Die Enigma - eine Rotormaschine
Die Enigma wurde von Arthur Scherbius (1918) erfunden war eine elektromechanische Maschine bestehend aus Rotoren (Walzen), die auf beiden Seiten 26 elektrische Kontakte hatten. Die
26 Kontakten wurden innerhalb der Walze auf verschiedenste Arten verbunden was einer Permutation entsprach. Damit hätte man nicht allzu viel gewonnen. Deshalb kam dazu, dass sich
beim Verschlüsseln eines Zeichens der linke Rotor um eine Stelle (von insgesamt 26) drehte.
Nach 26 Zeichen drehte sich auch der Rotor rechts davon um eine Stelle (ähnlich einem mechanischen Kilometerzähler). Den Stromfluss sieht man in der Abbildung 2.4: Beim Drücken der
Taste Q wandert das Signal durch die drei Rotoren und wird dadurch permutiert. Schlïesslich
zeigt es an der Lampenbrett den verschlüsselten Buchstaben N an.
1926 verschlimmbesserte Willi Korn den ersten Entwurf der Enigma. Er dacht sich, dass durch
einen Reflektor nach den Rotoren das Signal wieder zurück durch die drei Rotoren geleitet
werden kann: damit wird, so dachte er, die Anzahl Rotoren faktisch grösser, und damit das Verfahren insgesamt sicherer! Leider war dies ein Trugschlüss, den die Kryptoanalysten schamlos
ausnutzten: Da das Signal am Reflektor umgelenkt wurde, konnte die Enigma nie ein Zeichen
auf sich abbilden. Das modifizierte Design zeigt die Abbildung 2.5. Man sieht dort auch ein
zusätzliches Element, das Steckbrett (engl: plug board, welches man von Hand stecken konnte! Weiter sieht man auch die die Noppen (notches, die dafür sorgten, dass die Rotoren beim
Verschlüsseln wie bei ein Zählwerk nach dem Verschlüsseln eines Zeichens gedreht werden.
Auf der Abbildung 2.6 erkennt man vorne das Steckbrett, oben vorne die Tastatur, dahinter das
Lampenbrett. Hinten sieht man die drei Rotoren (von rechts nach links) sowie den Reflektor
21
2 Geschichte
Abbildung 2.5: Verschlimmbessertes Design der Enigma.
(ganz links). An den Rotoren wurde die Grundstellung eingestellt (sichtbar in der Mitte unter
dem Schutzblech, welches beim Betrieb zum Schutz der Rotoren herunter geklappt wurde).
Hinten rechts befindet sich die Batterie.
Dadurch dass sich die Rotoren wie ein Zählwerk nach dem Verschlüsseln eines Buchstabens
drehten, handelte es sich nicht mehr um eine monoalphabetischen Chiffre sondern um eine polyalphabetische. Die Deutschen glaubten, dass das Design der Maschine, insbesondere was die
verschiedenen Rotoren, sowie die Wahl von 3 aus 5 möglichen Rotoren und deren gegenseitige
Lage zu einem ungeheuren Schlüsselraum führten und waren fest davon überzeugt, dass die
22
2 Geschichte
Abbildung 2.6: Die Enigma.
Maschine unknackbar ist. Die Anzahl Schlüssel ergab war damit
5
26!
≈ 8 1018
26
3!
13!213
3
3
und damit unvorstellbar gross (für die damalige Zeit).
2.4 Kryptanalyse
All die oben genannten Verfahren sind nicht sicher. Dies zeigt eine Analyse der verwendeten
kryptographischen Verfahren. Versucht man kryptologische Algorithmen oder Protokolle zu
23
2 Geschichte
brechen, spricht man von Kryptanalyse. Schon von alters her war dieses Teilgebiet der Kryptologie enorm wichtig und interessant: es bestand schliesslich immer ein enormes Interesse,
verschlüsselte Daten zu entschlüsseln, auch wenn man nicht im Besitz der entsprechenden Informationen war. Die Geschichte zeigt, dass sich niemand auf die Geheimhaltung eines Algorithmus verlassen kann. Man darf also nicht darauf vertrauen, dass der Gegner nicht weiss, wie
der Algorithmus für die Verschlüsselung funktioniert: früher oder später wird er es erfahren!
Aus diesem Grunde verwendet man den
Satz 2.1 (Kerkhoffs). Der Angreifer kennt den Algorithmus zum Ver- bzw. Entschlüsseln der
Daten immer: es darf lediglich angenommen werden, dass der von den Teilnehmern verwendete
Schlüssel geheim ist.
Beispiel 2.15. Überlegen sie sich die Auswirkungen einer Kompromitierung falls
• der Algorithmus geheim, der Schlüssel aber allen bekannt ist.
• der Algorithmus öffentlich, d.h allen bekannt, der Schlüssel aber geheim ist.
Lösung: Falls der Algorithmus geheim ist, muss auch die innere Struktur einer Maschine (z.B. ein Microchip), welche diesen Algorithmus implementiert, geheim bleiben. Falls ein Angreifer in den Besitz
eines Geräte kommt, kann er auch den Algorithmus analysieren und ihn rekonstruieren. Damit ist das
System nicht mehr sicher und muss durch ein neues ersetzt werden! Die Kosten die dadurch entstehen
sind enorm!
Wenn dagegen der Algorithmus öffentlich ist, und die Sicherheit einzig auf dem Schlüssel beruht, kann lediglich dieser Schlüssel kompromittiert werden! In diesem Fall wählt man einfach einen anderen Schlüssel, was ohne grosse Kosten möglich ist!
Im Zusammenhang mit Kryptosystemen muss man also von folgenden Angriffsmöglichkeiten
ausgehen:
Angriff mit bekanntem Geheimtext oder ciphertext-only attack: hier kennt der Angreifer
nur (einen oder mehrere) Geheimtexte und versucht daraus die zugehörigen Klartexte
oder Schlüssel zu bestimmen. Dieser Angriff ist der schwächste, aber auch der häufigste
in Praxis.
Angriff mit bekanntem Klartext oder known-plaintext attack: hier hat der Angreifer (ein
oder mehrere) passende Paare von Klar- und Geheimtext und versucht, den verwendeten Schlüssel zu bestimmen. Dieser Angriff ist vor allem in vernetzten Systemen Erfolg
versprechend, da hier sehr oft (fast) dieselben Daten verschlüsselt werden: wie z.B. Datenbankabfragen, Protokollheader, Kodierungen, etc.
Angriff mit gewähltem Klartext oder chosen-plaintext attack: hier kann der Angreifer beliebigen Klartext verschlüsseln (er ist im Besitz einer Kopie der Verschlüsselungsmachine). Er versucht den Schlüssel zu bestimmen oder die Klartexte zu bekannten Geheimtexten. Sie sind beispielsweise dann durchführbar, wenn ein Protokoll die zuvor gestellten,
nicht verschlüsselten Fragen zusammen mit den Antworten verschlüsselt an den Fragesteller zurück schickt.
24
2 Geschichte
Angriff mit gewähltem Geheimtext oder chosen-ciphertext attack: hier kann der Angreifer beliebigen Geheimtext entschlüsseln lassen. Er ist Besitz einer Kopie der Entschlüsselungsmachine, möchte aber den Schlüssel herausfinden. Diese Angriffe spielen vor allem
in der asymmetrischen Kryptographie eine wichtige Rolle.
Wählt der Angreifer alle Texte vorher, spricht man von einem direkten Angriff, wählt der Angreifer aber die Texte abhängig vom erhaltenen Geheimtext, spricht man von einem adaptiven
Angriff.
Keinen Erfolg hatte der Angreifer, wenn er nach dem Angriff keinerlei Informationen weder
über den Klartext, noch über den verwendeten Schlüssel gewonnen hat. Von einer teilweisen
Entschlüsselung spricht man dann, wenn der Angreifer einen Teil (oder alles) des Geheimtextes entschlüsseln konnte. Von einer vollständigen Entschlüsselung spricht man dann, wenn der
Angreifer den Schlüssel bestimmen konnte und damit in der Lage ist, jede mit diesem Schlüssel
verschlüsselte Nachricht zu entschlüsseln.
Das beste Kryptosystem ist also eines, welches dem stärksten Angriff (d.h. mit gewähltem
Geheimtext) standhält.
In den folgenden Abschnitten wollen wir zeigen, wie man einige der bis jetzt behandelten Chiffren erfolgreich angreifen kann.
2.4.1 Monoalphabetische Chiffren
Bei monoalphabetischen Chiffren wie dem Cäsar-, der Affinen- und dem Schlüsselwort-Chiffre,
führen statistische Tests zum Ziel. Man weiss, dass in einem typischen Text in deutscher Sprache die folgende Häufigkeitsverteilung für die einzelnen Buchstaben vorliegt 2 :
Man betrachtet aber nicht nur die Häufigkeit einzelner Buchstaben, sondern auch von Gruppen
von Buchstaben. Die folgende Tabelle zeigt was gemeint ist:
Schliesslich betrachtet man auch Bigramme, d.h. Paare von Buchstaben: auch diese gehorchen
in einer typischen Sprache gewissen Gesetzmässigkeiten:
Mit dieser Kenntnis und ein wenig Hirnakrobatik lässt sich dann ein mit einer beliebigen Permutation verschlüsster deutscher (oder auch anderssprachiger) Text entschlüsseln.
2.4.2 Vigenère-Chiffre
Dieses Verfahren kann geknackt werden indem man zuerst mit dem Kasiski- und dem Friedmanntest die Länge m des Schlüsselwortes bestimmt und danach durch eine bereits oben angedeutete statistische Analyse das Schlüsselwort selber!
Grundlage des nach Friedrich W. Kasiski (1805-1881 - Offizier eines preussischen Infanterieregiments) benannten Tests ist die Beobachtung, dass gleiche Klartext Buchstaben im Abstand m
2
Der Programmierfreund kann sicher in kürzester Zeit ein entsprechendes Programm aus dem Ärmel schütteln,
welches er dann auf irgend welche Texte, z.B. aus dem Internet loslässt
25
2 Geschichte
Buchstabe
a
b
c
d
e
f
g
h
i
j
k
l
m
Häufigkeit [%] Buchstabe
6.51
n
1.89
o
3.06
p
5.08
q
17.40
r
1.66
s
3.01
t
4.76
u
7.55
v
0.27
w
1.21
x
3.44
y
2.53
z
Häufigkeit [%]
9.78
2.51
0.79
0.02
7.00
7.27
6.15
4.35
0.67
1.89
0.03
0.04
1.13
Tabelle 2.1: Häufigkeitsverteilung der Buchstaben in der dt. Sprache. (Quelle: A. Beutelspacher: Kryptologie)
Buchstabengruppe
gemeinsame Häufigkeit [%]
e,n
27.18
i,s,r,a,t
34.48
d,h,u,l,c,g,m,o,b,w,f,k,z
36.52
p,v,j,y,x,q
1.82
Tabelle 2.2: Häufigkeitsverteilung von Buchstabengruppen in der dt. Sprache.
Bigramm Häufigkeit [%] Bigramm
en
3.88
nd
er
3.5,75
ei
ch
2.75
ie
te
2.26
in
de
2.00
es
Häufigkeit [%]
1.99
1.88
1.79
1.67
1.52
Tabelle 2.3: Häufigkeitsverteilung der Bigramme in der dt. Sprache.
(was der Länge des Schlüsselwortes entspricht) auf die selben Geheimtext Zeichen abgebildet
werden. Also sucht man nach (möglichst langen) Wiederholungen von ähnliche Zeichenfolgen
im Geheimtext. Deren Abstände müssen Vielfache des Schlüsselwortes sein.
Eigentlich war der Test bereits 9 Jahre früher von Charles Babbage entdeckt: dieser durfte
aber die Resultate nicht veröffentlichen, da ansonsten die Vormachtstellung der Engländer im
Knacken des Vigenère-Chiffre gebrochen worden wäre!
Beispiel 2.16. Die Verschlüsselung des Textes
26
2 Geschichte
diesh
gswei
selte
uchst
extbu
tnuna
ssnie
atger
sevie
ntext
abenk
chsta
uchzu
malse
adebe
lenku
enden
ombin
benko
taged
insch
ikurz
rzenm
negat
ation
mbina
assla
luess
ensch
itgle
ivene
enmit
tione
ngesc
elmeh
luess
ichem
ffekt
jewei
nauft
hlues
rfach
elnun
schlu
dassg
lsder
reten
selsi
verwe
dlang
essel
leich
gleic
koenn
chere
ndetw
enbez
versc
eklar
henge
enhie
rsind
erden
iehun
hlues
textb
heimt
rtrit
undda
soll
mit dem Schlüssel
fesoi
führt auf das Chiffrat
IMWGP FXYSZ FHWPM NOMFH JRKQP QYWGA JPFIV IPSBO JRTSH NIZIV
LWOSQ XINWM QIFYC WDWBU NXYZM NGZSU XGZZC JWKST AIJGK MPMSA
XIDHM SXWLB JRVSV SIYOB NZWBM KJWYB IEKGO QIAQP JODOZ YIPHJ
ZGZGB FFWBS TQTWV FXACV JREWB OIOSQ QWVSZ LPWWK MIFUM MIAAB
JBLPC HLKHI GIFYW RFABI YMGBM SEMTB WILSV PSWBV JRZWM WXJWB
YRMBI ZGZNC YEYSL FWKZI SKWGK MPMSA XIDGQ HLWFM WWABL ZRVRI
XWFWM REDGM NRKQP QYWGA JPESP WJSQP AIJKM SHWHE JVVSV XSDZ
Mit Hilfe des Kasiskitests soll die Periode bestimmt werden. Verwenden Sie ebenfalls den Friedmanntest
um die effektive Periode zu ermitteln. Dann bestimmen Sie mit Hilfe statistischer Methoden das Schlüsselwort.
Das Applet unter http://www.bibmath.net/crypto/poly/viganalyse.php3 entschlüsselt das obige Kryptogramm innert kürzester Zeit!
27
2 Geschichte
Der Friedmann-Test (1925) betrachtet die Wahrscheinlichkeit, dass zwei willkürlich aus dem
Klartext herausgegriffene Buchstabenpaare aus den selben Buchstaben bestehen. Wir betrachten
eine Buchstabenfolge der Länge n. Wir definieren
nk : Anzahl des Buchstaben k (0 ≤ k < 26)
wobei wir anstelle von Buchstaben a bis z die Zahlen 0 bis 25 verwendet. Die Anzahl Paare mit
Buchstaben k ist gegeben durch
nk (nk − 1)
2
Begründung: der erste Buchstabe kann aus nk ausgewählt werden, der zweite aus nk − 1; da
es auf die Reihenfolge der Buchstaben nicht ankommt, muss noch durch 2 dividiert werden.
Insgesamt ist also die Anzahl Paare, bei dem beide Buchstaben gleich sind (d.h. Beide gleich a,
oder beide gleich b, etc.) gegeben durch
25
X
nk (nk − 1)
n0 (n0 − 1) n1 (n1 − 1)
n25 (n25 − 1)
+
+...+
=
2
2
2
2
k=0
Die Wahrscheinlichkeit, ein Paar aus gleichen Buchstaben zu treffen (Anzahl günstige Fälle,
dividiert durch Anzahl mögliche Fälle) wird der (Friedmannsche) Koinzidenzindex genannt:
I =
P25
nk (nk − 1)
n(n − 1)
k=0
Nun weiss man aus der statistischen Analyse, dass der Buchstabe k mit der Wahrscheinlichkeit pk auftritt. Aus diesem Grunde ergibt sich die Wahrscheinlichkeit, dass an zwei beliebig
gewählten Stellen der selbe Buchstabe steht, gegeben durch
25
X
p2k = 0.0762
k=0
Dabei wurden die Werte für die deutsche Sprache verwendet. Bei einem völlig zufälligen Text
ist aber pk = 1/26, ∀k und somit
25
X
p2k = 0.0385
k=0
P
2
Wir schliessen daraus, dass 25
k=0 pk zwischen 0.0385 und 0.0762 liegt und umso kleiner wird,
je gleichmässiger der Text wird. Da bei einer monoalphabetischen Chiffrierung die Statistik
nicht ändert, gilt: Ist der Koinzidenzindex ungefähr 0.0762, dann ist die Verschlüsselung monoalphabetisch. Ist der Wert aber wesentlich kleiner, dann ist der Text nicht monoalphabetisch
chiffriert.
28
2 Geschichte
Friedmann zeigt, wie man mit Hilfe des Koinzidenzindexes I die Schlüsselwortlänge h berechnen kann:
h =
0.0377n
I(n − 1) − 0.0385n + 0.0762
Beispiel 2.17. Suchen Sie im Internet ein entsprechendes Knackprogramm!
2.4.3 Enigma
Bereits 1927 fingen die Polen eine zivile Version der Enigma ab, die fälschlicher Weise an eine
deutsche Firma in Polen gesandt wurde. Die Polen konnten dadurch die Funktionsweise bereits
sehr früh studieren und bemerkten den Fehler mit dem Reflektor sehr schnell. Bereits vor dem
2. Weltkrieg betrieben die Polen (allen voran Marian Rejewski) ein ausführliches Studium der
Enigma. Vor dem Einmarsch der Deutschen in Polen (1939) setzten sich die führenden Leute
samt dem bisher gesammelten Material nach England ab und wurden dort sofort in die englische
Mannschaft von Bletchley Park im Zentrum für Kryptographie aufgenommen.
Verschiedene menschliche Fehler der Deutschen führten dazu, dass die Allierten in den Besitz
von kompletten Maschinen (bereits 1927 fingen die Polen eine am polnischen Zoll ab), von
Rotoren und anderen Bauteilen der Enigma aber auch Code-Bücher kamen: all dieses Material
half den Code der Enigma zu brechen. Hier ein Auswahl von solchen Fehlern:
• Teilweise legal kamen die Allierten in den Besitz von Teilen oder jedenfalls zivilen Versionen der Enigma. Dadurch wussten sie sehr schnell, dass die Enigma nie einen Buchstaben auf sich abbilden konnte (aus rein konstruktiven Gründen).
• Übermittlung von trivialen Meldungen mittels verschiedener Kanäle (unverschlüsselt und
verschlüsselt: known plain text attack).
• Schlüssel war zweiteilig: Grundschlüssel, der täglich gewechselt wurde und im Codebuch
monateweise herausgegeben wurde. Er bestimmte die Anordnung der Rotoren und Lage
der Ringe (die aussen an den Rotoren angebracht waren)
• Codebücher auf Wetterschiffen waren weit weniger gut geschützt also z.B. auf einem
U-Boot.
• Funker wählte oft stupide Spruchschlüssel (AAA, ABC, etc.)
• Die Aufforderung Bitte wiederholen wurde ebenfalls verschlüsselt (known plain
text attacke).
• Um Übertragungsstörungen zu berücksichtigen wurde der Spruchschlüssel zweimal hintereinander an den Anfang gesetzt.
29
2 Geschichte
• Viele Nachrichten hatten stupiden Inhalt, wie Im Osten nichts neues oder Heil
Hitler, oder ANXDIEX....
Obwohl die Deutschen die Enigma laufend verbesserten, z.B. indem sie vier statt drei Rotoren
einsetzten, konnten die Leute von Bletchley Park im Projekt Ultra den Code meist innert nützlicher Frist knacken. Die Deutschen hatten während dem gesamten Krieg keinen Grund an der
Sicherheit der Enigma zu zweifeln. Dabei mussten die Engländer peinlich darauf achten, dass
sie sich nicht selber durch Aktionen verraten!
Im Rahmen des Ultra-Projektes entwickelte Alan Turing eine elektromechanische Maschine,
genannt die Bombe um die die Schlüssel der Enigma zu berechnen. Sie wurde gegen Ende des
2. Weltkrieges von den Engländern in Bletchley Park eingesetzt und trug wesentlich zum Erfolg
des Projektes bei.
Abbildung 2.7: Bedienung der Bombe.
Auch nach dem Krieg wussten die Deutschen bis in die 70-er Jahre nicht, dass die Enigma
geknackt wurde: Die Amerikaner machten Sie erst in den 70-er Jahren darauf aufmerksam,
als die Deutschen für die NATO eine Kryptomaschine vorschlugen, die auf den Prinzipien der
Enigma beruhte.
30
2 Geschichte
Auch die Schweizer lieferten (wie auch die Amerikaner) noch lange Zeit Enigmas in die dritte
Welt, wo man offensichtlich auch noch nicht mitbekommen hatte, dass die Enigma nicht mehr
sicher war. Hintergedanke war offensichtlich, dass man damit die Kontrolle über von DrittweltLändern verschlüsselte Daten hatte!
In der Kryptoanalyse werden die verschiedenste Techniken angewendet. Einige haben wir bereits erwähnt, andere führen wir hier auf. Die Liste soll nur andeuten, welche Methoden verwendet werden:
Negative Mustersuche: Hier nutzt man die Feststellung aus, dass beim Cäsar-Chiffre (und
wie wir später sehen werden auch bei der Enigma) nie ein Zeichen auf sich selber überführt wird. Kennt man beispielsweise beim Cäsar-Chiffre ein Wort des Klartextes, so
kann man mögliche Positionen im Geheimtext ermitteln, indem man das Wort so lange
verschiebt, bis keine Koinzidenz (Übereinstimmung von Buchstaben) besteht. Siehe auch
Verfahren von Viaris.
WordPerfect-Verschlüsselung: Der Algorithmus wurde nie veröffentlicht: und trotzdem
tauchte er irgend wann mal im Internet auf: Kerkhoff lässt grüssen!
Komprimieren vor dem Verschlüsseln hilft höchstens dem Kryptoanalysten: da bei einer
komprimierten Datei am Anfang Tabellen stehen, deren Aussehen bekannt ist, kann eine
known plain-text Attacke probiert werden.
Doppelte Verschlüsselung ist nicht unbedingt doppelte Stärke: zweimal rot13 ist wieder
die Identität!
Snake-Oil Cryptography bezeichnet man Kryptographie-Software, welche von den Herstellern als unknackbar bezeichnet wird. Sie wird von diesen nicht offen gelegt, weil sich
dahinter in fast allen Fällen schwache Algorithmen befinden.
31
2 Geschichte
[1]
32
Literaturverzeichnis
[1] J. F. Bürgler, R. E. Bank, W. Fichtner, and R. K. Smith. A New Discretization Scheme for
the Semiconductor Current Continuity Equations. IEEE Trans. CAD, 8(5):479–89, 1989.
33
Kryptologie (Version 20041015)
Josef F. Bürgler
19. November 2004
Inhaltsverzeichnis
3 Ein wenig Zahlentheorie
3.1 Modulares Rechnen . . . . . . . .
3.1.1 Die Euler Phi-Funktion . .
3.1.2 Der Satz von Euler-Fermat
3.1.3 Chinesischer Restsatz . . .
3.1.4 RSA-Codes . . . . . . . .
3.2 Perfekte Sicherheit: was ist das? .
3.3 Entropie . . . . . . . . . . . . . .
3.4 Gruppen, Ringe, Körper . . . . .
3.5 Primzahlen . . . . . . . . . . . .
3.5.1 Primzahltests . . . . . . .
3.5.2 Faktorisieren . . . . . . .
3.6 Kryptographische Funktionen . .
3.6.1 Einwegfunktionen . . . .
3.6.2 Hashfunktionen . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Literaturverzeichnis
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
32
32
36
36
38
40
42
50
52
54
55
57
58
58
59
62
ii
3 Ein wenig Zahlentheorie
3.1 Modulares Rechnen
Für beliebige Zahlen a, b ∈ ∠Z und m ∈ IN+ sagt man a ist kongruent zu b modulo m, und
schreibt
a ≡ b
(mod m)
falls m|(a − b), d.h. falls m ein Teiler von a − b ist. In diesem Fall gibt es ein k ∈ ∠Z so, dass
mk = a−b. Man kann sich vorstellen, dass man von a nach b kommt, indem man ein Vielfaches
von m addiert.
Man kann einfach nachweisen (Übungsaufgabe), dass Kongruenz modulo m eine Äquivalenzrelation auf ∠Z definiert: man muss lediglich zeigen, dass diese Relation reflexiv, symmetrisch
und transitiv ist. Dadurch wird ∠Z in paarweise disjunkte Äquivalenzklassen
[r] = {x ∈ ∠Z |x ≡ r
(mod m) }
unterteilt. Die Elemente von [r] heissen die zu r modulo m kongruenten Elemente. Die Zahlen
0, 1, . . . , m − 1 heissen sind alle möglichen Reste modulo m. Deshalb nennt man die Äquivalenzklassen auch Restklassen modulo m. Im Folgenden repräsentieren wir die Restklasse [r]
wieder durch r: wir werden also Reste und Restklassen nicht mehr unterschieden.
Das kleinste, nichtnegative Restsystem modulo m ist
∠Zm = {0, 1, . . . , m − 1}
Addition und Multiplikation in ∠Zm werden wie in ∠Z definiert, wobei man das Resultat immer
modulo m nimmt. Es gelten dann beispielsweise für a ≡ a0 (mod m) und b ≡ b0 (mod m)
folgende Rechenregeln:
a + b ≡ a0 + b0 (mod m)
ab ≡ a0 b0 (mod m)
Zum Beweis muss man lediglich die Definition verwenden!
Kürzen kann man den Ausdruck
ac ≡ bc
(mod n)
falls ggT(c, n) = 1. In diesem Fall gilt
a ≡ b
(mod n)
32
3 Ein wenig Zahlentheorie
Beispiel 3.1. Die in ∠Z gültige Kürzungsregel darf, wie das folgende Beispiel zeigt, nicht verwendet
werden:
13 · 2 ≡ 1 · 2
(mod 8)
aber
13 ≡
/ 1
(mod 8)
Allgemein gilt die folgende Kürzungsregel: Aus
a·c ≡ b·c
(mod m)
folgt
a ≡ b
(mod
m
)
ggT(c, m)
Beispiel 3.2. Man erhält nacheinander:
45 ≡ 15
(mod 10)
5·9 ≡ 5·3
(mod 10)
3·3 ≡ 3·1
(mod 2)
9 ≡ 3
(mod 2) nach Kürzen mit 5
3 ≡ 1
(mod 2) nach Kürzen mit 3
Eine weitere Anwendung der modularen Arithmetik liefern die Teilbarkeitsregeln, die z.B.
aussagen, dass eine Zahl genau dann durch 3 teilbar ist, wenn deren Quersumme durch 3 teilbar
ist. Man beachte, dass man diese Regel auch rekursiv anwenden kann!
Beispiel 3.3. Zeigen Sie, dass für eine durch 3 teilbare ganze Zahl n die Summe der Ziffern dieser Zahl
durch 3 teilbar ist. Daraus kann man ableiten, dass eine Zahl durch 3 teilbar ist, genau dann, wenn deren
Quersumme durch 3 teilbar ist.
Lösung: Es gilt ja
n = a0 + 10 a1 + 102 a2 + · · ·
Da ja b · c (mod m) = b (mod m) · a (mod m) 10 ≡ 1 (mod 3) hat man
n = a 0 + a1 + a2 + · · ·
(mod 3)
Analog kann man Regeln finden für Zahlen, die durch 5, 9 oder 11 teilbar sind (→ HA).
Gibt es eine solche Regel für 7?
33
3 Ein wenig Zahlentheorie
Beispiel 3.4. Der square and multiply algorithm (SMA) dient dem effizienten Berechnen der modularen
Exponentiation:
z = ab
(mod n)
Dabei führt man die Exponentation auf Multiplizieren und Quadrieren zurück. Dazu wird zuerst die
binäre Darstellung des Exponenten b gesucht. Anschliessend ersetzt man in dieser jede Null durch das
Zeichen S und jede Eins durch die Zeichenkette SX. Das führende SX streicht man weg und fasst dann die
Folge als eine Serie von Quadrierbefehlen (S) und Multiplizierbefehlen (X) auf. Dabei startet man mit a
und kann zwischendurch immer wieder modulo n rechnen!
Für z ≡ 313 (mod 11) hat man wegen 13 = (1101)2 zuerst die Folge SX SX S SX und nach Wegstreichen
des Führenden SX die verbleibende Folge SX S SX. Sie sagt, dass man 3 zuerst quadrieren muss, und dann
die beiden letzten Zahlen multiplizieren muss (was man dann modulo 11 nehmen darf), usw. Auf diese
Art erhält man z ≡ 5 (mod 11).
S
X
3 −→ 9 −→ 27 ≡ 5
S
S
(mod 11) −→ 25 ≡ 3
X
(mod 11) −→ 9 −→ 27 ≡ 5
(mod 11)
Wegen 13 = 8 + 4 + 1 = 1 · 23 + 1 · 22 + 0 · 21 + 1 · 20 hat man nacheinander:
313 = 31·2
3 +1·22 +0·21 +1·20
3
2
1
0
= 31·2 31·2 30·2 31·2
3 1 2 1 1 0 0 1
=
3(2 )
3(2 )
3(2 )
3(2 )
k 0
Wegen 3(2 ) = 1 muss man also nicht jedes Mal multiplizieren!
Es gibt viele Möglichkeiten für die Implementation. Eine von diesen sei im Folgenden aufgeführt:
procedure SMA (b, n, m)
# wobei:
# n = (a[k-1] a[k-2] ... a[1] a[0])
#
x := 1
pow := b mod m
for i := 0 to k-1 do
if (a[i] = 1) x := x*pow mod m
pow := pow*pow mod m
end
#
# x ist b^n mod m
Weitere Implementation findet man im Handbook of Applied Cryptography.
Wir definieren das prime oder reduzierte Restsystem modulo n durch
∠Z?n = {x ∈ ∠Zn | x > 0 und ggT(x, n) = 1}
34
3 Ein wenig Zahlentheorie
Beispiel 3.5. Es gilt beispielsweise ∠Z?10 = {1, 3, 7, 9}: somit besteht ∠Z?10 aus allen Nicht-Null Elementen von ∠Z10 , die teilerfremd sind zu 10.
Allgemein besteht ∠Z?n aus allen Nicht-Null Elementen von ∠Z n , die teilerfremd sind zu n!
Beispiel 3.6. Es gilt beispielsweise ∠Z?16 = {1, 3, 5, 7, 9, 11, 13, 15}, d.h. ∠Z?16 besteht aus allen, zu
16 = 24 teilerfremden Zahlen.
Für ein a ∈ ∠Zn definiert man
a · ∠Z?n = {y ∈ ∠Z?n | ∃x ∈ ∠Z?n mit y = a · x
(mod n) }
Beispiel 3.7. Man hat beispielsweise
?
2 · Z10
= {2, 6, 14, 18} mod 10 = {2, 6, 4, 8}
oder
?
3 · Z10
= {3, 9, 21, 27} mod 10 = ∠Z?10
Lemma 3.1. Allgemein gilt für n > 1 und a ∈ ∠Z?n :
1. (i) Für beliebige x und y gilt:
a·x ≡ a·y
(mod n)
⇐⇒
x≡y
(mod n).
2. (ii) a · ∠Z?n = ∠Z?n .
3. (iii) a hat ein multiplikatives Inverses modulo n, d.h. es existiert ein b ∈ ∠Z?n so, dass
a · b ≡ 1 (mod n).
Beweis. Falls x ≡ y (mod n) dann gilt trivialerweise a · x ≡ a · y (mod n). Nehmen wir
umgekehrt an, dass a · x ≡ a · y (mod n), dann ist n|a · (x − y). Da aber ggT(a, n) = 1, hat
man n|(x − y), d.h. x ≡ y (mod n) woraus (i) folgt.
Da x ∈ ∠Z?n gilt gcd(x, n) = 1 und da gcd(a, n) = 1 folgt gcd(a · x, n) = 1, und somit
a · x mod n ∈ ∠Z?n : somit gilt a · ∠Z?n ⊂ ∠Z?n . Wegen (i) folgt aus a · x ≡ a · y (mod n) sofort
x ≡ y mod n: also besteht a · ∠Z?n auf n verschiedenen Elementen und kann deshalb keine echte
Teilmenge von ∠Z?n sein. Daraus folgt (ii)!
Da 1 ∈ ∠Z?n gilt, muss ein b ∈ ∠Z?n existieren, für das a · b mod n = 1 gilt: daraus folgt (iii)!
35
3 Ein wenig Zahlentheorie
3.1.1 Die Euler Phi-Funktion
Die Euler φ-Funktion ist eine Abbildung von IN nach IN und wird definiert durch:
φ : IN → IN, n 7→ φ(n) = |∠Z?n |
Die Euler φ-Funktion hat folgende Eigenschaften:
Lemma 3.2. Seien p und q zwei Primzahlen, und m = pr11 · pr22 · · · prnn die Primfaktorzerlegung
vom m, dann gilt:
(a)
(b)
(c)
φ(p) = p − 1
φ(p q) = (p − 1)(q − 1)
φ(m) = (p1 − 1) · pr11 −1 · · · (pn − 1) · prnn −1
Beweis. Der Beweis von (a) ist trivial, da ∠Z?n = {1, . . . , p − 1}.
Um (b) zu beweisen, betrachten wir die Menge Yp = {p, . . . , (q − 1)p}, d.h. die Menge der
Nicht-Null Elemente von ∠Zn , die durch p teilbar sind. Analog sei Yq = {q, . . . , (p − 1)q} die
Menge aller Elemente in ∠Zn , die durch q teilbar sind. Falls a p = b q dann gilt p|b und q|a, also
können a p und b q nicht gleichzeitig in Yp und in Yq liegen, d.h. Yp und Yq sind disjunkt. Es gilt
also
∠Zn = {0} ∪ Yp ∪ Yq ∪ ∠Z?n
und durch Betrachtung der Kardinalitäten der Mengen erhält man
p q = 1 + (q − 1) + (p − 1) + |∠Z?n |.
woraus sich sofort die Behauptung ergibt!
Der Beweis von (c) wird hier nicht geführt (d.h. dem geübten Leser überlassen).
Beispiel 3.8. Man hat
φ(16) = φ(24 ) = 1 · 23 = 8
φ(693) = φ(32 · 7 · 11) = (2 · 3) · (6 · 1) · (10 · 1) = 360
3.1.2 Der Satz von Euler-Fermat
Satz 3.3 (Euler). Sei n ∈ IN+ und a ∈ ∠Z?n . Dann gilt:
aφ(n) ≡ 1 (mod n).
36
3 Ein wenig Zahlentheorie
Beispiel 3.9. Seien n = 10 und a = 3 ∈ ∠Z?10 gegeben. Dann hat man
Oben haben wir gesehen:
φ(10) = 4
Nun hat man
aφ(n) = 34 = 81 ≡ 1
(mod 10),
in Übereinstimmung mit dem Satz von Euler.
Beweis. Falls ∠Z?n = {r1 , r2 , . . . , rm }, dann ist eine Neuformulierung von (b) von Lemma 3.1
{a · r1 mod n, a · r2 mod n, . . . , a · rm mod n} = ∠Z?n
Deshalb hat man
a · r 1 · . . . · a · r m = r 1 · . . . · rm
(mod n)
Wegen (i) in Lemma 3.1 kann jedes der obigen ri gekürzt werden, was noch
am ≡ 1 (mod n)
übrig lässt. Der Satz von Euler folgt, sobald man berücksichtigt, dass nach Definition m = φ(n)
gilt.
Aus dem Satz von Euler folgt
Satz 3.4 (Fermat). Sei p eine Primzahl und a ∈ ∠Z?p . Dann gilt:
ap−1 ≡ 1 (mod p)
Beweis. Verwende (a) von Lemma 3.2 im Satz von Euler 3.3.
Beispiel 3.10. Die Umkehrung des Fermat’schen Satzes gilt nicht: d.h. es gibt zusammengesetzte ganze
Zahlen m > 1 mit am ≡ a (mod m) für alle ganzen a.
Beispiel: m = 3 · 11 · 17 = 561.
Derartige Zahlen heissen Carmichael-Zahlen!
Korollar 3.5. Sei n ∈ IN+ , a ∈ ∠Z?n , und x ≡ 1 (mod m) wobei m = φ(n). Dann gilt ax ≡ a
(mod n).
37
3 Ein wenig Zahlentheorie
Beweis. Man hat x = m · y + 1 für irgend ein y. Wegen dem Satz von Fermat 3.4 hat man dann
ax ≡ (am )y · a ≡ 1y · a ≡ a mod n
Korollar 3.6. Sei n ∈ IN+ , m = φ(n) und e, d ∈ ∠Z?m und e · d ≡ 1 (mod m). Sei
E(M ) = M e mod n und
D(C) = C d mod n
dann ist
D(E(M )) = E(D(M )) = M, ∀M ∈ [0, n).
Beweis.
D(E(M )) ≡ (M e mod n)d mod n ≡ M e·d mod n ≡ M
(mod n)
Der letzte Schritt benutzt das vorige Korollar. Weil 0 ≤ D(E(M )) < n und 0 ≤ M < n, folgt
D(E(M )) = M . Analog findet man E(D(M )) = M .
3.1.3 Chinesischer Restsatz
Satz 3.7 (Sun Tsŭ). Seien m1 , m2 , . . . , mk ∈ IN+ paarweise teilerfremd, m = m1 · m2 · · · mk
sowie
x ≡ ri
(mod mi )
i = 1, 2, . . . , k
ein System von k simultanen Kongruenzen. Dann besitzt dieses System eine eindeutige Lösung
x (mod m).
Der Algorithmus sieht etwa wie folgt aus:
M := m_1
x := r_1 (mod M)
for i := 2 to k do
h := (r_i - x) * M^{-1} (mod m_i)
x: = x + h * M
M := M * m_i
done
return x (mod M)
38
3 Ein wenig Zahlentheorie
Beispiel 3.11. Bestimmen Sie alle Lösungen x des Kongruenzsystems
x ≡ −2
x ≡ 2
x ≡ 4
(mod 5)
(mod 7)
(mod 9)
Das Resultat findet man beispielsweise mittels des folgenden Maple-Befehls:
>
chrem([-2,2,4],[5,7,9]);
Beweis Chinesischer Restsatz. Wir wollen hier lediglich zeigen, dass eine Lösung existiert, indem wir diese konstruieren: diese Konstruktion könnte dann als Anleitung für ein Programm
dienen. Wir definieren deshalb
Mi =
m
i = 1, 2, . . . , k
mi
also ist Mi das Produkt der Moduln ausser mi . Daher hat man ggT(mi , Mi ) = 1, denn die mi
sind nach unserer Annahme paarweise teilerfremd. Deshalb hat M i ein Inverses yi modulo mi ,
d.h.
Mi yi ≡ 1 (mod mi )
(3.1)
Die gemeinsame Lösung aller linearer Kongruenzen ist dann
x=
k
X
a i Mi y i
i=1
denn wegen Mj ≡ 0 (mod mk ) für j 6= i sind alle Terme in dieser Summe kongruent zu Null
modulo mi . Wegen Gleichung (3.1) gilt dann
x ≡ a i Mi y i ≡ a i
(mod mi ) i = 1, 2, . . . , k
Also ist x gleichzeitig Lösung aller Gleichungen.
Die Eindeutigkeit der Lösung wird hier nicht bewiesen!
Beispiel 3.12. Wenn man eine Zahl durch 3 teilt erhält man 2, wenn man sie durch 5 teilt, erhält man 3
und wenn man sie durch 7 teilt, erhält man 2. Wie heisst die Zahl?
Lösung: Man hat das System von Kongruenzen
x ≡ 2
(mod 3)
x ≡ 2
(mod 7)
x ≡ 3
39
(mod 5)
3 Ein wenig Zahlentheorie
Nach dem obigen Beweis bestimmen wir zuerst m = m 1 m2 m3 = 3 · 5 · 7 = 105 und M1 = m/3 = 35,
M2 = m/5 = 21, M3 = m/7 = 15. Man sieht, dass 2 ein Inverses von M 1 = 35 modulo 3 ist, denn
2 · 35 ≡ 70 ≡ 1 (mod 3). Ebenso findet man, dass 1 ein Inverses von M 2 sowie von M3 ist. Die Lösung
des Systems ist also:
x ≡ 2 · 35 · 2 + 3 · 21 · 1 + 2 · 15 · 1 ≡ 233 ≡ 23
(mod 105)
3.1.4 RSA-Codes
Seien p und q zwei sehr grosse (mindestens 150-200 stellige) Primzahlen. Dann definieren wir
n = p q und wählen eine zu φ(n) = (p − 1) (q − 1) teilerfremde Zahl e ∈ IN. Die beiden Zahlen
p und q sollen geheim bleiben, dagegen dürfen (e, n) allgemein bekannt sein.
Zum Verschlüsseln einer Meldung M wird diese zuerst in Blöcke der Länge < min(p, q) unterteilt: wir gehen also davon aus, dass die Meldung M diese Bedingung erfüllt. Dann wird die
Verschlüsselung definiert durch:
C = Me
(mod n)
Hier spielt das Paar (e, n) die Rolle des (öffentlichen) Schlüssels. Die Verschlüsselungstransformation ist eine Einwegfunktion (was zwar angenommen, aber nicht mathematisch bewiesen
ist). Sie kann nämlich sehr einfach berechnet werden. Die Umkehrung ist dagegen sehr schwer:
es müsste nämlich zu gegebenem Geheimtext C, und öffentlichem Schlüssel (e, n) der Klartext
M berechnet werden. Wäre das Problem nicht diskret, d.h. in ∠Z n formuliert, dann wäre die
Lösung logaritmieren; was eigentlich kein grosses Problem wäre. Das diskrete Logarithmusproblem ist aber sehr, sehr viel schwieriger: man weiss, dass soll genau so schwierig sein, wie
das Faktorisieren von grossen Zahlen, d.h. eine grosse Zahl in ihre Primfaktoren zu zerlegen.
Die Falltür, durch welche die Einwegfunktion einfach invertierbar wird, stellt der private Schlüssel d dar, welcher das Inverse von e modulo φ(n) ist, d.h. es gilt e d ≡ 1 (mod φ(n)) oder
e d = 1 + k φ(n) für ein k ∈ ∠Z. Der erweiterte Euklidische Algorithmus kann zur Berechnung
von d verwendet werden. Wir zeigen im Folgenden, dass die folgende Formel die Entschlüsselung der Meldung liefert:
M = Cd
(mod n)
Um dies zu zeigen, verwenden wir die Feststellung, dass M jeweils paarweise teilerfremd ist
zu p und q. Nach dem Fermat’schen Satz gilt dann
M p−1 ≡ 1 (mod p) und
M q−1 ≡ 1 (mod q).
40
3 Ein wenig Zahlentheorie
Daraus folgt:
C d ≡ (M e )d ≡ M ed ≡ M (M p−1 )k(q−1) ≡ M · 1 ≡ M
C d ≡ (M e )d ≡ M ed ≡ M (M q−1 )k(p−1) ≡ M · 1 ≡ M
(mod p)
(mod q)
Wegen ggT(p, q) = 1 und dem Chinesischen Restsatz folgt die Behauptung
M ≡ Cd
(mod n).
Man kann auch direkt den Fermat’schen Satz verwenden und schreiben
C d ≡ M ed ≡ M 1+k φ(n) ≡ M · (M φ(n) )k ≡ M · 1 ≡ M
(mod n).
Man könnte argumentieren, dass ein Angreifer ja nur die Zahl n faktorisieren müsste, um das
System zu knacken. Dies stimmt exakt. Diese Aufgabe ist aber ungeheuer schwierig: Es gibt
nämlich bis heute keinen (bekannten) effizienten Algorithums (in polynomialer Zeit) für die
Primfaktorzerlegung.
Mit Hilfe von Maple kann man wie folgt vorgehen:
>
>
>
>
>
>
>
>
>
>
>
p:=nextprime(23435314573513435338909753413739357);
q:=nextprime(23499387416501328740153053413739357);
n:=p*q;
phi:=(p-1)*(q-1);
e:=6293864511297;
igcd(e,phi);
e:=6293864511293;
igcd(e,phi);
igcdex(e,phi,’t’,’s’);
d;
d:=phi+d;
Für die modulare Exponentiation verwenden wir die folgende Prozedur in Maple:
>
>
>
>
>
>
>
>
>
>
>
>
>
>
expmod:=proc(a:posint,b:posint,c:posint)
local N, Y, Z;
N := b;
Y := 1;
Z := a;
while 0 < N do
if N mod 2 = 1 then
Y := Z*Y mod c
fi
N := trunc(1/2*N);
Z := Z^2 mod c
od;
Y
end:
Dann kann man beispielsweise die Meldung HELP ME (mit der übliche Codierung) wie folgt
41
3 Ein wenig Zahlentheorie
ver- und dann auch wieder entschlüsseln:
>
>
>
M:=08051216271305;
C:=expmod(M,e,n);
expmod(C,d,n);
Alternativ kann man ohne die obige eigenhändig geschriebene Funktion diejenige von Maple
verwenden und schreiben:
>
>
C:=Power(M,e) mod n;
Power(C,d) mod n;
3.2 Perfekte Sicherheit: was ist das?
Grundsätzlich unterscheidet man zwischen
Komplexitätstheoretische Sicherheit (engl. computational security) was bedeutet, dass
es praktisch unmöglich (d.h. beispielsweise mit allen Computern der Welt, auch wenn sie
noch eine Million Mal schneller werden) ist, ein Kryptosystem zu knacken. Dabei geht
man vom schnellsten (bekannten) Algorithmus aus, ein Kryptosystem zu knacken. Oft
kann man die Sicherheit eines Kryptosystems auch auf ein oder mehrere andere, bereits
bekannte Probleme zurückführen (z.B. auf die Faktorisierung grosser Zahlen, oder das
diskrete Logarithmus-Problem, etc.)
Informationstheoretische Sicherheit: (engl. unconditional security) was bedeutet, dass
auch ein Angreifer mit unbeschränkten Rechenmitteln den Algorithmus nicht knacken
kann.
Damit wir einen mathematischen Zugang zu dieser Fragestellung finden können, verwenden
wir die Wahrscheinlichkeitsrechung.
Ein Zufallsexperiment habe die n ∈ IN Elementarereignisse X = {x1 , x2 , . . . , xn }. Jedem
dieser Ereignisse werde dessen Wahrscheinlichkeit 0 ≤ p(xi ) ≤ 1, i = 1, 2, . . . , n zugeordnet.
Natürlich gilt dann
n
X
p(xi ) = 1
i=1
Ist E ⊂ X ein Ereignis, dann ist die Wahrscheinlichkeit für sein Eintreten
X
p(E) =
p(x)
x∈E
und die Wahrscheinlichkeit für sein Nicht-Eintreten
p(E) = 1 − p(E).
42
3 Ein wenig Zahlentheorie
Sind die n Elementarereignisse xi alle gleich wahrscheinlich, dann gilt:
p(xi ) =
1
n
Dann ist die Wahrscheinlichkeit für das Eintreten des Ereignisses E gegeben durch
Anzahl günstige Fälle
Anzahl mögliche Fälle
|E|
=
|X|
p(E) =
Zwei Ereignisse E1 und E2 sind unvereinbar, oder schliessen sich gegenseitig aus, falls E 1 ∩
E2 = ∅. In diesem Fall gilt:
p(E1 ∪ E2 ) = p(E1 ) + p(E2 )
Beispiel 3.13. Ein Schlüssel bestehe aus 6 Ziffern. Betrachte die Ereignisse:
• E1 : die erste Ziffer sei 3
• E2 : die erste Ziffer sei 8
Falls die Schlüssel gleichverteilt sind, was kann man dann über p(E 1 ), p(E2 ) und p(E1 ∪ E2 ) sagen?
Lösung: (Wandtafel)
Für p(E2 ) > 0 kann die bedingte Wahrscheinlichkeit für E1 unter der Voraussetzung E2 definiert werden durch:
p(E1 |E2 ) =
p(E1 ∩ E2 )
p(E2 )
(3.2)
Man überlege sich an Hand eines Venn-Diagramms, dass dieser Ausdruck Sinn macht!
Beispiel 3.14. Ein Schlüssel (eines Zahlenschlosses) bestehe aus 6 Ziffern. Betrachte die Ereignisse:
• E1 : die erste Ziffer sei 3
43
3 Ein wenig Zahlentheorie
• E2 : die erste Ziffer sei ungerade
Berechne p(E1 |E2 ).
Lösung: Dann hat man (wegen der angenommenen Gleichverteilung):
p(E1 ) = 1/10
p(E2 ) = 1/2
Wegen E1 ⊂ E2 hat man weiter E1 ∩ E2 = E1 und damit p(E1 ∩ E2 ) = p(E1 ) = 0.1 (dies ist die
Wahrscheinlichkeit, dass die erste Ziffer eine drei ist und ungerade - war doch zu erwarten!). Aber
p(E1 ∩ E2 )
p(E2 )
1/10
=
1/2
= 0.2
p(E1 |E2 ) =
Dies ist die Wahrscheinlichkeit, dass die erste Ziffer eine 3 ist, unter der Voraussetzung, dass die erste
Ziffer ungerade ist!
Für p(E2 ) > 0 folgt aus Gleichung (3.2)
p(E1 ∩ E2 ) = p(E2 ) p(E1 |E2 ).
Vertauscht man hier E1 und E2 so erhält man im Fall p(E1 ) > 0
p(E2 ∩ E1 ) = p(E1 ) p(E2 |E1 ).
Da die linken Seiten gleich sind, folgt daraus
Satz 3.8 (Bayes). Ist p(E2 ) > 0, dann gilt:
p(E1 |E2 ) =
p(E1 ) p(E2 |E1 )
p(E2 )
(3.3)
Damit lässt sich p(E1 |E2 ) aus p(E2 |E1 ) berechnen (oder umgekehrt!).
Man nennt zwei Ereignisse E1 und E2 unabhängig, falls
p(E1 |E2 ) = p(E1 ).
Sind in diesem Fall p(E1 ), p(E2 ) > 0, dann gilt wegen Gleichung (3.3) auch
p(E2 |E1 ) = p(E2 ).
Somit sind zwei Ereignisse E1 und E2 genau dann unabhängig wenn gilt:
p(E1 ∩ E2 ) = p(E1 ) p(E2 )
44
(3.4)
3 Ein wenig Zahlentheorie
Beispiel 3.15. Im Beispiel 3.14 hat man E1 ∩ E2 = E1 und damit
p(E1 ∩ E2 ) = p(E1 ) = 1/10 6= p(E1 ) p(E2 ) = 1/10 · 1/2 = 1/20
Dies zeigt, dass die beiden Ereignisse E 1 und E2 nicht unabhängig sind!
Nun wollen wir untersuchen, was eine perfekte Chiffre ist. Seien x ein Klartext, y ein Geheimtext und k ein Schlüssel. Dann definieren wir:
pM (x): ist die (a priori - im Voraus) Wahrscheinlichkeit des Klartextes x ∈ M.
pK (k): ist die Wahrscheinlichkeit des Schlüssels k ∈ K. Man darf annehmen, dass k und x
unabhängig sind, der Schlüssel k soll also nicht vom Klartext x abhängen.
Die Wahrscheinlichkeitsverteilungen auf M und K induzieren eine Wahrscheinlichkeitsverteilungen auf C. Falls nämlich gewisse Klartexte x ∈ M und bestimmte Schlüssel k ∈ K häufig
vorkommen, dann kommen auch entsprechenden Geheimtexte y ∈ C häufig vor.
Es interessiert uns deshalb, mehr über die folgende Grösse zu erfahren
pC (y): die Wahrscheinlichkeit des Geheimtextes y ∈ C.
Sei nun
C(k) = {E(k, x) |x ∈ M }
die Menge aller Geheimtexte, die mit dem Schlüssel k verschlüsselt wurden: Wir verschlüsseln
also jeden Klartext x mit dem Schlüssel k und erhalten C(k)!
Es ist ja klar, dass ein Klartext x und ein Schlüssel k den Geheimtext y = E(k, x) eindeutig
definieren. Dies ermöglicht uns, die Wahrscheinlichkeit pC (y) für einen bestimmten Geheimtext
y ∈ C, abhängig von pM (x) und pK (k) zu beschreiben:
pC (y) =
X
pK (k) pM (D(k, y))
(3.5)
{k∈K|y∈C(k)}
Dabei ist pM (D(k, y)) die Wahrscheinlichkeit, dass ein Klartext x = D(k, y) existiert, der mit
dem Schlüssel k verschlüsselt den vorliegenden Geheimtext y ergibt. Da der Schlüssel k mit der
Wahrscheinlichkeit pK (k) vorkommt, stellt pK (k) pM (D(k, y)) die Wahrscheinlichkeit dar, dass
y aus einem Klartext x = D(k, y) unter Verwendung des Schlüssels k hervorgeht. Summiert
man über alle Schlüssel k, die überhaupt zu diesem Geheimtext führen können, dann erhält man
die Wahrscheinlichkeit, dass der Geheimtext y vorkommt.
Analog erhält man für die Wahrscheinlichkeit, dass y ∈ C der Geheimtext ist unter der Voraussetzung, dass x ∈ M der Klartext ist:
45
3 Ein wenig Zahlentheorie
X
pC (y|x) =
pK (k)
(3.6)
{k∈K|x=D(k,y)}
Hier muss man sich nur überlegen, auf wieviele Arten der Geheimtext y aus dem Klartext x entstanden sein kann: es muss also über alle Schlüssel summiert werden, die x in y transformieren
(verschlüsseln).
Nun liefert der Satz von Bayes:
pM (x) pC (y|x)
pC (y)
pM (x|y) =
Setzt man die hier die Gleichungen (3.5) und (3.6) ein so findet man:
X
pM (x)
pK (k)
{k∈K|x=D(k,y)}
pM (x|y) =
X
pK (k) pM (D(k, y))
(3.7)
{k∈K|y∈C(k)}
Beispiel 3.16. Sei M = {a, b} und die a priori Wahrscheinlichkeiten (z.B. bekannt aus der Statistik des
Klartextes) pM (a) = 1/4 und pM (b) = 3/4. Zudem nehmen wir an, dass die drei Schlüssel k 1 , k2 , k3
mit den Wahrscheinlichkeiten 1/2, 1/4, 1/4 vorkommen. Sie transformieren (a, b) nach (1, 2) (mit dem
Schlüssel k1 ), (2, 3) (mit dem Schlüssel k2 ) und (3, 4) (mit dem Schlüssel k3 ).
Für den Geheimtext C = {1, 2, 3, 4} ergeben sich nach der Gleichung (3.5) die Wahrscheinlichkeiten:
pC (1) =
pC (2) =
pC (3) =
pC (4) =
1
2
1
4
1
4
1
4
1
4
1
·
4
1
·
4
3
·
4
·
2
16
1 3
7
+ · =
2 4
16
1 3
4
=+ · =
4 4
16
3
=
16
=
Damit erhält man für die a posteriori Wahrscheinlichkeiten mit Hilfe der Gleichung (3.6) für a:
pM (a|1) =
pM (a|2) =
pM (a|3) =
pM (a|4) =
46
1
4
·
1
2
·
1
4
·
1
2
2
16
1
4
7
16
1
4
4
16
1
4
·0
3
16
=1
=
1
7
=
1
4
=0
3 Ein wenig Zahlentheorie
und analog für b:
pM (b|1) =
pM (b|2) =
pM (b|3) =
pM (b|4) =
3
4
·0
2
16
3
4
·
1
2
·
1
4
·
1
4
7
16
3
4
4
16
3
4
3
16
=0
=
6
7
=
3
4
=1
Was schliesst man daraus?
• Die Wahrscheinlichkeit ist 1, dass der Klartext a ist, falls der Geheimtext 1 ist!
• Die Wahrscheinlichkeit ist 1, dass der Klartext b ist, falls der Geheimtext 4 ist!
• Die Wahrscheinlichkeit ist 6/7, d.h. über 80%, dass der Klartext b ist, falls der Geheimtext 2 ist!
• Die Wahrscheinlichkeit ist 3/4, d.h. 75%, dass der Klartext b ist, falls der Geheimtext 3 ist!
Natürlich sind praktische Chiffren viel komplizierter: sie können aber mit Hilfe von Computern
genau so analysiert werden, wie dieses einfache Beispiel!
Das obige Beispiel 3.16 zeigt, dass man aus der Wahrscheinlichkeitsverteilung des Geheimtextes und des Schlüssels auf die des Klartextes schliessen kann. Sobald man den Geheimtext in
den Händen hält, kann man mehr über den Klartext aussagen.
Von einen sicheren Chiffrierverfahren erwarten wir allerdings, dass auch die Kenntnis von beliebig viel Geheimtext nichts über den Klartext verrät. Zudem soll es auch mit unbegrenzten,
sprich unendlichen Rechenkapazität (sowohl Geschwindigkeit, wie auch Speicher) nicht möglich sein, das Verschlüsselungsverfahren zu brechen.
Es macht deshalb Sinn, perfekte Sicherheit wie folgt zu definieren:
Definition 3.2.1. Eine Chiffre ist perfekt, wenn ∀y ∈ C gilt:
pM (x|y) = pM (x),
∀x ∈ M.
Einfacher ausgedrückt: Eine Chiffre ist perfekt, wenn ein Geheimtext dem Gegner absolut
nichts über den zugehörigen Klartext verrät.
Beispiel 3.17. Die Schlüssel k ∈ ∠Z26 der Cäsar-Chiffre seien gleichverteilt. Zeige, dass dann die
Verschlüsselung eines einzelnen Buchstabens perfekt ist.
Lösung: Man hat M = K = C = ∠Z26 . Die Chiffrierung ist gegeben durch
E(k, x) = x + k
47
(mod 26)
3 Ein wenig Zahlentheorie
und die Dechiffrierung durch
D(k, y) = y − k
(mod 26).
Für ein beliebiges y ∈ C gilt dann nacheinander:
X
pK (k) pM (D(k, y))
pC (y) =
k∈∠Z26
X 1
=
pM (y − k (mod 26))
26
k∈∠Z26
1 X
=
pM (w)
26
w∈∠Z26
1
·1
=
26
1
=
26
Weiter hat man mit der Gleichung (3.6)
1
.
26
Wir haben dabei berücksichtigt, dass jedes Klartext/Geheimtext Paar (x, y) nur durch Verwendung des
Schlüssels k = y − x (mod 26) erhalten werden kann.
pC (y|x) = pK (y − x
(mod 26)) =
Berücksichtigt man die obigen Zwischenresultate, so findet man schliesslich für beliebige (x, y)
pM (x|y) =
=
pM (x) pC (y|x)
,
pC (y)
1
pM (x) 26
,
1
26
= pM (x).
Also hat man perfekte Sicherheit!
Allerdings muss man beachten, dass nur ein einzelner Buchstabe verschlüsselt wurde. Sollen mehrere
Buchstaben verschlüsselt werden, muss immer wieder, ein rein zufällig Schlüssel k verwendet werden.
Siehe dazu auch Beispiel 3.18.
Beispiel 3.18. Der Schlüssel k ∈ ∠Z26 der Cäsar-Chiffre sei gleichverteilt. Dann ist die Verschlüsselung
von zwei Buchstabens nicht perfekt. Denn wenn man die Klartextbuchstaben ef betrachtet, dann gilt:
p(Klartext = ef |Geheimtext = ZZ) = 0
Denn zwei aufeinanderfolgende Buchstaben ef können nicht auf die gleichen Buchstaben ZZ abgebildet
werden. Andererseits hat man
1
p(Klartext = ef ) =
262
und somit zusammengefasst:
0 = p(Klartext = ef |Geheimtext = ZZ) 6= p(Klartext = ef ) =
1
262
48
3 Ein wenig Zahlentheorie
Wir wollen nun perfekte Sicherheit mit einer zweiten Betrachtungsweise definieren: Falls ein
Chiffriersystem perfekt ist, dann kann jeder Klartext x ∈ M mit einem geeigneten Schlüssel
k ∈ K auf jeden Geheimtext y ∈ C abgebildet werden kann.
Falls nämlich ein System perfekt ist, dann gilt für jeden Geheimtext y ∈ C:
pM (x|y) = pM (x),
∀x ∈ M
(3.8)
Da jeder Klartext, wenn auch mit einer sehr kleinen Wahrscheinlichkeit, vorkommen kann, gilt
pM (x) > 0. Wegen Gleichung (3.8) folgt sofort pM (x|y) > 0. Dies bedeutet, dass es einen
Schlüssel gibt, mit dem x in y transformiert wird.
Die letzten Gedanken erlauben uns festzustellen, wann ein Chiffriersystem nicht perfekt ist!
Der folgende Satz sagt etwas darüber aus, in welchem Verhältnis die Anzahl Schlüssel zur
Anzahl Geheim- und Klartexte steht.
Satz 3.9. Falls ein Chiffriersystem perfekt ist, dann gilt:
kKk ≥ kCk ≥ kMk
Beweis. Wenn ein Kryptosystem perfekt ist, dann kann jeder Klartext mit einem geeignet gewählten Schlüssel auf jeden beliebigen Geheimtext abgebildet werden: wäre das nicht so, dann
gäbe es Klartext/Geheimtext-Paare, die nicht auftreten könnten; in diesem Fall wüsste ein Angreifer, der einen Geheimtext in den Händen hat, dass er nicht zu bestimmten Klartexten passen
kann. Dies wäre im Widerspruch zur perfekten Sicherheit. Also muss es mindestens so viele
Geheimtexte geben wie Klartexte geben, d.h. es muss gelten:
kCk ≥ kMk
Nehmen wir nun an, dass es weniger Schlüssel als Geheimtexte gibt. Nach Vorraussetzung
sollte es möglich sein, einen bestimmten Klartext durch Wahl des geeigneten Schlüssels auf
alle Geheimtexte abzubilden. Also muss der Schlüsselraum mindestens so gross sein wie der
Geheimtextraum:
kKk ≥ kCk
Zusammengefasst ergibt sich die Behauptung.
Es zeigt sich, dass es zusammen mit schwachen Zusatzbedingungen genügt, dass die Mächtigkeiten der drei Mengen gleich sind, um ein perfektes Verschlüsselungssystem zu konstruieren.
Satz 3.10. Falls für ein Chiffriersystem gilt:
kKk = kCk = kMk
und zudem jeder Schlüssel mit der selben Wahrscheinlichkeit vorkommt und schliesslich jeder
Klartext auf genau eine Art auf jeden Geheimtext transformiert wird, dann ist das Chiffriersystem perfekt.
49
3 Ein wenig Zahlentheorie
3.3 Entropie
Bei Angriffen mit bekanntem Klartext werden statistische Kenntnisse über den Klartext verwendet. Wie kann man die für den Angreifer nützlichen Eigenschaften der Klartexte quantitativ
geschreiben? Wie schwierig ist es, einen sinnvollen von einem zufälligen Klartext zu unterscheiden.
Die Entropie soll den Informationsgehalt einer Nachricht angeben. Sie ist im wesentlichen
gleich der Anzahl Bits, die mindestens gebraucht werden, um die Information einer Nachricht
darzustellen.
Beispiel 3.19. Das folgende Beispiel soll zeigen, welche Entropie eine Nachricht aufweist, die aus den
vier Zeichen a, b, c und d aufgebaut ist, wobei die Zeichen mit folgenden Wahrscheinlichkeiten auftreten:
p(a) = 1/2, p(b) = 1/4, p(c) = p(d) = 1/8.
Verwendet man als Kodierung a ↔ 00, b ↔ 01, c ↔ 10 und d ↔ 11, dann braucht man pro Zeichen
zwei Bits.
Wesentlich besser ist folgende Kodierung: a ↔ 1, b ↔ 01, c ↔ 000 und d ↔ 001. Denn hier ist die
durchschnittliche Anzahl Bits pro Buchstabe nur 1.75. Warum?
Nach der obigen intuitiven Definition der Entropie werden wir jetzt genauer.
Sei X eine Zufallsvariable, welche die endlich viele Werte x1 , x2 , . . . , xn mit den Wahrscheinlichkeiten
P (X = xi ) = pi mit 0 ≤ pi ≤ 1 für 0 ≤ i ≤ n annehmen kann. Natürlich gilt:
Pn
p
=
1.
i=1 i
Dann ist die Entropie einer Zufallsvariable X ein mathematisches Mass für die Menge der
Information, die eine Beobachtung von X liefert. Äquivalent ist sie gleich der Unsicherheit
des Resultats vor der Beobachtung von X. Wie wir oben gesehen haben, ist die Entropie auch
nützlich, um abzuschätzen, wieviele Bits für die Kodierung von X verwendet werden müssen.
Die Entropie oder Unsicherheit von X ist definiert durch
H(X) = −
n
X
pi log2 pi
i=1
wobei vereinbart wird, dass pi log2 pi = 0 falls pi = 0.
Man kann leicht selber nachprüfen, dass die Entropie folgende Eigenschaften hat:
(i) 0 ≤ H(X) ≤ log2 n.
50
3 Ein wenig Zahlentheorie
(ii) H(X) = 0 gilt genau dann wenn pi = 1 für ein bestimmtes i und pj = 0 für alle j 6= i
(d.h. es gibt keine Unsicherheit über das Resultat (des Zufallsexperiments)!
(iii) H(X) = log2 n genau dann, wenn pi = 1/n für alle i, 0 ≤ i ≤ n (d.h. alle Resultate sind
gleich wahrscheinlich). Beweis im Beispiel 3.20
Beispiel 3.20. Ist X eine gleichverteilte Zufallsvariable von n Elementen, dann gilt: H(X) = log 2 (n).
Denn falls X gleichverteilt ist, dann gilt p(x k ) = 1/n und man erhält nacheinander
H(X) = −
= −
n
X
p(xk ) log 2 p(xk )
k=1
n
X
k=1
1
1
log2
n
n
1
1
= −n log2
n
n
1
= − log2
n
= log2 n
Die gemeinsame Entropie der beiden Zufallsvariablen X und Y ist definiert durch
H(X, Y ) = −
X
P (X = x, Y = y) log2 (P (X = x, Y = y))
x,y
wobei x und y in der Summe alle möglichen Werte von X und Y annehmen. Diese Definition
kann auf beliebig viele Zufallsvariablen auf natürliche Weise erweitert werden.
Für zwei Zufallsvariablen X und Y gilt immer H(X, Y ) ≤ H(X) + H(Y ). Das Gleichheitszeichen gilt genau dann, wenn X und Y unabhängig sind.
Beweis:
51
3 Ein wenig Zahlentheorie
Die bedingte Entropie von X für gegebenes Y = y ist definiert durch
X
H(X|Y = y) = −
P (X = x|Y = y) log2 (P (X = x|Y = y))
x
wobei x in der Summe alle möglichen Werte von X annimmt. Die bedingte Entropie von X
gegeben Y ... ist definiert durch
X
H(X|Y ) = −
P (Y = y) H(X|Y = y)
y
wobei y in der Summe alle möglichen Werte von Y annimmt.
Die bedingte Entropie hat folgende Eigenschaften:
(i) H(X|Y ) misst das Mass der Unsicherheit, wenn Y beobachtet wurde.
(ii) H(X|Y ) ≥ 0 und H(X|X) = 0.
(iii) H(X, Y ) = H(X) + H(Y |X) = H(Y ) + H(X|Y ).
(iv) H(X|Y ) ≤ H(X). Gleichheit hat man genau dann, wenn X und Y unabhängig sind.
3.4 Gruppen, Ringe, Körper
Ist auf einer Menge A eine Verknüpfung ◦ so definiert, dass für beliebige a, b ∈ A auch a ◦ b ∈
A gilt und zudem für beliebige a, b, c ∈ A das Assoziativgesetz a ◦ (b ◦ c) = (a ◦ b) ◦ c gilt,
dann nennt man G = (A, ◦) eine Halbgruppe.
Beispiel 3.21. IN0 ist zusammen mit der üblichen Addition + eine Halbgruppe. Dieselbe Menge ist
auch zusammen mit der üblichen Multiplikation · eine Halbgruppe.
IN0 ist aber bezüglich Subtraktion keine Halbgruppe, denn bereits 3 − 4 führt aus IN 0 , da 3 − 4 = −1 ∈
/
IN0 .
∠Z ist sowohl bezüglich + und · eine Halbgruppe: zudem ist ∠Z auch bezüglich der Subtraktion − eine
Halbgruppe!
Eine Halbgruppe G = (A, ◦) ist eine Gruppe, falls
(a) in A ein Neutralelement e existiert, so dass a ◦ e = e ◦ a = a, ∀a ∈ A.
(b) jedes a ∈ A ein Inverses a−1 ∈ A besitzt, so dass a ◦ a−1 = a−1 ◦ a = e.
Gilt in einer Gruppe das Kommutativgesetz, d.h. a ◦ b = b ◦ a ∀a, b ∈ A, dann ist die Gruppe
abelsch oder kommutativ.
Man nennt eine Gruppe zyklisch, wenn es ein Element in dieser Gruppe gibt, welches mit sich
selber (mehrere Male) multipliziert jedes Element der Gruppe ergibt.
52
3 Ein wenig Zahlentheorie
Beispiel 3.22. ∠Z?p ist eine zyklische Gruppe, d.h. es gibt eine Erzeugende g ∈ ∠Z ?p so, dass ∠Z?p 1, g, g 2 , . . . , g p−2 .
Man prüft leicht nach, dass 3 eine Erzeugende von ∠Z ?7 ist!
Dagegen ist 2 keine Erzeugende!
Die Ordnung eines Elements a ∈ ∠Z?p ist die kleinste positive ganze Zahl k mit ak = 1 mod p.
Sie wird mit ordp (a) bezeichnet.
Beispiel 3.23. Man prüft leicht nach, dass ord7 (3) = 6 und ord7 (2) = 3.
Satz 3.11 (Lagrange). Für alle g ∈ ∠Z?p gilt: ordp (g) | (p − 1)
Ein Ring ist eine Menge A versehen mit zwei Operationen + und · so dass
(1) Die Menge A ist bezüglich + eine kommutative Gruppe.
(2) Die Menge A ist bezüglich · eine Halbgruppe.
(3) Es gelten die Distributivgesetze:
a · (b + c) = a · b + a · c
(a + b) · c 0 a · c + b · c
Beispiel 3.24. ∠Z bildet bezüglich der Addition + eine kommutative Gruppe und bezüglich der Mul-
tiplikation · eine Halbgruppe. Zudem gelten die beiden Distributivgesetze: also ist (∠Z, +, ·) ein Ring.
Ein Ring heisst nullteilerfrei wenn a · b = 0 ⇐⇒ a = 0 ∨ b = 0.
Gilt für die Multiplikation das Kommutativgesetz und ist das Neutralelement bezüglich der
Multiplikation 1, dann handelt es sich um einen Integritätsring.
Beispiel 3.25. ∠Z ist ein Integritätsring.
Ein Ring R = (A, +, ·) ist ein Körper, falls die Menge A zusammen mit Multiplikation · eine
Gruppe bildet.
| IR, C
| und ∠
Beispiel 3.26. Q,
Zp (p eine Primzahl) sind Körper.
Man rechnet sehr oft mit Restklassen, d.h. Mengen der Form
∠Zn = {0, 1, 2, . . . , n − 1}
Alle Operationen werden modulo n (n ∈ IN) durchgeführt. Dabei kann man bereits die Zwischenresultate modulo n nehmen oder auch erst das Schlussresultat.
Beispiel 3.27. 3 · 4 · 5 (mod 7).
53
3 Ein wenig Zahlentheorie
Beispiel 3.28. Zeigen Sie, dass gilt:
(a + b)p mod p = (ap + bp ) mod p
Beispiel 3.29. Lösen sie die Aufgaben 13, 14 und 15 auf der Seite 125 im Buch von A. Beutelspacher:
Kryptologie, 6. Auflage!
Tipp für Aufgabe 13:
Wegen
3.5 Primzahlen
Bekanntlich ist p ∈ IN eine Primzahl, falls sie nur durch Eins und sich selber teilbar ist. Man
weiss, dass es unendlich viele Primzahlen gibt: denn es gibt keine grösste Primzahl.
Der Beweis dieser Behauptung verwendet, dass man jede ganze Zahl (bis auf die Reihenfolge)
eindeutig als Produkt von Primzahlen (und Potenzen davon) darstellen kann.
Beispiel 3.30. Es gilt 15 = 3 · 5 oder ein wenig schwieriger:
>
>
ifactor(353901095312345);
(5)(7)^2(23)(127)(43013)(11497)
Der nachfolgende Satz gibt Auskunft über die Anzahl der Primzahlen. Dabei soll π(n) die
Anzahl Primzahlen sein, die kleiner als n ∈ IN sind.
Satz 3.12 (Primzahl Satz). Für grosse n ∈ IN gilt für die Anzahl Primzahlen kleiner als n:
π(n) ≈
n
ln n
(3.9)
Im Rennen nach möglichst grossen Primzahlen führen im Moment die Mersenne Primzahlen (siehe auch das Projekt: G REAT I NTERNET M ERSENNE P RIME S EARCH (GIMPS) unter
mersenne.org. Diese Primzahlen haben die Form 2p − 1 wobei p eine Primzahl ist.
0
0
Die grösste Mersenne Primzahl ist im Moment p13 466 917 − 1: es handelt sich dabei um eine
Zahl mit über 4 Millionen Stellen!
Beispiel 3.31. Wie viele aufeinander folgende Zahlen mit n Stellen müssen typischerweise geprüft werden, bis man eine Primzahl findet?
Lösung: Um mindestens eine Primzahl zu erhalten muss man im Schnitt ln(x) Zahlen in der Nëhe von x
untersuchen!
54
3 Ein wenig Zahlentheorie
n
1020
10100
10500
101000
ln(n)
46
230
1150
2300
3.5.1 Primzahltests
Es ist nicht einfach festzustellen, ob eine bestimme Zahl eine Primzahl ist oder nicht. Typischerweise verwendet man statistische Tests, wie den Lucas-Lehmer-, den Dubois-Selfridgeoder den Miller-Rabin-Test. Diese liefern eine Antwort von der folgenden Art:
• die Zahl ist zusammengesetzt, oder
• die Zahl ist eine Primzahl, oder
• es gibt keinen Grund anzunehmen, dass die Zahl keine Primzahl ist.
Im zweiten Fall ist man absolut sicher, dass die Zahl eine Primzahl ist, während im letzten Fall
mit einer sehr kleinen Wahrscheinlichkeit damit gerechnet werden muss, dass die Zahl trotzdem
zusammengesetzt, d.h. keine Primzahl ist.
Der Fermatsche Test basiert auf dem Satz von Fermat, welcher für eine Primzahl n und 1 ≤
a ≤ n − 1 sofort an−1 ≡ 1 mod n liefert.
Falls jetzt n eine zusammengesetzte Zahl ist, dann nennt man a (1 ≤ a ≤ n − 1) Fermat-Zeuge
(für die Nichtprimalität) von n genannt, falls an−1 6= 1 mod n.
Ein entsprechender Algorithmus basiert auf folgender Idee: wähle t ≥ 1 und ein willkürliches
a (2 ≤ a ≤ n − 1) und teste ob an−1 ≡ 1 mod n gilt. Falls dieser Test für alle Zahlen a erfüllt
ist, deklariert man n als Primzahl.
Als nächstes Beispiel betrachten wir den
Satz 3.13 (Lucas-Lehmer Test). Sei L0 = 4 und Ln = L2n−1 − 2, (n = 1, 2, . . . , p − 2) und
p eine Primzahl grösser 2. Dann ist die Mersennezahl 2p − 1 eine Primzahl genau dann, wenn
Lp−2 ≡ 0 (mod 2p − 1)
(3.10)
Beispiel 3.32. Wir nehmen eine vierstellige Primzahl, z.B. p = 3539, erstellen ein kleines Programm,
welches L3537 berechnet und überprüft, ob diese Zahl teilbar ist durch 2 p − 1.
Lösung: Hausaufgabe!
55
3 Ein wenig Zahlentheorie
Der Miller-Rabin-Test ist ein strong pseudoprime test welcher auf folgender Grundlage basiert:
Falls n eine ungerade Primzahl (n > 2) ist und n − 1 = 2s r mit ungeradem r sowie a irgend
j
eine Zahl mit ggT(a, n) = 1, dann ist entweder ar ≡ 1 mod n oder a2 r ≡ −1 mod n für ein j
((0 ≤ j ≤ s − 1). Die Idee für einen Test liefert das HB of AC, p139.
Die Fehlerwahrscheinlichkeit beim Miller-Rabin-Test ist begrenzt durch (1/4) t .
Neben der obigen Tests gibt es auch echte Primzahltests für beweisbare Primzahlen. Für bestimmte Klassen wie die
• Mersenne-Zahlen von der Form 2s − 1, s ≥ 2 wobei s ∈ IN.
k
• Fermat-Zahlen von der Form 22 + 1, k ∈ IN.
gibt es effiziente Tests um die Primalität zu beweisen! Für Mersenne-Zahlen gibt es den LucasLehmer-Test, welcher auf der Tatsache beruht, dass n = 2s − 1 (s ≥ 3) prim ist, genau dann,
wenn
1. s eine Primzahl ist und
2. die Folge von Zahlen u0 = 4,
uk+1 = (uk 2 − 2) mod n für k ≥ 0
us−1 = 0 erfüllt.
Für andere Zahlen kann die (vollständige oder partielle) Faktorisierung von n − 1 verwendet
werden um die Primalität von n zu beweisen.
Beispiel 3.33. Für Fermat-Zahlen ist die Faktorisierung trivialerweise bekannt.
Dabei macht man sich folgende Tatsache zu Nutze. Sei n ≥ 3 eine ganze Zahl. Dann ist n genau
dann eine Primzahl, falls eine ganze Zahl a existiert, für die gilt:
1. an−1 ≡ 1 mod n und
2. a(n−1)/q ≡ 1 mod n für jeden Primzahlzeiler q von n − 1.
Beweis siehe HB of AC, p 143.
Weitere Tests umfassen
Jacobi Summentest
Elliptische Kurven Test
56
3 Ein wenig Zahlentheorie
3.5.2 Faktorisieren
Viele moderne Chiffrierverfahren sind deshalb sicher, weil es ungeheuer aufwändig ist, grosse
Zahlen zu faktorisieren.
Grundsätzlich kann eine beliebige Zahl faktorisiert werden, indem man
• Trial Division durchführt,
d.h. es wird versucht, die Zahl n sukzessive durch jede Zahl
√
zwischen 2 bis n zu dividieren.
√
• Pollard’s rho Methode (1976) ermöglicht einen ersten Faktor in 2 4 n Schritten zu finden!
• Quadratic Sieve Methode
• Elliptic Curve Sieve Methode
• Number Field Sieve Methode
Die Komplexität (also im Wesentlichen die Anzahl Operationen zum Brechen) verschiedener
Methoden ist in der Tabelle 3.1 dargestellt:
Name
Quadratic Sieve
Elliptic Curve
O(e
O(e
Komplexität
√
2
ln(n) ln (n)
(1+o(1))
√
(1+o(1))
Number Field Sieve O(e(1.92+o(1))
2 ln(n) ln2 (n)
√
3
2
)
))
ln(n)(ln (n))2
))
Tabelle 3.1: Komplexität verschiedener Faktorisierungsmethoden.
Beispiel 3.34. Zur Faktorisierung einer 512-Bit Zahl benötigt der Quadratic Sieve Algorithmus auf
einer 2000 MIPS Workstation (2 109 Befehle pro Sekunde) etwa
√
Also rund 1200 Jahre!
e 355·6
2 109 s · 3.2 107 s/a
≈ 1170a
Beispiel 3.35. Wie lange dauert trial division einer 100-stelligen Zahl, wenn pro Sekunde 10 12 Versuche
gemacht werden und dies von 1012 im Internet?
Lösung: 1066 Jahre! Das Alter des Universums wird auf ca. 10 10 Jahre geschätzt!
Momentan ist eine der grössten Faktorisierten Zahlen mit lauter grossen Faktoren (man kann
also nicht zuerst kleine Faktoren abspalten) die Zahl:
39505874583265144526419767800614481996
02077646030493645413937605157935562652
94506836097278424682195350935443058704
90251995655335710209799226484977949442
955603
57
3 Ein wenig Zahlentheorie
Ihre Faktoren sind die Zahlen
33884958374667213943683932046721815228
15830368604993048084925840555281177
11658823406671259903148376558383270818
13101225814639260043952099413134433416
2924536139
Beispiel 3.36. Kontrollieren Sie das obige Resultat mit Hilfe von Maple indem sie die beiden Faktoren
miteinander multiplizieren und das Resultat mit der ursprünglichen Zahl vergleichen!
3.6 Kryptographische Funktionen
3.6.1 Einwegfunktionen
Eine Einwegfunktion (engl. one-way function ist eine Funktion f : A 7→ B, die effizient berechnet werden kann, deren Umkehrfunktion f −1 : B → A aber nicht existiert, oder nur sehr
mühsam berechnet werden kann.
Beispiel 3.37. Die folgenden Beispiele zeigen Einwegfunktionen:
• Man kann sich vorstellen, dass das Schliessen eines geöffneten Vorhängeschlosses sehr einfach ist,
dass aber das Öffnen des selben (fast) nicht möglich ist, ausser man hat den passenden Schlüssel.
• Das Zerbrechen einer Vase oder einer Glasscheibe ist eine Einwegfunktion. Invertieren bedeutet,
dass man die Splitter wieder zusammenklebt. Dass dabei die optischen Eigenschaften leiden, darf
angenommen werden!
• Verbrennen von Holz oder anderen Brennstoffen ist eine sehr gute Einwegfunktion: nichts kann
dies ungeschehen machen!
• Das Leben (oder die Zeit) ist eine Einwegfunktion: niemand kann zurück in die Vergangenheit und
damit irgend etwas ungeschehen machen!
Genügt eine zusätzliche Information, wie beispielsweise der Besitz des passenden Schlüssels
im obigen Beispiel, um die Umkehrfunktion zu bestimmen, spricht man von einer TrapdoorEinwegfunktion oder einer Einwegfunktion mit Falltür (engl. trap-door). Trapdoor-Einwegfunktion
(engl. trapdoor one-way function) spielen in der Konstruktion von public-key Kryptosystemen
eine wichtige Rolle.
58
3 Ein wenig Zahlentheorie
Die Potenzfunktion mit m = p q ist eine Trapdoor-Einwegfunktion:
f : ∠Zn → ∠Zn , x 7→ f (x) = xb (mod n)
Sie wird, allerdings mit einer anderen Trapdoorinformation, beim RSA-Algorithmus verwendet.
Die Quadratfunktion mit m = p q ist ebenfalls eine Trapdoor-Einwegfunktion:
f : ∠Zn → ∠Zn , x 7→ f (x) = x2 (mod n)
Sie wird häufig im Bereich von Zero-Knowledge Systemen verwendet.
Bei ElGamal muss der Empfänger den diskreten Logarithmus t eines öffentlichen Schlüssels κ
kennen, um den Schlüssel k zum Entschlüsseln berechnen zu können.
Einwegfunktion (mit Falltür) sind Gegenstand aktueller mathematischer Forschungen: es ist
immer noch nicht bewiesen, dass es solche Funktionen gibt. Die bis jetzt gefundenen basieren
die Sicherheit auf dem Faktorisierungsproblem oder dem diskreten Logarthmus Problem, etc!
3.6.2 Hashfunktionen
Eine (kryptographische) Hashfunktion ist eine effizient berechenbare Abbildung h : A →
B, M 7→ H = h(M ) für die |A| >> |B| gilt.
Beispiel 3.38. Beispielsweise könnte
A = Menge aller Bit-Strings endlicher Länge
sein und
B = Menge aller 32-Bit-Strings
Dann gilt für die Funktion f : A → B obige Bedingung auf natürliche Weise!
In der Praxis dienen one-way bzw. kryptographische Hashfunktionen als fingerprints der ursprünglichen Meldung M , welche natürlich eindeutig sein und auch nicht zweimal vorkommen
sollten.
Eine gute, kryptographische Hashfunktion sollte folgende Sicherheits-Eigenschaften aufweisen:
Preimage resistance: Die Hashfunktion h ist eine Einwegfunktion. Es ist also unmöglich
zu einem beliebigen H ∈ B ein M ∈ A zu finden mit h(M ) = H.
Second preimage resistance: Es ist unmöglich zu einem beliebig gegebenen M ein M 0
zu finden so, dass h(M ) = h(M 0 ) gilt.
Kollisionsfreiheit: Es ist sehr schwierig zwei M , M 0 zu finden für die h(M ) = h(M 0 ) gilt
(siehe dazu auch die Geburtstags-Attacke).
59
3 Ein wenig Zahlentheorie
Ist die Hashfunktion h kollisionsfrei, dann erfüllt sie zwangsläufig auch die second preimage
resistance.
Beispiel 3.39. Ist die Hashfunktion nicht kollisionsfrei, dann kann Alice zwei Versionen eines Vertrags
vorbereiten die denselben Hashwert ergeben: der erste Vertrag wird Bob zur (digitalen) Unterschrift
vorgelegt, der zweite enthält einige für Alice sehr vorteilhafte Passagen und wird später gegen den von
Bob signierten Vertrag ausgetauscht. Niemand ausser Alice weiss von diesem Betrug - er ist auch nicht
zu beweisen - ausser Bob wuerde vor der (digitalen) Unterschrift noch einige kleine Änderungen am
Vertrag machen (was man als Lehre aus diesem konstruierten Beispiel mitnehmen kann!).
Beispiel 3.40. Eine Hashfunktion mit einer Länge von 64 Bit ist viel zu kurz, um dem Geburtstags-
Angriff zu widerstehen. Es müssen lediglich (im Schnitt) 2 3 2 verschiedene Texte durchprobiert werden
um zwei Texte mit demselben Hash zu finden.
Bei einer Länge des Hashes von 160 Bit muss man dagegen im Schnitt 2 80 Text durchprobieren, was doch
nicht mehr so praktikabel ist!
Übung: ...
Praktisch wird kann eine Hashfunktion h auf verschiedene Arten realisiert werden:
• Mittels Iteration einer Rundenfunktion wie die in jeder Runde n-Bits bearbeitet, daraus
m-Bits berechnet, welche zusammen mit den folgenden n-Bits verarbeitet werden. Einige
Beispiele zeigt die folgende Tabelle
Hashfunktion
MD4, MD5, RIPEMD-128
SHA-1, RIPEMD-160
60
n
m
512 128
512 160
3 Ein wenig Zahlentheorie
• Mittels eines Block Ciphers wie DES, AES, etc.
Beispiel 3.41. Der Geburtstags-Angriff (engl. birthday attack) ist ein Angriff auf Hash-Funktionen.
Nehmen wir an, H ist eine Funktion mit m möglichen Funktionswerten (die wir uns als Zellen vorstellen)
welche völlig zufällig sein sollen (wie bei einer guten Hash-Funktion). H wird nun k mal ausgewertet.
Jedes Mal wird in die entsprechende Zelle ein Ball geworfen. Die gesamte Anzahl Möglichkeiten, die k
Bälle auf die m Zellen zu verteilen ist m k . Falls nie zwei Bälle in der selben Zelle liegen sollen, kann der
erste Ball in eine von m Zellen geworfen, werden, der zweite Ball in eine der noch verbleibenden m − 1
Zellen, usw.
Die Wahrscheinlichkeit, dass nie zwei Bälle in der selben Zelle liegen ist gegeben durch
P (m, k) =
Anzahl günstige Fälle
m(m − 1)(m − 2) · · · (m − k + 1)
=
Anzahl mögliche Fälle
mk
und daraus ergibt sich die Wahrscheinlichkeit, dass mindestens in einer Zelle zwei Bälle liegen zu:
(m − 1)(m − 2) · · · (m − k + 1)
1
2
k−1
P (m, k) = 1 −
=
1
−
1
−
1
−
·
·
·
1
−
mk−1
m
m
m
Wegen
1 − x < e−x ,
für 0 < x < 1
hat man dann nach kurzer Rechung:
P (m, k) > 1 − e−k(k−1)/(2m) .
√
Wird also die Funktion H mehr als k = 1.1774 · m evaluiert, so ist die Währscheinlichkeit für eine
Kollision grösser
als 1/2. Wenn also m = 2 n , dann muss man die Funktion H lediglich mehr als
p
(
k = 1.17 · 2 n/2) evaluieren um mit einer Wahrscheinlichkeit von mehr als 50 Prozent eine Kollision
zu erzeugen!
61
3 Ein wenig Zahlentheorie
[1]
62
Literaturverzeichnis
[1] J. F. Bürgler, R. E. Bank, W. Fichtner, and R. K. Smith. A New Discretization Scheme for
the Semiconductor Current Continuity Equations. IEEE Trans. CAD, 8(5):479–89, 1989.
63
Kryptologie (Version 20041119)
Josef F. Bürgler
19. November 2004
Inhaltsverzeichnis
4 Symmetrische Kryptographie
4.1 Block-Chiffren . . . . . . . . . . . . . . . . . . . .
4.1.1 Feistel-Netzwerk . . . . . . . . . . . . . . .
4.1.2 Der Data Encryption Standard (DES) . . . .
4.1.3 Blowfish . . . . . . . . . . . . . . . . . . .
4.1.4 IDEA . . . . . . . . . . . . . . . . . . . . .
4.1.5 RC2 . . . . . . . . . . . . . . . . . . . . . .
4.1.6 RC5 . . . . . . . . . . . . . . . . . . . . . .
4.1.7 RC6 . . . . . . . . . . . . . . . . . . . . . .
4.1.8 Twofish . . . . . . . . . . . . . . . . . . . .
4.1.9 AES . . . . . . . . . . . . . . . . . . . . . .
4.1.10 Weitere Block-Chiffren . . . . . . . . . . . .
4.1.11 Vergleich verschiedener Block-Chiffren . . .
4.1.12 Design von Block-Chiffren . . . . . . . . . .
4.1.13 Betriebsmoden von Block-Chiffren . . . . .
4.1.14 Vor- und Nachteile der verschiedenen Moden
4.1.15 Anwendung von Block-Chiffren . . . . . . .
4.2 Strom-Chiffren . . . . . . . . . . . . . . . . . . . .
4.2.1 RC4 . . . . . . . . . . . . . . . . . . . . . .
Literaturverzeichnis
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
62
62
62
63
72
74
74
74
74
76
78
79
79
79
80
88
89
90
92
95
ii
4 Symmetrische Kryptographie
Die Symmetrische Kryptographie (engl: private-key cryptography) befasst sich mit der von
Alters her gewohnten Methode des Ver- und Entschlüsselns mit einem einzigen, jedem Kommunikationspartner bekannten Schlüssel.
Grundsätzlich unterscheidet man zwischen Block- und Strom-Chiffren (engl: block and stream
ciphers). Im ersten Fall wird die Nachricht in gleich grosse Blöcke von Zeichen, oder Bits
(typischerweise 64 oder 128 Bit) zerlegt und jeder Block als Gesamtes verschlüsselt. Im zweiten
Fall wird jedes Zeichen, oder Bit einzeln verschlüsselt.
4.1 Block-Chiffren
4.1.1 Feistel-Netzwerk
Viele heutige Produktalgorithmen sind Feistel-Netzwerke (Horst Feistel, IBM, 70-er Jahre).
Dabei wird der Input (Klartext-Block) in zwei gleich grosse Hälften Li−1 (links) und Ri−1
(rechts) zerlegt. Die rechte Hälfte Ri−1 wird durch die Funktion f transformiert und das Resultat
zusammen der linken Hälfte Li−1 ge-XORt. Das Resultat ist die neue rechte Hälfte Ri . Die neue
linke Hälfte Li wird exakt gleich der alten rechten Hälfte Ri−1 (siehe Abbildung 4.1).
Mathematisch ausgedrückt hat man:
Li = Ri−1
Ri = Li−1 ⊕ f (Ri−1 , Ki )
(4.1)
(4.2)
Der Index i deutet es bereits an: normalerweise werden mehrere Runden verwendet (bei DES
beispielsweise 16). Die Funktion f ist normalerweise nicht konstant, d.h. sie hängt typischerweise von einem Rundenschlüssel Ki ab: dieser wiederum wird von einem geheimen Schlüssel
erzeugt.
Neben der Einfachheit gibt es noch einen anderen, sehr grossen Vorteil des Feistelnetzwerks:
die Funktion f braucht nicht invertierbar zu sein! Trotzdem ist es möglich, aus dem Geheimtext
(Li , Ri ) den Klartext (Li+1 , Ri+1 ) zu berechnen.
Wegen (x ⊕ z) ⊕ z = x und Gleichung (4.2) hat man nämlich sofort:
Li−1 = Li−1 ⊕ f (Ri−1 , Ki ) ⊕ f (Ri−1 , Ki )
= Ri ⊕ f (Ri−1 , Ki )
Ri−1 = Li
62
(4.3)
(4.4)
4 Symmetrische Kryptographie
Abbildung 4.1: Eine einzelne Runde eines Feistel Netzwerks.
Mit Hilfe der Gleichungen (4.3) und (4.4) kann man also aus dem Geheimtext sofort den Klartext berechnen, vorausgesetzt man kennt die Funktion f und diese kennt man dann, wenn man
den Schlüssel kennt!
Bei einem n-Runden Verfahren hat man nacheinander:
Rn−1 = Ln
Ln−1 = Rn ⊕ f (Rn−1 , Kn )
..
.
R0 = L 1
L0 = R1 ⊕ f (R0 , K1 )
Dabei wurde den unterschiedlichen Rundenschlüsseln Ki Rechnung getragen!
Beispiele von Feistel-Netzwerken sind DES, 3DES, XDES, Blowfish, Twofish, CAST-128, FEAL, etc.
4.1.2 Der Data Encryption Standard (DES)
1973 Öffentliche Ausschreibung durch das NBS (National Bureau of Standards - heute NIST).
Es soll ein standardisiertes, sicheres Verschlüsselungssystem entwickelt werden!
63
4 Symmetrische Kryptographie
1974 Ein IBM-Team (Horst Feistel und Don Coppersmith) reichte einen Vorschlag ein, der auf
dem IBM-Projekt Lucifer basierte.
1975 Das NSA (National Security Agency) beurteilte den Algorithmus und ändert ihn leicht
ab (S-Boxen 1 , evt. Verkürzung der Schlüssellänge von 128 auf 56 Bit). Man war sich
nie sicher, ob damit die NSA eine Hintertür einbaute, oder ob allenfalls IBM selber eine
solche einbauen wollte. Erst spätere Untersuchungen zeigten, dass beide ehrlich waren!
1976 wurde DES zum öffentliche Verschlüsselungs-Standard erklärt.
DES wurde bis in die späten 90-er Jahre in vielen kommerziellen wie auch militärischen Kommunikationssystemen eingesetzt. Mit DES wurde erstmals ein Verschlüsselungsalgorithmus einer breiten Öffentlichkeit vorgestellt. Dadurch konnte er eingehend untersucht werden. Die einzige (bekannte) Schwäche war schliesslich die begrenzte Schlüssellänge, welche brute forceAngriffe durchführbar macht.
In der Enigma wurde eine Folge von Permutationen benutzt, die für sich betrachtet sehr einfach
waren, in der Kombination aber höchst komplex. Realisiert wurden diese durch mechanische
Räder. Anders in DES: hier werden Microchips und Programme (Software) verwendet. Verarbeitet werden Bits und Bytes, welche man beispeilsweise durch geeignete Kodierung erhält.
DES ist eine Block-Chiffre, die auf 64-Bit Blöcken arbeitet und einen 56-Bit Schlüssel verwendet. Im Wesentlichen wird zum Ver- und Entschlüsseln der selbe Algorithmus verwendet: lediglich die Rundenschlüssel werden in umgekehrter Reihenfolge benutzt! Die DES-Transformation
kann vereinfacht geschrieben werden als
C = IP −1 (F (IP (M, K)) .
Dabei ist F eine Transformation, die sich aus Permutationen und Substitutionen zusammensetzt.
Man weiss nichts über den Sinn der beiden (zueinander inversen) Permutationen IP und IP −1 :
für die Sicherheit von DES sind sie auf jeden Fall irrelevant.
DES verwendet ein Feistel-Netzwerk mit 16 Runden wie in Abb. 4.2 gezeigt.
Wir werden im Folgenden detailliert eingehen auf die Funktion f und die Erzeugung der Rundenschlüssel Ki . Dazu betrachten wir eine beliebige der 16 Runden. Man kann sich dies als
Kaskade von Wasserfällen vorstellen wobei diese im Falle von DES die folgenden Funktionen
ausführen können:
• Permutationen
• Linksverschiebungen
• Substitutionen (Ersetzungen)
1
Die Entwurfskriterien der S-Boxen wurden 1990 nach der differenziellen Kryptanalyse durch Bahim und Shamir
veröffentlicht. Ziel war die maximale Immunität gegen differenzielle Kryptanalyse, ein Angriff, den sowohl
IBM wie auch die NSA bereits beim Entwurf kannten.
64
4 Symmetrische Kryptographie
Abbildung 4.2: Die 16 Runden von DES.
In der Abb. 4.3 erkennt man rechts die Erzeugung des Rundenschlüssels. In der Mitte erkennt
man die Funktion f , bestehend aus der Expansions-Permutation, mit nachfolgender XORVerknüpfung mit dem Rundenschlüssel, gefolgt von der S-Box Substitution (dem Kernstück
von DES) und einer anschliessenden P-Box Permutation.
Vor dem XOR mit dem jeweiligen Rundenschlüssel Ki wird die rechte Seite Ri−1 von 32 Bit
auf 48 Bit mittels der folgenden Expansions-Permutation erweitert:
Anschliessend wird das Resultat, wie bereits erwähnt, mit dem Rundenschlüssel K i ge-XOR-t
und den S-Boxen übergeben.
65
4 Symmetrische Kryptographie
Abbildung 4.3: Eine Runde von DES.
32 1 2 3
8 9 10 11
16 17 18 19
24 25 26 27
4 5 4 5
6 7 8 9
12 13 12 13 14 15 16 17
20 21 20 21 22 23 24 25
28 29 28 29 30 31 32 1
Tabelle 4.1: DES Expansions-Permutation.
Die S-Boxen führen Substitutionen aus, sind nicht linear und liefern wie kein anderes Element
die Sicherheit von DES. Sie sind gemäss der Abb. 4.4 parallel angeordnet, übernehmen als Input
48 Bit aufgeteilt in 8 S-Boxen die jeweils 6 Bit annehmen. Jede S-Box transformiert diese 6 Bit
in 4 Bit. Alle 8 S-Boxen produzieren also 32 Bit als Output.
Die acht DES S-Boxen sind in den Tabellen 4.2 und 4.3 aufgelistet.
Beispiel 4.1. Die S-Boxen werden wie folgt verwendet. Wir betrachten als Beispiel die S-Box S 1 und
nehmen an, dass der Input das 6-Tupel 101000 sei. Das erste und letzte Bit sind 10, was die binäre
Darstellung von 2 ist und was als Zeilenindex in der S-Box verwendet wird, wobei wir berücksichtigen,
dass die Nummerierung mit 0 beginnt! Die mittleren vier Bits sind 0100 was der binären Darstellung
von 4 enspricht und den Spaltenindex in der S-Box liefert. Der entsprechende Eintrag in der S-Box ist
13, was in binärer Darstellung 1101 ist.
Also liefert der Input 101000 den Output 1101!
66
4 Symmetrische Kryptographie
Abbildung 4.4: Die 8 S-Boxen von DES.
Jede Zeile der acht S-Boxen ist eine Permutation der Zahlen 0, 1, . . . , 15. Vermutlich wurden
hier Permutationen gewählt, für die ein gewisser Abstand (z.B. die Summe der Beträge der
jeweiligen Elemente) maximal ist.
Die einzelnen Rundenschlüssel Ki werden aus dem eigentlichen 64-Bit Schlüssel wie folgt
berechnet:
• Zuerst wird jedes 8. Bit ignoriert (welches normalerweise für Paritätschecks eingesetzt
wird). Die effektive Schlüssellänge ist also 56 Bit. Gewisse schwache Schlüssel (siehe
weiter unten), dürfen natürlich nicht verwendet werden.
• Für jede Runde wird nun ein 48-Bit Schlüssel erzeugt. Dazu wird zuerst der 56-Bit
Schlüssel in zwei Hälften von 28-Bit zerlegt. Dann werden diese Hälften bei jeder Runde
zyklisch um eine gewisse Anzahl Bits nach links geshiftet (siehe Tabelle 4.4).
• Nach dem Shiften werden aus den 56 Bit deren 48 ausgewählt. Diese Operation wird
Kompressions-Permutation genannt und ist in der Tabelle 4.5 definiert.
• Durch die Shift-Operation wird in jeder Runde eine andere Teilmenge von Schlüsselbits
verwendet. Zudem wurden nach 16 Runden alle Schlüsselbits verwendet!
Abbildung 4.1 zeigt, dass beispielsweise das 33. Bit an die 35. Stelle geschrieben wird. Das 18.
Bit dagegen wird ignoriert. Also entsteht dadurch eine Kompressions-Permutation. Schliesslich
hat dies zur Folge, dass jedes Bit in 14 von total 16 Rundenschlüsseln vorkommt!
Da die initiale (IP ) und die finale Permutation IP −1 keinen Einfluss auf die Sicherheit von
DES haben, wollen wir sie hier nur in der Abb. 4.6 aufführen und nicht weiter kommentieren!
Verschiedene Software-Implementationen von DES lassen diese beiden Permutation aus Effizienzgründen weg. Es wird vermutet, dass sie verwendet werden um das Beladen der Register
auf einem 8-Bit oder 32-Bit Bus/Computer zu beschleunigen.
67
4 Symmetrische Kryptographie
S1
14 4
0 15
4 1
15 12
13
7
14
8
1 2 15
4 14 2
8 13 6
2 4 9
15 1
3 13
0 14
13 8
8 14 6 11
4 7 15 2
7 11 10 4
10 1 3 15
10 0
13 7
13 6
1 10
9 14
0 9
4 9
13 0
7 13
13 8
10 6
3 15
14
11
9
0
6 3
3 4
8 15
6 9
3 0 6
5 6 15
0 12 11
6 10 1
11 8 3 10
13 1 10 6
2 11 15 12
1 7 5 11
S2
3 4 9 7
8 14 12 0
13 1 5 8
4 2 11 6
S3
15 5 1 13
6 10 2 8
3 0 11 1
8 7 4 15
S4
9 10 1 2
0 3 4 7
7 13 15 1
13 8 9 4
6 12 5
12 11 9
9 7 3
3 14 10
9
5
10
0
0 7
3 8
5 0
6 13
2 13 12
1 10 6
12 6 9
7 12 0
0
9
3
5
5 10
11 5
2 15
14 9
12 7 11
5 14 12
2 12 5
14 3 11
4
2 8
11 15 1
10 14 7
5
2 12
8 5 11
2 12 1
3 14 5
5 11 12
12 4 15
10 14 9
2
8 4
7
2 14
Tabelle 4.2: DES S-Boxen S1 bis S4 .
Beispiel 4.2. Die initiale Permutation IP bewirkt, dass das 1.Bit auf das 58. abgebildet wird. Die finale
Permutation IP −1 bewirkt, dass das Bit Nummer 58 wieder auf das 1. Bit abgebildet wird!
Nachdem die obige Prozedur doch recht kompliziert ist, erwartet man, dass die Entschlüsselung
von DES ebenfalls kompliziert ist. Es ist aber nicht so: man kann dieselbe Hardware und auch
Software verwenden wie zum Verschlüsseln. Der einzige Unterschied ist der, dass die Rundenschlüssel in umgekehrter Reihenfolge verwendet werden müssen. Der Algorithmus, welcher die
zum Entschlüsseln benötigten Rundenschlüssel liefert, verwendet statt Links- einfach RechtsShift Operationen: die Tabelle 4.4 wird dabei in umgekehrter Richung durchlaufen!
(Fast) jeder (symmetrische) Verschlüsselungsalgorithmus hat gewisse schwache Schlüssel: bei
DES sind es diejenigen, bei denen eine (oder beide) Schlüsselhälften (der Länge 28 Bit) entweder Null oder Eins sind. Denn dann ist jeder Rundenschlüssel identisch, d.h. man hat faktisch
lediglich ein 1-Runden DES!
Zudem gibt es gewisse halb-schwache Schlüssel, die wir hier nicht aufführen wollen!
Weitere Diskussionspunkte:
• Komplement des Schlüssels K sei K (und analog für P und C), dann gilt:
E(P, K) = C
E(P , K) = C
68
4 Symmetrische Kryptographie
S5
2 12
14 11
4 2
11 8
4 1 7 10
2 12 4 7
1 11 10 13
12 7 1 14
12 1
10 15
9 14
4 3
10 15
4 2
15 5
2 12
4 11
13 0
1 4
6 11
2 14 15
11 7 4
11 13 12
13 8 1
13 2
1 15
7 11
2 1
8
13
4
14
9 2
7 12
2 8
9 5
0
9
3
4
4 6 15
8 10 3
1 9 12
7 4 10
11 6 8 5
13 1 5 0
7 8 15 9
2 13 6 15
S6
6 8 0 13
9 5 6 1
12 3 7 0
15 10 11 14
S7
8 13 3 12
1 10 14 3
7 14 10 15
10 7 9 5
S8
11 1 10 9
7 4 12 5
14 2 0 6
8 13 15 12
3 15 13
15 10 3
12 5 6
0 9 10
3 4 14
13 14 0
4 10 1
1 7 6
9 7 5
5 12 2
6 8 0
0 15 14
3 14 5
6 11 0
10 13 15
9 0 3
0
9
3
4
14 9
8 6
0 14
5 3
7
5 11
11 3 8
13 11 6
0
8 13
10
15
5
2
6 1
8 6
9 2
3 12
0 12 7
14 9 2
3
5 8
5
6 11
Tabelle 4.3: DES S-Boxen S5 bis S8 .
Runde
1 2
Anzahl Bits 1 1
3 4
2 2
5 6 7
2 2 2
8 9
2 1
10 11 12
2 2 2
13 14 15 16
2
2 2 1
Tabelle 4.4: Anzahl Bits des Key-Shifts bei jeder DES-Runde.
14
23
41
44
17
19
52
49
11 24
12 4
31 37
39 56
1 5 3 28
26 8 16 7
47 55 30 40
34 53 46 42
15 6 21
27 20 13
51 45 33
50 36 29
10
2
48
32
Tabelle 4.5: DES Kompressions-Permutation.
• Bilden die DES-Transformationen eine Gruppe? Diese Frage wurde erst 1992 beantwortet: DES bildet keine Gruppe!
• Wie schnell ist DES (in Hard-/Software)?
• Warum genau dieses Design der S-Boxen? Gründe sind beispielsweise:
– Output-Bits nicht nahe bei einer linearen Funktion der Input-Bits.
69
4 Symmetrische Kryptographie
58
62
57
61
50
54
49
53
42
46
41
45
34
38
33
37
26
30
25
29
18
22
17
21
10
14
9
13
40
38
36
34
8
6
4
2
48
46
44
42
16
14
12
10
56
54
52
50
24
22
20
18
64
62
60
58
IP
2 60
6 64
1 59
5 63
IP −1
32 39
30 37
28 35
26 33
52
56
51
55
7
5
3
1
44
48
43
47
36
40
35
39
28
32
27
31
20
24
19
23
12
16
11
15
4
8
3
7
47 15 55
45 13 53
43 11 51
41 9 49
23
21
19
17
63
61
59
57
31
29
27
25
Tabelle 4.6: Initiale und finale Permutation bei DES.
– Wenn die Input-Bits sich um ein Bit unterscheiden, dann müssen sich die OutputBits um mind. zwei Bits unterscheiden.
• Warum genau 16 Runden?
Wegen der kurzen Schlüssellänge, der Einfachheit des DES-Verfahrens, und der grossen Bekanntheit, wurden verschiedene DES-Varianten entwickelt:
Triple-DES (3DES) Eine immer noch weit verbreitete Methode ist 3DES bei der zuerst mit
einem Schlüssel K1 verschlüsselt, danach mit einem Schlüssel K2 entschlüsselt und schliesslich
wieder mit einem Schlüssel K3 verschlüsselt wird: die Verschlüsselung lautet also
(DES
(P
))
,
C = DESK3 DES−1
K
1
K2
während die Entschlüsselung definiert ist durch
−1
P = DES−1
K1 DESK2 DESK3 (C)
Eine Variante von 3DES verwendet K3 = K1 .
.
3DES reduziert sich für K1 = K2 = K3 zu DES und ist dadurch zu DES kompatibel verwendbar.
Es gibt verschiedene weitere Verbesserungen von DES: xDES, DES mit alternierenden SBoxen, RDES, sn DES (optimal sichere S-Boxen gegen differentielle 2 und lineare 3 Kryptanalyse), DES mit schlüsselabhängigen S-Boxen, NewDES, etc.
2
Hier werden Paare von Geheimtexten (C, C + ∆0 ) betrachtet, deren korrespondierende Klartextpaare (P, P +
∆) eine ganz bestimmte Differenz ∆ aufweisen. Man hofft mit Hilfe ähnlicher Paare von Klartexten und
zugehörigen Geheimtexten Schwächen im Verschlüsselungsalgorithmus aufdecken zu können.
3
Es wird versucht mit Hilfe der in erster Ordnung linearen statistischen Relationen zwischen Klar-, Geheimtext
und Schlüssel die Schwächen im Verschlüsselungsalgorithmus zu entdecken.
70
4 Symmetrische Kryptographie
Da DES keine Gruppe bildet, ist Triple-DES nicht einfach wieder eine gewöhnliche DESVerschlüsselung. Deshalb kann durch mehrmaliges Anwenden von DES mehr Sicherheit gewonnen werden. Bei Triple-DES mit zwei verschiedenen Schlüsseln K 1 und K2 hat man eine
effektive Schlüssellänge von 112 Bit, was heute noch weit ausserhalb des Bereiches liegt, den
man mit Brute-Force erreichen kann.
Abbildung 4.5: Triple-DES.
Weitere Verbesserung von DES Es gibt verschiedene weitere Verbesserungen von DES:
xDES, DES mit alternierenden S-Boxen, RDES, sn DES (optimal sichere S-Boxen gegen differentielle und lineare Kryptanalyse), DES mit schlüsselabhängigen S-Boxen, NewDES, etc.
Weiter führende Links zum Thema rund um DES:
Zweiseitiger Angriff Bei DES kann ein zweiseitiger Angriff durchgeführt werden.
1991 Biham und Shamir führen den ersten (öffentlich bekannten) Angriff mit Hilfe differentieller Kryptoanalyse durch. Es handelt sich dabei um einen Angriff mit gewähltem Klartext. Dabei sammelt der Angreifer rund 247 Klar-/Geheimtext Paare verschlüsselt mit dem
gesuchten Schlüssel. Die Klartexte werden in Paaren angeordnet wobei Differenz (XOR)
eine Konstante sein soll: die korrespondierenden Differenzen in den Geheimtexten werden dann verwendet, um Informationen zum Schlüssel zu erhalten. Offensichtlich war
diese Methode bereits den Entwicklern von DES bekannt, welche die S-Boxen darauf
ausgerichtet haben.
ab 1990 erste Angriffe mit Hilfe linearer Kryptoanalyse, zum ersten Mal verwendet von Mitsuru Matsui, welcher in etwa 50 Stunden einen DES-Schlüssel finden konnte. Dabei wird
mit Hilfe bekannter Klar-/Geheimtext Paare, bei denen der Klartext frei gewählt wird,
statistische Information über den Schlüssel gewonnen.
1997 DES-Challenge mit tausenden von Rechnern während rund vier Monaten. Dies ist ein
Angriff, der die kurze Schlüssellänge ausnutzt!
71
4 Symmetrische Kryptographie
Six ways to break DES (http://lasecwww.epfl.ch/memo_des.shtml) beschreibt
die Angriffe: vollständige Schlüsselsuche, mit spezieller DES-Hardware, mit einer grossen Anzahl Computer (http://distributed.net), mit Hilfe von Time-Memory
tradeoff, mit differentieller Kryptanalyse und mit linearer Kryptanalyse.
Das z.B. in Win2k eingesetzte DESX verwendet vor und nach der eigentlichen Verschlüsselung
durch DES (mit dem üblichen 56 Bit Schlüssel) eine XOR-Verknüpfung mit je einem 64-BitSchlüssel.
4.1.3 Blowfish
Blowfish ist eine DES-ähnliche BlockChiffre mit 16-Runden, die auf 64-bit Blöcken arbeitet
und Schlüssellängen von 32 bis 448 Bit erlaubt. Es handelt sich dabei um ein Feistelnetzwerk.
Jede Runde besteht
• aus einer Schlüsselabhängigen Permutation und
• aus einer Schlüssel und Datenabhängigen Substition
Als Operationen werden Addition und XOR-Verknüpfung von 32-Bit Wörtern verwendet. Daneben werden Tablelookups (insgesamt 4) auf 32-Bit Operanden gemacht. Die Rundenschlüssel
werden vor der Ver- bzw. Entschlüsselung berechnet.
Blowfish benötigt etwa 5 KByte RAM und benötigt auf einem 32-Bit Microcontroller lediglich
26 Clockzyklen pro Byte (und ist damit wesentlich schneller als DES).
Da die Schlüssel-Expansionsphase sehr aufwändig ist, sollte die Chiffre nicht eingesetzt werden, wenn der Schlüssel sehr oft gewechselt wird: für den Einsatz in Kommunkationslinks und
zur Verschlüsselung von grossen Datenmengen (mit dem selben Schlüssel) ist der Algorithmus
aber sehr schnell und deshalb sehr gut geeignet.
72
4 Symmetrische Kryptographie
siehe Wobst, Abb. 5.24, p252!
Gruppenarbeit!
73
4 Symmetrische Kryptographie
4.1.4 IDEA
An der ETHZ entwickelt und von ASCOM patentiert: verwendet einen 128-Bit Schlüssel. Verwendet die folgenden Operationen um Konfusion und Diffusion zu erreichen:
• XOR.
• Addition modulo 216 .
• Multiplikation modulo 216 + 1 (entspricht den S-Boxen).
4.1.5 RC2
RC steht für Rivest-Code, d.h. Verschlüsselungsalgorithmus von Ronald Rivest (einer der Entwickler von RSA).
4.1.6 RC5
RC5 ist ein Fistel-Netzwerk von 16 Runden, wobei
L = ((L ⊕ R) <<< R) ⊕ Ki
und x <<< y eine Linksrotation von x um die Anzahl Bits spezifiziert durch LSB(y) darstellt.
Schliesslich ist Ki der Schlüssel in der Runde i. Die Erzeugung dieser Rundenschlüssel wird
hier nicht spezifiert: sie kann z.B. in Abenteuer Kryptographie von Reinhard Wobst abgeschrieben werden.
Falls die Zeit für die Rotation abhängig ist von der Anzahl Bits um die verschoben wird, dann ist
RC5 anfällig auf timing attacken. RC5 ist sehr einfach und parametrisierbar (bezüglich Schlüssellänge und Anzahl Runden), ist aber resistent gegen bekannt linear und differentielle Angriffe.
4.1.7 RC6
RC6 war einer der fünf Finalisten im Wettbewerb um den AES. Er ist ein modifiziertes Feistelnetzwerk mit typischerweise 20 Runden.
Der Algorithmus lässt sich sehr einfach wie folgt beschreiben:
• Aus dem b-Byte Schlüssel k werden 2(r + 2) Teilschlüssel S0 , S1 , . . . , S2r+3 zu 32 Bit
erzeugt (Details weiter unten).
• Der 128-Bit Klartextblock wird in vier 32-Bit Blöcke A, B, C und D zerlegt.
74
4 Symmetrische Kryptographie
Abbildung 4.6: IDEA (International Data Encryption Algorithm).
• Setze
B = B + S0
D = D + S1
75
4 Symmetrische Kryptographie
• In der i-ten Runde (i = 1, 2, . . . , r) wurd gesetzt:
t
u
A
C
(A, B, C, D)
=
=
=
=
=
(B(2B + 1)) <<< 5
(D(2D + 1)) <<< 5
((A ⊕ t) <<< u) + S2i
((C ⊕ u) <<< t) + S2i+1
(B, C, D, A)
Das letzte ist eine zyklische Vertauschung der vier Wörter. Dabei bezeichnet A <<< B
die Linksrotation von A um B Bits. Multiplikationen und Additionen werden modulo 2 32
ausgeführt.
• Nach der letzten Runde setzt man
A = A + S2r+2
C = C + S2r+3
• Die Schlüsselgenerierung ist analog zu RC5.
4.1.8 Twofish
Twofish war einer der fünf Finalisten im Wettbewerb um den AES. Er verwendet ein Feistelnetzwerk mit 16 Runden und es kommen Withening (von DESX), schlüsselabhängige S-Boxen
(wie bei Blowfish), MDS-Matrizen (von Square), pseudo Hadamard Transformationen (wie bei
Safer) und feste Relationen zum Einsatz. Es wird bereits in verschiedenen Produkten eingesetzt
(gnupg, kryptographische Filesysteme, etc.)
Es handelt sich um eine 128-Bit Blockchiffre mit variabler Schlüssellänge bis zu 256 Bit.
• 128-Bit Blöcke
• 128-, 192-, or 256-Bit Schlüssel
• 16 Runden
• Arbeitet in allen Standard Betriebsmoden.
• Verschlüsselt Daten in 18 Clockzyklen pro Byte auf einem Pentium und in 16.1 Clockzyklen pro Byte auf einen Pentium Pro.
• Effizientes Aufsetzten des Schlüssels auf grossen Mikroprozessoeren.
• Effizient in Harndware (Smart Cards)
• Ausführlich kryptoanalytisch analisiert.
76
4 Symmetrische Kryptographie
• Nicht Patentiert
• Nicht geschützt durch Copyright
• Frei
Weitere Information im http://www.counterpane.com/twofish.pdf.
Gruppenarbeit!
77
4 Symmetrische Kryptographie
4.1.9 AES
Der Advanced Encryption Standard (AES) sollte als Ablösung von DES folgende Anforderungen erfüllen:
• Blockgrösse von 128 Bit
• Schlüssellängen von 128, 192 und 256 Bit
• Mindestens so schnell wie 3DES.
Nachdem anfänglich 15 Kandidaten im Spiel waren wurden nach einer ersten Runde noch 5
näher analysiert. Schliesslich wurde Rijndeal im Oktober 2000 als AES ausgewählt.
Bei AES handelt es sich um ein SP-Netzwerk (Substitution/Permutation) mit 10, 12 bzw. 16
Runden.
siehe http://www.cryptolabs.org/aes/WeisLucksAESattacksDS1202.html
und Wobst, p230.
Gruppenarbeit!
Es gibt erfolgreiche Angriffe auf 6-Runden AES mit der KomplexitÃd’t 2 32 im erforderlichen
Speicherplatz und 263 in der benÃűtigten Zeit. VollstÃd’ndiges AES verwendet 10, 12 oder 14
Runden abhÃd’ngig von der SchlÃijssellÃd’nge und der BlockgrÃűsse: es gibt keine bekannte
Angriffe auf diesen Typ. Bruce Schneier erwartet einen erfolgreichen Angriff auf 10-Runden
AES innerhalb der Lebensdauer (30 Jahre) von AES!
78
4 Symmetrische Kryptographie
4.1.10 Weitere Block-Chiffren
Lucifer, FEAL, LOKI, GOST, CAST, SAFER, etc.
Dass eine schlechte Wahl von Passphrasen problematisch ist zeigt auch das in Blowfish eingebaute Verfahren, zu kurze Passphrasen einfach zu wiederholen: wählt also jemand das Passwort
asdfasdf und verschlüsselt irgend einen Text, so kann er diesen mit dem Passwort asdf
entschlüsseln.
4.1.11 Vergleich verschiedener Block-Chiffren
Algorithm
DES
3DES
IDEA
FEAL-32
Blowfish
AES
Twofish
Square
RC5-32/16
CAST-128
Serpent
SAFER (S)K-128
Key Length Width (bits) Rounds Cycles
56
64
16
8
112
64
48
24
128
64
8
8
64, 128
64
32
16
variable
64
16
8
128, 192, 256
128
12-16
...
variable
128
16
8
128
128
8
8
variable
64
32
16
128
64
16
8
128, 192, 256
128
32
32
128
64
8
8
Clocks/Byte
43
116
74
65
19.8
...
18.1
20.3
24.8
29.5
45
52
Tabelle 4.7: Vergleich versch. Block-Chiffren
(siehe http://www.schneier.com/twofish-performance.html)
4.1.12 Design von Block-Chiffren
Shannon hat vor über 50 Jahren als erster die Prinzipien Konfusion (Verwirrung) und Diffusion
(Ausbreitung) beschrieben: sie bilden auch heute noch die Eckpfeiler guter Block-Chiffren.
Konfusion wird verwendet, um irgend welche Beziehungen zwischen Klartext, Geheimtext und
Schlüssel zu verschleiern. Denn lineare, wie auch differentielle Kryptoanalyse fördern jede noch
so kleine Beziehung dieser Teile zu Tage. Gute Konfusion verunmöglicht auch die Benutzung
von statistischen Methoden!
Diffusion verteilt den Einfluss eines bestimmten Klartext- oder Schlüssel-Bits auf möglichst
viele Bits im Geheimtext! Dadurch werden statistische Beziehungen verschleiert was die Kryptoanalyse erheblich erschwert.
79
4 Symmetrische Kryptographie
Block-Chiffren mischen abwechslungsweise Konfusion mit Diffusion. Man spricht deshalb
auch von einem Substitutions-Permutations-Netzwerk oder einem SP-Netzwerk. Verschlüsselungsalgorithmen dieser Art werden Produkt-Chiffren genannt.
Wie bereits früher erwähnt sind Block-Chiffren meistens Feistel-Netzwerke: dies vor allem
wegen der Einfachheit und Effizienz.
4.1.13 Betriebsmoden von Block-Chiffren
Die eben beschriebenen Block-Chiffren definieren, wie ein einzelner Block von beispielsweise
64 oder 128 Bit verschlüsselt. Daten beliebiger Länge werden verschlüsselt, indem man diese
in Blöcke der eben beschriebenen Grösse zerlegt und allenfalls den letzten, nicht vollständig
gefüllten Block speziell behandelt.
Die einzelnen Blöcke könnten nun einfach mit der Block-Chiffre verschlüsselt werden: man
spricht dann vom ECB-Modus (engl: Electronic CodeBook mode). Dies ist aber nicht die einzige
Möglichkeit mehrere Blöcke zu verschlüsseln - wie die folgenden Paragraphen zeigen.
ECB: Electronic CodeBook Der ECB-Modus realisiert die naive Benutzung einer BlockChiffre. Dabei wird jeder Block xi einer Folge (x1 x2 · · · ) von Klartext-Blöcken mit dem selben
Schlüssel k verschlüsselt:
yi = Ek (xi ),
(i = 1, 2, . . .).
Analog wird auf der Empfängerseite (auf der rechten Seite der Abb. 4.7) mittels der folgende
Vorschrift entschlüsselt:
xi = Dk (yi ),
(i = 1, 2, . . .).
Beim ECB-Modus werden gleiche Klartext-Blöcke auf die selben Geheimtext-Blöcke abgebildet. Dadurch spiegeln sich die Eigenschaften des Klartextes im Geheimtext wieder. Es wird
deshalb nicht empfohlen den ECB-Modus zu verwenden, wenn mehr als ein Block verschlüsselt werden soll. Die Sicherheit kann allenfalls ein wenig erhöht werden, wenn am Schluss eines
jeden Klartext-Blockes einige Zufalls-Bits eingefügt werden.
Die Verarbeitung kann beim ECB-Modus parallelisiert werden. Infolge Auffüllen (engl: padding) des letzten nicht vollständigen Blockes ist der Geheimtext maximal um einen Block länger
als der Klartext.
Ein Fehler im Geheimtext beeinflusst nur den entsprechenden Block des Klartexts. Synchronisationsfehler können nicht korrigiert werden: man schickt einfach den entsprechenden Block
nochmals.
Der ECB-Modus eignet sich zum Verschlüsseln von Schlüsseln.
80
4 Symmetrische Kryptographie
x1
Ek (·)
y1
Dk (·)
x1
x2
Ek (·)
y2
Dk (·)
x2
Dk (·)
xi
..
.
xi
Ek (·)
yi
..
.
Abbildung 4.7: ECB-Modus.
CBC: Cipher Block Chaining Im CBC-Modus wird jeder Klartext-Block xi vor dem Verschlüsseln mit dem vorherigen Geheimtext-Block yi−1 XOR-verknüpft. Für den ersten Klartextblock wird ein Initialisierungsvektor y0 = IV verwendet:
y0 = IV
yi = Ek (yi−1 ⊕ xi ), (i = 1, 2, . . .).
(4.5)
Entschlüsselt wird nach folgendem Rezept:
y0 = IV
xi = Dk (yi ) ⊕ yi−1 ,
(i = 1, 2, . . .).
Dass die letzte rechte Seite tatsächlich xi liefert, folgt erstens wegen
Dk (yi ) = yi−1 ⊕ xi ,
was nur die Umkehrung der Gleichung (4.5) ist, und zweitens wegen
Dk (yi ) ⊕ yi−1 = (yi−1 ⊕ xi ) ⊕ yi−1
= xi .
Beim CBC-Modus werden die Eigenschaften des Klartexts durch die XOR-Verknüpfung mit
dem vorangehenden Geheimtext (bzw. dem Initialisierungsvektor) verwischt. Es lassen sich
81
4 Symmetrische Kryptographie
y0 = IV
y0 = IV
x1
Ek (·)
y1
Dk (·)
x1
x2
Ek (·)
y2
Dk (·)
x2
..
.
yi−1
xi
Ek (·)
yi
yi−1
Dk (·)
xi
Abbildung 4.8: CBC-Modus.
mehrere Meldungen mit dem selben Schlüssel verschlüsseln. Dabei sollten aber unbedingt unterschiedliche IVs verwendet werden und die Integrität derselben sollte geeignet sichergestellt
werden.
Paralleles Verarbeiten der Blöcke beim Ver- und Entschlüsseln ist nicht möglich was einen
entsprechenden Einfluss auf die Geschwindigkeit des Verfahrens hat.
Ein Fehler im Geheimtext beeinflusst einen ganzen Klartext-Block und das entsprechende Zeichen im nächsten Block. Fehler in der Synchronisation können nicht korrigiert werden. Obwohl sich das Verfahren nach Bit-Fehlern selber erholt, ist dies für fehlende Bits nicht möglich:
hier müssen übergeordnete Protokolle eingreifen. Wird der Geheimtext-Block y i fehlerhaft, die
nachfolgenden Blöcke yi+1 und yi+2 aber korrekt übertragen, dann kann yi+2 korrekt zu xi+2
entschlüsselt werden. Man spricht in diesem Fall von einem Selbst-Synchronisation oder Ciphertext Autokey!
CFB: Cipher FeedBack Während im CBC-Modus jeweils ein Block, d.h. n-Bits (typischerweise 64 oder 128 Bit) verarbeitet werden, verlangen verschiedene Applikationen ohne
Verzögerung r < n Bits (oft r = 1 oder r = 8). In diesem Fall wird der Cipher FeedBack
Mode (CFB) Modus mit r < n verwendet.
Bevor wir diesen Fall genauer analysieren, wollen wir uns mit Fall r = n befassen. Hier sollen
also bei jedem Schritt ebenfalls n Bit, d.h. ein Block berechnet werden.
82
4 Symmetrische Kryptographie
Mathematisch ausgedrückt heisst dies:
y0 = IV
yi = xi ⊕ Ek (yi−1 ), (i = 1, 2, . . .),
Dabei darf der Initialisierungsvektor IV öffentlich bekannt sein.
y0 = IV
y0 = IV
Ek (·)
Ek (·)
x1
y1
Ek (·)
x2
Ek (·)
y2
yi−1
..
.
Ek (·)
xi
x1
x2
yi−1
Ek (·)
yi
xi
..
.
Abbildung 4.9: CFB-Modus.
Wie beim CBC-Modus führt ein anderer IV bei identischem Klartext zu unterschiedlichem
Geheimtext!
Beispiel 4.3. Wie lautet die Entschlüsselungsfunktion?
83
4 Symmetrische Kryptographie
Fehlerlose Entschlüsselung eines korrekten Geheimtext Blockes verlangt, dass die vorangehenden dn/re Geheimtext Blöcke ebenfalls fehlerfrei sind.
Der CFB- ist wie der CBC-Modus selbst-synchronisierend, wobei er aber zur Erholung dn/re
Geheimtext-Blöcke braucht.
Der Durchsatz (gegenüber dem CBC-Modus) wird ebenfalls um den Faktor dn/re vermindert,
da jede Ausführung von E lediglich r-Bit Geheimtext produziert.
CFB wird wegen der genannten Eigenschaften oft in der Kommunikation mit Satelliten verwendet.
Hier kommt der Hinweis auf den r < n-Feedback Modus ...
84
4 Symmetrische Kryptographie
OFB: Output FeedBack Mode Wie auch im CFB-Modus wird hier ein Schlüsselstrom
generiert, welcher dann mit dem Klartext XOR-verknüpft wird: somit operiert der CFB-Modus
wie eine Strom-Chiffre. Der Output FeedBack (OFB) Modus operiert wie eine synchrone
Strom-Chiffre: der Schlüsselstrom wird produziert, indem der Initialisierungsvektor z 0 = IV
wiederholt mit der Block-Chiffre E(·, k) unter Verwendung des Schlüssels k verschlüsselt wird.
Daraus entsteht der Schlüsselstrom (z1 z2 . . .), wobei die folgende Rekursionsvorschrift gilt:
z0 = IV
zi = Ek (zi−1 ), (i = 1, 2, . . .),
yi = xi ⊕ zi , (i = 1, 2, . . .),
Aus der Folge der Klartextblöcke (x1 x2 . . .) entsteht durch XOR-Verknüpfung mit den Schlüsselstromblöcken (z1 z2 . . .) die Folge der Geheimtextblöcke (y1 y2 . . .).
Zum Entschlüsseln wird die selbe Folge von Schlüsselstromblöcken erzeugt und mit den Geheimtextblöcken XOR-verknüpft, detailliert:
z0 = IV
zi = Ek (zi−1 ), (i = 1, 2, . . .),
xi = yi ⊕ zi , (i = 1, 2, . . .),
Beispiel 4.4. Im OFB Modus wird eine Folge von Blöcken (z 0 , z1 , . . .) mit dem Klartext via XOR
verknüpft. Dabei werden die Blöcke z i rekursiv aus dem Initialisierungsvektor IV berechnet. Dies ist in
gewissen Fällen nicht erwünscht!
Man kann die Folge (z0 , z1 , . . .) direkt berechnen, wenn die zk aus einer Folge von direkt berechenbaren
Blöcken besteht.
Falls die ik beispielsweise Blöcke sind, welche fortlaufenden Zahlen entsprechen, so kann man mittels
zk = Ek (ik )
die obige Folge direkt (also ohne Rekursion) berechnen. Man hat also
xi = yi ⊕ Ek (ik ),
(i = 1, 2, . . .).
Man nennt diesen Modus einer Block-Chiffre Counter-Mode. Er hat auch den Vorteil, dass man Meldungen nicht auf ganze Blockgrössen auffüllen muss: im letzten (Teil-) Block werden einfach nur die
jenigen Zeichen des Klartextes XOR-verknüpft (und übertragen), die tatsächlich vorhanden sind!
Beispiel 4.5. Wie behandelt man im OFB-Modus allenfalls vorhandene Teilblöcke am Ende einer Meldung?
Lösung: man braucht keine besondere Behandlung, da man auch einfach einzelne Bits via XOR verknüpfen kann.
Zudem bewirkt der Übertragungfehler eines einzelnen Bits innerhalb eines Blocks lediglich ein einzelnes
Bit des selben Blocks.
85
4 Symmetrische Kryptographie
z0 = IV
z0 = IV
Ek (·)
Ek (·)
x1
y1
Ek (·)
x2
x1
Ek (·)
y2
z2
zi−1
x2
z2
..
.
Ek (·)
zi−1
Ek (·)
yi
xi
zi
xi
zi
..
.
Abbildung 4.10: OFB-Modus.
Sowohl vom OFB- wie auch vom CFB-Modus existieren verschiedene Varianten, die k-Bit
Feedback Moden genannt werden (1 ≤ k ≤ n wobei n typischerweise 64 oder 128 Bit ist). Bis
hierhin wurde nur der volle Feedback-Modus erklärt.
1-Bit und 8-Bit Feedbackmodus werden oft in der Praxis verwendet wenn es darum geht, einen
Strom von Blöcken eben dieser Längen (1 oder 8) zu erzeugen!
Aus Gründen der Sicherheit sollte aber OFB mit vollem n-Bit Feedback betrieben werden.
Im ECB- und OFB-Modus bewirkt die Änderung eines Klartext Blocks x i eine Änderung des
korrespondierenden Geheimtext Blocks: andere Geheimtext Blöcke werden nicht verändert!
Dies ist ein Vorteil, wenn der Kommunikationskanal nicht sehr zuverlässig ist. Deshalb wird
86
4 Symmetrische Kryptographie
OFB-Modus oft verwendet, um die Satelliten-Kommunikation zu verschlüsseln.
Padding Ist der letzte Block nur teilweise gefüllt, wird oft an das Ende des Klartextes ein
spezielles Zeichen gesetzt und danach mit Zufallsbits aufgefüllt.
Siehe auch Cipher-Block stealing!
87
4 Symmetrische Kryptographie
4.1.14 Vor- und Nachteile der verschiedenen Moden
88
4 Symmetrische Kryptographie
4.1.15 Anwendung von Block-Chiffren
Hashfunktion
89
4 Symmetrische Kryptographie
Abbildung 4.11: Strom-Chiffre.
4.2 Strom-Chiffren
Die erste Methode kann die speziellen Eigenschaften der Hardware (z.B. 64-Bit Computer)
besser ausnutzen und ist deshalb meistens effizienter.
Strom-Chiffren verarbeiten einen Klartext Zeichen für Zeichen, wobei ein Zeichen (oder Wort)
typischerweise ein oder 8 Bit aber auch mal 32 Bit sein kann.
Während bei einer Block-Chiffre im ECB-Mode eine bestimmter Klartext-Block immer auf
denselben Geheimtext-Block abgebildet wird (bei gleichem Schlüssel), wird bei der StromChiffre ein bestimmtes Wort innerhalb eines Klartextes normalerweise immer auf ein unterschiedliches Geheimtext-Wort abgebildet.
Je nach Modus in dem ein Blockverfahren betrieben wird ist das Verschlüsselungsverfahren
tolerant gegenüber Fehlern bei der Übertragung.
Die einfachste Strom-Chiffre verschlüsselt ein Bit nach dem anderen indem die entsprechenden
Bits mit den Bits aus einem Schlüsselstromgenerator modulo 2 addiert werden (XOR).
Der Klartext-Strom (p1 , p2 , . . .) wird zum Schlüsselstrom (k1 , k2 , . . .) modulo 2 addiert (XOR):
ci = p i ⊕ k i
Daraus entsteht der Geheimtext-Strom (c1 , c2 , . . .). Entschlüsseln kann man dank der Eigenschaft pi ⊕ ki ⊕ ki = pi von XOR mittels
pi = c i ⊕ k i
Dieses Verfahren ist absolut sicher, falls der Schlüsselstrom ein echte Folge von Zufallsbits
ist. Typischerweise verwendet man aber einen Pseudo-Zufallsgenerator mit einem geeigneten
Initialisierungsvektor (sprich Schlüssel).
90
4 Symmetrische Kryptographie
Beispiel 4.6. Nehmen wir an Eve gelange in den Besitz von zwei Geheimtexten, die mit demselben
Schlüsselstrom chiffriert wurden. Dann kann sie die bieden Geheimtexte XOR verknüpfen und erhält
die XOR-Verknüpfung der zugehörigen Klartexte. Daraus lassen sich die beiden Klartexte relativ einfach
berechnen (z.B. known-plaintext Angriff). Damit lässt sich dann auch der Schlüsselstrom wieder mit einer
XOR-Verknüpfung berechnen.
Führen sie dieses Verfahren an zwei Klartexten mit 10 Zeichen durch!
Ein Schlüsselstrom-Generator besteht im Wesentlichen aus drei Teilen:
Der Innerer Zustand beschreibt in welchem Zustand sich der Generator befindet
Die Output-Funktion produziert aus dem inneren Zustand ein Output-Bit.
Die Next-State Funktion berechnet aus dem aktuellen inneren Zustand einen neuen.
Beispiel 4.7. Bei einer selbstsyncronisierenden Strom-Chiffre ist jedes Schlüsselstrom-Bit eine Funktion von n (n ∈ IN) vorangehenden Geheimtext-Bits.
Zu Beginn einer Übetragung sendet man n zufällige Bits zur Syncronisation. Danach sind die beiden
Schlüsselstrom Generatoren in demselben inneren Zustand (natürlich nur wenn derselbe Schlüssel K
verwendet wird).
Ein Nachteil ist die Fehlerausbreitung: jedes auf dem Übertragungsweg veränderte Bit führt dazu, dass
der Entschlüsselungsgenerator (rechts) für die nächsten n Bit aus dem Takt fällt und erst danach wieder
korrekt entschlüsselte Bits liefert.
Eine weitere Gefahr bilden replay-attacken wo Mallory einen Text auffängt, speichert und später wieder
in eine Kommunikation einfügt: auf diese Weise könnte er eine Bank-Transaktion mehrere Male durchführen! Abhilfe schaffen Timestamps!
Beispiel 4.8. Bei synchronen Strom-Chiffren ist der Schlüsselstrom unabhängig vom Klar- oder Geheimtextstrom. Dieses Verfahren funktioniert so lang, wie die beiden Schlüsselstrom Generatoren synchron (im Takt) laufen. Andererseits muss neu synchronisiert werden wobei darauf geachtet werden muss,
dass kein Teil des Schlüsselstroms wiederholt wird!
Damit der insertion-attack nicht erfolgreich ist, dürfen Meldungen nie mit demselben Schlüsselstrom
chiffriert werden: Details siehe BSchnyer, AC, p203!
91
4 Symmetrische Kryptographie
Während Block-Chiffren jeweils eine fixe Transformation auf einen mehr oder weniger grossen Datenblock anwenden, verarbeiten Strom-Chiffren einzelne Bits mit einer zeitabhängigen
Transformation.
Strom-Chiffren sind mathematisch leichter zu analysieren und wurden/werden vor allem vom
Militär und in kommerziellen kryptographischen Produkten eingesetzt.
Blockverfahren nutzen die moderne Mikroelektronik wesentlich besser aus als Stromchiffren:
man denke z.B. an Parallelverarbeitung! Auch in Software lassen sich Blockchiffren einfache
implementieren, da dort üblicherweise mit Bytes oder Worten (statt mit Bits) gearbeitet wird!
Beispiel 4.9. Beim Insertion Attack geht man davon aus, dass zwei bis auf ein eingefügtes Bit identische Klartexte mit dem selben Schlüsselstrom verschlüsselt werden.
Der Angreifer Mallory ist im Besitz des Geheimtextes (y 1 , y2 , y3 , . . .) der aus dem ihm unbekannten
Klartext (x1 , x2 , x3 , . . .) mittels des ihm ebenfalls unbekannten Schlüsselstroms (z 1 , z2 , z3 , . . .) wie
folgt berechnet wurde
yi = z i ⊕ x i ,
(i = 1, 2, 3, . . .)
(4.6)
Wie bereits gesagt, kann Mallory veranlassen, dass der Klartext (x 1 , x0 , x2 , x3 , . . .) ebenfalls mit dem
selben Schlüsselstrom verschlüsselt wird. Mallory kennt lediglich das Bit x 0 . Dies genügt ihm um den
gesamten Klartext nach diesem Bit zu entschlüsseln.
Wie das möglich ist, zeigen die folgenden Zeilen.
Mallory fängt den Geheimtext der zweiten Nachricht ab, d.h. (y 1 , y20 , y30 , . . .) und weiss damit
y20 = z2 ⊕ x0
yi0 = zi ⊕ xi−1 (i = 3, 4, . . .)
Aus der ersten Gleichung folgt z2 = y20 ⊕ x0 und weiter wegen Gleichung (4.6) sofort x 2 = z2 ⊕ y2 .
Analog findet man mittels
zi = yi0 ⊕ xi−1
xi = z i ⊕ y i
wobei i = 3, 4, . . ..
Dieser Angriff kann verhindert werden, wenn für jede Nachricht ein anderer Schlüsselstrom verwendet
wird.
4.2.1 RC4
RC4 wurde 1987 entwickelt und war sieben Jahre geheim. RC4 ist eine speziell für Software Implementationen optimierte Stromchiffre mit 8-Bit Output, die einen 2048-Bit Schlüssel
verwendet.
Als interner Schlüssel werden zwei Bytes i und j, sowie eine Permutation (P i )i=0,...,255 der
Zahlen 0, . . . , 255 verwendet. Die Grösse des Schlüsselraumes beträgt damit 2 1700 = 2562 256!.
92
4 Symmetrische Kryptographie
RC4 wurde 1994 reverse engineered und anonym in der Cypherpunks Mailing Liste veröffentlicht und kurz darauf in sci.crypt in Usenet gepostet: natürlich sehr zum Ärger des Autors.
Da RC4 weiterhin ein Handelsname blieb, wurde als Acronym Arcfour verwendet. RC4 ist eine
der schnellsten Stromchiffren und wird in verschiedensten Kryptographischen Produkten, wie
beispielsweise WEP und SSL eingesetzt.
while (length--) {
x++; sx = state[x]; y += sx;
sy = state[y]; state[y] = sx; state[x] = sy;
*data++ ^= state[(sx+sy) & 0xFF ];
}
RC4 ist im Wesentlichen ein PRNG, welcher durch einen Schlüssel von typischerweise 40256 Bit initialisiert wird. Der so erzeugt Schlüsselstrom wird dann mit dem Klartext XORverknüpft. Der daraus entstehende Geheimtext wird zum Entschlüsseln ebenfalls wieder mit
dem gleichen Schlüsselstrom XOR-verknüpft.
Der RC4 Algorithmus besteht aus einer Initialisierungsphase, welche mit Hilfe des Schlüssels K[i], i = 0, 1, . . . , k (bestehend aus k Bytes) die Permutation S[i], i = 0, 1, . . . , N
bestimmt:
for i = 0 ... 255
S[i] = i
j = 0
for i = 0 ... 255
j = (j + S[i] + K[i mod k]) mod 256
swap (S[i],S[j])
Nach dieser Initialisierung kann der Schlüsselstrom byteweise wie folgt berechnet werden:
i = 0
j = 0
loop until the entire message is encrypted/decrypted
i = (i + 1) mod 256
j = (j + S[i]) mod 256
swap(S[i],S[j])
y = S[(S[i] + S[j]) mod 256]
output the XOR of k with the next byte of input
Wegen seiner Einfachheit und Schnelligkeit ist RC4 sehr beliebt. Er ist auch ideal für Implementationen in Software. Es werden lediglich Bytes manipuliert und es genügt, neben dem
Schlüssel K, der l Bytes lang sein möge, eine Permutation der Zahlen {0, 1, . . . , 255} in
S[0], S[1], . . . , S[255] zu speichern, sowie noch einige Ganzzahl Variablen wie i, j und k.
93
4 Symmetrische Kryptographie
Kryptoanalyse hat gezeigt, dass man die ersten 256 Bytes des Schlüsselstromes aus Sicherheitsgründen nicht verwenden sollte (siehe Angriff von Fluhrer, Martin and Shamir).
Die (öffentliche) Kryptoanalyse von RC4 sagt lediglich, dass mit riesigen bekannten Klar- und
Geheimtexten (im Bereich von Gigabytes) Probleme auftreten können.
Bekannt ist der Angriff von Fluhrer, Martin and Shamir (2001) welcher die Statistik der ersten
Bytes des Schlüsselstromes verwendet: diese sind überhaupt nicht zufällig! Dies führt dazu,
dass der RC4-Schlüssel berechnet werden kann, falls man nur genügend viel Geheimtexte hat,
welche mit diesem Schlüssel verschlüsselt wurden.
Dadurch und dank weiteren Schwächen ist es gelungen WEP (engl: wired equivalent privacy)
Verschlüsselung, verwendet in IEEE 802.11 drahtlosen Netzwerken zu knacken! Dies führte
schliesslich zu IEEE 802.11i.
Wie alle Stromchiffren ist natürlich auch RC4 gebrochen, falls der selbe Schlüssel zweimal
verwendet wird. Dieses Problem wird meist umgangen, indem man den Schlüssel bei jedem
Gebrauch mit einem eindeutigen Initialisierungsvektor (IV) hasht und den IV zusammen mit
der Meldung verschickt. (siehe http://en.wikipedia.org/wiki/RC4_cipher).
94
4 Symmetrische Kryptographie
[1]
95
Literaturverzeichnis
[1] J. F. Bürgler, R. E. Bank, W. Fichtner, and R. K. Smith. A New Discretization Scheme for
the Semiconductor Current Continuity Equations. IEEE Trans. CAD, 8(5):479–89, 1989.
96
Kryptologie (Version 20041224)
Josef F. Bürgler
24. Dezember 2004
Inhaltsverzeichnis
5 Public-Key Kryptographie
5.1 Einleitung . . . . . . . . . . . . . . . . . . . .
5.2 RSA-Codes . . . . . . . . . . . . . . . . . . .
5.2.1 Gefahren bei der Verwendung von RSA
5.3 Diffie-Hellman . . . . . . . . . . . . . . . . .
5.4 ElGamal . . . . . . . . . . . . . . . . . . . . .
5.5 Das Knapsack-Verfahren . . . . . . . . . . . .
5.6 Algorithmen für digitale Signaturen . . . . . .
5.6.1 Zusatz ... . . . . . . . . . . . . . . . .
Literaturverzeichnis
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
95
95
97
99
101
104
106
107
108
109
ii
5 Public-Key Kryptographie
5.1 Einleitung
Kryptographie soll helfen, die folgenden grundlegenden Probleme der Datenverarbeitung zu
lösen:
Geheimhaltung: schützt Daten vor dem Zugriff durch Unbefugte.
Authentizität: ermöglicht zu entscheiden, ob eine Nachricht echt ist, d.h. der Absender kann
eindeutig festgestellt werden. Gerade beim der Zugriffskontrolle, beim Kauf oder Börsenhandel über’s Internet ist Authentizität genau so wichtig wie Geheimhaltung.
Integrität: verhindert, dass beispielsweise Meldungen auf ihrem Weg verändert werden können. Sie verhindert auch, dass Daten unbemerkt verändert werden können.
Nicht Abstreitbarkeit: stellt sicher, dass beispielsweise der Absender einer Nachricht nicht
abstreiten kann, dass er die Nachricht geschickt hat.
Während in der Vergangenheit vor allem das erste Problem (Geheimhaltung) mit Hilfe der
Privat-Key Verschlüsselung gelöst wurde, löst die Public-Key Kryptographie, welche wir in
diesem Kapitel behandeln, die oben aufgeführten, restlichen Probleme. Die weltweite Vernetzung bringt es mit sich, dass immer wieder neue Fragestellung auftreten:
• Es sollte so etwas wie eine elektronische Unterschrift geben.
• Es sollten keine Kuriere nötig sein, um Schüssel sicher auszutauschen: Schlüsselverwaltung sollte vereinfacht werden.
• Man sollte im Internet auch anonym miteinander kommunizieren können.
Historische gesehen, hat man sich erst in den Siebzigern mit nonsecret-key Kryptographie zu
beschäftigen begonnen. Wie zu erwarten war, untersuchten Geheimdienste diese Möglichkeit
der Verschlüsselung rund zehn Jahre früher.
1971: Geheimdienste erfinden die nonsecret-key Kryptographie (was allerdings erst in den 90er Jahren bekannt wird).
1974: Merkle Puzzle.
95
5 Public-Key Kryptographie
1976: Schlüsselaustausch nach Diffie und Hellman.
1977: Rivest, Shamir und Adleman erfinden RSA.
1990-er: ab diesem Zeitpunkt werden public-key Verfahren vermehrt in der Kommunikation,
vor allem via Internet eingesetzt.
Die folgenden Abschnitte setzen Kenntnisse der mathematischen Grundlagen voraus.
Euler-Theorem: Falls ggT(a, n) = 1 dann gilt:
aφ(n) = 1 mod n
Kleiner Fermat: Ist p eine Primzahl und ggT(a, p) = 1, dann gilt:
ap−1 = 1 mod p
Modulare Exponentiation: wird mit dem square and multiply effizient berechnet.
Chinesischer Restesatz: ermöglicht das Lösen linearer Kongruenzen.
Faktorisieren: grosser, zusammengesetzter Zahlen ist ein Problem, für dessen Lösung kein
polynomial zeitbeschränkter Algorithmus bekannt ist. Die Umkehrung, Multiplikation
grosser Zahlen ist dagegen mit quadratischer Zeitkomplexität berechenbar.
x
und sie lassen sich durch Tests mit einer bestimmPrimzahlen: hat es sehr viele (π(n) ≈ ln(x)
ten Wahrscheinlichkeit identifizieren.
Asymetrische Verfahren, wie man public-key Verfahren auch nennt, können auch mittels ganz
simpler Verstellungsmodelle visulisiert werden:
• In einen Briefkasten kann jedermann Meldungen reinwerfen, aber nur der Besitzer des
Briefkastens kann die Meldungen lesen, da nur er im Besitz des richtigen Schlüssels ist,
um den Briefkasten zu öffnen!
• Eine Meldung lässt sich dank Shamir’s no-key protocol sicher von Alice zu Bob transferieren, ohne dass die beiden vorher irgend welche Schlüssel austauschen:
1. Alice verschliesst den Koffer mit ihrem Schloss A und schickt ihn Bob. Niemand
kann beim Transport den Koffer öffnen, da nur Alice im Besitz des passenden
Schlüssels ist.
2. Bob verschliesst den Koffer nun seinerseits mit dem Schloss A und schickt ihn Alice. Auf dem Weg zu Alice ist der Koffer diesmal mit zwei Schlössern gesichert.
3. Alice entfernt nun ihr Schloss A und schickt den Koffer nochmals an Bob. Auch auf
dieser Reise ist der Koffer vor unbefugtem Zugriff sicher, denn er ist noch durch das
Schloss B von Bob gesichert.
96
5 Public-Key Kryptographie
4. Bob braucht nun nur noch sein Schloss B zu entfernen um den Inhalt des Koffers
zu betrachten.
Es ist klar, dass dieses Protokoll nicht gegen Angriffe von Eve gefeiht ist: sie kann sich
nämlich in die Mitte setzen und einen man-in-the-middle Angriff fahren.
• public-key Kryptographie ist im wahrsten Sinne des Wortes auch die Verteilung von offenen Schlössern an all jene, die mit Alice kommunizieren wollen: falls jemand, z.B. Bob,
etwas an Alice senden will, verschliesst er den Koffer mit dem Schloss. Da nur Alice den
passenden Schlüssel besitzt, kann nur sie den Koffer öffnen.
In den oben beschriebenen Fällen hat man es immer mit einer Einweg-Funktion mit Falltür zu
tun! Überlegen sie sich in den jeweiligen Fällen, was die Einweg-Funktion, und was die Falltür
ist!
In den folgenden Abschnitten werden verschiedene public-key Verfahren behandelt. Dabei wird
aber keineswegs Vollständigkeit angestrebt!
5.2 RSA-Codes
Seien p und q zwei grosse Primzahlen (mind. 100 Stellen, besser ca. 150 Stellen). Dann wird
n = pq sowie φ(n) = (p − 1)(q − 1) berechnet und eine zu φ(n) teilerfremde Zahl e bestimmt,
d.h. es muss gelten:
ggT(e, φ(n)) = 1.
Weiter nehmen wir an, dass der Klartext in Binärform vorliege, welche allenfalls in Blöcke M k
zerlegt sei, so dass 0 ≤ Mk < n gilt.
Die Verschlüsselungsfunktion E liefert den zum Klartext-Block m gehörige Geheimtext-Block
c und ist wie folgt definiert:
E(m) = c = me (mod n)
(5.1)
Beispiel 5.1. Dieses Beispiel zeigt, wie man den Klartext STOP zuerst in zwei Blöcke von Zahlen
M1 = 1819 und M2 = 1415 abbildet, wobei wir die üblicherweise verwendete Abbildungsvorschrift
A 7→ 1, B 7→ 2, usw. verwendet haben.
Danach wählen wir zwei Primzahlen p = 43 und q = 59, berechnen
n = p q = 43 · 59 = 2537
φ(n) = (p − 1)(q − 1) = 42 · 58 = 2436
und wählen ein zu φ(n) teilerfremdes e = 13. Die Kontrolle zeigt:
ggT(e, φ(n)) = ggT(13, 2436) = 1
97
5 Public-Key Kryptographie
Anschliessend berechnen wir die Verschlüsselten Blöcke
E(m1 ) = 181913 mod 2537 = 2081 = c1
E(m2 ) = 141513 mod 2537 = 2182 = c2
Die verschlüsselte Meldung lautet also 2081 2182.
Gibt man das Tupel (n, e) bekannt, bezeichnet es also als öffentlichen Schlüssel, dann kann
jeder die oben beschrieben Verschlüsselung durchführen.
Nun zeigen wir, das die Entschlüsselung nur möglich ist, wenn man n faktorisieren kann. Dies
ist aber nach dem heutigen Stand der Forschung ein äusserst schwieriges Problem, für welches
keine effiziente Lösung angegeben werden kann. Also ist die oben beschriebene Verschlüsselungsfunktion eine Einwegfunktion 1 Falls die Funktion mit einer (geheimen) Zusatzinformation ohne Probleme umgekehrt werden kann, dann spricht man von einer Einwegfunktion mit
Falltür (engl: one-way trapdoor function).
Kennt man die Faktoren p und q von n, dann kann man mit Hilfe des Euklidischen Algorithmus
die Zahl d bestimmen, so dass gilt:
d e ≡ 1 (mod φ(n)).
Dies ist möglich, weil wir oben e teilerfremd zu φ(n) gewählt haben, d.h. ggT(g, φ(n)) = 1!
Es gibt dann eine Zahl k ∈ ∠Z so, dass gilt:
d e = 1 + k(p − 1)(q − 1).
Damit hat man nacheinander
cd ≡
=
=
=
=
(me mod n)d mod n
mde mod n
m1+kφ(n) mod n
m (mφ(n) )k mod n
m mod n
wobei wir im letzten Schritt den Fermat’schen Satz mφ(n) ≡ 1 (modn) verwendet haben,
welcher angewendet werden darf, da (sicherlich für m < n mit grosser Wahrscheinlichkeit)
ggT(m, φ(n)) = 1 zutrifft.
Die Entschlüsselungsfunktion D ist also definiert durch:
D(c) = m = cd (mod n)
(5.2)
Beispiel 5.2. Setzen wir das Zahlenbeispiel von oben fort, dann finden wir mit d = 937 sofort:
D(c1 ) = 2081937 mod 2537 = 1819 = m1
D(c2 ) = 2182937 mod 2537 = 1415 = m2
Für die effiziente Berechnung verwendet man schnelle modulare Exponentiation!
1
Eine Funktion, die man ohne grossen Aufwand berechnen kann, deren Umkehrung aber praktisch nicht möglich
ist, heisst Einwegfunktion.
98
5 Public-Key Kryptographie
5.2.1 Gefahren bei der Verwendung von RSA
Die unbedachte Verwendung von RSA birgt folgende Gefahren:
Nicht teilerfremde Moduln n1 und n2 die man sehr schnell mit dem Euklidischen Algorithmus feststellt, ermöglichen eine sehr einfache Faktorisierung. Diese Gefahr steigt zwar
mit wachsender Anzahl öffentlicher Schlüssel: die Wahrscheinlichkeit eines solchen Zufalles
ist aber sehr klein, denn die Anzahl Primzahlen π(N ) kleiner als N strebt für grosse N gegen
N/ ln(N )N .
Beispiel 5.3. Wie viele Primzahlen liegen etwa zwischen 2 1024 und 21025 ? Vergleichen Sie das Resultat
mit der Anzahl Primzahlen zwischen 1 und 2 1024 !
Lösung: Man hat rund
21024
21025
−
1025
ln(2
) ln(21024 )
21025
21024
−
1025 ln(2) 1024 ln(2)
21024
2
1
=
−
ln(2) 1025 1024
21024
≈
ln(21024 )
≈ 2.5 10305
=
Die letzte Zahl ist gleich der Anzahl Primzahlen kleiner als 2 1024 ≈ 1.8 10308 . Diese Zahl ist ungeheuer gross: das gesamte (bis jetzt bekannte) Universum hat bei weitem nicht so viele Atome oder sogar
Elementarteilchen!
Obwohl also nicht teilerfremde Moduln theoretisch kein Problem sind, erzeugen schlechte Zufallsgeneratoren evt. immer die selben Moduln: es ist deshalb sehr wichtig, kryptographisch
sichere Zufallsgeneratoren zu verwenden!
Angriff mit ausgewähltem Geheimtext Bei einem Angriff mit ausgewähltem Geheimtext (chosen ciphertext attack) schiebt Eve (von Eavesdropper oder Lauscher) Alice einen speziell gewählten Geheimtext unter und bittet um dessen Verschlüsselung, beispielsweise im Rahmen einer digitalen Signatur.
Nehmen wir an, Eve hat den chiffrierten Sitzungsschlüssel m abgehört, den Bob in der Form
c = me mod n
an Alice schickte. Eve verschlüsselt dann eine zu n teilerfremde Zahl r (wäre dies nicht der
Fall, wüsste Eve einen Faktor von n und wäre ohnehin am Ziel) und multipliziert das Resultat
mit c, d.h. sie berechnet
99
5 Public-Key Kryptographie
y = cr e mod n
und versucht Alice dazu zu bringen, dieses y zu dechiffrieren, indem sie beispielsweise um eine
digitale Signatur von y bittet. Falls Alice darauf einsteigt, berechnet sie
y d = cd r ed mod n
= m r mod n
woraus Eve mit dem erweiterten Euklidischen Algorithmus sofort m berechnen kann. Damit ist
sie im Besitz des Sitzungsschlüsseln zwischen Alice und Bob!
Kleine Werte von e sparen zwar Rechenzeit bei der Verschlüsselung (Warum?), sie sind
aber gefährlich, denn es genügen e Benutzer welche paarweise unterschiedliche Moduln verwenden, welche die selbe Nachricht m verschlüsseln. Ein Angreifer kann aus diesen e verschlüsselten Nachrichten die Nachricht m berechnen. Man entgegnet dieser Gefahr, indem man
die Nachricht mit zufälligen Bits stört oder eben nicht kleine e wählt wie e = 3 sondern grössere, wie das häufig verwendete e = 21 6 + 1.
Beispiel 5.4. Beweisen Sie die obige Behauptung!
Lösung: Man hat dann e Gleichungen der Form
ck ≡ me mod nk ,
k = 1, 2, . . . , e.
(5.3)
Dieses System von Gleichungen kann man mit Hilfe des chinesischen Restesatzes lösen (insbesondere,
falls die nk paarweise teilerfremd sind! Dies ist mit grosser Wahrscheinlichkeit der Fall (wie gross ist
die Wahrscheinlichkeit?).
Ein gemeinsamer Modul n , welcher nur bei zentraler Erzeugung der Schlüssel möglich
ist, kann erfolgreich angegriffen werden.
Beispiel 5.5. Sei m der Klartext und e1 und e2 zwei Schlüssel zum Verschlüsseln sowie n der gemeinsame Modul. Dann sind die beiden verschlüsselten Texte:
c1 = me1 mod n
c2 = me2 mod n
Der Angreifer kennt also n, e1 , e2 , c1 und c2 . Da e1 und e2 teilerfremd sind kann man mit Hilfe des
erweiterten Euklidischen Algorithmus die Zahlen r und s in
re1 + se2 = 1
wobei wir annehmen, dass r < 0 ist. Dann kann wiederum der erweiterte Euklidische Algorithmus
verwendet werden um c−1
1 zu berechnen. Dann gilt:
−r s
· c2 = m mod n
c−1
1
100
5 Public-Key Kryptographie
Abbildung 5.1: Zeitliche Entwicklung der Faktorisierung grosser Zahlen.
Das Protokoll PKCS#1 (Version unter 1.5) ermöglichte einen Angriff mit adaptiv ausgewähltem Klartext: zwischen 300’000 und 2’000’000 Geheimtexte sollten genügen! Vereiteln
wird dieser Angriff in der zweiten Version von PKCS#1.
Ändern des privaten Schlüssels Durch Hard- oder Softwarefehler kann die Berechnung
von p und q ermöglicht werden. Dies kann man mit Hilfe entsprechender Prüfsummen verhindern.
Privater Schlüssel entwenden Irgend wann stehen auch ansonsten durch ein symmetrisches Verfahren geschützte private Schlüssel im Klartext im Speicher eines Computers. Diese
kann man problemlos finden: denn 1024 oder 2048 Bit echte Zufallsbits fallen im Speicher auf!
Faktorisierung grosser Zahlen Heute ist es mit riesigem Rechenaufwand möglich, Zahlen von rund 160 bis 170 Stellen zu faktorisieren. Die Abb. 5.1 zeigt die zeitliche Entwicklung
der Faktorisierung grosser Zahlen.
5.3 Diffie-Hellman
Man wählt eine (mehrere hundert Stellen) grosse Primzahl p und eine Erzeugende a ∈ ∠Z?p der
(zyklischen) multiplikativen Gruppe ∠Z?p , · . Beide Zahlen p und a sind öffentlich, d.h. jede(r)
darf sie kennen!
101
5 Public-Key Kryptographie
Beispiel 5.6. Sei p = 13. Wir wählen a = 2 und erhalten sofort: Dabei wurde immer modulo p
n
an
1 2
2 4
3 4
8 3
5 6 7
6 12 11
8 9
9 5
10 11 12
10 7 1
gerechnet!
Nun denkt sich Alice eine Zahl xA , die mit Hilfe eines Zufallsgenerators erzeugt wird und
geheim sein soll. Daraus berechnet sie die öffentliche Zahl
k A ≡ a xA
(mod p) .
Damit Bob mit Alice kommunizieren kann, wählt auch er eine geheime, rein zufällige Zahl x B
und berechnet seinerseits eine weitere öffentliche Zahl
k B ≡ a xB
(mod p) .
Anschliessend berechnet Bob die Zahl
xB
kAB ≡ kA
(mod p)
und verwendet diese als Schlüssel in einem symmetrischen Verfahren, um mit Alice Nachrichten auf sichere Art und Weise auszutauschen, d.h. ohne dass diese Nachrichten von Dritten
eingesehen werden können.
Wir wollen nun zeigen, dass auch Alice exakt diesen Schlüssel berechenen kann, ohne dass irgend welche Informationen öffentlich gemacht werden müssen, die zum Knacken dieses Schlüssels kAB führen könnten.
Alice nimmt die von Bob erhaltene öffentliche Zahl kB , berechnet
xA
kBA ≡ kB
(mod p)
und verwendet diese Zahl als Schlüssel zum Entschlüsseln der Nachrichten, die sie von Bob
erhalten hat. Wir zeigen in den folgenden Schritten, dass kBA = kBA gilt, denn man hat nacheinander:
102
5 Public-Key Kryptographie
kBA ≡
≡
≡
≡
≡
≡
≡
≡
≡
xA
kB
(mod p)
xB
(a mod p)xA (mod p)
(axB )xA (mod p)
axB xA (mod p)
axA xB (mod p)
(axA )xB (mod p)
(axA mod p)xB (mod p)
xB
kA
(mod p)
kAB
Damit ist gezeigt, dass sowohl Alice wie auch Bob den selben geheimen Schlüssel k = k AB =
kBA berechnen können, ohne dass dabei irgend welche Informationen ausgetauscht werden, die
zum Knacken dieses Schlüssels verwendet werden können!
Ein Aussenstehender kann die Nachricht nur dann mitlesen, wenn er aus
k A ≡ a xA
k B ≡ a xB
(mod p)
(mod p)
oder
entweder xA oder xB berechenen kann. Wenn man kA und kB diskrete Potenzen von a nennt,
dann ist z.B. xA der diskrete Logarithmus von kA zur Basis a.
Das Problem der Berechnung des diskreten Logarithmus besteht darin, die Gleichung
y ≡ ax
(mod p)
nach x aufzulösen, wobei p, a und y als bekannt vorausgesetzt werden. Bis heute kennt man
keine schnelle d.h. zeitlich polynomial beschränkte Lösung für dieses Problem! Die meisten
Mathematiker vermuten, dass auch in Zukunft keine schnelle Lösung gefunden wird, da gar
keine solche existiert!
Beispiel 5.7. Alice und Bob vereinbaren p = 13 und a = 2. Dann wählt Alice x A = 8 und berechnet
k A ≡ a xA
(mod p) ≡ 28
(mod 13) ≡ 9
(mod 13)
und schickt kA = 9 dem Kommunikationspartner Bob. Dieser wählt x B = 3, berechnet
kB
≡ a xB
(mod p) ≡ 23
(mod 13) ≡ 8
(mod 13)
(mod p) ≡ 88
(mod 13) ≡ 1
(mod 13)
(mod p) ≡ 93
(mod 13) ≡ 8
(mod 13)
und schickt Alice kB = 8. Daraus berechnet Alice
xA
kBA ≡ kB
Analog berechnet Bob aus kA = 9
kAB
xB
≡ kA
Wie man sieht gilt: kBA = kAB ! Diesen gemeinsamen Schlüssel nutzen nun Alice und Bob, um mittels
eines symmetrischen Verfahrens zu verschlüsseln.
103
5 Public-Key Kryptographie
Diffie und Hellmann haben dieses System von öffentlichen Schlüsseln zu einem öffentlichen
Verschlüsselungsverfahren weiterentwickelt welches auf einer Falltürfunktion basiert.
Jeder Teilnehmer i des Systems verwendet einen allen Teilnehmern bekannten Chiffrier-Algorithmus
Ci mit einer Falltürfunktion, welche im Wesentlichen aus dem Dechiffrier-Algorithmus D i besteht!
Will ein Teilnehmer j eine vertrauliche Nachricht m an i schicken, verwendet er das öffentlich
verfügbare Chiffrier-Verfahren Ci und verschlüsselt seine Meldung damit:
y = Ci (m)
Zum Entschlüsseln verwendet i nur das ihm bekannte Dechiffrier-Verfahren und erhält wegen
Di ◦ Ci = 1:
Di (y) = Di (Ci (m)) = (Di ◦ Ci )(m) = m
Leider konnten Diffie und Hellmann keine solche Falltürfunktion angeben. Erst 1978 wurde
eine solche von Ronald Rivest, Adi Shamir und Leonard Adleman entwickelt. Das von ihnen
vorgeschlagene Verfahren wurde RSA-Code genannt.
5.4 ElGamal
ElGamal ist ein patentfreier, asymmetrischer Algorithmus bei dem eine Primzahl p als Modul
(N = 512, 1024, . . . Bit lang) und eine Erzeugende (Generator) g ∈ ∠Z ?p öffentlich vereinbart
werden.
Damit gewisse Angriffe keinen Erfolg haben soll (p − 1)/2 eine Primzahl sein.
Nun wählt Alice eine Zahl x < p welche der private Schlüssel sein wird und gibt
y = g x mod p
(5.4)
öffentlich bekannt: das Tripel (p, g, y) bildet den öffentlichen Schlüssel.
Der geheime Schlüssel ist also der diskrete Logarithmus von y zur Basis g bezüglich des Moduls
p. Unter den genannten Voraussetzungen gibt es (zur Zeit) keinen effizienten, d.h. polynomiale
Zeit, Algorithmus zur Berechnung des diskreten Logarithmus.
Zur Verschlüsselung einer Nachricht m ∈ ∠Z?p (die in Blöcke von N < p Bit zerlegt wird) wählt
Bob eine zu p − 1 teilerfremde, geheime Zufallszahl k, welche er nebenbei bemerkt nach der
folgenden Rechnung wieder vergessen kann:
104
5 Public-Key Kryptographie
a = g k mod p,
b = y k m mod p,
(5.5)
(5.6)
Das Tupel (a, b) bildet die verschlüsselte Nachricht.
Empfängt Alice die verschlüsselte Meldung (a, b), kann Sie die Gleichung
ax m0 = b mod p
(5.7)
mit Hilfe des erweiterten Euklidischen Algorithmus nach m0 auflösen. Wegen der folgenden
zulässigen Umformungen,
a x m0 =
=
=
=
g kx m0
(wegen (5.5))
xk
0
g m
y k m0
(wegen (5.4))
b mod p
welche die Lösungsmenge nicht verändern, ist somit die Gleichung (5.7) äquivalent zur Gleichung
b = y k m0 mod p,
welche wegen der Eindeutigkeit der Lösung modulo p die selbe Lösung hat wie (5.6), womit
gezeigt ist, dass m = m0 gilt!
Dass der Geheimtext (a, b) doppelt so lang ist wie der Klartext m ist nicht relevant, da ElGamal
nur zum Austausch von Sitzungsschlüsseln verwendet wird. Die Verschlüsselung nach ElGamal ist eng mit dem Schlüsselaustausch von Diffie-Hellmann verwandt und wird vor allem bei
digitalen Signaturen eingesetzt.
Beispiel 5.8. Zeige dass gilt:
m = ap−1−a b mod p
105
5 Public-Key Kryptographie
5.5 Das Knapsack-Verfahren
Dieses Verfahren, auch Untersummen-System genannt, wurde von Merkle und Hellman erfunden. Es basiert auf dem Untersummen-Problem welches mit Hilfe eines zylindrischen Behälters,
welcher mit massiven Zylindern gleichen Durchmessers wie der Behälter, aber unterschiedlicher Höhe, gefüllt wird.
Mathematisch bedeutet dies, dass man die Gleichung
C =
n
X
a i xi = ~
a·x
~
i=1
zu gegeben ~
a = (a1 , a2 , . . . , an ) ∈ INn und C ∈ IN nach x
~ = (x1 , x2 , . . . , xn ) ∈ ∠Zn2 auflöst.
Beispiel 5.9. Ist ~a = (1, 2, 4, 8) und C = 13, dann findet man wegen
13 = 8 + 4 + 1 = 1 · 23 + 1 · 22 + 0 · 21 + 1 · 20 = 11012
sofort ~
x = (1, 1, 0, 1)!
Das Untersummen-Problem kann einfach gelöst werden, falls die Komponenten des Vektors ~
a
eine superincreasing Folge bilden, d.h. wenn gilt:
ai >
i−1
X
al (i = 1, 2, . . . , n).
l=1
In diesem Fall subtrahiert man jeweils das grösst mögliche ai von der (noch verbleibenden)
Summe und setzt das entsprechende xi gleich Eins (andernfalls gleich Null, wenn diese Subtraktion nicht möglich ist). Auf diese Weise fährt man fort, bis die noch verbleibende Summe
Null ist.
Das Knapsack-Verfahren funktioniert wie folgt:
Es wird eine Blockgrösse n abgemacht. Jeder Teilnehmer wählt dann eine superincreasing Folge
von nP
Zahlen bi (i = 1, 2, . . . , N ) und bildet damit den Vektor ~b. Weiter wählt er einen Modul
m > ni=1 bi , eine zu m teilerfremde Zahl k (1 ≤ k ≤ m − 1), sowie eine Permutation Π der
Zahlen (1, 2, . . . , n). Dies ergibt den privaten Schlüssel (Π, m, k, ~b).
Der öffentliche Schlüssel ist der Vektor ~
a = (a1 , a2 , . . . , an ), wobei
ai = k bΠ(i) mod m,
(i = 1, 2, . . . , n).
(5.8)
Beim Verschlüsseln wird die Nachricht zuerst in Blöcke der Länge n-Bit zerlegt und dieser als
Vektor p
~ = (p1 , p2 , . . . , pn ) ∈ ∠Zn2 dargestellt. Der Geheimtext ist dann
c = p
~·~
a.
106
5 Public-Key Kryptographie
Um den Klartext p aus dem Geheimtext c zu erhalten, multipliziert man diesen mit k −1 mod m.
Man erhält
d ≡ w −1 c ≡ k −1
n
X
pi ai ≡
i=1
n
X
pi k −1 ai ≡
i=1
n
X
pi bΠ(i) (modm)
i=1
Pn
da 0 ≤ d < m gilt d = i=1 pi bΠ(i) mod m und somit kann der Klartext p
~ erhalten werden,
indem man das (leichte) Teilsummen-Problem für eine superincreasing Folge löst.
Beispiel 5.10. Wir wählen N = 8,
~b = (11, 17, 31, 63, 129, 259, 523, 1103)
den Modul m = 2137, die Zahl k = 1001 sowie die Permutation Π = (2, 3, 1, 6, 5, 8, 4, 7). Diese
Informationen bilden (mit Ausnahme der allgemein bekannten Zahl N ) den privaten Schlüssel.
Der öffentliche Schlüssel ergibt sich aus 5.8 zu ~
a = (2058, 1113, 326, 682, 909, 1411, 1090, 2095)
Die entsprechenden Befehle in Maple lauten:
b:=[11,17,31,63,129,259,523,1103];
seq(sum(b[l],l=1..k),k=1..8);
m:=nextprime(2136);
k:=1001;
gcd(k,m);
pi:=[2,3,1,6,5,8,4,7];
a:=[seq(k*b[pi[i]] mod m,i=1..8)];
p:=[1,1,0,1,1,0,0,0];
c:=sum(a[l]*p[l],l=1..8);
igcdex(k,m,’s’,’t’);
s;
649*1001 mod m;
ks:=s;
d:=ks*c mod m;
d:=d-259;
d:=d-129;
d:=d-31;
d:=d-17;
p1:=[0,1,1,0,1,1,0,0];
seq(p1[pi[i]],i=1..8);
5.6 Algorithmen für digitale Signaturen
Ein System für digitale Signaturen besteht aus den folgenden drei effizienten Algorithmen:
107
5 Public-Key Kryptographie
Schlüsselerzeugung: jeder Teilnehmer erzeugt ein Paar von (Signatur-) Schlüsseln. Den
privaten d verwendet er zum Signieren, den öffentlichen e können alle Benutzer verwenden, um zu überprüfen, ob die Signatur echt ist.
Signieren: Eine Nachricht m, oder deren Hash h(m) wird signiert, d.h. sie wird mit dem
privaten (Signatur-) Schlüssel verschlüsselt:
S = E(h(m), d)
Das signierte Dokument besteht aus der Meldung und der Signatur, d.h. (m, S).
Verifizieren: Der Empfänger berechnet ebenfalls den Hash der Meldung h(m) und vergleicht
diesen mit
h0 (m) = D(S, e)
dem Hashwert also, den man durch Entschlüsselung der Signatur erhält. Diese Entschlüsselung kann jeder durchführen: er muss nur im Besitz des öffentlichen Schlüssels des
Absenders sein! Stimmen die beiden Hash-Werte überein kann nur der Inhaber des privaten (Signatur-) Schlüssels diese Signatur erstellt haben
5.6.1 Zusatz ...
Man nennt eine public-key Verschlüsselung reversibel, falls
D(E(m, k), k) = E(D(m, k), k) = m,
108
∀m ∈ M = C .
5 Public-Key Kryptographie
[1]
109
Literaturverzeichnis
[1] J. F. Bürgler, R. E. Bank, W. Fichtner, and R. K. Smith. A New Discretization Scheme for
the Semiconductor Current Continuity Equations. IEEE Trans. CAD, 8(5):479–89, 1989.
110
Kryptologie (Version 20050103)
Josef F. Bürgler
3. Januar 2005
Inhaltsverzeichnis
6 Kryptographische Hilfsfunktionen
6.1 Hashfunktionen . . . . . . . . . . . . . . .
6.1.1 N-Hash . . . . . . . . . . . . . . .
6.1.2 MD4 . . . . . . . . . . . . . . . .
6.1.3 MD5 . . . . . . . . . . . . . . . .
6.1.4 MD2 . . . . . . . . . . . . . . . .
6.1.5 SHA-1 . . . . . . . . . . . . . . .
6.1.6 Weitere Hash-Funktionen . . . . .
6.1.7 Angriffe auf Hash-Funktionen . . .
6.2 Message Authentication Codes . . . . . . .
6.3 Zufalls- und Pseudozufallsgeneratoren . . .
6.3.1 Der linear kongruente Generator . .
6.3.2 Lineare Feedback Shift Register . .
6.3.3 Blum-Blum-Shub Zufallsgenerator
6.3.4 Statistische Tests . . . . . . . . . .
6.3.5 Weiter führende Links . . . . . . .
6.4 Einweg-Funktionen (mit Falltür) . . . . . .
6.4.1 Quadrieren . . . . . . . . . . . . .
6.4.2 Exponentiation modulo p . . . . . .
6.4.3 RSA Funktion . . . . . . . . . . .
6.4.4 Rabin Funktion . . . . . . . . . . .
Literaturverzeichnis
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
109
109
109
110
111
113
113
114
116
118
120
121
121
122
123
124
124
124
125
125
125
126
ii
6 Kryptographische Hilfsfunktionen
6.1 Hashfunktionen
Eine Hashfunktion h : A → B ist eine effizient berechenbare Funktion, für die |B| << |A|
gilt.
Beispiel 6.1. Falls A die Menge aller binären Strings endlicher aber beliebiger Länge ist und B die
Mange aller 32-Bit Strings, und f eine Abbildung von A nach B, dann spricht man von einem 32-Bit
Hash.
Hashfunktion sollten keine Kollisionen aufweisen, d.h. es sollte keine Inputs x 6= y geben, mit
h(x) = h(y). Die Hashfunktion ist kollisionsfrei, falls es keine Kollisionen gibt.
Beispiel 6.2. Die Hashfunktion
h : ({0, 1})? → {0, 1}(x1 , x2 , . . . , xn ) 7→ h(x1 , x2 , . . . , xn ) = x1 ⊕ x2 ⊕ . . . ⊕ xn
ist (überhaupt) nicht kollisionsfrei. Warum?
Eine gute Hashfunktion sollte folgende (Sicherheits-) Eigenschaften besitzen:
Kollisionsresistenz: Es sollte also praktisch unmöglich sein, eine Kollision zu finden.
Einweg-Eigenschaft: Es ist praktisch unmöglich, zu einem gegebenem Input x eine Kollision y zu finden, so dass h(x) = h(y). Man nennt diese Eigenschaft auch second preimage
resistance.
Preimage Resistance: Es ist praktisch unmöglich zu einem beliebigen y ∈ B ein x ∈ A zu
finden mit y = h(x).
Eine kollisionsresistente Hashfunktion ist erst recht eine Einweg-Hashfunktion. Den Beweis
kann man sich einfach überlegen!
6.1.1 N-Hash
Der N-Hash ist eine von NTT entwickelte Hash-Funktion, die an den Block-Cipher FEAL
(1990) angelehnt ist. Sie erzeugt aus einer beliebig langen Nachricht einen 128-Bit Hash-Wert.
Bert den Boer konnte relative einfach Kollisionen konstruieren. Bahim und Shamir verwendeten
differentielle Kryptanalyse um den 6 Runden Fall zu brechen.
Gemäss Bruce Schneier sollte diese Hash-Funktion nicht verwendet werden.
109
6 Kryptographische Hilfsfunktionen
Abbildung 6.1: Übersicht von N-Hash.
6.1.2 MD4
Der MD4 message digest 4 ist eine von Rivest entwickelte 128-Bit Hashfunktion. Sie ist speziell
für Intel-Prozessoren (little endian) optimiert und verwendet 3 Runden. Die beiden letzten wurden von Boer und Bosselaers erfolgreich angegriffen, die erste von Merkle. Ein gemeinsamer
Angriff auf alle 3 Runden ist nicht bekannt, muss aber wegen den eben erwähnten Resultaten
angenommen werden.
110
6 Kryptographische Hilfsfunktionen
Abbildung 6.2: Eine Verarbeitungsstufe von N-Hash.
6.1.3 MD5
MD5 ist ein Verbesserung von MD4: arbeitet also auch auf 512-Bit Blöcken und erzeugt einen
128-Bit Hashwert. Es wurde aber eine vierte Runde dazugefügt um u.A. einen besseren Lawineneffekt zu erzielen. Abbildung 6.4 zeigt diese vier Runden, die jeweils auf die vier Teile A,
B, C und D eines Blockes zugreifen. Leider ist MD5 nicht sehr kollisionsresistent womit eines
der Designkriterien nicht erricht wurde.
Damit auf 512-Bit Blöcken gearbeitet werden kann, muss die Nachricht vorbereitet zuerst vorbereitet werden. Dabei wird nach dem letzten Zeichen eine Eins angefügt und danach so viele
Nullen, damit am Ende noch Platz frei bleibt für die 64-Bit Darstellung der Länge der Meldung
111
6 Kryptographische Hilfsfunktionen
Abbildung 6.3: Die Funktion f innerhalb einer Verarbeitungsstufe von N-Hash.
vor dem Padding.
Abbildung 6.5 zeigt, wie eine einzelne Runde arbeitet.
Erst kürzlich wurden in MD5 Kollisionen gefunden. Hier eine solche Kollision:
echo d131dd02c5e6eec4693d9a0698aff95c2fcab58712467eab4004583eb8fb7f895\
5ad340609f4b30283e488832571415a085125e8f7cdc99fd91dbdf280373c5bd8823e3\
156348f5bae6dacd436c919c6dd53e2b487da03fd02396306d248cda0e99f33420f577\
ee8ce54b67080a80d1ec69821bcb6a8839396f9652b6ff72a70 > 1.asc
echo d131dd02c5e6eec4693d9a0698aff95c2fcab50712467eab4004583eb8fb7f895\
5ad340609f4b30283e4888325f1415a085125e8f7cdc99fd91dbd7280373c5bd8823e3\
156348f5bae6dacd436c919c6dd53e23487da03fd02396306d248cda0e99f33420f577\
ee8ce54b67080280d1ec69821bcb6a8839396f965ab6ff72a70 > 2.asc
xxd -r -p 1.asc > 1.bin
xxd -r -p 2.asc > 2.bin
cmp 1.bin 2.bin
md5sum 1.bin 2.bin
Obwohl die beiden Files 1.asc und 2.asc im 20. Byte verschieden sind, liefern sie beide
112
6 Kryptographische Hilfsfunktionen
Abbildung 6.4: Die vier Runden von MD5.
den selben MD5-Hash.
6.1.4 MD2
MD2 wurde wie auch MD5 von Ron Rivest entwickelt: beide werden im PEM (privace enhanced mail) Protokoll eingesetzt. Die Sicherheit von MD2 basiert auf einer Zufallspermutation
von Bytes welche fix ist und auf den Stellen von π basiert. Es sind keine Schächen bekannt: der
Algorithmus ist aber auch langsamer als die anderen Hash-Funktionen.
6.1.5 SHA-1
SHA-1 (Secure Hash Algorithm verbesserte Version) wird zusammen mit dem Digital Signature
Standard (DSS) verwendet. Es handelt sich um einen 160-Bit Hash welcher auf 512-Bit Blöcken arbeitet. SHA-1 basiert auf MD4 und wurde vom NIST (National Institut for Standards
and Technology) für die US-Regierung entworfen. Damit ähnelt SHA-1 auch MD5 (welches
eine Verbesserung von MD4 darstellt), hat aber eine zusätzliche Runde mit einer ExpansionsTransformation und besserem Lawineneffekt.
Wegen seiner Länge von 160 Bit ist SHA resitenter gegen Brute-Force Angriffe (auch Birthday
Attacken) als die 128-Bit Varianten MDx!
Diese Hash-funktion kann als sehr sicher bezeichnet werden und wird deshalb sehr häufig eingesetzt.
113
6 Kryptographische Hilfsfunktionen
Abbildung 6.5: Eine Runde von MD5.
6.1.6 Weitere Hash-Funktionen
Neben den oben vorgestellten Hash-Funktionen werden auch folgende verwendet:
RIPEMD-160 basiert auf MD4 und berücksichtigt die Kenntnisse, welche man bei der Kryptoanalyse von MD4 und MD5 gewonnen hat. Es wird ein 160-Bit Hashwert erzeugt. Diese
Hash-funktion ist sehr sicher und wird häufig verwendet.
HAVAL erzeugt Hashwerte von 128 bis 256 Bit.
Auf modularer Arithmetik basierende Hashfunktionen Dabei wird modulo M Arithmetik angewendet wobei M genügend gross und schwer zu faktorisieren sein soll. Dann
wird z.B. bei MASH-1 die folgende Iteration verwendet:
Hi =
((Hi−1 ⊕ yi ) ∨ A)2 modM a n ⊕ Hi−1
wobei A = 0xf 0 . . . 0, H0 = 0 (Initilisierungs Vektor), M = pq, ∨ bitweise inklusives
OR, ⊕ bitweises exklusives OR und a n behalten der rechten n Bits vom m-Bit Resultat
links.
Auf symmetrischen Verfahren basiernde Hashfunktionen Davies-Meyer verwenden beispielsweise folgende Rekursionsformel:
Hi = E(xi , Hi−1 ) ⊕ Hi−1 , 1 ≤ i ≤ t.
114
6 Kryptographische Hilfsfunktionen
Abbildung 6.6: Arbeitsweise von SHA-1.
wobei H0 = IV ein konstanter, vordefinierter Initialisierungsvektor ist, und E ( xi , ·) eine Verschlüsselungsfunktion mit dem Schlüssel xi . Die Abbildung 6.7 zeigt, wie diese
Funktion realisiert werden kann.
Auf public-key Verfahren basiernde Hashfunktionen Ist m die Nachricht, p eine Primzahl so kann man beispielsweise
H(m) = me mod p,
verwenden (Problem des diskreten Logarithmus). Alternativ kann man ein auf RSA basierendes Verfahren verwenden: hier ist n das Produkt von zwei grossen Primzahlen p
und q und e ist teilerfremd zu φ(n). Dann wird der Hash der Nachricht m definiert durch
H(m) = me mod n,
115
6 Kryptographische Hilfsfunktionen
Hi−1
xi
E(xi , ·)
Hi
Abbildung 6.7: Hashfunktion mit symmetrischer Verschlüsselung nach Davies-Meyer.
Die Stärke liegt im Problem der Faktorisierung grosser Zahlen. Das Problem beider Algorithmen ist die Geschwindigkeit: sie sind (wegen der modularen Exponentiation) wesentlich langsamer als die vorher besprochenen Methoden.
6.1.7 Angriffe auf Hash-Funktionen
Im Paper http://eprint.iacr.org/2004/199.pdf behaupten Wang etal. dass Kollisionen sowohl in MD5, HAVAL-128, RIPEMD wie auch in MD4 in wenigen Stunden auf einen
PC berechnet werden kÃűnnen. Inbesondere finden die Autoren auf einem IBM P690 eine erste
Kollisionen in MD5 nach einer Stunde und weitere Kollisionen nach wenigen Minuten.
Hier ein Auszug aus der Mailingliste crypto:
Eli Biham -- has collisions on 34 (out of 80) rounds of SHA-1, but can
extend that to probably 46. Still nowhere near a break.
Antoine Joux -- his team announced the collision on SHA-0 earlier this
week. There is concentration on the so-called "IF" function in the first 20
rounds... f(a,b,c) = (a & b) ^ (~a & c). That is, the bits of a choose
whether to pass the bits from b, or c, to the result. The technique (and
Eli’s) depends on getting a "near collision" in the first block hashed,
then using more near collisions to move the different bits around, finally
using another near collision to converge after the fourth block hashed.
This took 20 days on 160 Itanium processors. It was about 2^50 hash
evaluations.
Xiaoyun Wang was almost unintelligible. But the attack works with "any
116
6 Kryptographische Hilfsfunktionen
initial values", which means that they can take any prefix, and produce
collisions between two different suffixes. The can produce the first
collision for a given initial value in less than an hour, and then can
crank them out at about one every 5 minutes. It seems to be a
straightforward differential cryptanalysis attack, so one wonders why
no-one else came up with it. The attack on Haval takes about 64 tries. On
MD4, about 4 tries. RIPE-MD, about 2 hours (but can improve it). SHA-0
about 2^40 (1000 times better than Joux).
Xuejia Lai clarified that the paper on E-print has been updated with
correct initial values. They were initially byte-reversed, which they
blamed on Bruce Schneier.
Beispiel 6.3. Ein praktisches Beispiel, ebenfalls aus der obigen Mailingliste:
$ od -tx1 file1.bin
0000000 83 9c 7a 4d 7a 92 cb 56 78 a5 d5 b9 ee a5
0000020 3c 8a 74 de b3 66 c3 dc 20 a0 83 b6 9f 5d
0000040 b3 71 9d c6 98 91 e9 f9 5e 80 9f d7 e8 b2
0000060 31 8e dd 45 e5 1f e3 97 40 c2 13 f7 69 cf
0000100
$ od -tx1 file2.bin
0000000 83 9c 7a 4d 7a 92 cb d6 78 a5 d5 29 ee a5
0000020 3c 8a 74 de b3 66 c3 dc 20 a0 83 b6 9f 5d
0000040 b3 71 9d c6 98 91 e9 f9 5e 80 9f d7 e8 b2
0000060 31 8e dc 45 e5 1f e3 97 40 c2 13 f7 69 cf
0000100
$ cmp file1.bin file2.bin
file1.bin file2.bin differ: char 8, line 1
$ openssl md4 file1.bin file2.bin
MD4(file1.bin)= c6f3b3fe1f4833e0697340fb214fb9ea
MD4(file2.bin)= c6f3b3fe1f4833e0697340fb214fb9ea
a7
2a
3b
b8
57
3b
a6
a7
a7
2a
3b
b8
57
3b
a6
a7
117
6 Kryptographische Hilfsfunktionen
6.2 Message Authentication Codes
Ein Message Authentication Code (MAC) wird beispielsweise verwendet um Nachrichten vor
Veränderungen zu schützen. Auf diese Weise werden Nachrichten authentisiert, d.h. MACs
sichern die Echtheit (Authentizität) von Nachrichten.
Beispiel 6.4. MACs können Bank-Transaktionen vor Veränderung schützen oder Computerprogramme
vor Viren, etc.
Für eine Nachricht x wird ein nur den beiden Kommunikationspartnern bekannten Schlüssel k
gewählt und damit der Authentifikationscode berechnet:
a = MAC(x, k).
(6.1)
Zu jedem MAC gehört ein vom Schlüssel k abhängiger Test, welcher prüft, ob ein Authentifikationscode MAC(x, k) zu einer Nachricht x0 passt: Es gilt also
Test(x , MAC(x, k)) =
0
ja, falls MAC(x, k) = MAC(x0 , k)
nein, falls MAC(x, k) 6= MAC(x0 , k)
Beispiel 6.5. Der einfachste Weg eine schlüsselabhängige Hashfunktion zu realiseren ist folgender:
Man verschlüssele die Meldung mit einem Blockverfahren im CBC- oder CFB-Modus und verwende
lediglich den letzen verschlüsselten Block nochmals im entsprechenden Modus verschlüsselt.
Die Schwäche des Algorithmus liegt darin, dass der Angreifer aus dem MAC durch Entschlüsseln (in die
umgekehrte Richtung, was er ja kann, weil er den Schlüssel kennt) und dank Differentieller Kryptoanalyse einen Text erzeugen kann, der den selben MAC erzeugt.
Auf diese Art und Weise könnte der Empfänger also beispielsweise einen Vertrag verändern, ohne dass
sich die Signatur ändert!
Wie zeichnen sich gute MACs aus? Wir betrachten einige Beispiele:
Beispiel 6.6. Sei p eine Primzahl, m = (m1 , m2 , . . . , mn ) ∈ (∠Zp )n eine Nachricht bestehend aus n
Blöcken, und k = (k1 , k2 , . . . , kn ) ∈ (∠Zp )n ein Schlüssel.
Dann definieren wir den MAC der Nachricht m durch:
MAC(m) =
n
X
mi ki mod p.
i=1
Nimmt man beispielsweise p = 5, k = (2, 3, 4) so erhält man für m 1 = (1, 2, 3)
MAC(m1 ) = (1, 2, 3)
118
6 Kryptographische Hilfsfunktionen
Eine häufig verwendete Form ist der HMAC (Hash MAC) welcher für die Daten data wie folgt
definiert ist:
hash(key, hash(key, data))
Dadurch beeinflusst der Schlüssel sowohl den Anfang wie auch das Ende des Hashing-Prozesses.
Für die Namensgebung verwendet man folgendes Schema: hash + key = HMAC-hash. Ist die
Hashfunktion also MD5, wird der oben definierte HMAC mit HMAC-MD5 bezeichnet, verwendet man statt dessen SHA (oder SHA-1), so heisst der zugehörige HMAC analog HMAC-SHA
(oder HMAC-SHA1)!
119
6 Kryptographische Hilfsfunktionen
6.3 Zufalls- und Pseudozufallsgeneratoren
Kryptographische Algorithmen und Protokolle benötigen für verschiedene Aufgaben, wie beispielsweise zur Erzeugung einer Primzahl oder eines Sessionsschlüssels, eine gewisse Anzahl
von Zufallsbits. Dabei muss gewährleistet sein, dass es sich um echte Zufallsbit handelt: die
Folge von Zufallsbit muss also gewisse Eigenschaften erfüllen!
Es scheint einleuchtend, dass physikalische Experimente wie die folgenden völlig zufällig sind,
und deshalb als Quellen von echten Zufallsbits dienen können. Sie sind aber meist sehr aufwändig und teuer und können oft nicht in einem entsprechenden Gerät (wie einem Computer)
untergebracht und zuverlässig betrieben werden.
• Radioaktiver Zerfall.
• Termisches Rauschen in Transistoren.
• Lava-Lampen.
• ...
Aus diesen Gründen versucht man entsprechende Bit-Strings mit Hilfe von Software zu erzeugen: man spricht dann von Pseudo Zufalls-Bitstrings.
Ein Zufallsgenerator mit Schlüsselraum K ist eine effizient berechenbare Abbildung von K auf
die Menge der einseitig ∞-en Bitstrings.
Wann ist ein Pseudo-Zufallsgenerator gut? Er soll folgende Eigenschaften aufweisen:
• Es sollen ungefähr gleich viele Einsen wie Nullen auftreten!
• Eine allfällige Periode soll sehr gross sein!
• Alle 2k verschiedenen k-Tupel (für k bis zu einer bestimmten, festen Grenze) sollen etwa
gleich oft auftreten.
• Es soll unmöglich sein, aus einem mitgehörten Stück des Zufalls-Bitstrings die restlichen
Bits vorauszusagen.
Ein Pseudozufallsgenerator wird als kryptographisch sicher bezeichnet, wenn es keinen effizienten Algorithmus gibt, der bei beliebiger Wahl des Startzustandes die ausgegebene Folge von
einer rein zufälligen Bitfolge mit einer Wahrscheinlichkeit (signifikant) grösser als 1/2 unterscheiden kann. ...
Wir wollen nun einige Zufallsgeneratoren näher betrachten.
120
6 Kryptographische Hilfsfunktionen
6.3.1 Der linear kongruente Generator
Der linear kongruente Generator
xn = (axn−1 + b) mod m,
n = 1, 2, . . .
mit Konstanten a b ∈ ∠Z, m ∈ IN und dem seed (oder Schlüssel) x0 hat eine Periode, die
nicht grösser als m sein kann: denn xn kann ja höchstens die m Werte zwischen 0 und m − 1
annehmen und wenn einer dieser Werte bereits angenommen wurde, ist eine Periode vorbei, da
ab diesem Zeitpunkt wieder dieselben Werte angenommen werden!
Werden a, b, m sorgfältig gewählt, erreicht man eine Periode von m (Beispielsweise muss b
teilefremd zu m gewählt werden!).
Da linear kongruente Generatoren voraussagbare Resultate liefern, können sie in der Kryptographie nicht eingesetzt werden! Auch quadratisch und kubisch kongruente Generatoren (wo die
obige lineare Funktion durch eine quadratische oder kubische ersetzt wird) sind nicht sicher. Ja
sogar jeder polynomial kongruente Generator kann gebrochen werden.
In Simulationen (wo ebenfalls Pseudozufallszahlen mit bestimmten statistischen Eigenschaften
benötigt werden) lassen sie sich aber problemlos einsetzen.
6.3.2 Lineare Feedback Shift Register
Lineare Feedback Shift Register (LFSR) werden sowohl in Kryptographie wie auch in der Kodierungstheorie verwendet. Ein Feedback Shift Register besteht aus zwei Teilen: einem Shift
Register und einer Feedback Funktion. Ein Shift-Register ist eine Folge von n Bits (man spricht
dann von einem Shift-Register der Länge n)
Beispiel 6.7. Aufbau eines LFSR. Die Feedback-Funktion!
121
6 Kryptographische Hilfsfunktionen
Die Ausgabefolge eines LFSR ist vollständig durch die erstmalige Belegung der Register gegeben. Kennt man also eine Teilfolge der Länge 2n, so kann man mit Hilfe eines Gleichungssystem auf die Konstruktion des LFSR schliessen.
Beispiel 6.8. Beispiel aus der Prüfung 5Ibb!
Aus diesem Grunde sind LFSR ebensowenig als kryptographische Zufallsgeneratoren verwendbar wie die linear kongruenten Generatoren. Allerdings haben sie genügende statistische Eigenschaften, vorausgesetzt die Periode ist maximal. Die Periode kann ja maximal 2 n − 1 betragen,
da ein LFSR der Länge n genau 2n − 1 nicht triviale Anfangszustände haben kann (der Nullzustand sei hier ausgeschlossen, da er nicht zu einer interessanten Ausgabefolge führt).
Beispiel 6.9. Ein LFSR der Länge 8 hat eine maximale Periode von 2 8 −1 = 255. Jeder Anfangszustand
taucht irgend wann in der Ausgabefolge auf. Der Ausganszustand bestimmt somit einen bestimmten Zeitpunkt in einer Ausgabefolge! Betrachtet man also das selbe LFSR mit verschiedenen Anfangszuständen,
so liefern sie, bis auf eine zeitliche Verschiebung die selben Zahlenfolgen.
Dadurch hat man ein Werkzeug in der Hand, um bespielsweise zwei Uhren sehr genau zu synchronisieren.
Dies wird im GPS verwendet: dabei wird eine Quarzuhr im GPS-Empfänger mit den Atomuhren der
GPS-Satelliten synchronisiert und erreicht dadurch eine Ganggenauigkeit, die der der Atomuhr gleicht!
Erst durch Einführen von nicht linearen Einflüssen in der Rückkopplung können kryptographisch sichere FSR (Feedback Shift Register) hergestellt werden.
Man kann aber auch drei LFSR kombinieren und einen einzigen Bitstrom generieren indem das
dritte LFSR spezifiziert, ob das nächste Bit vom ersten oder vom zweiten LFSR übernommen
wird. Bei einer 0 wird das nächste Bit vom ersten und bei einer 1 wird das nächste Bit vom
zweiten LFSR verwendet.
6.3.3 Blum-Blum-Shub Zufallsgenerator
1982 haben Blum, Blum und Shub einen einfachen Zufallsgenerator vorgeschlagen, welcher
auch x2 mod n-Generator genannt wird. Dazu wird n als Produkt zweier verschiedener Primzahlen gewählt, welche beide kongruent zu 3 modulo 4 sind. Der Anfangswert x 0 (engl. seed)
kann irgend ein quadratisches Residuum modulo n sein (ausser Null), d.h. es gilt x 0 ≡ y 2 mod
n (y 6= 0). Dann wird rekursiv eine Folge von Zufallszahlen berechnet:
xi+1 = x2i mod n (i = 0, 1, ·)
Daraus wird die Zufallsbitfolge (b0 , b1 , b2 , . . .) erzeugt, indem man das least significant bit von
xi verwendet, d.h.
bi = LSB(xi ).
Dieses Schema erfullt alle (polynomiale Zeit) statistischen Tests, falls die Faktorisierung von
n schwierig ist. Dann ist diese Zufallsbitfolge nicht unterscheidbar von einer Folge echter Zufallsbits. Leider ist die Berechnung nicht effizient!
122
6 Kryptographische Hilfsfunktionen
6.3.4 Statistische Tests
In diesem Abschnitt sollen statistische Tests eingeführt werden, mit denen untersucht werden
kann, ob eine Bitfolge mit einer gewissen Wahrscheinlichkeit zufällig ist. Dazu müssen wir
zuerst einige Begriffe einführen.
Eine Teilfolge von n Gliedern der Folge (s) = (s0 , s1 , s2 , . . .) ist definiert durch
(s)n = (s0 , s1 , s2 , . . . , sn−1 ) .
Man nennt die Folge (s) N -periodisch, falls si = si+N , ∀i ≥ 1. In diesem Fall ist die Folge
periodisch. Die Periode ist das kleinste positive N , für welches die Folge (s) N -periodisch ist.
Dann nennt man (s)N einen Zyklus der Folge (s).
Ein ...Lauf... (engl. run) von (s) ist eine aufeinanderfolgende Menge von Einsen (oder Nullen),
denen keine Eins (oder Null) vorausgeht oder folgt. Man nennt einen Lauf von Nullen auch
Lücke und eine Lauf von Einsen Block.
Für eine N -periodische Folge (s) definiert man die Autokorrelationsfolge durch
ct
N −1
1 X
(2si − 1)(2si+t − 1),
=
N i=0
für 0 ≤ t ≤ N − 1.
Sie ist ein Mass für die Ähnlichkeit der Folge (s) und der um t Positionen verschobenen Folge.
Für eine Zufallsfolge mit Periode N wird erwartet, dass |N ·ct | ziemlich klein ist für 0 < t < N .
Golomb (...) hat postuliert, dass eine N -periodische Zufallsfolge (s) folgende Eigenschaften
haben muss:
(1): Im Zyklus (s)N ist der Unterschied zwischen der Anzahl Einsen und Null höchstens Eins.
(2): Im Zyklus (s)N haben wenigstens die Hälfte der Runs die Länge 1, wenigstens ein Viertel die Länge 2, wenigstens ein Achtel die Länge 3, etc. solange die Anzahl Runs Eins
übersteigt. Zudem hat man für jede dieser Längen (etwa) gleich viele Lücken und Blöcke.
(3): Die Autokorrelationsfolge nimmt nur die beiden Werte 1 (für t = 0) und K/N (für 1 ≤
t ≤ N − 1) an, wobei K ∈ ∠Z.
Eine Binäre Folge, welche diese drei Eigenschaften (von Golomb) hat, heisst Pseudo-Noise
Folge oder pn-Folge. In der Praxis treten pn-Folgen als Ausgaben von maximal-length LFSR
(linear feedback shift registers) auf.
Beispiel 6.10. Betrachte die 15-periodische Folge mit dem Zyklus
(s)15 = (0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1)
Man sieht sofort, dass die Anzahl Nullen gleich 7 und die Anzahl Einsen gleich 8 ist. Damit ist die erste
Eigenschaft vorhanden. Weiter hat (s) 15 insgesamt 8 Runs, wovon 4 mit der Länge 1 (2 Lücken und 2
Blöcke), 2 mit der Länge 2 (1 Lücke und 1 Block), 1 mit der Länge 3 (1 Lücke) und 1 mit der Länge 4 (1
Block). Schliesslich nimmt die Autokorrelationsfolge die Werte 1 (für t = 0) und −1/15 (für 1 ≤ t ≤ 14)
an. Somit ist (s) eine pn-Folge.
123
6 Kryptographische Hilfsfunktionen
Beispiel 6.11. A5 ist der in GSM (Group Special Mobile) verwendete Stromchiffre.
Obwohl die Deutschen wegen der Nähe zur damaligen Sovietunion ein starkes Verschlüsselungssystem
für Handys wollten, wurden sie von anderen Ländern überstimmt und es kam das von Frankreich entworfene A5 zum Einsatz. Dieses besteht aus drei LFSR’s mit Registerlängen von 19, 22 und 23. Alle
Feedback Polynome sind spärlich. Der Output ist das XOR dieser drei LFSR’s. A5 verwendet einen variablen Clockcontrol.
Die grundlegenden Ideen hinter dem Design von A5 sind gut und es trotz allen statistischen Tests: seine
einzige Schäche sind die kurzen Register, die eine brute-force Attacke sinnvoll erscheinen lassen.
Es gibt Varianten von A5 (A5/2 und A5/3) die mit mehr und/oder längeren Registern und dichten FeedbackPolynomen arbeiten und als sicherer gelten: aber auch für diese gibt es bereits erfolgreiche Angriffe!
Für weitere Informationen siehe http://www.infosecwest.com/cryptome/gsm-crack-bbk.pdf
6.3.5 Weiter führende Links
Das Kapitel 6, Random Number Generation, von Peter Gutmann
http://www.cryptoapps.com/ peter/06_random.pdf.
Das Design Dokument von Yarrow
http://www.counterpane.com/yarrow.html
Die Link-Farm von David Wagner
http://www.cs.berkeley.edu/ daw/rnd/index.html
Der FIPS 186 Generator (siehe Appendix 3):
http://csrc.nist.gov/publications/fips/fips186-2/fips186-2-change1.pdf
Das pLab des Mathematik-Departements der Universität Salzburg beschäftigt sich mit der
Theorie und Praxis der Erzeugung von Zufallszahlen:
http://crypto.mat.sbg.ac.at/
6.4 Einweg-Funktionen (mit Falltür)
Obwohl in der kryptographie einige Funktionen eingesetzt werden, von denen man vermutet,
dass es sich um Einweg-Funktionen handelt, ist der mathematische Beweis bisher noch nicht
gelungen.
Einige mögliche Einweg-Funktionen mit Falltür sind:
6.4.1 Quadrieren
x 7→ y = x2 mod n
124
6 Kryptographische Hilfsfunktionen
Eine Falltür hat man dann, wenn die Faktorisierung von n bekannt ist. Man wählt also n = p q
als Produkt zweier sehr grosser Primzahlen p und q. Damit ist das Berechnen von Quadratwurzeln modulo n mindestens so schwierig, wie das Faktorisieren von n. Letzteres ist bis jetzt eines
der Probleme, welches nicht in polynomial beschränkter Zeit gelöst werden kann!
Beispiel 6.12. Lesen Sie den Abschnitt 3.5 (Computing square roots in ∠Z n ) im Handbook of App-
lied Cryptography. Was ist die Komplezität dieses Problemes falls (a) n eine Primzahl ist, (b) n eine
zusammengesetzte Zahl ist?
Bemerkung: Man nennt a ∈ ∠Zn quadratisches Residuum modulo n oder Quadrat modulo n,
falls ein x ∈ ∠Z∗n existiert, so dass gilt:
x2 ≡ a mod n
Die Menge aller quadratischen Residuen modulo n bezeichnet man mit Q n . Ist a kein quadratisches Residuum modulo n, so nennt man es quadratisches Nicht-Residuum modulo n. Die
Menge aller quadratischen Nicht-Residuen bezeichnet man mit Qn .
Beispiel 6.13. Sei n = 5. Wie lauten Q5 und Q5 ?
Lösung: Man prüft leicht nach, dass gilt:
Q5 = {1, 4}
Q5 = {2, 3}
Es ist klar, dass 0 ∈
/ Q5 und 0 ∈
/ Q5 !
6.4.2 Exponentiation modulo p
Sei p eine Primzahl und α eine Erzeugende von ∠Z∗p , dann ist die Funktion f : ∠Z∗p → ∠Z∗p
definiert durch
f (x) = αx mod p
(nach heutigen Erkenntnissen) eine Einweg-Funktion.
6.4.3 RSA Funktion
Seien p und q zwei verschiedene ungerade Primzahlen und n = pq. Sei e eine Zahl mit
ggT (e, (p − 1)(q − 1)) = 1, dann ist die Funktion f : ∠Z → ∠Z definiert durch
f (x) = xe mod n
(nach heutigen Erkenntnissen) eine Einweg-Funktion.
6.4.4 Rabin Funktion
Wie bei der RSA-Funktion wobei q und q noch kongruent zu 3 modulo 4 sein sollen und f (x) =
x2 mod n gilt!
125
6 Kryptographische Hilfsfunktionen
[1]
126
Literaturverzeichnis
[1] J. F. Bürgler, R. E. Bank, W. Fichtner, and R. K. Smith. A New Discretization Scheme for
the Semiconductor Current Continuity Equations. IEEE Trans. CAD, 8(5):479–89, 1989.
127
Kryptologie (Version 20050120)
Josef F. Bürgler
21. Januar 2005
Inhaltsverzeichnis
7 Protokolle
7.1 Einführung . . . . . . . . . . . . . . . . .
7.2 Schlüssel-Austausch . . . . . . . . . . . .
7.2.1 Breitmaulfrosch-Protokoll . . . . .
7.3 Schlüssel-Management . . . . . . . . . . .
7.4 Zertifikate . . . . . . . . . . . . . . . . . .
7.5 Zertifizierungsinstanzen . . . . . . . . . . .
7.6 Schlüsselübermittlung . . . . . . . . . . . .
7.6.1 EKE . . . . . . . . . . . . . . . . .
7.7 Digitale Signaturen . . . . . . . . . . . . .
7.7.1 DSS . . . . . . . . . . . . . . . . .
7.7.2 ElGamal . . . . . . . . . . . . . .
7.7.3 RSA PKCS #1 . . . . . . . . . . .
7.8 Zero-Knowledge-Protokolle . . . . . . . .
7.8.1 Das Fiat-Shamir-Protokoll . . . . .
7.9 Commitment . . . . . . . . . . . . . . . .
7.10 Geteilte Geheimnisse . . . . . . . . . . . .
7.11 Durchschnittsgehalt und wer verdient mehr
7.12 Anonymes Senden und Empfangen . . . . .
7.12.1 E-Cash . . . . . . . . . . . . . . .
7.12.2 E-Voting . . . . . . . . . . . . . .
7.13 Authentifikation . . . . . . . . . . . . . . .
7.13.1 Einmalpasswörter . . . . . . . . . .
7.13.2 Authentifikation mit Chipkarten . .
7.13.3 Bezahlen mit Chipkarten . . . . . .
7.14 Blinde Signatur . . . . . . . . . . . . . . .
7.15 Elektronische Wahlen . . . . . . . . . . . .
7.16 Steganographie . . . . . . . . . . . . . . .
7.17 Angriffe auf Protokolle . . . . . . . . . . .
Literaturverzeichnis
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
126
126
129
129
131
131
132
133
135
136
137
140
141
141
143
145
146
147
150
153
156
157
159
160
160
161
163
164
164
165
ii
7 Protokolle
Die Kryptologie liefert die Grundlagen, um alltägliche Probleme wie die folgenden zu lösen:
Vertraulichkeit oder Geheimhaltung hat zum Ziel, dass Unberechtigte Nachrichten oder
Daten nicht lesen können!
Integrität bedeutet, dass Unberechtigte Nachrichten nicht unbemerkt fälschen (Betrug, Sabotage) können!
Authentifikation hat zum Ziel, dass nur Berechtigte Zugang zu bestimmten Computer Resource erhalten.
Nichtabstreitbarkeit bedeutet, dass der Absender einer Nachricht nicht abstreiten kann, dass
er sie abgeschickt hat (wichtig bei Verbindlichkeit, Wahlen, Bezahlungen, Unterschriften)!
Anonymität bedeutet, dass nicht festgestellt werden kann, wer der Absender oder Empfänger
einer Nachricht ist (wichtig z.B. bei Wahlen, etc.).
7.1 Einführung
Sobald zwei oder mehrere Parteien eine Aufgabe lösen sollen, werden Protokolle verwendet:
sie bestehen aus einer Folge von Aktionen (Schritten) auf die sich die Parteien geeinigt haben
und welche eine nach der anderen ausgeführt werden müssen, um eine bestimmte Aufgabe zu
erledigen.
Protokolle sind durch folgende Eigenschaften charakterisiert:
• Alle Beteiligten kennen jeden Schritt des Protokolls bereits im Voraus und sie erklären
sich bereit diesen Schritten exakt zu folgen.
• Das Protokoll muss eindeutig, unmissverständlich und vollständig sein, d.h. es darf beispielsweise keine Zweifelsfälle geben in denen sich die Parteien nicht deterministisch
verhalten könn(t)en.
• Das Protokoll gibt keine Informationen preis, die nicht durch das Protokoll spezifiziert
sind. Ein Protokoll kann also nicht ausgenützt werden um an Informationen zu kommen,
die nicht bereits das Protokoll offen legt.
126
7 Protokolle
Alice
Bob
Carol
Dave
Eve
Mallory
Trent
Walter
Peggy
Viktor
Erste Beteiligte in allen Protokollen
Zweiter Beteiligter in allen Protokollen
Beteiligter in Protokollen mit drei oder mehr Parteien
Beteiligter in Protokollen mit vier Parteien
Lauscher (engl: eavesdropper)
Bösartiger aktiver Angreifer
Trusted arbitrator (Notar)
Wird Alice und Bob in bestimmten Protokollen beschützen
Prover
Verfier
Als Beteiligte verwendet man üblicherweise die folgenden Personen:
Im Alltag laufen viele Prozesse nach Protokollen ab, obwohl dies nicht auf den ersten Blick
offensichtlich ist: so kann man an einem Bankautomaten nur Geld abheben, wenn man im Besitz
einer gültigen Kreditkarte ist, die PIN kennt und diese auch eingeben kann. Der gesamte Prozess
des Geldabhebens ist protokolarisch geregelt.
Auch in der Politik spricht man beispielsweise bei Staatsbesuchen von einem Protokoll: wer
sich nicht daran hält, brüskiert beispielsweise den Gastgeber!
Während ein Mensch sich automatisch an bestimmte Vorgehensweisen gewöhnt, ist eine Maschine oder Programm (also beispielsweise der Bankautomat) darauf angewiesen, dass ein Protokoll existiert, an welches sich das Programm halten kann.
Zudem stehen sich Kommunikationspartner (seien dies nun Menschen oder Maschinen) im Internet meist nicht mehr physisch gegenüber, sie können sich also auch dann nicht gegenseitig
vertrauen, wenn sie sich eigentlich sympatisch wären.
Typischerweise unterscheidet man zwischen den folgenden drei Protokolltypen:
1. Vermittelte Protokolle arbitrated protocols bei dem ein Vermittler mitbeteiligt ist (bei
Kerberos ist es beispeilsweise das key distribution center (KDC) beim Erwerb von Wohneigentum ist es beispielsweise der Notar). Dies führt natürlich zu Kosten, mehr Zeit und
allenfalls zu einem Flaschenhals!
2. Adjudicated Protocolls ziehen einen Schiedsrichter als dritte Partei bei, welche beispielsweise bei Unklarheiten den weiteren Verlauf festlegt. Der Richter greift aber nur dann
ein, falls sich die beiden Parteien nicht einigen können!
3. Self Enforcing Protocols setzen Fairness durch, ohne dass Dritte dafür sorgen: Mogelt
ein Partei, dann bemerkt dies die andere und stoppt das Protokoll. Dies Art von Protokollen ist anzustreben, da sie wenig Overhead und Kosten verursacht und auch keine externe
Hilfe benötigt.
Beispiel 7.1. Normalerweise verhandeln Bob und Alice über den Inhalt eines Vertrags und unterschreiben ihn dann beide.
127
7 Protokolle
Im Streitfall gehen Alice und Bob vor den Richter: dort zeigen beide Ihre Beweise. Auf Grund der Beweise
fällt der Richter das Urteil, an welches sich dann beide Partein halten müssen!
Grund-Bausteine für Protokolle sind:
Kommunikation mittels symmetrischer Kryptographie
Kommunikation mittels public-key Kryptographie sowie hybride Systeme (mit Session Keys).
Einweg-Funktionen um beispielsweise Hash-Werte zu erzeugen oder um Einwegfunktionen
mit Hilfe einer Falltür umkehrbar zu machen (Falltür Einweg-Funktion).
Digitale Unterschriften die entweder symmetrische Kryptographie und einen Notar (Arbitrator), public-key Kryptorgraphie, Zeitstempel (engl: timestamps) und Einweg-Hashfunktionen
verwenden, und nicht abstreitbar sein sollen.
Digitale Unterschriften + Verschlüsselung mit Empfangsbestätigungen (Resend Attacken).
Zufallsgeneratoren
Typische Applikationen von Kryptographischen Programmen sind:
• Schlüsselverteilung (public key infrastructure (PKI))
• Zertifikate (certificate authorities (CAs))
• Digitale Unterschriften
• Schlüsselhinterlegung (engl: key escrow)
• Electronic data interchange (EDI)
Angriffe auf Protokolle umfassen
Passive Angriffe können Lauschangriffe sein, die z.B. ciphertext-only-attacks umfassen. Der
Angreifer greift dabei nicht ins Protokoll ein, sondern nutzt es lediglich aus, um an Informationen zu gelangen.
Aktive Angriffe können umfassen: DoS-Attacken, Fälschen von Informationen, Replay-Attacken,
Mogeln und Betrügen.
128
7 Protokolle
7.2 Schlüssel-Austausch
Der Schlüssel-Austausch regelt, wie zwei oder mehr Parteien in den Besitz eines gemeinsamen
geheimen Schlüssels gelangen, den sie für die spätere, sichere Kommunikation verwenden können. Natürlich muss vermieden werden, dass der Gegner in den Besitz des Schlüssels gelangt.
Dazu kann man sowohl symmetrische wie auch asymmetrische Kryptographie verwenden. Das
folgende Beispiel zeigt, wie das Problem mit Hilfe von symmetrischer Kryptographie erfolgt.
7.2.1 Breitmaulfrosch-Protokoll
Dieses sehr einfache Protokoll verwendet symmetrische Kryptographie zusammen mit einem
vertrauenswürdigen Server. Sowohl Alice wie auch Bob teilen jeweils einen geheimen Schlüssel
mit Trent (Server). Diese Schlüssel werden lediglich verwendet für die Schlüsselverteilung und
nicht zum Verschlüsseln der eigentlichen Nachrichten.
Will Alice ihren Sessionschlüssel K (den sie mittels eines Zufallsgenerators erzeugt hat) an
Bob senden, sind in diesem Protokoll lediglich zwei Meldungen nötig:
1. Alice fügt einen Zeitstempel (TA ), den Namen von Bob (B), und den eben genannten zufälligen Sessionsschlüssel K aneinander, verschlüsselt dies mit dem geheimen Schlüssel
KA , den sie mit Trent (dem Schlüsselserver) teilt und sendet das Resultat zusammen mit
ihrem Namen (A) an Trent:
A, EKA (TA , B, K)
2. Trent entschlüsselt die Meldung von Alice mit dem Schlüssel KA , ersetzt den Zeitstempel
durch einen Neuen (TB ) und den Namen durch den von Bob (B) und verschlüsselt dies
mit dem Schlüssel (KB ), den er gemeinsam mit Bob hat und schickt dies Bob:
EKB (TB , A, K)
Natürlich kann Bob daraus durch Entschlüsseln mit dem ihm bekannten Schlüssel K B
den Sessionsschlüssel K berechnen!
Hier muss natürlich angenommen werden, dass Alice gute Zufallszahlen erzeugen kann.
Weitere Protokolle, die ebenfalls auf einer trusted third party und symmetrischer Verschlüsselung basieren sind das Yaholom- und das Needham-Schroeder-Protokoll. Diese verwenden
aber mehr als zwei Meldungen. Damit will man sog. replay-Attacken verhindern. In einem solchen Angriff zeichnet Mallory alle Meldungen auf um sie später wieder abzuspielen um das
Protokoll zu unterwandern.
Es gibt aber auch Protokolle die keine trusted third party brauchen, wie das Otway-ReesProtokoll.
129
7 Protokolle
Kerberos ermöglicht die Authentifizierung von principals wie Benutzer, PC’s oder Server und
den Austausch von Sitzungsschlüsseln. Die Authentifikation wird durch einen vertrauenswürdigen Server (engl: trusted third party) ermöglicht. Für den Austausch von Sitzungsschlüsseln
wird eine Variante des Needham-Schroeder Protokolls verwendet: Falls Alice einen Sessionkey
für eine Kommunikation mit Bob erzeugen will, werden in etwa folgende Schritte ausgeführt:
1. Alice schickt Trent (Server) einem Meldung mit ihrer und Bob’s Identität, d.h.
A, B
(7.1)
2. Trent erzeugt eine Meldung mit einem Zeitstempel T, einer Lebenszeit L, einem zufälligen Sessionkey K und Alices Identität A und verschlüsselt dies mit dem Schlüssel, den
er mit Bob teilt (KB ). Analog macht er dies für Alice, und schickt beides an Alice:
EKA (T, L, K, B), EKB (T, L, K, A)
3. Alice erzeugt dann eine Meldung mit dem Zeitstempel T und ihrer Identität A und verschlüsselt dies mit dem Sessionkey K und schickt beides an Bob, d.h.
EK (A, T ), EKB (T, L, K, A)
4. Nach erfolgreichem Empfang und Entschlüsselung sendet Bob eine Meldung bestehend
aus dem Zeitstempel T plus Eins verschlüsselt mit dem Sessionkey an Alice, d.h.
EK (T + 1)
Dieses Protokoll funktioniert, vorausgesetzt die Uhren von Alice und Bob sind synchronisiert
mit der Uhr von Trent (dem Authentifikations-Server). In der Praxis genügt eine Genauigkeit
auf wenige Minuten.
130
7 Protokolle
7.3 Schlüssel-Management
Darunter fallen die Erzeugung (key-agreement, symmetrische Verschlüsselung, trusted third
party [TTP]), das Aufzeichnen, die Überschreibung, Verteilung (key-transport), Installation,
Speicherung (key-escrow), Änderung (key-revocation) und Kontrolle von kryptographischen
Schlüsseln.
Es muss Schutz bieten gegen Angriffe, welche beispielsweise die Kompromittierung von von
Schlüsseln zum Ziel haben.
Genauere Infos unter http://www.cse.msstate.edu/ cs6990/Week9/sld028.htm
7.4 Zertifikate
Damit einfach überprüft werden kann, ob ein öffentlicher Schlüssel einer Person oder Firma
echt ist, werden Zertifikate verwendet. Dabei handelt es sich um Dokumente, die folgendes
enthalten:
• ...
131
7 Protokolle
7.5 Zertifizierungsinstanzen
Zertifizierungsinstanzen (engl: certificate authorities) erfüllen folgende Aufgaben:
• Sie überprüfen die Identität des Antragsstellers: deshalb wird z.B. ein Auszug aus dem
Handelsregister oder (die Kopie) eines amtlichen Ausweises verlangt.
• Sie überprüft den Antrag des Antragssteller z.B. durch die notariell beglaubigte Unteschrift des Antragsstellers.
• Sie überprüft, ob der verwendete Namen eindeutig ist.
• Sie überprüft, ob der Antragssteller den zum abgelieferten öffentlichen Schlüssel gehörigen privaten Schlüssel besitzt.
• Sie signiert A, EA mit ihrem privaten Schlüssel. Das Zertifikat besteht also aus im Wesentlichen aus A, EA , DZ (A, EA ).
132
7 Protokolle
7.6 Schlüsselübermittlung
Weit verbreitet sind Protokolle zur sicheren Übermittlung von Schlüsseln: wichtige Methoden
sind
• Schlüsseltausch ohne asymmetrische Verfahren: der Schlüssel wird auf einem sicheren
Kanal (per Telefon, Brief, Brieftaube oder Kurier), oft in einzelne Bruchstücke zerlegt,
zum Kommunikationspartner gesandt. Oft verwendet man dann einen Generalschlüssel
und einen gesonderten Sitzungsschlüssel (welcher mit dem Generalschlüssel verschlüsselt zum Kommunkikationspartner übertragen wird). Es können auch zentrale Schlüsselserver zum Einsatz kommen.
• Schlüsseltausch mit asymmetrischen Verfahren: jeder Kommunkikationspartner erzeugt
ein Schlüsselpaar und gibt den öffentlichen Schlüssel bekannt. Dann sieht das Schlüsseltausch-Protokoll z.B. zwischen Alice und Bob wie folgt aus:
1. Bob besorgt den öffentlichen Schlüssel der Empfängerin, in unserem Fall Alice.
2. Bob erzeugt einen (zufälligen) Sitzungsschlüssel.
3. Bob verschlüsselt den Sitzungsschlüssel mit einem asymmetrischem Verfahren (z.B.
RSA) wobei er den öffentlichen Schlüssel von Alice verwendet. Eine (allfällige)
Nachricht verschlüsselt Bob mit dem Sitzungsschlüssels und einem symmetrischen
Verfahren (z.B. 3DES, AES, etc.). Beide Chiffrate geschickt Bob an Alice. Da hier
sowohl symmetrische wie auch asymmetrische Verfahren verwendet werden, spricht
man von einem hybriden Verfahren.
4. Alice kann als einzige den Sitzungsschüssel ermitteln, da nur sie den passenden
privaten Schlüssel kennt.
5. Mit dem Sitzungsschlüssel kann sie auch die (allfällige) Nachricht entschlüsseln.
Beispiele davon sind der Schlüsselaustausch nach Diffie-Hellmann (siehe früher) oder
KEA (key exchange algorithm), die NSA-Variante von Diffie-Hellmann.
Das obige Protokoll hat einen entscheidenden Fehler: es ist verletzlich gegen die man-in-themiddle Attacke. Dabei wird angenommen, dass ein Angreifer (Mallory) den Austausch der
Daten zwischen den beiden Kommunikationspartnern abhören oder/und sogar abändern kann.
Im ersten Fall spricht man von einem passiven, im zweiten Fall von einem aktiven Angriff.
Es gibt mehrere Möglichkeiten, diesen Angriff abzuwehren: einer basiert auf dem InterlockProtokoll welches hier für die Standardbenutzer Alice und Bob sowie einen allfälligen Angreifer
Mallory detailliert aufgezeigt wird:
1. Alice schickt Bob ihren öffentlichen Schlüssel.
2. Bob schickt Alice seinen öffentlichen Schlüssel.
133
7 Protokolle
3. Alice verschlüsselt eine Meldung mit dem öffentlichen Schlüssel von Bob und schickt
ihm die eine Hälfte.
4. Bob verschlüsselt seinerseits eine Meldung mit dem öffentlichen Schlüssel von Alice und
schickt die Hälfte davon an Alice.
5. Alice sendet die zweite Hälfte der Nachricht an Bob.
6. Bob fügt die beiden Meldungen von Alice zusammen und entschlüsselt sie mit seinem
privaten Schlüssel. Danach sendet er die zweite Hälfte der Meldung an Alice.
7. Alice fügt die beiden Meldungen von Bob zusammen und entschlüsselt sie mit ihrem
privaten Schlüssel.
Wichtig dabei ist, dass die eine Hälfte der Nachricht ohne die andere nutzlos ist. Die beiden
Hälften können beispielsweise so gewählt werden:
• Bei einem Block-Algorithmus könnte die erste Hälfte aus allen geraden, die zweite aus
allen ungeraden Bits eines jeden Blocks bestehen.
• Entschlüsseln könnte von einem Initialisierungsvektor abhängen, welcher als zweite Hälfte übertragen wird.
• Die erste Hälfte könnte der Hash-Wert der Meldung sein, die zweite die verschlüsselte
Meldung ausmacht.
Obwohl der Angreifer Mallory sich gegenüber Bob als Alice und gegenüber Alice als Bob ausgeben kann, kann er die erste Hälfte der Meldung von Alice (aus Schritt 3 von oben) nicht mit
seinem privaten Schlüssel entschlüsseln und mit dem öffentlichen Schlüssel von Bob verschlüsseln und an ihn weiterleiten. Er muss also eine völlig neue Meldung erfinden, verschlüsseln und
die Hälfte an Bob schicken. Genau so muss er dann mit der Meldung von Bob an Alice verfahren. Er muss auch hier eine völlig neue Meldung erfinden, verschlüsseln und eine Hälfte an
Alice senden. Nur wenn Mallory die Kommunikationspartner sehr gut kennt, kann er die diese
immitieren: dies ist aber wesentlich schwieriger als eine man-in-the-middle Attacke.
134
7 Protokolle
7.6.1 EKE
EKE (Encrypted Key Exchange) kann mit RSA, DH, ElGamal, etc. implementiert werden. Dabei arbeiten symmetrische und asymmetrische Verfahren so zusammen, dass sie sich gegenseitig
stärken.
Das folgende Protokoll ermöglicht die gegenseitige Authentifkation und die Berechnung eines
gemeinsamen Sitzungsschlüssels. Man geht davon aus, dass Alice und Bob ein gemeinsames
Passwort P kennen.
1. Alice erzeugt ein (zufälliges) public-/private-key Paar (Kp , Ks ) und sendet Bob ihre
Identität A, sowie den mit dem gemeinsamen Passwort verschlüsselten öffentlichen Schlüssel Kp :
A, EP (Kp )
2. Bob kennt P und kann deshalb Kp berechnen. Er erzeugt einen zufälligen Sitzungsschlüssel K und sendet Alice:
EP EKp (K)
3. Alice bestimmt daraus K, erzeugt einen Zufallsstring RA , verschlüsselt dieses mit K und
sendet ihn an Bob:
EK (RA )
4. Bob kann diese Nachrichten entschlüsseln und kennt so R A . Er erzeugt nun seinerseits
RB zufällig und versendet dieses zusammen mit RA verschlüsselt an Alice:
EK (RA , RB )
5. Alice kann entschlüsseln und sollte RA und RB erhalten. Ist dies der Fall, schickt sie Bob
EK (RB )
6. Falls Bob nach dem Entschlüsseln sein oben erzeugtes RB erhalten, ist das Protokoll
vollständig und fehlerfrei: Sowohl Alice wie auch Bob können danach K als Sitzungsschlüssel verwenden.
In den letzten drei Schritten 4 bis 6 beweist Alice, dass sie K kennt. In den drei Schritten 3 bis
5 beweist Bob, das er K kennt. Die Schritte 3 bis 6 werden auch challenge response portion des
Protokolls genannt.
Man beachte, dass P ein sehr schwaches Passwort sein kann: es kann nur kompromittiert werden, wenn der asymmetrische Algorithmus kompromittiert wird. Notieren sie sich die Details
und verifizieren sie diese Behauptung.
135
7 Protokolle
Eine Anwendung von EKE sind sichere öffentliche Telefone (oder auch Handy’s) wo es darum
geht, dass die Verbindung authentifiziert und verschlüsselt erfolgen sollte! Man kann zeigen,
dass EKE sicher ist gegen aktive Angriffe und off-line Wörterbuchangriffe!
7.7 Digitale Signaturen
Eine digitale Signatur soll dieselben Eigenschaften wie ein handschriftliche Unterschrift haben;
diese sind:
Echtheit bescheinigt, dass das Dokument vom Unterschreibenden stammt: Dokument und
Unterschrift sind untrennbar verbunden!
Identität bescheinigt, dass die Unterschrift nur von einer ganz bestimmten Person stammen
kann: Unterschriften lassen sich (fast) nicht fälschen!
Abschluss bescheinigt, dass der Unterschreibende eine Erklärung vollendet (d.h. zu dieser
steht, sich damit einverstanden erklärt, etc.). Dabei ist gewährleistet, dass man dies nicht
leichtfertig durchführen kann: ein Fingerabdruck oder Kreuz genügt nicht!
Verfikation bedeutet, dass jeder (durch Vergleich der Unterschriften) nachprüfen kann, ob die
Unterschrift echt ist.
Man sollte sich bewusst sein, dass bei der Unterschrift von Hand eine physikalische Verbindung zwischen Dokument und Unterschrift besteht (beides steht auf dem selben Blatt), dass
Fälschungen mehr oder weniger leicht erkannt werden können (und diese zudem einiges an
Handarbeit erfordern). Kommt dazu, dass die (Foto-) Kopie einer Unterschrift vor Gericht weniger Beweiskraft hat als eine Original-Unterschrift.
Die zunehmende Verlagerung des Informationsflusses auf digitale Medien verlangt aber nach
einer digitalen Unterschrift. Dies wirft aber rechtliche Fragen, wie auch Fragen nach dem Risiko
auf. Gerade dieses lässt sich auch von Experten nur schwer abschätzen!
Digitale Unterschriften verwenden kryptographisch sichere Hashfunktionen, sowie asymmetrische Verschlüsselung.
Ein Signaturschema ist wie folgt definiert: Jedem Teilnehmer U sind eine geheime Signaturfunktion sU und eine öffentliche Verifikationsfunktion vU zugeordnet: dabei ist nicht möglich,
aus vU auf sU zu schliesen.
Der Teilnehmer U signiert den Hashwert h(p) (dies genügt, wenn die Hashfunktion kryptographisch sicher ist) der Nachricht p indem er
sig = sU (h(p))
berechnet. Dann sendet er (p, sig) an den Empfänger welcher dann seinerseits die Hashfunktion
h(p) der Nachricht p berechnet, und verifiziert, dass sig die zu h(p) gehörige Signatur ist. Sie
ist es dann, wenn
vU (sig) = h(p)
136
7 Protokolle
Beispiel 7.2. Verwendet man den RSA-Algorithmus als Signaturschema, bildet man die Hashfunktion
m = h(p) der Meldung p und verwendet
def
sU (m)
=
md mod n = sig
als Signaturfunktion (wobei d und n ihre übliche Bedeutung haben) und definiert die (binäre) Verifikationsfunktion durch
vT (sig)
def
=
?
me mod n = sig.
Leider ist dieses Verfahren wegen der Homomorphie-Eigenschaft von RSA nicht sicher, jedenfalls solange
man nicht zusätzliche Redundanz einfügt. Warum, zeigt das folgende Beispiel!
Beispiel 7.3. Wir stellen uns vor, der Angreifer möchte die Meldung m durch das Opfer signieren
lassen. Damit das Opfer die Meldung nicht direkt lesen kann, verwendet der Angreifer die Signatur sig x
einer anderen Meldung x. Diese habe er beispielsweise als E-Mail aufgefangen.
Falls (e, n) der öffentliche und (d, n) der private Schlüssel des Opfers ist, dann gilt:
sigx = xd mod n
x = sigx e mod n
Falls der Angreifer das Opfer dazu bringen kann, x · m zu signieren, d.h.
sigx·m = (x · m)d mod n
zu berechnen, kann er wegen
sigm = md mod n
= sigx·m · (sig x )−1
die Signatur von m berechnen.
Durch diesen Angriff wird RSA nicht vollständig gebrochen: der Modul n kann dadurch nicht faktorisiert
werden. Bei einem Signatursystem spricht man in diesem Fall von existentiellem Brechen, falls eine
Signatur zu einer Meldung eigener Wahl berechnet werden kann.
7.7.1 DSS
Der Digital Signature Standard (DSS) wurde 1994 vom NSA als Signaturstandard festgelegt.
Er basiert wesentlich auf dem Digital Signature Algorithm (DSA) wobei die Sicherheit auf
dem diskreten Logarithmus beruht.
Der DSA basiert auf dem ElGamal Signaturverfahren und verwendet folgende Parameter, von
denen p, q und g öffentlich bekannt sind und z.B. auch von mehreren Leuten gemeinsam verwendet werden dürfen:
137
7 Protokolle
• Eine L − Bit-Primzahl p (512 ≤ L ≤ 1024) wobei 64|L, d.h.
2511+64t < p < 2512+64t mit t ∈ {1, 2, . . . , 8}
• Ein 160-Bit Primfaktor q von p − 1
• Eine Zahl g = m(p−1)/q mod p > 1, wobei 0 < m < p − 1.
• Ein geheimer Schlüssel 0 < x < q.
• Ein öffentlicher Schlüssel y = g x mod p.
• Die sichere Hashfunktion SHA-1, bezeichnet durch H.
Will Alice das Dokument M mit ihrem privaten Schlüssel xA digital signieren so, dass man die
Signatur mit ihrem öffentlichen Schlüssel yA verifizieren kann, dann geht sie wie folgt vor:
1. Alice verwendet eine Zufallszahl 0 < r < q und berechnet:
s = (g r mod p) mod q
t = (r −1 (H(M ) + xA s)) mod q
wobei r −1 das multiplikative Inverse von r modulo q ist. Die Signatur von M ist (s, t).
2. Der Empfänger überprüft die generelle Gültigkeit der Unterschrift: Es muss ja gelten
0 ≤ s ≤ q − 1 und 0 ≤ t ≤ q − 1. Danach berechnet der Empfänger nacheinander:
u
v1
v2
w
=
=
=
=
s−1 mod q
(H(M )u) mod q
(rw) mod q
((g v1 g v2 ) mod p) mod q
wobei s−1 das multiplikative Inverse von s modulo q ist. Falls w = s, dann ist die Signatur
verfiziert.
Beispiel 7.4. Wie kann ein Angreifer die Signatur von Alice fälschen? Was ist die Komplexität dieses
Unterfangens?
Lösung: Der Angreifer kennt yA , p, q und g und möchte xA berechnen, d.h.
yA = g xA mod p
nach xA auflösen. Dies ist das Problem des diskreten Logarithmus. Die besten bekannten Verfahren
√
benötigen dazu mehr als q, d.h. mehr als 279 Operationen.
Falls der Zufallsgenerator, mit welchem r bestimmt wird, schlecht ist, hätte man einen weiteren Angriffspunkt gefunden: also ist es essentiell, einen guten Zufallsgenerator zu verwenden!
138
7 Protokolle
Beispiel 7.5. Warum funktioniert das oben beschriebene Verfahren, und was sind die Gründe für die
einzelnen Zwischenschritte?
Lösung:
139
7 Protokolle
7.7.2 ElGamal
Der Modul p, sowie α seien öffentlich bekannt. Eine zufällige, geheime Zahl x
140
7 Protokolle
7.7.3 RSA PKCS #1
Falls k = dlog2 (n)/8e und λ = dL/8e wird der λ-Byte Hash h(p) der Meldung p berechnet,
und zu folgendem k-Tupel von Bytes ergänzt:
m = (00||01||F F ||F F || · · · ||F F ||00||h(p))
Der Reihe nach besteht m aus:
1. zwei konstanten Bytes 00 und 01 (bei der public-key Verschlüsselung beginnt man mit 00
und 02),
2. k − λ−3 konstanten Bytes F F ,
3. einem konstanten Byte 00 und
4. dem λ-Byte Hash der Meldung h(p).
Die Public Key Cryptography Standards (PKCS) werden in verschiedensten kryptographischen
Applikationen implementiert. Die aktuell aktiven Standards sind in der Tabelle ?? aufgelistet:
PKCS #1
PKCS #3
PKCS #5
PKCS #6
PKCS #7
PKCS #8
PKCS #9
PKCS #10
PKCS #11
PKCS #12
PKCS #13
PKCS #14
PKCS #15
Der RSA Verschlüsselungs Standard
Standard für die DH Schlüsselvereinbarung
Der password-basierte Verschlüsselungs Standard
erweiterter Zertifikats Syntax Standard (besser X509 v3)
Standard für kryptographische Mitteilungen
Standard für die Syntax der Private-Key Informationen
Definiert bestimmte Attributtypen in anderen PKCS
Standard für die Syntax der Zertifizierungsanfragen
Cryptographic token interface standard (Smartcard)
Personal information exchange syntax standard
Standard für ECC (Eliptic Kurve Cryptography)
PRNG
Cryptographic token information format standard
Beachte: PKCS #2 und #4 wurden ersetzt durch PKCS #1!
7.8 Zero-Knowledge-Protokolle
Wie kann man jemandem beweisen, dass man im Besitz eines Geheimnisses ist, ohne dieses zu
verraten? Einige Beispiele:
141
7 Protokolle
Das Geheimnis von Niccolò Tartaglia (1499-1557) bestand darin, dass er behauptete, eine Lösungsformel für die kubische Gleichung
ax3 + bx2 + cx + d = 0
gefunden zu haben (bis dahin konnte man Gleichungen 3. Grades noch nicht allgemein
lösen). Wie kann nun Tartaglia beweisen, dass er diese Formel tatsächlich kennt, ohne sie
zu verraten?
Das Geheimnis der magischen Tür bestand darin, dass jemand wusste, wie sich die Tür
öffnen liess.
Das Geheimnis mit der Quadratwurzel besteht darin, dass jemand eine Zahl x kennt, die
niemand sonst kennt, und deren Quadrat modm (m eine fest gewählte natürliche Zahl)
gleich y ist. Wie kann man jemanden überzeugen, dass man x kennt, ohne die Zahl bekannt zu geben?
Bemerkung: die Kenntnis einer modularen Quadratwurzel x einer Zahl y ist ein grosses
Geheimnis, da es praktisch unmöglich ist, die Gleichung
x2 mod m = y
für eine gegebene Zahl m mit einigen hundert Stellen, deren Primfaktorzerlegung nicht
bekannt ist und eine gegebene Zahl y nach x aufzulösen.
142
7 Protokolle
Abbildung 7.1: Fiat-Schamir-Protokoll.
7.8.1 Das Fiat-Shamir-Protokoll
Kann für die Rechner-Rechner Authentifikation verwendet werden. Wir nehmen an, dass eine
Schlüsselzentrale zwei Primzahlen p und q (per Zufallsgenerator) gewählt hat und daraus das
Produkt n = pq bildete. Während p und q geheim bleiben müssen, wird n als Systemparameter
veröffentlicht. Nun berechnet eine zentrale Stelle aus den Identifizierungsdaten eines Benutzers
v (in binärer Form dargestellt), die modulare Quadratwurzel dieser Zahl, d.h. löst die folgende
Gleichung nach s auf:
s2 mod n = v.
Da die Zentrale die Faktorisierung von n kennt, ist es für sie einfach, dieses Problem zu lösen!
Das Resultat wird beispielsweise auf eine Chip-Karte gespeichert und kann danach auch auf
der Schlüsselzentrale gelöscht werden.
Das Protokoll zeigt, wie Alice dem Rechner (Bob) beweist, dass sie im Besitz der Zahl s ist,
143
7 Protokolle
für die s2 mod n = v gilt. Dazu führen sie folgende Prozedur solange durch, bis der Rechner
(Bob) mit genügend hoher Wahrscheinlichkeit annehmen kann, dass Alice nicht schummelt.
1. Alice wählt eine Zufallszahl r ∈ ∠Z?n , und sendet x = r 2 mod n an Bob.
2. Bob würfelt, nimmt also ein Zufallsbit b: gilt b = 1, so verlangt Bob von Alice die Zahl
y = r ·s mod n; andernfalls die Zahl y = r mod n. Alice berechnet also y = r ·s b mod n
und schickt das Resultat an Bob.
3. Im Fall b = 1 überprüft Bob ob y 2 mod n = x · v mod n und im Fall b = 0 überprüft
Bob ob y 2 mod n = x mod n zutrifft.
Falls Alice das Geheimnis s kennt, so kann sie Bob davon überzeugen, da in ∠Z ?n gilt:
2
y 2 ≡ rsb
≡ r 2 s2b
≡ r2vb
≡ xv b mod n
Falls Alice s nicht kennt, könnte sie spekulieren, was Bob von ihr verlangt, nachdem sie ihm x
geschickt hat. Im
Fall b = 0: Alice hat dann keine Probleme, Bob die Zahl r mitzuteilen, die sie ja selber ausgewählt hat.
Fall b = 1: Hier wählt Alice zunächste eine Zahl r 0 und berechnet daraus x0 = (r 0 )2 mod n. x0
ist also das Quadrat der Zahl r 0 modulo n! Dann erst berechnet sie
x0
mod n
v
und schickt dieses an Bob. Nach Annahme (b = 1) verlangt dann Bob die Zahl r·s mod n:
diese ist aber genau r 0 , denn es gilt:
x = r 2 mod n = (r 0 )2 /(s2 ) mod n =
r · s = r 0 mod n
Die Wahrscheinlichkeit, dass Alice in einer Runde des Protokolls den Wert des Bits b richtig rät
ist gleich 1/2. Die Wahrscheinlichkeit, dass sie t-mal hintereinander richtig rät ist gleich
t
1
p =
2
Falls t = 20 gewählt wird, ist diese Wahrscheinlichkeit bereits kleiner als ein Millionstel. Diese
Wahrscheinlichkeit kann durch Wahl eines genügend grossen t beliebig klein gemacht werden.
Man beachte, dass in diesem Protokoll keine Informationen über s von Alice zu Bob (dem
Rechner) getragen werden. Die Sicherheit des Protokolls hängt einzig und allein davon ab, wie
schwierig die Berechnung modularer Quadratwurzeln ist: und dieses Problem ist bekanntlich
mindestens so schwierig, wie die Faktorisierung von n!
144
7 Protokolle
7.9 Commitment
Wie kann man erreichen, dass eine Person eine Nachricht hinterlegen kann so, dass sie von
niemandem gelesen und auch nicht abgeändert (insbesondere auch von der betreffenden Person
nicht) werden kann?
Beispiel 7.6. Die Person könnte die Meldung in einen Tresor sperren und diesen Save einer Treuhandperson zur Aufbewahrung geben. Den Schlüssel zu diesem Save behält die Person und übergibt ihn erst
zu einem fest gesetzten Zeitpunkt ebenfalls dem Treuhänder.
Auf diese Weise kann niemand (auch die Person selber) die Nachricht verändern oder gar lesen.
Auf diese Art kann man vorgehen, wenn man eine öffentliche Ausschreibung durchführt und verhindern
will, dass Konkurrenten die Angebote anderer einsehen können, um ihr eigenes Angebot dann entsprechend zu korrigieren!
Das Commitment-Protokoll besteht aus zwei Phasen: dem Festlegen und dem Öffnen des
Commitments. Mathematisch legt sich die Partei A auf einen Datensatz m fest, indem sie c =
f (m) berechnet und c an B sendet.
Dabei ist f eine kollisionsresistente Einweg-Hashfunktion; dadurch ist es nicht möglich von c
auf m zu schliessen (also bleibt m geheim) und A kann auch nicht einen anderen Datensatz m 0
verwenden, für den gilt: f (m0 ) = f (m).
A öffnet das Commitment, indem sie B das Urbild m von c mitteilt. B kann dann sofort nachprüfen, dass tatsächlich f (m) = c gilt, und ist damit sicher, dass A nicht schummelt!
Beispiel 7.7. Ein Spezialfall, nämlich das Bit-Commitment tritt dann auf, wenn m nur ein Bit lang
ist. Man legt sich dann nicht nur auf das Bit b, sondern auch noch auf eine grosse Zufallszahl r fest.
Man publiziert dann f (b, r) wobei f eine Einweg-Funktion ist, die nur betreffend des zweiten Arguments
kollisionsresistent sein muss: es muss also (im Sinne des rechnerische Möglichen) für alle r 6= s gelten:
f (0, r) 6= f (1, s). Eine mögliche Realisierung ist:
f (b, r) = y b r 2 mod n
(7.2)
wobei n = pq (p, q zwei grosse Primzahlen) und y ein fester, quadratischer Nichtrest modulo n mit
Jacobisymbol +1 ist. Also muss y noch gewisse Voraussetzungen erfüllen!
145
7 Protokolle
7.10 Geteilte Geheimnisse
Geteilte Geheimnisse (engl: shared secrets) tritt in der Praxis beispielsweise bei Banken auf:
dort haben z.B. drei Prokuristen einen (Teil-) Schlüssel zu einem Tresor. Einer alleine oder
auch zwei können den Tresor mit ihren Schlüsseln nicht öffnen. Alle drei Schlüssel müssen
gemeinsam verwendet werden.
Ähnliche Sicherheitsvorrichtungen wurden im Kalten Kreig verwendet, um den unverhofften
Ausbruch eines Atomkrieges zu verhindern, indem beispeilsweise einer der Bunkersoldaten
durchdreht und eine Atomrakete startet, die dann zu einer Gegenschlag führen könnte, und zum
Untergang der Menschheit führen könnte.
Mathematische Realisation mit Threshold-Verfahren (Schwellverfahren) in dem das Geheimnis S in n Teilgeheimnisse S1 , S2 , . . . , Sn aufgeteilt wird und zwar so, dass für t ∈ IN Treshold
(Schwelle) gilt:
• Aus je t und mehr Teilgeheimnissen lässt sich das Geheimnis rekonstruieren.
• Aus weniger als t Teilgeheimnissen lässt sich das Geheimnis nicht berechnen (oder erraten).
Beispiel 7.8. Sei S eine reelle Zahl, die wir auf der y-Achse auftragen. Nun wählen wir ein Polynom
(t − 1)-ten Grades, welches durch durch den Punkt (0, S) verläuft:
P (x) = S +
t−1
X
ak xk
1
wobei die ak beliebig gewählte, zufällige Zahlen sind. Dann wählen wir n Punkte auf dem Graphen aus:
sie bilden die Teilgeheimnisse.
Es ist klar, dass die Kurve nur dann bestimmt werden kann, wenn mind. t Punkte bekannt sind: daraus
kann dann auch S (Schnittpunkt der Kurve mit der y-Achse) bestimmt werden!
146
7 Protokolle
7.11 Durchschnittsgehalt und wer verdient mehr
Eine Gruppe von Personen möchte ihr Durchschnittsgehalt so berechnen, dass niemand sein
eigenes Gehalt preisgeben muss. Wir betrachten dazu drei Personen: Alice, Bob und Carol.
Alice soll in diesem Protokoll eine Vertrauensstellung einnehmen. Wir nehmen auch an, dass
die beiden anderen Personen nicht betrügen.
• Alice wählt eine Zufallszahl r und addiert dazu ihr Gehalt a: die Summe r + a leitet sie
so an Bob weiter, dass Carol nicht mithören kann.
• Bob addiert dazu seinerseits sein Gehalt b und leitet die Summe r + a + b so an Coral
weiter, dass Alice nicht mithören kann.
• Schliesslich addiert Carol ihr Gehalt zu der eben erhaltenen Zahl und leitet die Summe
r + a + b + c an Alice so weiter, dass Bob nichts mitbekommt.
• Alice subtrahiert von der erhaltenen Zahl die Zufallszahl r und dividiert den Rest durch 3
und gibt die Zahl (a + b + c)/3 allen anderen bekannt.
• Darauf kann jede TeilnehmerIn feststellen, ob sie mehr oder weniger als der Durchschnitt
verdient.
Beispiel 7.9. Zeigen Sie, dass weder Alice, noch Bob oder Carol aus den ihnen bekannten Informationen das Gehalt der jeweils anderen berechnen kann.
Lösung: Wesentlich ist, dass im beschriebenen Protokoll für jeden Teilnehmer drei Unbekannte vorliegen: nämlich die Zufallszahl r sowie die Gehälter der beiden anderen Personen. Bekannt sind zwei
Grössen: nämlich das Durchschnittsgehalt, sowie die Summe der Gehälter der vorigen Personen inkl. die
Zufallszahl r. Also ist das Gleichungssystem unterbestimmt und eine eindeutige Lösung nicht möglich!
Beispielsweise sind die Gleichungen für Carol:
r + a + b = y1
a + b = 3y2 − c
wobei y1 die von Bob gemeldete Summe ist und y 2 das von Alice veröffentlichte Durchschnittsgehalt. Nun möchten Alice und Bob wissen, wer von beiden mehr verdient ohne dabei ihr Gehalt bekannt geben zu müssen.
Dazu verwenden Alice und Bob das folgende Protokoll:
• Wir stellen das Gehalt a als Zahl beispielsweise zwischen 1 und m dar: das effektive
Gehalt sei dann 100 · a!
• Alice wählt eine Zufallszahl r, verschlüsselt diese mit dem öffentlichen Schlüssel von
Bob, subtrahiert davon ihr Gehalt a und schickt das Resultat, also d = E B (r) − a, an
Bob.
147
7 Protokolle
• Bob kann daraus a nicht berechnen: statt dessen berechnet er
yi = DB (d + i),
i = 1, 2, . . . , m
wobei m grösser als das Maximum der beiden Gehälter sein soll (also einfach genügend
gross!). In der Folge (yi ) tritt irgend wo die von Alice verwendete Zufallszahl r auf. Nun
versteckt Bob sein Gehalt b, in dem er mit Hilfe der Hashfunktion h die Folge
zi = h(yi ),
i = 1, 2, . . . , m
berechnet und diese in der folgende Form an Alice schickt:
z1 , z2 , . . . , zb , zb+1 + 1, zb+2 + 1, . . . , zm + 1
Dabei kann die Reihenfolge beliebig sein!
• Alice berechnet nun ihrerseits h(r) und h(r) + 1. Da eine der Zahlen y i mit r übereinstimmt, findet Alice entweder h(r) oder h(r) + 1 in der von Bob gesandten Folge. Findet
Alice h(r), dann verdient sie weniger als Bob, findet sie statt dessen h(r) + 1, dann verdient sie mehr als Bob. Sie teilt Bob mit, ob h(r) oder h(r) + 1 in der Folge vorkommt.
• Nun wissen beide Personen, wer mehr verdient.
Die folgende Abbildung zeigt das Protokoll:
Alice
←
Bob
EB
→
d = EB (r) − a
yi = DB (d + i), i = 1, 2, . . . , m
zi = h(yi ), i = 1, 2, . . . , m
←
z1 , z2 , ..., zb ,
zb+1 + 1, zb+2 + 1, . . . , zm + 1
h(r), h(r) + 1
148
7 Protokolle
Mit einem analogen Verfahren kann man feststellen, ob bei einer blinden Auktion ein Angebot
über dem aktuelle Gebot liegt oder nicht. Eben so kann man beim Vergleich von Rückstellungen einer Firma mit den aktuellen Schulden verfahren und dadurch erfahren, ob die Firma die
Schulden aus den Rückstellungen bezahlen kann oder nicht.
Beispiel 7.10. Man führe das obige Verfahren durch, wobei das Gehalt der Einfachheit halber zwischen
1 und 10 (in Kilofranken) liegen soll.
Lösung an der Tafel!
149
7 Protokolle
7.12 Anonymes Senden und Empfangen
Da der heutzutage immer noch der grösste Teil der Daten ungeschützt über das Internet transportiert wird, ist der Schutz der Privatsphäre eines jeden Einzelnen umso wichtiger. Was im Alltag
als ganz selbstverständlich hingenommen wird, ist im Cyberspace nur schwer zu realisieren.
Denken wir an Bargeld, dann ist es natürlich anzunehmen, dass nach dem Bezahlen in einem
Geschäft niemand weiss, wer mit welcher Note oder Münze bezahlt hat. Bargeld ist also anonym, d.h. man kann frühere Besitzer nicht mehr ermitteln. Jedenfalls nehmen wir für den Moment an, dass es zu aufwändig wäre, DNA-Analysen durchzuführen um auf Grund allfälliger
Hautpartikel auf dem Bargeld auf den möglichen Vorbesitzer zu schliessen.
Digitales Geld, sagen wir kurz E-Cash muss die selbe Eigenschaft aufweisen: wie kann man
dies realisieren?
Schliesslich möchte man auch anonym chatten, surfen oder E-Mails schreiben können. Immer
gibt es legitime Gründe, wenn auch oft von Regierungen vorgeschoben wird, dass unbescholtene Bürger ja nichts zu verstecken hätten, sich also auch nicht anonym im Cyberspace bewegen
müssten.
1981 hat David Chaum eine Methode der anonymen Kommunikation vorgeschlagen (MixNets). Eine darauf basierende Implementation stellten die Cyberpunk remailers dar (type I remailer), die zwar PGP zur Verschlüsselung verwenden und verschachtelt sind, nicht aber traffic
analysen standhalten. Diese Schwäche wurde im type II remailer durch Software von Ulf Möller
(1998) ausgemerzt. Prudukte sind:
• Mix-Nets (nach Chaum) mit mehrschichtigen verschlüsselten Ketten, nicht unterscheidbaren Paketen für die Meldungen, zufälliger Neuordnung in jedem Hop und return address reply blocks.
• Mixmaster ...
Beispiel 7.11. Das Dining-Cryptographers-Protokoll löst das folgende Problem: Drei Kryptographen A, B und C möchten ein Essen anonym bezahlen: entweder bezahlt einer der drei Kryptologen
oder ihr Arbeitgeber (das NSA). Nur im letzten Fall, d.h. falls das NSA zahlt, möchten dies die Kryptologen wissen!
150
7 Protokolle
151
7 Protokolle
Nachfolgend werden einige Projekte aufgelistet, die sich mit dieser Problematik beschäftigen
(oder beschäftig haben).
Das Onion Routing-Projekt (http://www.onion-router.net) Projekt baute ein Internet basiertes System, welches folgenden Angriffen widersteht:
• Verkehrs Analyse (engl: traffic analysis).
• Mithören (engl: eavesdropping.
• Anderen Angriffen sowohl von Insidern (Onion-Routers) wie auch Externen.
Das Transportmedium bzw. Netzwerk weiss nicht, wer mit wem kommuniziert; es weiss lediglich, dass Kommunikation stattfindet. Der Inhalt der Kommunkation ist vor allfälligen Mithörern sicher, bis er das Onion-Router-Netzwerk verlässt. Leider wurde das Projekt im Jahre 2000
eingestellt.
Ein neueres Projekt ist JAP (Anonymity & Privacy) (http://anon.inf.tu-dresden.de/index_e
von der Technischen Universität Dresden. Es ermöglicht den Benutzern anonym und nicht beobachtbar im Internet zu surfen und basiert auf dem mixer-Prinzip (siehe z.B. Anonymes Surfen Ein Zwischenbericht - http://www.inf.tu-dresden.de/h̃f2/anon/reports/ZwiBeDarmst
152
7 Protokolle
7.12.1 E-Cash
Beim konventionellen elektronischen Einkauf wird entweder ein Konto beim Verkäufer eröffnet
oder mit der Kreditkarte bezahlt. Beide Methoden sind nicht anonym. Zudem hat die zweite
Methode folgende Nachteile:
• Kreditkartenbetrug
• Hohe Transaktionskosten
• Dadurch nicht geeignet für kleine Transaktionen
• Sicherheit ist gefährdet, sobald Nummer der Kreditkarte publiziert wurde.
Die Bezahlung via Kreditkarte wird durch den SET (Secure Elektronic Transaction) Standard
spezifiziert: Falls ein Kunde etwas kaufen will, unterschreibt er eine Meldung der Form Bezahle
dem Verkäufer x Euros. Der Verkäufer übergibt diese Meldung an die Bank, die ersterem die x
Euros überweist.
Eines der grössten Probleme ist das der Nicht-Anonymität: wer will schon, dass die Bank weiss,
was man eingekauft hat.
Das Bezahlen mit Münzen ist eine völlig anonyme Angelegenheit: niemand kann einer Münze
ansehen, wer sie ausgegeben hat, und für was! Es ist klar, dass man die gleichen Eigenschaften
auch von digitalen Münzen erwartet. Im Wesentlichen sind beim Münzverkehr drei Parteien
beteiligt:
1. die Bank, welche die Münzen ausgibt,
2. der Kunde, welcher mit der Münze Waren bezahlt, und
3. der Hn̈dler, welcher die Münze für seine Ware erhält.
Es sollte auch nicht möglich sein, den Weg einer Münze zurück zu verfolgen. Mehrere Münzen
ein und des selben Benutzers sollten nicht verlinkt werden können
Beispiel 7.12. Die prepaid phone cards erlauben nicht Verfolgbarkeit (engl. untraceability) aber nicht
Unverlinkbarkeit (engl. unlinkability).
Dabei sollten (auch digitale) Münzen
• zentral ausgegeben werden (es sollte also keine Münzfälscher Werkstätten geben),
• einfach auf Echtheit überprüft werden können,
• anonym sein, sowie
• nicht (einfach) dupliziert werden können.
153
7 Protokolle
Mathematisch lassen sich einige der Forderungen sehr einfach erfüllen: andere wiederum, wie
die Sicherheit gegen Dublikate weniger. Grundlegend ist die blinde Signatur sowie für jeden
Münzwert (10, 20, 50 Cent, 1, 2, 5, 10 Euro) ein (geheimer) RSA-Signierschlüssel der Bank.
Echte Münzen liefern nach der Überprüfung mit dem entsprechenden öffentlichen Schlüssel
der Bank eine genau vorgegebene Struktur (Redundanzschema). Das folgende Protokoll geht
auf Chaum zurück:
• Der Kunde möchte von der Bank eine 5 Euro Münze erhalten. Dazu wählt er eine Zahl
w, die in das mit der Bank vereinbarte Redundanzschema passt (kleiner als der Modul
des 5-Euro-RSA-Signierschlüssels): so kann w aus drei identischen Teilen bestehen, die
der Kunde wählt: also z.B. w = 123412341234. Deckt die Bank diese Münze, erhält
der Kunde m = w dB (immer modulo ...). Dabei wurde die Münze durch die Bank blind
signiert!
• Der Kunde übergibt die Münze beim Kauf von Waren an den Händler: dieser kann die
Echtheit einfach nachprüfen, indem er den (öffentlichen) 5-Euro-RSA-Verifikationsschlüssel
bemüht. Die Münze wird akzeptiert, wenn sie in das abgemachte Redundanzschema
passt.
• Der Händler kann nun die Münze bei der Bank einlösen: diese überprüft wieder die Echtheit! Die Anonymität ist gewährleistet, da die Münze blind signiert wurde.
Damit die Münze nicht mehrmals eingelöst werden kann, werden sowohl kryptologische Lösungen wie auch solche ohne Kryptographie vorgeschlagen. Man möchte elektronische Münzen
(genau so wie normale) auch einfach weitergeben können und nicht gleich jedes Mal bei der
Bank einlösen. Es zeigt sich aber, dass dadurch die Gefahr des doppelten Ausgebens steigt.
Sehr schwierig ist es dann festzustellen, wer der Schuldige ist (es soll ja die Anonymität gewahrt bleiben - jedenfalls so lange, bis einer betrügt).
Eine weitere Gefahr bilden Lösegeldforderungen, die dann eben auch mittels anonymem Geld
gedeckt werden und nicht mehr so einfach (z.B. dank fortlaufender Nummerierung) zurückverfolgt werden könnten!
Beispiel 7.13. Wir wollen zeigen, wie obiges Schema auch Münzen unterschiedlicher Grösse hand-
haben kann. Dazu kann die Bank einerseits für jeden Münzwert einen einen eigenen Signaturschlüssel
verwenden oder aber die cut-and-choose-Methode verwenden. Dabei generiert der Benutzer 1000 Münzen der Form 1000kkri wobei ri eine zufällige Zahl ist und schickt diese für die blinde Signatur an die
Bank.
Die Bank wählt 999 zufällig aus und verlangt vom Benutzer das unblinding dieser Münzen.
Sind alle unblinded Münzen korrekt, signiert die Bank die 1000th Münze.
Dadurch erhält der Benutzer eine Münze, die 1000 Euro wert ist.
Die Bank kann mit grosser Sicherheit davon ausgehen, dass der Benutzer nicht betrügt, d.h. der Bank
nicht mit Absicht eine Münze zur blinden Signatur unterschiebt, die einen grösseren Wert hat.
154
7 Protokolle
Das oben besprochene Protokoll verhindert aber das doppelte Ausgeben einer Münze nicht
(engl. double spending). Eine mögliche Lösung wäre, dass die Bank eine Datenbank der bereits
ausgegebenen Münzen unterhält. Bevor der Verkäufer die Münze akzeptiert, fragt er bei der
Bank nach, ob sie bereits ausgegeben wurde und akzeptiert sie in diesem Fall nicht. Diese
Lösung ist nicht praktikabel, da eine solche Datenbank eine enorme Grösse annehmen würde.
Zudem kann nicht garantiert werden, dass immer eine direkte Verbindung vom Verkäufer zur
Bank vorhanden ist.
Um das doppelte Ausgeben von Münzen zu verhindern, versucht dies zu dektieren: solange ein
Benutzer seine Münzen nur ein Mal ausgibt, bleibt er anonym. Sobald er aber versucht eine
Münze zwei Mal aus zu geben, soll er identifiziert werden können. Diese Tatsache wird den
Benutzer davon abhalten, Münzen mehrere Male auszugeben.
Beispiel 7.14. Das Chaum-Fiat-Naor Protokoll beschreibt, wie die obige Forderung erfüllt werden
kann.
Bei der Erzeugen von Münzen erzeugt der Benutzer 2k Meldungen der Form H(m i )kkH(mi ⊕ Id),
wobei Id eine eindeutige ID des Benutzers ist und m i eine zufällige Münze. Alle diese sendet er blinded
an die Bank.
Die Bank wünscht nun vom Benutzer das blinding von k Münzen: dieser schickt die entsprechenden
Werte mi und ri (ri ist der blinding-Faktor).
Falls alle k Münzen korrekt sind, kann die Bank davon ausgehen, dass der Benutzer korrekte Münzen
verwendet und signiert die verbleibenden k Münzen blind.
Der Benutzer erhält nun die k signierten Meldungen der Form H(m i )kkH(mi ⊕ Id).
Der Verkäufer sendet k Bits (c1 , c2 , . . . , ck ) zum Kunden. Dann sendet der Kunde für i ∈ (1, 2, . . . , k)
im Falle von ci = 0 den Wert mi kkH(mi ⊕ Id) an den Verkäufer und im Falle von c i = 1 den Wert
H(mi )kkmi ⊕ Id. In beiden Fällen kann der Verkäufer die Werte H(m i )kkH(mi ⊕ Id) berechnen und
deren Richtigkeit mit Hilfe der Signatur der Bank überprüfen. Falls alle Verifikationen korrekt sind, dann
akzeptiert der Verkäufer die Zahlung.
Im dritten Schritt schickt der Verkäufer das Challenge (c 1 , c2 , . . . , ck ) und die k erhaltenen Meldungen
an die Bank des Kunden. Wurde eine der Münzen doppelt ausgegeben, dann wird sich der entsprechende
Challenge mindestens an einer Stelle unterscheiden: Es gilt also c i 6= c0i ! Die Bank hat aber sowohl
mi kkH(mi ⊕ Id) und H(mi )kkmi ⊕ Id: daraus kann sie dann Id berechnen!
Das obige Verfahren ist natürlich für micropayments zu aufwändig. So wird beispielsweise bei
Pay-TV jede Minute eine Bezahlung von 0.01 Cents durchgeführt.
155
7 Protokolle
7.12.2 E-Voting
156
7 Protokolle
7.13 Authentifikation
Mehr als die Geheimhaltung von Daten wird deren Authentizität (Echtheit) gefordert. Mechanismen zur Erreichung von Integrität (Unversehrtheit) und Authentizität werden unter dem Begriff Authentifikation zusammengefasst. Folgende Teilaufgaben sind denkbar:
Integrität von Daten fordert, dass keine Veränderungen oder Verfälschungen stattfinden können/dürfen.
Authentifikation von Daten fordert, dass diese auch tatsächlich vom vermeintlichen Absender stammen.
Authentifikation von Benutzern fordert, dass beispielsweise ein Person ihre Identität zweifelsfrei beweisen kann; d.h. sie kann sich nicht für jemand anders ausgeben.
Beispiel 7.15. Will Alice eine Nachricht m an Bob senden will, kann sie einen MAC der Meldung
mitliefern. Dieser wird gemäss
MAC = F (k, m)
aus der Nachricht m mit Hilfe einer Einweg-Funktion F unter Verwendung eines Schlüssels k berechnet.
Der Schlüssel k darf natürlich nur Alice und Bob bekannt sein.
Empfängt Bob (m0 , MAC0 ), so kann er einfach nachprüfen, ob die Nachricht unversehrt und echt ist,
d.h. auf dem Weg nicht verändert wurde und auch tatsächlich von Alice stammt, indem er überprüft, ob
gilt:
MAC0 = F (k, m0 )
Der Lauscher Eve kann nicht betrügen, da er k nicht kennt. Die Nachricht kann auch nicht verfälscht
sein, da F eine Einweg-Hashfunktion ist. Also ist die Nachricht integer und authentisch.
Wer einen bestimmten Dienst eines Computer-Systems beanspruchen will, muss sich diesem
gegenüber authentisieren, d.h. muss dem System beweisen, dass er die ist, welche sie behauptet
zu sein. Dies kann sie, indem sie beispielsweise beweist, dass sie
• das Passwort, eine geheime Information und persönliche Informationen weiss (Authentifizierung durch Wissen), oder
• einen Gegenstand wie einen Ausweis, oder eine SecurID besitzt (Authentifizierung durch
Besitz), oder
• jemand ist durch das Aussehen, die Unterschrift, eine Fingerabdruck oder die Iris (Authentifizierung durch ein persönliches Merkmal). Dazu werden neuerdings biometrische
Verfahren eingesetzt!
157
7 Protokolle
Man authentisiert sich also durch etwas, was man weiss, was man hat oder was man ist! Oft
werden zwei oder alle Möglichkeiten kombiniert. So z.B. beim Anmelden beim E-Banking bei
UBS (Passwort, Rechner, Kontonummer).
Gewisse Internet-Protokolle, wie ftp, telnet und pop schicken das Passwort unverschlüsselt
über’s Netz, oft über tausende von Kilometern, dutzende von Routern und vielleicht über das
Computernetzwerk des Konkurrenten. Damit aber auf den Computersystemen nicht das eigentliche Passwort gespeichert werden muss, werden aus diesen berechnete Hashes abgelegt.
Wird unter UNIX die Standard-Verschlüsselung crypt verwendet, sieht ein Passwort-Eintrag
beispielsweise wie folgt aus:
user01:n1EcxZ6XyoDQI:12399:0:99999:7:::
Hier sind die beiden ersten Zeichen gleich dem salt. Man beim Verschlüsseln (Hashen) des
Passwortes wird dieses Salt berücksichtigt:
perl -e ’print crypt("Secretpw","n1"), "\n";’
So erhält man n1EcxZ6XyoDQI. Verwendet man ein anderes Salt NX, so findet man mit obigem Kommando das verschlüsselte Passwort NXHWAehpuU0dg. Auch hier stellen die beiden
ersten Zeichen das Salt dar.
Im Wesentlichen arbeitet die Authentifizierung wie in der Abbildung 7.2 beschrieben.
Abbildung 7.2: Üperprüfung des UNIX-Passwortes.
Beispiel 7.16. Zeigen Sie, dass Benutzer Authentifizierung mittels Challange/Response Methode verletzlich gegenüber offline password guessing ist:
Der Angreifer kennt das challenge und auch das encrypted challenge (response), beides kann er z.B.
durch Abhören des Netzwerk Verkehrs erfahren. Dadurch kann er das Passwort (den User key) mittels
Brute-Force erraten.
158
7 Protokolle
7.13.1 Einmalpasswörter
159
7 Protokolle
7.13.2 Authentifikation mit Chipkarten
Chipkarten enthalten einen Rechner und sind damit ideal geeignet um Kryptoalgorithmen auszuführen und geheime Schlüssel sicher (mehr oder weniger) zu speichern. Sie können (nicht
nur) zur Authentifikation beim Abheben von Geldbeträgen am Bankautomaten, sondern auch
zur elektronischen Bezahlung verwendet werden.
Der Benutzer authentifiziert sich gegenüber der Karte mittels einer personal identification number (PIN) welche typischerweise (in gehashter Form) auf der Karte gespeichert ist.
Die Chipkarte authentifiziert sich gegenüber dem Rechner mittels des folgenden ChallengeResponse-Protokolls:
•
7.13.3 Bezahlen mit Chipkarten
160
7 Protokolle
7.14 Blinde Signatur
Wer ein Dokument unterzeichnet sieht dieses normalerweise vor sich. Es ist ihm also klar, was
er unterzeichnet.
Es gibt aber Fälle, wo der Unterzeichner nicht wissen darf, was er unterschreibt. Man spricht in
diesem Fall von einer blinden Signatur (engl: blind signature).
Das folgende Beispiel zeigt, dass es durchaus legitime Gründe gibt, blinde Signaturen einzuführen.
Beispiel 7.17. Stellen wir uns vor meine Tochter muss eine Prüfung von mir unterschreiben lassen.
Sie möchte aber nicht, dass ich die exakten Resultate jeder einzelnen Aufgabe sehe da sie sich wegen
der Fehler schämt. Da ich sicher bin, dass sie alles daran setzt, sich zu verbessern, akzeptiere ich ihren
Wunsch nach einer blinden Unterschrift.
Dazu steckt Griselda die Prüfung, zusammen mit einem Durchschlagpapier in ein Couvert, verschliesst
dieses und reicht es mir zur Unterschrift (an einer von ihr vorher bezeichneten Stelle).
Damit ich nicht etwa einen Check unterschreibe, füge ich meiner Unterschrift einen Bezeichner, wie
Prüfung eingesehen hinzu. Dank dem Durchschlagpapier befindet sich danach die Unterschrift (auch
und vor allem) auf der Prüfung welche Griselda danach ihrer LehrerIn übergibt.
Blinde Signaturen spielen auch eine Rolle bei elektronischen Münzen (wo z.B. eine Bank mit
der Unterschrift bezeugt, dass es sich dabei um echtes digitales Geld handelt) oder bei elektronischen Wahlen (wo die Gemeinde auch nicht wissen darf, wer welchen Wahlzettel wie ausgefüllt
hat).
Wie sieht die mathematische Realisation des obigen Protokolls aus? Sie wurde von Chaum
entwickelt und lautet wie folgt:
Griselda wählt eine Zufallszahl r (r darf nicht Teiler von n sein), berechnet für das Dokument
m die Zahl
x = m r e mod n
161
7 Protokolle
und schickt diese an mich (dabei ist (n, e) mein öffentlicher RSA-Schlüssel). Ich berechne mit
meinem privaten Schlüssel (n, d) die Zahl
y = xd mod n
und schicke diese zurück an Griselda. Wegen
yr −1 =
=
=
=
=
xd r −1
(mr e )d r −1
md r ed r −1
md rr −1
md mod n
hat Griselda mit yr −1 die von mir signierte Prüfung vor sich. Beachte, dass wir im zweit letzten
Schritt Wegen Euler r ed = r mod n schreiben durften.
Es ist klar, dass ich aus x = m r e (wobei immer modulo n gerechnet wird) nicht auf m schliessen kann (schliesslich kenne ich ja r nicht). Zudem entspricht das Durchschlagpapier dem Reinziehen von d in
(mr e )d = md r ed
162
7 Protokolle
7.15 Elektronische Wahlen
Ausgabe der Wahlzettel Der öffentliche Schlüssel (ew , n) der Wahlbehörde wird verwendet, um aus einer Zufallszahl r und einer strukturierten Zahl x den Wert
y = xr ew mod n
zu berechnen. Daraus berechnet die Wahlbehörde
t = y dw mod n
und schickt diesen Wert zurück an den Wähler. Dadurch hat die Wahlbehörde den Strukturwert x blind signiert, denn es gilt:
z = tr −1 = xdw
Einschreiben in die Wählerliste Der Wähler wählt n = pq und fasst z als öffentlichen
Schlüssel auf ....
TODO
163
7 Protokolle
7.16 Steganographie
jphide und jpseek verstecken und suchen steganographisch versteckte jpeg-files. Siehe auch
A short history of cryptography, by Dr. Frederick B. Cohen, 1995, Management Analysis,
http://www.all.net/books/ip/Chap2-1.html
Weitere Infos unter:
http://123.koehntopp.de/marit/publikationen/steganographie/ die lange Version des Artikels Sag’s durch die Blume von Marit Köhntopp, welcher im iX 04/96 erschien!
http://www.burks.de/krypto.html die Linksammlung von Burkhard Schröder zu
Kryptographie, Steganographie und Datenschutz
http://www.garykessler.net/library/fsc_stego.html, An Overview of Steganography for the Computer Forensics Examiner (FBI Forensic Science Communications,
July 2004),
http://www.garykessler.net/library/ndaa_stego.html Steganography: Implications for the Prosecutor and Computer Forensics Examiner (National District Attorneys
Association Newsletter, June 2004),
7.17 Angriffe auf Protokolle
Oft ist es viel zu schwierig, direkt Angriffe auf kryptographische Algorithmen durch zu führen:
statt dessen ist es oft einfacher, Protokolle anzugreifen! Folgende Angriffe sind möglich:
• Impersonation: hier nimmt eine Person die Identität einer anderen Person an.
• Replay-Attacken: hier wird
• Chess Grandmasters Problem ...
164
7 Protokolle
[1]
165
Literaturverzeichnis
[1] J. F. Bürgler, R. E. Bank, W. Fichtner, and R. K. Smith. A New Discretization Scheme for
the Semiconductor Current Continuity Equations. IEEE Trans. CAD, 8(5):479–89, 1989.
166