Teil 4: Kryptographische Algorithmen

Werbung
Vorlesung Informationssicherheit
Thema 4: Algorithmen der Kryptographie
Robert Baumgartl
16. Juni 2016
1 / 125
Überblick
I
Data Encryption Standard (DES)
I
Triple DES
I
Advanced Encryption Standard (AES)
I
RSA
I
DSA
I
Zero-Knowledge
2 / 125
Symmetrische Verschlüsselung mittels Data
Encryption Standard (DES)
I
Ergebnis eines durch das National Bureau of Standards
ausgeschriebenen Wettbewerbs
I
von IBM im Jahre 1974 erstmalig beschrieben
I
Prüfung/Mitentwicklung durch NSA
I
Standard ANSI X3.92, 1981
I
Prüfung alle 5 Jahre, ob Standard noch den Erfordernissen
eines Kryptosystems entspricht (→ 1987, 1993
re-zertifiziert)
I
Schlüssellänge: 56 Bit
I
blockbasiertes Verfahren: 64 Bit Klartext ⇒ 64 Bit Chiffrat
I
erstes erfolgreiches Verschlüsselungsverfahren für
Rechnereinsatz; Grundlage für alle modernen Verfahren
(Literatur: Reinhard Wobst: Abenteuer Kryptologie. Addison-Wesley, S. 126ff.)
3 / 125
DES
Überblick
63
0
Klartext
Eingangspermutation
31
0
31
0
L0
R0
K1
f
R1 = L0 ⊕ f (R0 , K1 )
L1 = R0
Komponenten:
I
Eingangspermutation (IP)
I
Zerlegung in rechte (R)
und linke (L) Hälfte
I
16 identische Runden, die
Daten mit Schlüssel
kombinieren (Funktion f )
I
Zusammenfügen von R
und L
I
Schlusspermutation (IP −1 )
K2
f
R2 = L1 ⊕ f (R1 , K2 )
L2 = R1
usw.
R15 = L14 ⊕ f (R14 , K15 )
L15 = R14
K16
f
R16 = L15 ⊕ f (R15 , K16 )
L16 = R15
Ausgangspermutation
63
0
Chiffrat
4 / 125
DES
Eingangspermutation
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
2
6
1
5
60
64
59
63
52
56
51
55
44
48
43
47
36
40
35
39
28
32
27
31
20
24
19
23
12
16
11
15
4
8
3
7
Tabelle: Eingangspermutation
Lies: „Bit 58 des Klartextes wird auf Bit 1 der Permutation
abgebildet, Bit 50 des Klartextes auf Bit 2 der Permutation usw.“
5 / 125
DES
Anmerkungen zum Algorithmus
I
Schlüssel ist eigentlich auch 64bittig, 8 Bit dienen jedoch
der Paritätsprüfung (jedes Byte muss ungerade Parität
haben)
I
für jede der 16 Runden wird aus dem 56-Bit-Schlüssel K
ein Subschlüssel Ki mit 48 Bit Länge generiert
I
Struktur des DES-Algorithmus ist ziemlich regulär; eine so
genannte Feistel-Chiffre (→ nächste Folie)
I
Entschlüsselung in umgekehrter Reihenfolge der 16
Runden
I
sehr leicht in Hardware zu synthetisieren (keine
Additionen/Multiplikationen, nur Verschiebungen,
Permutationen und XOR)
6 / 125
DES
Feistel-Chiffre
I
Funktionsblock vieler symmetrischer Verfahren
Eingangsdatenblock Runde i
Verschlüsselung:
Li+1 = Ri
Li
fi (Ri , Ki+1 )
XOR
Ri+1 = Li ⊕ f (Ri , Ki+1 )
Ri
Rundenschlüssel Ki+1
f
Entschlüsselung daraus ableitbar:
Ri = Li+1
Li = Li ⊕ f (Ri , Ki+1 ) ⊕f (Ri , Ki+1 )
|
{z
}
Li+1
Ri+1
Ausgangsdatenblock Runde i
=
I
I
Ri+1 ⊕ f (Ri , Ki+1 )
keine Umkehrfunktion f −1 (R, K ) nötig
Ver- und Entschlüsselung mit gleicher Funktion
f (R, K )
7 / 125
Struktur einer Runde (f (Ri−1 , Ki ))
Ri−1
Ki
32 Bit
48 Bit
E
Expansion
48 Bit
48 Bit
8·6 Bit
6 Bit
S-Boxen
S1
S2
S3
S4
S5
S6
S7
S8
Substitution
4 Bit
8·4 Bit
32 Bit
P
Permutation
32 Bit
8 / 125
S-Boxen (Substitution Boxen)
I
zentraler Bestandteil jedes symmetrischen
Krypografie-Verfahrens
I
nichtlineare Substitution; m Eingangs- werden auf n
Ausgangsbits abgebildet
I
S-Boxen in DES sind „mythenumrankt“, da Prinzipien ihres
Entwurfs nicht offengelegt wurden
b0
0
0
1
1
b6
0
1
0
1
0000
0010
1110
0100
1011
0001
1100
1011
0010
1000
0010
0100
0010
0001
1100
0011
0001
1100
1011
0111
Mittlere 4 Bits (b1 . . . b5 ) des Eingabewertes
0100 0101 0110 0111 1000 1001 1010 1011
0111 1010 1011 0110 1000 0101 0011 1111
0100 0111 1101 0001 0101 0000 1111 1100
1100 1101 0111 1000 1111 1001 1100 0101
0001 1110 0010 1101 0110 1111 0000 1001
1100
1101
0011
0110
1100
1101
0000
1001
0011
0100
1110
1110
1000
0000
0101
1111
1001
0110
1110
0011
Tabelle: Beispiel: S-Box 5 für DES (es gibt 8 verschiedene)
9 / 125
Zur Sicherheit von DES
I
bislang kein kryptanalytischer Angriff publiziert
I
(unbewiesener) Verdacht, NSA könnte eine Hintertür
eingebaut haben
Hauptmanko: Schlüssellänge von 56 Bit ist zu kurz
I
→ Wettbewerb DES Challenge („Wer schafft es als erster,
zu einem vorgegebenen DES-Schlüssel die zugehörige
Passphrase per Brute-Force-Angriff zu ermitteln?“)
I
DES Challenge, 1997: t = 96d benötigt
I
DES Challenge II-1, 1998: t = 48d (distributed.net)
I
DES Challenge II-2, 1998: t = 56h mittels Deep Crack,
einem parallelen Spezialsystem, 250.000$
I
DES Challenge III, 1999: t = 22h15min
10 / 125
Betriebsmodi blockbasierter symmetrischer Verfahren
Was tun, wenn Länge des Klartextes 6= Blocklänge des
Verfahrens?
→ Betriebsmodi („Modes of Operation“) blockbasierter
symmetrischer Verschlüsselungsverfahren
I
Electronic Codebook Mode (ECB)
I
Cipher Block Chaining (CBC)
I
Cipher Feedback Mode (CFB)
I
Output Feedback Mode (OFB)
I
Counter Mode (CTR)
I
...
11 / 125
Electronic Codebook Modus (ECB)
Prinzip
I
I
Klartext wird in Blöcke der Länge b (Blocklänge des
Verschlüsselungsverfahrens; z. B. 128 Bit bei AES)
unterteilt, letzter Block wird auf Länge b aufgefüllt
(Padding)
Verschlüsselungsfunktion E mit Schlüssel K wird
blockweise auf die Klartextblöcke Pi angewandt; es
entstehen (gleich große) Chiffratblöcke Ci :
Ci = EK (Pi )
I
Entschlüsselungsfunktion D mit Schlüssel K wird
blockweise auf die Chiffratblöcke Ci angewandt; es
entstehen (gleich große) Klartextblöcke Pi :
Pi = DK (Ci )
I
Blöcke sind voneinander unabhängig
12 / 125
Electronic Codebook Modus (ECB)
Prinzip, grafisch
Pi−1
K
Pi
K
Pi+1
K
Ci−1
K
EK
EK
EK
Ci−1
Ci
Ci+1
Verschlüsselung per ECB
Ci
K
DK
Pi−1
Ci+1
K
DK
Pi
DK
Pi+1
Entschlüsselung per ECB
13 / 125
Angriff auf ECB mittels Block Replay
ECB-verschlüsselter Datenaustausch mit Bank
Blocknummern
1
2
Zeitstempel
3
Absenderbank
4
Empfängerbank
5
6
7
8
Kontoinhaber
9
10
11
12
Konto-Nr.
13
Betrag
Abbildung: Beispiel für Format eines Datensatzes
I
I
I
Mallory zeichnet Datenverkehr zwischen Bank A und Bank
B auf
Mallory überweist zweimal einen festen Betrag von A nach
B (bis auf Zeitstempel identische Nachrichten)
bei allen abgehörten Nachrichten tauscht er die Felder
5-12 mit den Daten aus seinen Überweisungen aus
Grundproblem: ECB erlaubt das Austauschen einzelner
Blöcke → Blöcke dürfen nicht unabhängig voneinander sein →
CBC
14 / 125
Electronic Codebook Modus (ECB)
Eigenschaften
I
1:1-Abbildung Klartextblock → Chiffratblock
I
fehlertolerant: Bitfehler im Chiffrat verfälscht nur einen
Klartextblock, keine Fehlerfortpflanzung
I
Blockoperationen parallelisierbar
Nachteile:
I
gleicher Klartext erzeugt stets identisches Chiffrat
I
unsicher: angreifbar durch Substitutionsattacken
(Austauschen ganzer Blöcke, ohne diese zu entschlüsseln)
I
des weiteren angreifbar mit statistischen Methoden bei
Wissen über Klartext
15 / 125
Electronic Codebook Modus (ECB)
Verschlüsselung einer S/W-Bitmap (AES-128)
Original
ECB-verschlüsselt
CBC-verschlüsselt
16 / 125
Cipher Block Chaining (CBC)
Prinzip
I
I
Ergebnis früherer Verschlüsselungen fließt mit in
Verschlüsselung des aktuellen Blockes ein (Rückkopplung)
Klartextblock wird vor Verschlüsselung mit vorherigem
Chiffratblock XOR-verknüpft:
Ci = EK (Pi ⊕ Ci−1 )
I
Entschlüsselung umgekehrt; der Block wird nach
Entschlüsselung mit dem vorangehenden Chiffratblock
XOR-verknüpft:
Pi = Ci−1 ⊕ DK (Ci )
I
1
erster Block benötigt einen zufälligen Initialisierungsvektor
(IV), der nicht geheimgehalten werden muss, aber eine
Nonce1 sein sollte
„Number, used only once“
17 / 125
Cipher Block Chaining (CBC)
Prinzip
Pi−1
Pi
Ci−1
Pi+1
K
K
K
K
DK
K
EK
EK
EK
Ci−1
Ci
Ci+1
Verschlüsselung per CBC
Ci
Pi−1
Ci+1
K
DK
Pi
DK
Pi+1
Entschlüsselung per CBC
18 / 125
Cipher Block Chaining (CBC)
Fehlertoleranz
I
Bitfehler im Chiffrat:
I
I
I
I
I
enthaltender Block unbrauchbar
nachfolgender Block hat einen 1-Bit-Fehler an der
entsprechenden Position
übernächster Block nicht betroffen
Selbstsynchronisation auf Blockebene
Entfernen oder Einfügen eines Bits in das Chiffrat:
I
I
I
alle nachfolgenden Blöcke unbrauchbar
Synchronisationsfehler nicht toleriert
externe Rahmenstruktur mit Prüfsummen/CRC nötig
19 / 125
Cipher Feedback Modus (CFM)
Nachteil des CBC: ganzer Klartextblock benötigt, bevor
Verschlüsselung startet → für byteweise Verarbeitung
ungeeignet (z. B. ein sicheres Terminal)
→ Nutzung von blockbasierten Verfahren zur Implementierung
einer Stromchiffre
Idee: Der im vorangegangenen Schritt verschlüsselte Block
wird nochmals verschlüsselt und in beliebiger Granularität per
XOR mit dem Klartextblock verknüpft.
Ci = Pi ⊕ EK (Ci−1 )
Pi = Ci ⊕ EK (Ci−1 )
20 / 125
Cipher Feedback Modus (CFM)
Ablauf
Ablauf:
1. Initialisierung eines Schieberegisters mit
Initialisierungsvektor
2. blockweise Verschlüsselung des Schieberegisters
3. XOR-Operation von n Bit des Chiffrats (ki ) mit n Bit des
Plaintexts (pi )
4. Ausgabe/Übertragung der resultierenden n Bit (ci )
5. gleichzeitige Rückkopplung von ci in das Schieberegister
und Verschiebung desselben um n Bit
6. GOTO 2
21 / 125
Cipher Feedback Modus (CFM)
Verschlüsselung (Prinzip, graf.)
Schieberegister
K
Verschlüsselung
Byte ganz links
pi
ki
ci
Übertragung
Verschlüsselung im Cipher Feedback Mode (byteweise, d. h., n = 8)
22 / 125
Cipher Feedback Modus (CFM)
I
bei Entschlüsselung sind pi und ci vertauscht
I
Initialisierungsvektor benötigt
I
Granularität der Ausgabe (fast) beliebig: Byte, 16 Bit, 1 Bit
usw.
I
Fehler im Klartext bleibt unentdeckt (wird wieder in
fehlerhaften Klartext entschlüsselt)
I
Bitfehler im Chiffrat macht n Ausgabeblöcke unbrauchbar
(n = Größe des Schieberegisters)
I
fehlende Bits und eingeschobene Fehlerbits ebenso →
CFM stabilisiert sich auf Blockebene
23 / 125
Output Feedback Modus (OFM)
Verschlüsselung (Prinzip)
Schieberegister
K
Verschlüsselung
Byte ganz links
pi
ki
ci
Übertragung
Verschlüsselung im Output Feedback Mode (byteweise, d. h., n = 8)
24 / 125
Output Feedback Modus (OFM)
Anmerkungen
I
Rückkopplung des Resultatbytes ki vor XOR-Verknüpfung
mit Plaintextbyte pi :
Ci = Pi ⊕ Si
Si = EK (Si−1 )
PI = Ci ⊕ Si
Si = EK (Si−1 )
I
sonst identisch zu CFM (d. h., IV benötigt; Geheimhaltung
nicht erforderlich)
I
„Hauptarbeit“ (Erzeugung des Schlüsselstroms Si ) kann
offline erfolgen
I
1-Bit-Fehler im Chiffrat führt zu 1-Bit-Fehler im Klartext
I
Synchronisationsfehler katastrophal (vollständiger
Informationsverlust)
25 / 125
Counter Mode (CTR)
Prinzip
I
(konstanter) Initialisierungsvektor IV wird zusammen mit
einem Counter CTRi mittels des Schlüssels K
verschlüsselt, Resultat wird mit Klartextblock Pi per XOR
verknüpft, ergibt Chiffratblock Ci :
Ci = EK (IV ||CTRi ) ⊕ Pi
I
Klartextblock Pi ergibt sich aus XOR-Verknüpfung des
Chiffratblockes Ci und dem mit K verschlüsselten
Initialisierungsvektor verkettet mit dem zugehörigen
Counter CTRi
Pi = CI ⊕ EK (IV ||CTRi )
I
Länge von IV und CTR zusammen entspricht der
Blocklänge des Verfahrens
26 / 125
Counter Mode (CTR)
Eigenschaften
I
benötigt IV und Counter, beide sind nicht geheim, sollten
aber zusammen Nonce ergeben
I
nutzt Blockchiffre, betrieben als Stromchiffre
I
Bitfehler auf 1 Block beschränkt
I
Blöcke sind unabhängig; gleiche Klartextblöcke ergeben
aber unterschiedliche Chiffratblöcke, da sie von CTR
abhängen
I
parallelisierbar; wahlfreier Zugriff auf jeden Block
I
Ver- und Entschlüsselung mit identischer Funktion (
Nutzung einer Einwegfunktion möglich)
27 / 125
Counter Mode (CTR)
Prinzip
IV
CTRi−1
K
IV
CTRi
K
EK
Pi−1
CTRi−1
K
EK
Pi
Ci−1
IV
Verschlüsselung per CTR
CTRi
K
DK
Ci−1
Ci
IV
DK
Ci
Pi−1
Pi
Entschlüsselung per CTR
28 / 125
Weitere Betriebsmodi
I
Galois Counter Mode (GCM) – ermittelt zusätzlich einen
MAC zur Authentisierung
I
Counter with CBC-MAC (CCM)
I
Offset Codebook Mode (OCB)
I
Integrity Aware Parallelizable Mode (IAPM)
I
...
29 / 125
Kombination von Blockchiffren
Idee:
I
Weiternutzung eines (bewährten) Verfahrens
I
Verlängerung des Schlüssels
→ Erhöhung der Sicherheit des Verfahrens
Mehrfachverschlüsselung = Hintereinanderausführung einund desselben Algorithmus mit unterschiedlichen Schlüsseln.
I
bei Nutzung gleicher Schlüssel bleibt Komplexität eines
Brute-Force-Angriffes konstant ( Ziel verfehlt)
30 / 125
Wie oft soll ich nun DES o. ä. ausführen?
Doppelte Verschlüsselung:
C = EK2 (EK1 (P))
Hat K eine Breite von n Bits, so müssen 2n Schlüssel probiert
werden. Also müssen bei doppelter Verschlüsselung 22n
Schlüssel probiert werden, oder?
Antwort: Nein! Es gibt den sog. Meet-in-the-Middle-Angriff2 ,
eine spezielle Form eines Known-Plaintext-Angriffs
2
Bitte nicht mit Man-in-the-Middle-Angriff verwechseln!
31 / 125
Meet-in-the-Middle-Angriff
I
2 Chiffrate C1 , C2 und 2 (zugehörige) Plaintexte P1 , P2
müssen bekannt sein:
C1 = EK2 (EK1 (P1 ))
C2 = EK2 (EK1 (P2 ))
Angriffsidee („von beiden Seiten“):
1. P1 mit allen möglichen Schlüsseln verschlüsseln und
Chiffrate abspeichern
2. C1 mit allen möglichen Schlüsseln entschlüsseln und
Ergebnis mit allen Chiffraten aus 1. vergleichen
3. bei Gleichheit: zugehörige Schlüssel nutzen, um P2
(doppelt) zu verschlüsseln; Ergebnis = C2
Schlüssel aus
1. ist K1 , Schlüssel aus 2. ist K2
4. ansonsten weiterprobieren
32 / 125
Meet-in-the-Middle-Angriff
Schlußfolgerung
I
benötigt viel Speicherplatz (für 2n Blöcke)
I
Es müssen bei n Bit Schlüssellänge 2 · 2n Schlüssel
durchprobiert werden
Schlußfolgerung: Ist ein Meet-in-the-Middle-Angriff möglich,
dann führt die doppelte Verschlüsselung nicht zur Erschwerung
des Brute-Force-Angriffes von 2n auf 22n Versuche, sondern
nur zu 2n+1 .
Fazit: doppelte Verschlüsselung ist (so gut wie) nutzlos!
Abhilfe: dreifach verschlüsseln!
33 / 125
Triple DES (3DES)
Struktur
Verschlüsselung
DES
DES
DES
E(K1 )
D(K2 )
E(K3 )
Klartext
Chiffrat
Entschlüsselung
DES
DES
DES
D(K1 )
E(K2 )
D(K3 )
34 / 125
Triple DES
Anmerkungen
I
drei verschiedene Schlüssel nötig
I
Verschlüsselung:
C = EK3 (DK2 (EK1 (P)))
I
sog. Encryption-Decryption-Encryption (EDE-Modus)
I
sicherer als aufeinanderfolgende Verschlüsselung
I
Entschlüsselung (analog):
P = DK1 (EK2 (DK3 (C)))
I
als ähnlich sicher angesehen wie modernere Verfahren
(IDEA, AES)
I
dreifacher Verarbeitungsaufwand (!)
35 / 125
Advanced Encryption Standard (AES)
AES
I
I
I
I
I
I
I
I
I
I
Rijmen&Daemen, 1998
ursprüngliche Bezeichung: „Rijndael“
in einem mehrere Runden umfassenden Wettbewerb aus
mehreren „Bewerbungen“ (u. a. Twofish, RC6, Rijndael) als
Nachfolger für DES ausgewählt
blockbasiert (128 Bit), Schlüsselgrößen 128, 192 und 256
Bit.
Struktur ist keine Feistel-Chiffre, sondern ein
Substitution-Permutation Network
nicht patentiert, offener Algorithmus
zur Zeit einer der meistverwendetsten symmetrischen
Algorithmen
sehr hohes Maß an Sicherheit
Referenzimplementierung nur 500 Zeilen C-Code
effizient sowohl in Soft- und Hardwareimplementierungen
36 / 125
AES
Anwendungen:
I
WPA2
I
SSH
I
IPsec
I
Dateiverschlüsselungen: 7-Zip, RAR
I
...
37 / 125
Weitere Blockchiffrierungsverfahren
I
Lucifer (1971)
I
FEAL (1990)
I
LOKI (1990)
I
IDEA (1991)
I
Blowfish (1994)
I
Tiny Encryption Algorithm (TEA; 1994) → Praktikum
I
RC6 (1997)
I
Serpent (1998)
I
Twofish (1998)
I
Camellia (2000)
I
Threefish (2008)
I
...
38 / 125
Exkurs: Rechnen mit Restklassen
aka „Modulo-Arithmetik“
Aufgabe: Rudi ist um 7.00 Uhr aufgestanden und (nach
eigenen Angaben) seit 34 Stunden auf den Beinen. Wie spät ist
es?
Lösung:
(7 + 34) mod 24 = 41 mod 24 = 17 mod 24
Es ist offensichtlich 17.00 Uhr.
Man sagt: „41 und 17 sind äquivalent modulo 24“ und notiert
(7 + 34) ≡ 17 mod 24
39 / 125
Rechnen mit Restklassen
Allgemein gilt
a ≡ b mod n
iff ∃k : a = b + kn
k ∈Z
(„a ist kongruent zu b modulo n genau dann, wenn es ein
ganzzahliges k gibt mit . . . “)
I
I
wenn a > 0 und 0 ≤ b < n, dann ist b der Rest der
Division a/n
a mod n wird häufig modulare Reduktion (von a) genannt
Rechenregeln:
(a + b) mod n = ((a mod n) + (b mod n)) mod n
(a − b) mod n = ((a mod n) − (b mod n)) mod n
(a · b) mod n = ((a mod n) · (b mod n)) mod n
(a(b + c)) mod n = ((ab mod n) + (ac mod n)) mod n
40 / 125
Rechnen mit Restklassen
I
gern in Kryptografie eingesetzt, da bestimmte
Berechnungen modulo n schwierig3 sind
I
Zwischenergebnisse haben beschränkten Wertebereich
3
im Sinne von ‘sehr lange dauern’
41 / 125
Modulare Exponentiation
Eine wichtige Operation, z. B. für RSA, ist
ax mod n
Berechnung am Beispiel y = a8 mod n
1. naiver Ansatz
y = (a · a · a · a · a · a · a · a) mod n
→ Zwischenergebnis sehr groß, schlecht zu speichern
2. Kombination von Potenzierung und modularer Reduktion
y = ((a2 mod n)2 mod n)2 mod n
Schön und gut, was aber tun, wenn x keine Zweierpotenz?
42 / 125
Modulare Exponentiation
Binäre Exponentiation („Square-and-multiply“) von x e
Idee: Binärdarstellung des Exponenten e drückt diesen als
Summe von Zweierpotenzen aus!
Algorithmus zur Berechnung von y = x e :
I
I
e als Binärzahl darstellen
Binärdarstellung von e bitweise von links beginnend lesen
I
I
I
I
wenn Bit = 1, dann ‘QM’ notieren
wenn Bit = 0, dann ‘Q’ notieren
Initialwert: y = 1
wiederum von links beginnend generierte Zeichenkette
analysieren
I
I
wenn Zeichen = ‘Q’, dann y quadrieren
wenn Zeichen = ‘M’, dann y mit x multiplizieren
43 / 125
Modulare Exponentiation
Binäre Exponentiation - Beispiel
Berechnung von x 42
Es gilt: 4210 = 0010.10102
d. h. ,
42 = 25 + 23 + 21
42 = 1 0 1 0 1 0
QM Q QM Q QM Q
Initialwert
12 x
( x )2
( x 2 )2 x
(
x5
)2
10
(
x
)2 x
21
(
x
)2
d. h., x 42 = ((((x 2 )2 · x)2 )2 · x)2
44 / 125
Modulare Exponentiation
Kombination mit Modulo-Operation: Berechnung von y = x e mod p
I
da gilt:
(a · b) mod n = ((a mod n) · (b mod n)) mod n,
I
muss Modulo-Operation nach jeder Multiplikation und nach
jeder Quadrierung ausgeführt werden
Beispiel: Berechnung von x 25 mod p
Es gilt: 2510 = 110012
d. h. ,
QM QM Q Q QM
x 25 mod p =
(((((((x 2 mod p)·x) mod p)2 mod p)2 mod p)2 mod p)·x) mod p
I
benötigt 6 Multiplikationen und 6 Modulo-Operationen
45 / 125
Diskreter Logarithmus
Def. Eine primitive Wurzel modulo p ist eine Zahl a, deren
Potenzen modulo p alle Werte zwischen 1 und p − 1
generieren kann.
Beispiel:
51
52
53
54
55
56
=
≡5·5
≡4·5
≡6·5
≡2·5
≡3·5
= 5 ( mod 7)
≡ 4 ( mod 7)
≡ 6 ( mod 7)
≡ 2 ( mod 7)
≡ 3 ( mod 7)
≡ 1 ( mod 7)
Das bedeutet, in diesem Fall können wir für jedes y < p
ermitteln, welches x die Gleichung
f (x) = y = ax mod p
erfüllt. Wir nennen x den diskreten Logarithmus modulo p
von y.
46 / 125
Diskreter Logarithmus
x
100
80
60
40
20
0
0
20
40
60
80
100
y
Abbildung: Graph des diskreten Logarithmus für y = 17x mod 107
47 / 125
Diskreter Logarithmus
Schlussfolgerung / Zusammenfassung:
I
modulare Exponentiation f (x) = ax mod p ist leicht zu
berechnen (geringer Aufwand)
I
Umkehrung der modularen Exponentiation („diskreter
Logarithmus“) f −1 (x) = ax mod p ist sehr schwierig
Einwegfunktion
48 / 125
Diffie-Hellman-Protokoll
Anwendung des diskreten Logarithmus: Schlüsselgenerierung
und -austausch mittels Diffie-Hellman-Protokoll:
1. Bob und Alice einigen sich auf eine große Primzahl p und
eine primitive Wurzel g modulo p.
2. Alice wählt eine (große) zufällige Zahl i (Alice’ geheimer
Schlüssel) und berechnet A = g i mod p (Alice’ öffentlicher
Schlüssel).
3. Bob wählt eine (große) zufällige Zahl j (Bobs geheimer
Schlüssel) und berechnet B = g j mod p (Bobs öffentlicher
Schlüssel).
4. Alice sendet A an Bob, Bob sendet B an Alice.
5. Alice berechnet
K = B i mod p = (g j mod p)i mod p = g ij mod p, den
geheimen Sitzungsschlüssel.
6. Bob berechnet
K = Aj mod p = (g i mod p)j mod p = g ij mod p.
49 / 125
Anmerkungen zum Diffie-Hellman-Protokoll
I
g muss primitiv modulo p sein, d.h. es muss stets ein l
geben, so dass g l ≡ b mod p ∀ 1 ≤ b < p.
I
Eve kann A und B abfangen, es nützt ihr aber nichts, sie
kann g ij mod p nicht aus g i mod p und g j mod p
berechnen, denn dazu müßte sie i und j ermitteln (den
diskreten Logarithmus modulo p von A und B zur Basis g)
I
Mallory ist (leider) mächtiger; er kann einen
Man-in-the-Middle-Attack durchführen!
50 / 125
Diffie-Hellman-Protokoll
Beispiel
Alice
g = 4,
Bob
p = 11
i =3
j =4
A = 43 mod 11 = 9
B = 44 mod 11 = 3
A = 9 → Bob
Alice ← B = 3
Bi
K =
mod p
3
= 3 mod 11 = 5
K = Aj mod p
= 94 mod 11 = 5
51 / 125
El-Gamal-Verschlüsselung
. . . . . . klitzekleine Erweiterung des DH-Schlüsselaustausches
Schlüsselgenerierung
I
Alice wählt eine Primzahl p und eine primitive Wurzel g mod p
I
Alice wählt einen zufälligen Exponenten i ∈ {0, . . . , p − 2}; ihren
privaten Schlüssel
I
Alice errechnet A = g i mod p, ihren öffentlichen Schlüssel4
Verschlüsselung
I
Bob beschafft sich (g, p, A)
I
Bob wählt einen zufälligen Wert j ∈ {0, . . . p − 2} und berechnet
B = g j mod p
I
Bob teilt die Klartextnachricht in Blöcke mk der Länge
{0, 1, . . . , p − 1} ein und berechnet dann die Chiffratblöcke ck
ck = Aj mk mod p
(er multipliziert die Klartextblöcke mit dem DH-Session-Key)
4
Der gesamte öffentliche Schlüssel umfasst (g, p, A)
52 / 125
El-Gamal-Verschlüsselung
Entschlüsselung
I
Alice besorgt sich B und die Chiffratblöcke ck
I
„dividiert“ die Chiffratblöcke durch den DH-Session-Key
ck
mk = i
B mod p
I
dies tut sie jedoch nicht direkt (sie müßte das zu B i multiplikativ
inverse Element finden), sondern sie berechnet den Exponenten
x:
x =p−1−i
und ermittelt dann für jeden Chiffratblock ck
B x ck mod p = mk
I
Dies funktioniert, weil
B x ck ≡ g j(p−1−i) Aj mk ≡ (g p−1 )j (g i )−j Aj mk
≡ A−j Aj mk ≡ mk (mod p) = mk
gilt.
53 / 125
El-Gamal-Verschlüsselung
Beispiel
Alice
Bob
p = 23, g = 7, i = 6
A = g i mod p = 76 mod 23 = 4
(p, g, A) = (23, 7, 4) → Bob
j = 13
j
13
B = g mod p = 7
mod 23 = 20
Klartext‘block’ m = 17
c = Aj m mod p = 413 17 mod 23
= 19
Alice ← (20, 19) = (B, c)
x = p − 1 − i = 23 − 1 − 6 = 16
m = B x c mod p = 2016 19 mod 23
= 17
54 / 125
Exkurs 2: Primzahlen
Def. Eine natürliche Zahl p ist eine Primzahl, wenn sie genau
zwei Teiler hat.
I
0 und 1 sind keine Primzahlen
I
Beispiele: 2, 3, 5, 7, 11, . . . , 73, . . . , 257885161 − 1
(gegenwärtig größte bekannte)5
I
Primzahlen mit Abstand 2 sind so genannte
Primzahlzwillinge6 ; z. B. (3,5), (101, 103),
(3756801695685 · 2666669 ± 1)
I
Hat p mehr als 2 Teiler, so ist sie eine zusammengesetzte
Zahl (ein Produkt von Primzahlen).
I
kein Verfahren, Funktion, Formel usw. bekannt, effizient
(große) Zahlen in Primfaktoren zu zerlegen
5
http://www.mersenne.org/
6
Deren (Un)endlichkeit ist bislang nicht bewiesen.
55 / 125
Primzahlen
Unendlichkeit von Primzahlen
Satz: Es gibt unendliche viele Primzahlen.
Beweis (Euklid, 300 v. u. Z.):
I
Angenommen, es gäbe endlich viele Primzahlen p1 , p2 , . . . , pn .
I
dann kann m = p1 · p2 · . . . · pn + 1 keine Primzahl sein
I
wenn m keine Primzahl ist, muss sie zusammengesetzt sein,
also Primfaktor q enthalten mit q | m = p1 · p2 · . . . · pn + 1
I
da q in {p1 , p2 , . . . , pn } enthalten sein muss (denn das sind alle
Primzahlen, die es gibt), muss auch gelten
q | p1 · p2 · . . . · pn = m − 1
I
aus q | m und q | (m − 1) folgt q | m − (m − 1), also q | 1.
I
Da aber keine Primzahl 1 teilt, haben wir einen Widerspruch. Die
Annahme endlich vieler Primzahlen ist somit falsch.
56 / 125
Generierung von Primzahlen
Sieb des Eratosthenes (Eratosthenes von Kyrene, ca. 276–196 v. u. Z.)
Algorithmus:
1. Man schreibe alle Zahlen von 2 bis zum gewünschten Maximum
M auf.
2. Es sei n die kleinste nicht gestrichene und nicht markierte Zahl.
Man markiere n und streiche dann alle Vielfache von n aus.
√
3. Man führe Schritt 2 für alle n ≤ M aus.
4. Alle markierten und alle nicht gestrichenen Zahlen sind
Primzahlen.
Beispiel (M = 100):
2
16
30
44
58
72
86
3
17
31
45
59
73
87
4
18
32
46
60
74
88
5
19
33
47
61
75
89
6
20
34
48
62
76
90
7
21
35
49
63
77
91
8
22
36
50
64
78
92
9
23
37
51
65
79
93
10
24
38
52
66
80
94
11
25
39
53
67
81
95
12
26
40
54
68
82
96
13
27
41
55
69
83
97
14
28
42
56
70
84
98
15
29
43
57
71
85
99
100
57 / 125
Primzahltest nach Fermat
Kleiner Satz des Fermat
Voraussetzung: p sei prim, g ∈ Z, ggT(g, p) = 1.
Dann gilt nach Pierre de Fermat:
g p−1 ≡ 1.
Umkehrung des Satzes: Wenn gilt:
g p−1 mod p 6= 1,
dann kann g keine Primzahl sein, sondern muss
zusammengesetzt sein. → Grundidee für einen
(probabilistischen) Primzahltest.
58 / 125
Primzahltest nach Fermat
„Ist p eine Primzahl?“
Start
Wähle g zufällig mit 1 < g < n − 1
Berechne y = g p−1 mod p
"p ist wahrscheinlich prim.“
yes
y = 1?
no
„p ist zusammengesetzt.“
Stop
Abbruch mit dem Ergebnis „p ist wahrscheinlich prim“, nach
hinreichend vielen Iterationen.
59 / 125
Primzahltest nach Fermat
Fermatsche Pseudoprimzahlen, Carmichael-Zahlen
Problem: Es gibt einige (wenige) Zahlen p, für die
g p−1 mod p = 1 gilt und die dennoch zusammengesetzt sind,
die so genannten fermatschen Pseudoprimzahlen zur Basis g.
Abhilfe: Nutzung einer anderen Basis g
Problem 2: Es gibt (sehr, sehr wenige) Zahlen p, für die
g p−1 mod p = 1 ∀1 < g < p − 1 gilt und die dennoch
zusammengesetzt sind, die so genannten
CARMICHAEL-Zahlen.
Abhilfe: keine bzw. Nutzung eines anderen Primzahltests.
Beispiel: 561 = 3 · 11 · 17 ist die kleinste CARMICHAEL-Zahl.
60 / 125
Generierung von Primzahlen
Übersicht über Verfahren
I
Probedivision
I
Sieb des Eratosthenes
I
Fermatscher Primzahltest
I
Miller-Rabin-Test (1974)
I
Solovay-Strassen-Test (1977)
I
Sieb von Atkin (1999)
I
AKS-Primzahltest (2002; polynomielle Laufzeit)7
7
TODO: Literaturverweis
61 / 125
Eulersche ϕ-Funktion
Definition (Eulersche ϕ-Funktion)
ϕ(n) ist die Anzahl der zu n teilerfremden positiven ganzen
Zahlen, die nicht größer sind als n.
formal:
ϕ(n) = {1 ≤ a ≤ n | ggT(n, a) = 1}
(„ϕ(n) ist die Mächtigkeit der Menge, die alle Zahlen a enthält,
die teilerfremd zu n sind.“)
I
I
zahlentheoretische Funktion
Beispiele:
ϕ(1) = 1
ϕ(2) = 1
ϕ(6) = 2
(a ∈ {1, 5})
ϕ(7) = 6
(Primzahl!)
ϕ(15) = 8
(a ∈ {1, 2, 4, 7, 8, 11, 13, 14})
62 / 125
Eulersche ϕ-Funktion und Primzahlen
I
Wenn p prim, dann ϕ(p) = p − 1.
I
Wenn p und q prim, dann ϕ(pq) = (p − 1)(q − 1).
Beweis:
I
Es gibt genau pq − 1 Zahlen, die kleiner als pq sind.
I
Unter diesen gibt es (p − 1) Vielfache von q und (q − 1)
Vielfache von p.
I
Alle anderen Zahlen < pq sind keine Teiler von pq, da p
und q prim sind.
I
Folglich gilt:
ϕ(pq) = (pq − 1) − (p − 1) − (q − 1)
= pq − p − q + 1
= (p − 1)(q − 1).
63 / 125
Der Satz von Euler
Definition (Satz von Euler)
Es seien m, n zwei teilerfremde natürliche Zahlen. Dann gilt:
mϕ(n) mod n = 1.
Für Primzahlen p, q mit p 6= q und n = pq gilt damit
(vgl. vorherige Folie)
m(p−1)(q−1) mod pq = 1.
64 / 125
Größter gemeinsamer Teiler (ggT)
Berechnung über Primfaktorzerlegung
Idee:
I
Zerlegung beider Operanden in Primfaktoren
I
Produkt der gemeinsamen Faktoren ist der ggT.
Beispiel: ggT(468, 1260)
Zerlegung in Primfaktoren liefert:
468 = 2 · 2 · 3 · 3
· 13
1260 = 2 · 2 · 3 · 3 · 5 · 7
ggT = 2 · 2 · 3 · 3 = 36
I
nur für kleine Zahlen praktikabel, da Primfaktorzerlegung
algorithmisch aufwändig für große Zahlen
65 / 125
Größter gemeinsamer Teiler (ggT)
Euklidischer Algorithmus (ca. 500 v. u. Z.)
Algorithmus 1 Berechne den ggT(n, a) =
1: if n = 0 then
2:
return a
3: else
4:
while a 6= 0 do
5:
if n > a then
6:
n ←n−a
7:
else
8:
a←a−n
9:
end if
10:
end while
11:
return n
12: end if
66 / 125
Größter gemeinsamer Teiler (ggT)
Euklidischer Algorithmus (ca. 500 v. u. Z.)
I
sukzessive Subtraktion kann effizient auf
modulo-Operation abgebildet werden:
(
ggT(a, (n mod a)) für a > 0
ggT(n, a) =
n
für a = 0
I
mit n > a ≥ 0
Algorithmus 2 Berechne den ggT(n, a) =
1: while a 6= 0 do
2:
h ← n mod a
3:
n←a
4:
a←h
5: end while
6: return n
67 / 125
Euklidischer Algorithmus
Beispiel
ggT(792, 75) = ggT(75, 42)
(792 = 10 · 75 + 42)
= ggT(42, 33)
(75 = 1 · 42 + 33)
= ggT(33, 9)
(42 = 1 · 33 + 9)
= ggT(9, 6)
(33 = 3 · 9 + 6)
= ggT(6, 3)
(9 = 1 · 6 + 3)
= ggT(3, 0)
(6 = 2 · 3 + 0)
=3
Fazit:
I effizienter Algorithmus (viel effizienter als
Primfaktorzerlegung!)
68 / 125
Erweiterter Euklidischer Algorithmus
generiert zusätzlich zu ggT eine so genannte
Linearkombination (aka Vielfachsumme) des ggT:
ggT(n, a) = k = v · n + u · a
Algorithmus 3 Berechne k = ggT (n, a) = vn + ua
1: (c, d) ← (a, n)
2: (uc , vc , ud , vd ) ← (1, 0, 0, 1)
3: while c 6= 0 do
4:
q ← bd/cc
5:
(c, d) ← (d − qc, c)
6:
(uc , vc , ud , vd ) ← (ud − quc , vd − qvc , uc , vc )
7: end while
8: (k , v , u) ← (d, vd , ud )
9: return k , v , u
69 / 125
Erweiterter Euklidischer Algorithmus
Beispiel
Gesucht:
ggT(17, 3) = k = v · 17 + u · 3
Zeile
1
2
4
5
6
4
5
6
4
5
6
c
3
d
17
uc
vc
ud
vd
1
0
0
1
q
5
2
3
-5
1
1
0
1
1
2
6
-1
-5
1
2
0
1
-17
3
6
-1
k = 1, v = −1, u = 6, also ggT(17, 3) = 1 = −1 · 17 + 6 · 3
70 / 125
Modulare Inverse
Satz (Satz von der modularen Inversen)
Seien a und n teilerfremde ganze Zahlen (d. h., ggT (n, a) = 1). Dann
gibt es eine Ganzzahl b, so dass gilt:
a · b mod n = 1.
(„a ist modulo n invertierbar.“, „b ist das zu a inverse multiplikative
Element modulo n.“)
Beweis:
I
wenn k = 1, dann gibt es lt. erweitertem euklidischen
Algorithmus ganze Zahlen v , u mit
1 = k = ggT(n, a) = v · n + u · a.
I
Bei (Modulo-)Division durch n liefert linke Seite den Wert 1,
rechte Seite den Wert u · a mod n (da v · n durch n teilbar).
I
Also gilt:
1 = u · a mod n
I
Mit u = b folgt die Behauptung.
71 / 125
Public-Key-Kryptografie mit RSA
Überblick
I
Ron Rivest, Adi Shamir, Leonard Adleman (1977)
I
beruht auf Schwierigkeit, große Zahlen (100-200 Stellen
oder mehr) zu faktorisieren8
I
(unbewiesene) Vermutung:
Die Entschlüsselung eines Chiffrates ohne
Kenntnis des Schlüssels ist genauso schwierig
wie die Faktorisierung der beiden beteiligten
Zahlen
I
→ Langzahlarithmetik erforderlich
I
eines der am leichtesten zu verstehenden
Public-Key-Verfahren
8
in Primfaktoren zu zerlegen
72 / 125
RSA
Schlüsselgenerierung
1. Wähle zwei verschiedene große Primzahlen p, q.
2. Berechne den sog. RSA-Modul
n = pq.
3. Ermittle den Wert der Eulerschen ϕ-Funktion für n:
ϕ(n) = (p − 1)(q − 1).
4. Wähle e für den öffentlichen Schlüssel zufällig, so dass
I
I
1 < e < ϕ(n) gilt und
e und ϕ(n) teilerfremd sind (ggT(ϕ(n), e) = 1).
73 / 125
RSA
Schlüsselgenerierung - Teil 2
5. Es muss für den privaten Schlüssel d gelten:
e · d mod ϕ(n) = 1.
Daher wird d mittels des erweiterten euklidischen
Algorithmus errechnet:
d = e−1 mod (p − 1)(q − 1).
6. Vernichte p und q.
7. Schlüssel wurden generiert:
I
I
der öffentliche Schlüssel ist (e, n),
der private Schlüssel ist d.
74 / 125
RSA
(Stark vereinfachtes) Beispiel zur Schlüsselgenerierung
1. p = 47, q = 71
2. n = 47 · 71 = 3337
3. ϕ(3337) = (p − 1)(q − 1) = 46 · 70 = 3220
4. e muss teilerfremd sein zu 3220,
e = 79
79−1
5. d =
mod 3220 = 1019
6. Schlüssel:
I
I
(e, n) = (79, 3337)
d = 1019
75 / 125
RSA
Vorgang des Ver- und Entschlüsselns
Verschlüsselung
I
gegeben: Public Key (e, n), Klartextnachricht m
I
m in Blöcke mi zerlegen, für deren Größe L < n gelten
muss
I
blockweise modular exponieren:
ci = mie mod n
Entschlüsselung
I
gegeben: Private Key d, Chiffrat ci
I
blockweise modular exponieren
mi = cid mod n
76 / 125
RSA
Beispiel zum Verschlüsseln
Fortsetzung des Beispiels:
I
(e, n) = (79, 3337)
I
d = 1019
I
m = 6882326879666683 („DR DOBBS“)
I
willkürliche Zerlegung in Blöcke von 3 Zeichen
I
→ m1 = 688, m2 = 232, m3 = 687, m4 = 966, m5 =
668, m6 = 003 (links mit Nullen aufgefüllt!)
Verschlüsselung:
c1 = m1e mod n = 68879 mod 3337 = 1570
c2 = m2e mod n = 23279 mod 3337 = 2756
usw.
Ergebnis: c = 1570 2756 2091 2276 2423 158
77 / 125
RSA
Beispiel zum Entschlüsseln
Entschlüsselung:
m1 = c1d mod n = 15701019 mod 3337 = 688
m2 = c2d mod n = 27561019 mod 3337 = 232
usw.
Ergebnis: m = 688 232 687 966 668 3
78 / 125
RSA
Warum funktioniert das ganze (in a Nutshell)?
I
Nach den Regeln des Rechnens mit Restklassen gilt:
d
cid mod n = (mie mod n) mod n = mied mod n = . . .
I
da definitionsgemäß ed ≡ 1 mod ϕ(n), gilt
ed = 1 + k ϕ(n), k ∈ Z, also:
1+k ϕ(n)
· · · = mi
I
k ϕ(n)
mod n = mi mi
mod n = . . .
per definitionem gilt weiterhin n = pq und
ϕ(n) = (p − 1)(q − 1), also
k (p−1)(q−1)
· · · = mi mi
(p−1)(q−1) k
mod pq = mi
mi mod pq
79 / 125
RSA
Warum funktioniert das ganze (Teil 2)?
I
Der Satz von Euler besagt:
x (p−1)(q−1) mod pq = 1
I
bezugnehmend auf das letzte Ergebnis ergibt sich so:
I
, wenn ggT(x, pq) = 1.
(p−1)(q−1) k
mi
mi mod pq = 1k mi mod pq = . . .
und da schließlich mi < n = pq, ergibt sich endlich
· · · = mi mod pq = mi .
Fazit: RSA funktioniert.
80 / 125
RSA
Bemerkungen
I
viel geringere Geschwindigkeit als symmetrische
Verfahren (ca. Faktor 1000)
I
bis zum Jahr 2000 patentiert (RSA Security, Inc.)
I
kryptologisch bislang nicht gebrochen
I
Als öffentlicher Schlüssel e werden häufig die Werte 3, 17
und 216 + 1 = 65537 gewählt, da sie wenig Aufwand beim
Verschlüsseln (bzw. Verifizieren der Signatur) verursachen
I
Ähnliche kleine Werte für d sind unmöglich, da der
Angreifer sonst (Brute-Force) alle möglichen
Schlüsselwerte durchprobieren könnte.
81 / 125
RSA
Probleme beim „schulbuchmäßigen“ Einsatz
I
I
I
gleiche Klartextblöcke erzeugen gleiche Chiffratblöcke
(analog ECB)
Klartext-Werte 1, 0 und -1 erzeugen Chiffrate 1, 0 und -1
RSA ist verformbar (malleable): Angreifer kann das Chiffrat
verändern, was zu einer Transformation des Klartextes
führt, ohne zu entschlüsseln:
I
I
I
Alice schickt Bob y = x e mod n
Mallory ersetzt y durch y 0 = se y (s ∈ Z)
Bob entschlüsselt y 0 :
y 0d mod n = (se y )d mod n
= (se x e mod n)d mod n
= (sx)ed mod n
= sx mod n
Abhilfe: Padding
82 / 125
length of the message in bytes. A hash function computes a message digest of fixed
length (e.g., 160 or 256 bit) for every input. More about hash functions is found
in Chap. 11. Furthermore, let L be an optional label associated with the message
(otherwise, L is an empty string as default). According to the most recent version
Optimal Asymmetric Encryption
Padding
(OAEP)
PKCS#1
(v2.1),
padding a message within the RSA encryption scheme is done in
the following way:
RSA
1. Generate a string PS of length k − |M| − 2|H| − 2 of zeroed bytes. The length of
PS may be zero.
2. Concatenate Hash(L), PS, a single byte with hexadecimal value 0x01, and the
message M to form a data block DB of length k − |H| − 1 bytes as
DB = Hash(L)||PS||0x01||M.
3. Generate a random byte string seed of length |H|.
4. Let dbMask = MGF(seed, k −|H|−1), where MGF is the mask generation function. In practice, a hash function such as SHA-1 is often used as MFG.
5. Let maskedDB = DB ⊕ dbMask.
6. Let seedMask = MGF(maskedDB, |H|).
7. Let maskedSeed = seed ⊕ seedMask.
8. Concatenate a single byte with hexadecimal value 0x00, maskedSeed and
maskedDB to form an encoded message EM of length k bytes as
EM = 0x00||maskedSeed||maskedDB.
Figure 7.3 shows the structure of a padded message M.
seed
Hash(L) |
PS
|
0x01
|
M
0x00
seedMask
1
dbMask
|H|
k−|H|−1
k
Fig. 7.3 RSA encryption of a message M with Optimal Asymmetric Encryption Padding (OAEP)
Abbildung: Ablauf beim OAEP9
On the decryption side, the structure of the decrypted message has to be verified.
For instance, if there is no byte with hexadecimal value 0x01 to separate PS from
M, a decryption error occurred. In any case, returning a decryption error to the user
9
Christof Paar und Jan
Understanding
Cryptography.
Springer, about
2010,the
S.plaintext.
193.
(or aPelzl.
potential
attacker!) should
not reveal any information
83 / 125
Public-Key Cryptography Standard (PKCS)
84 / 125
Sicherheit von RSA
I
Gegner besitzt e und n
I
um d zu ermitteln, kann er n faktorisieren (in pq).
d ≡ e−1 mod ((p − 1)(q − 1))
I
bislang unbewiesen, ob die Faktorisierung zwingend
notwendig ist, um d zu errechnen
I
ebenso möglich: Brute-Force-Angriff auf d
(Durchprobieren)
nur erfolgversprechend, wenn d sehr
klein
I
p und q müssen vernichtet werden, aus ihnen kann der
geheime Schlüssel trivial ermittelt werden.
I
Seitenkanalangriffe (z. B.) über Leistungsaufnahme bei
Verschlüsselung (Simple Power Analysis)
85 / 125
Exkurs: Seitenkanalangriff (Side Channel Attack)
I
I
Angriffe richten sich nicht gegen den Algorithmus, sondern
eine bestimmte Implementierung
es werden bestimmte Parameter des den Algorithmus
ausführenden Systems gemessen, z. B.
I
I
I
I
I
I
Ausführungszeiten
Cache-Hit- (bzw. -Miss-) Rate
aufgenommene Leistung
elektromagnetische Abstrahlung
Geräuschemissionen
Aus den ermittelten Parametern werden Informationen
über den Programmfluss extrahiert, die das Brechen des
Verfahrens (oder eines bestimmten Schlüssels)
vereinfachen.
Beispiel: durch das „Belauschen“ des Busprotokolls
(CPU-RAM) und genauer Kenntnis der Implementation kann
man die Schlüssellänge ermitteln.
86 / 125
Seitenkanalangriff
Beispiel:
I
verschiedene Tasten einer Computertastatur oder eines
Geldautomaten produzieren verschiedene Geräusche (für
den Menschen nicht unterscheidbar)
I
Aufzeichnen und nachträgliches Auswerten kann Texte,
PINs, Passworte ermitteln (z. B. mittels neuronaler Netze)
I
Asonov/Agraval: Keyboard Acoustic Emanations. IEEE
Symposium on Security and Privacy, 2004
Gegenmaßnahmen:
I
Reduktion oder Elimination der Emission
I
Vereinheitlichung (z. B. von Cachezugriffen oder
Ausführungszeiten)
I
asynchrone CPUs
87 / 125
Faktorisierungsverfahren
unbekannt, zu welcher Komplexitätsklasse das Problem
„Faktorisierung“ gehört
√
Einfachstes Verfahren: Versuchsweise Division bis n
Stand der Technik sind die folgenden schwierigen Algorithmen:
I
I
Kettenbruchmethode
I
Quadratisches Sieb (QS); nur für Zahlen < 110
Dezimalstellen
I
Zahlkörpersieb (Number Field Sieve; NFS); effizientester
bislang bekannter Algorithmus
I
Shor-Algorithmus - kann in P faktorisieren, erfordert aber
Quantencomputer
88 / 125
RSA Factoring Challenge
I
Wettbewerb „Wer faktorisiert als erster definierte Zahlen
großer Länge?“
I
1991–2007
I
Ziel: Nachweis/Falsifizierung der Sicherheit des
RSA-Kryptosystems
P
Preisgeld:
635.100$
I
Beispiel: RSA-100
= 15226050279225333605356183781326374297180681149613
80688657908494580122963258952897654000350692006139
= 37975227936943673922808872755445627854565536638199
∗ 40094690950920881030683735292761468389214899724061
89 / 125
RSA Factoring Challenge
Ausgewählte Ergebnisse
Zahl
Bits
Dez.-Stellen
Lösungsjahr
CPU-Jahre
RSA-100
330
100
1991
RSA-140
463
140
1999
8.9
RSA-155
512
155
1999
35.7
RSA-160
530
160
2003
RSA-576
576
174
2003
RSA-640
640
193
2005
55
RSA-200
663
200
2005
30
RSA-768
768
232
2010
≈ 1500
90 / 125
Signieren (und Verifizieren) mittels RSA
Voraussetzung: Bob hat ein Schlüsselpaar
(KB,priv = d, KB,pub = (e, n)) erzeugt.
Ablauf:
1. Bob übermittelt Alice seinen öffentlichen Schlüssel KB,pub .
2. Bob signiert die Nachricht M, d. h. , er verschlüsselt diese
mit KB,priv . Es entsteht Bobs Signatur über M
sigB (M) = M d mod n.
3. Bob übermittelt M und sigB (M) an Alice.
4. Alice entschlüsselt die Signatur mit Bobs öffentlichem
Schlüssel
e
M 0 : = (sigB (M))e mod n = M d mod n
mod n
= M de mod n
5. Alice vergleicht das Dechiffrat M 0 mit der empfangenen
Nachricht M. Gilt M 0 = M, dann ist die Signatur gültig,
ansonsten ungültig.
91 / 125
Signieren (und Verifizieren) mittels RSA
Fazit
2 Merkmale werden durch eine gültige Signatur bewiesen:
1. Nachricht M kommt von Bob (, da nur er den für die
Erzeugung der Signatur nötigen privaten Schlüssel
besitzt). – Authentizität
2. Die Nachricht M wurde nicht verändert. – Integrität
Bei ungültiger Signatur kann i.a. nicht unterschieden werden,
welche der beiden Fakten nicht stimmen.
Des weiteren kann Bob die geleistete Unterschrift nicht
abstreiten („non-repudiation“).
92 / 125
Management öffentlicher Schlüssel
Zertifikate
Problem: Übereinstimmung öffentlicher Schlüssel — Identität
Lösung: Zertifikat = Nachricht, die
I
Repräsentation der Identität,
I
zugehörigen öffentlichen Schlüssel,
I
Zeitstempel oder Geltungsdauer
enthält und durch eine vertrauenswürdige Instanz (Trent,
“Issuer”, Certification Authority) signiert wurde.
Def.: Ein Zertifikat ist eine Einheit, die einen kryptografischen
Schlüssel an eine Identität bindet.
93 / 125
Zertifikate für öffentliche Schlüssel
Prinzip
Erstellung des Zertifikats
unsigniertes Zertifikat
Prüfung des Zertifikats
Alice’ ID
Alice’ Public Key
H
H
1111111
0000000
0000000
1111111
111111
000000
000000
111111
Informationen der CA
E
Hash des unsignierten
Zertifikats
D
Signatur des Zertifikats
Private Key der CA
1111111
0000000
0000000
1111111
0000000
1111111
=?
0000000
1111111
0000000
1111111
Public Key der CA
94 / 125
Management öffentlicher Schlüssel
Aufbau eines Zertifikats; formal
Ein durch Zertifizierungsinstanz CA ausgestelltes Zertifikat für
Nutzer A enthält:
Cert(CA,A) = {IDCA , IDA , eA , T, Ext, sigCA }
mit
sigCA = dCA {H(IDCA , IDA , eA , T, Ext)}
Legende:
IDA
eA
dCA
T
sigCA
H(j)
Ext
eindeutiger Name des Teilnehmers A
öffentlicher Schlüssel des Teilnehmers A
privater Schlüssel der CA
Gültigkeitszeitraum des Zertifikats
digitale Signatur der CA
kryptografischer Hash über j
optionale Erweiterungen nach X.509
95 / 125
Verifikation einer digitalen Signatur
Schritt 1: Verifikation der Signatur
Bob möchte Alice’ Signatur prüfen. Dazu muss er
1. Alice’ Zertifikat besorgen (enthält den zur Unterschrift
passenden öffentlichen Schlüssel eA ),
2. mit eA den ursprünglichen Hashwert des Dokuments H1
entschlüsseln,
3. den aktuellen Hashwert des Dokuments H2 ermitteln,
4. Signatur passt zu Zertifikat, wenn H1 = H2 .
96 / 125
Verifikation einer digitalen Signatur
Schritt 2: Verifikation des Zertifikates
Nun muss Bob prüfen, ob das Zertifikat stimmt:
1. den öffentlichen Schlüssel eCA der CA besorgen, die Alice’
Zertifikat ausgestellt hat,
2. mit eCA den ursprünglichen Hashwert des Zertifikats H3
entschlüsseln,
3. den aktuellen Hashwert des Zertifikats H4 ermitteln,
4. das Zertifikat ist gültig, wenn H3 = H4 .
97 / 125
Bob verifiziert Alice’ Signatur
Prinzipielle Struktur einer Public Key Infrastructure (PKI)
Root-CA
CA
CA1
Bob
Cert(CA, CA)
Cert(CA, CA1)
Alice
Cert(CA1, Alice)
Text
sigAlice [Text]
98 / 125
Aufbau eines Zertifikates
X.509 (ISO Authentication Framework)
I
Version: des Protokolls (1, 2
oder 3)
I
Seriennummer: eindeutig
innerhalb der CA
I
Algorithmus: der Signatur (zum
Nachvollzug)
I
Aussteller: eindeutiger Name der
CA
Public Key
I
Betreff: dem Public Key
zugeordnete Identität
Signatur
I
Signatur: ausgestellt durch CA
Version
Seriennummer
Algorithmenidentifikation
Aussteller (Issuer)
Geltungsdauer
Betreff (Subject)
99 / 125
Zertifikatseigenschaften
Abbildung: Issuer und Subject im Zertifikat (Beispiel)
100 / 125
Namen im X.509-Zertifikat
Benennung von Issuer und Subject in X.509 erfolgt mittels
hierarchischem Distinguished Naming des X.500-Protokolls mit
den folgenden Feldern:
Bedeutung
cn
e
ou
o
Common Name
E-Mail-Address
Organization Unit
Organization Name
l
st
c
Locality Name
State Name
Country
Beispiel
[email protected]
TC TrustCenter Class 2 CA
TC TrustCenter for Security
in Data Networks GmbH
Hamburg
Hamburg
de
101 / 125
Certification Authorities (Zertifizierungsstellen)
Def.: Eine Einheit, die Zertifikate ausstellt, wird Certification
Authority (CA) genannt.
CAE
I
jede CA besitzt ein Zertifikat,
das von der direkt über und der
direkt unter ihr liegenden CA
signiert ist
I
zuoberst: Master CA (hier: CAE )
I
Es entsteht eine
Zertifizierungshierarchie.
I
CAs können sich gegenseitig
zertifizieren (Cross Certification)
CAD
CAC
CAA
Alice
CAB
Bob
102 / 125
Certification Authorities
Einige Unternehmen bieten Zertifizierung als Dienstleister an,
so z. B.:
I
VeriSign, Inc.10 ,
I
Thawte,
I
Deutsche Post AG,
I
T-Systems.
Darüber hinaus gibt es gemeinnützige Organisationen, die das
gleiche kostenfrei oder preiswert anbieten.
I
CAcert
I
DFN e. V.
Zertifikate bekannter CAs sind in typischer Software (Browser,
E-Mail-Client) eingebaut.
10
VeriSign ist interessanterweise Betreiber der TLDs .com und .net sowie Eigentümer von Jamba!
103 / 125
Problem des zentralisierten Modells
Problem: Kann man der CA unbedingt vertrauen?
Antwort: Leider nein:
I
Einbruch in (niederländische Firma) DigiNotar 2011,
Angreifer stellten sich unberechtigte Zertifikate aus, diese
wurden mißbräuchlich zur Überwachung iranischer Bürger
genutzt11
I
(türkische CA) Türktrust stellte im August 2011 irrtümlich 2
Zertifikate aus, mit denen sich beliebige Domains
zertifizieren lassen
11
http://www.rijksoverheid.nl/bestanden/documenten-en-publicaties/rapporten/2012/08/
13/black-tulip-update/black-tulip-update.pdf
104 / 125
Rücknahme von Zertifikaten (Certificate Revocation)
Problem: Schlüssel können vor ihrem „Verfallsdatum“ ungültig
werden, z. B. bei Kompromittierung eines privaten Schlüssels
→ zugehöriges Zertifikat muss zurückgezogen werden
a) Certificate Revocation List (CRL)
I
I
I
I
zentrale Datenbank der CA mit allen ungültigen Zertifikaten
beim Prüfen eines Zertifikates muss CRL durchsucht
werden
Voraussetzung: Teilnehmer sind permanent online
z. B. X.509
b) Fast Expiration
I
I
I
kurze Gültigkeitsdauer des Zertifikats (10’. . . 24h)
nutzt Mechanismus der begrenzten Lebensdauer
Voraussetzung: Teilnehmer sind permanent online
c) Online Certificate Verification
I
I
I
Zertifikatsprüfung durch zentrale Instanz
schnell, zuverlässig
OCSP (Online Certificate Status Protocol)
105 / 125
Schlüsselzertifizierung bei PGP
„Web of Trust“
I
keine Zertifizierungsinstanzen
I
Benutzer unterzeichnen öffentliche Schlüssel gegenseitig
I
behalten Kopien der unterzeichneten Schlüssel
I
Keysigning Party
erlaubt individuelle Beurteilung:
I
I
I
I
Vertrauen in die Gültigkeit eines Schlüssels
Zuverlässigkeit der Unterschrift eines Teilnehmers
Zuverlässigkeit eines Teilnehmers, andere Schlüssel zu
zertifizieren
I
auch nicht vertrauenswürdige Schlüssel können benutzt
werden
I
Hauptproblem: Schlüsselrücknahme (→ Key Revocation
Certificate)
106 / 125
Beispiel für Vertrauensmodell im PGP
Quelle: Bruce Schneier, Angewandte Kryptographie. Pearson, 2006, S. 665
107 / 125
Schlüsselaufbewahrung
I
öffentliche Schlüssel sind einfach aufzubewahren
I
I
I
ihre Integrität muss gesichert sein
Nutzung der Zertifikate
geheime Schlüssel und Schlüssel für symmetrische
Kryptografie?
I
I
I
I
I
persistent in Datei; Nutzung von BS-Mechanismen zum
Zugriffsschutz
verschlüsselte Abspeicherung (hilft nicht gegen Keylogging)
ROM oder Smartcard
Problem: Diebstahl der Smartcard
Verbesserung: Verteilung auf mehrere Karten oder Karte
und Lesegerät
108 / 125
Pretty Good Privacy (PGP)
I
ist eine Software zum
Verschlüsseln und Signieren von
E-Mails
I
1991 durch Phil Zimmermann
entwickelt
I
erste Implementierung von
Public-Key-Kryptografie für die
Allgemeinheit
I
unterlag restriktiven
Exportbestimmungen (als Buch
exportiert)
I
nutzt hybride Kryptografie
http://upload.wikimedia.org/wikipedia/commons/7/77/PRZ_closeup.jpg
109 / 125
PGP
I
nutzte (ursprünglich) IDEA zur symmetrischen
Verschlüsselung, MD-5 als Hash und RSA zur
Public-Key-Kryptografie
I
Web of Trust anstatt CAs
I
wechselvolle Entwicklungsgeschichte
I
zeitweise Eigentum von Network Associates (aka McAfee)
I
in dieser Zeit Weiterentwicklung als Closed Source
(Vertrauen verschwunden)
I
wieder zurück an die PGP Corporation
I
als kommerzielle Software entwickelt und vertrieben
I
→ OpenPGP-Standard als offene Alternative
110 / 125
Gnu PrivacyGuard (GPG)
I
freie und patentfreie Implementierung des
OpenPGP-Standards (RFC 4880)
I
nutzt DSA, ElGamal, SHA-1, CAST5 (symmetrische
Blockchiffre)
I
alle gängigen Desktop-Betriebssysteme (Unixe, Windows,
MacOS) unterstützt
I
in Standardsoftware (MUA, Browser, Chatsoftware) bereits
integriert, aber auch als Kommandozeilenprogramm
nutzbar
I
unterstützt Schlüsselserver, die öffentliche Schlüssel
sammeln und anbieten (Beispiel: http://pgp.mit.edu)
111 / 125
Nutzung von GPG
. . . an der Kommandozeile
I
gpg --gen-key erzeugt den Schlüsselring (Key Ring)
sowie das Schlüsselpaar
I
gpg --export --armor extrahiert den Public Key und
schreibt diesen als 7-Bit-Zeichen nach stdout oder in
eine Datei
I
gpg --import [datei] importiert einen Schlüssel in
den Keyring
I
gpg --sign <datei> signiert die Datei
I
gpg --verify <datei> überprüft die Signatur,
vorausgesetzt, der öffentliche Schlüssel steht zur
Verfügung
I
gpg -s <datei> verschlüsselt symmetrisch
I
gpg -e / -d ver- bzw. entschlüsselt asymmetrisch
112 / 125
Schlüsselsicherheit
Der Word-Makro-Virus „Caligula“ (W97M/Caligula.a)
“Searches for PGP Secure Keyring using registry
entry to get PGP installed path. [. . . ] If user name is
not ’Caligula’, runs PGP Secure Keyring find and send
routine - user name retrieved from registry [...] If file
found, file is uploaded to the virus author’s ftp site
using a script file written as ’c:\cdbrk.vxd’ and using
ftp.exe in a hidden process” (McAfee Virusdatenbank)
I
Keyring läßt sich viel leichter knacken als eine
verschlüsselte Nachricht, insbesondere bei
kurzer/schlechter Passphrase (Wörterbuch-Angriff)
I
Die beste Verschlüsselung nützt nichts, wenn andere
Aspekte der Systemsicherheit vernachlässigt werden!
113 / 125
Exkurs: Schlangenöl
Woran erkennt man schlechte kryptografische Software?
Warning Sign No.1: Pseudo-mathematical gobbledygook.
I
“Encryptor 4.0 uses a unique in-house developed
incremental base shift algorithm”
I
“From a mathematical point of view, the TTM algorithm is
intuitively natural and less cumbersome to use than
methods that are number-theory based.”
(http://www.usdsi.com/ )
I
“SuperKrypt products utilize the DNGT bulk encryption
method,”
I
“Since key length and key structure vary and since the
encryption engine does not use any mathematical
algorithms, reverse engineering is impossible and
guessing is not an option.”
(http://www.schneier.com/crypto-gram-9902.html) – TBC. . .
114 / 125
Zero Knowledge
I
Alle diskutierten Authentifizierungsprotokolle basieren
darauf, dass der Anmeldende Informationen an das
betreffende System übermittelt.
I
prinzipielle Frage: ist Authentifizierung auch möglich, ohne
dass der Anmeldende irgendeine Information preisgibt?
I
Anders formuliert:
Alice kennt ein Geheimnis. Kann Alice Bob davon
überzeugen, dass sie das Geheimnis kennt, ohne Bob
das Geheimnis zu verraten?
115 / 125
Interaktive Beweise
I
Niccolo Tartaglià findet ca. 1535 eine allgemeine Lösungsformel
für kubische Gleichungen12
x 3 + ax 2 + bx + c = 0.
I
publiziert diese nicht (Angst vor wiss. Konkurrenz oder illegaler
Aneignung?)
I
Konkurrent Antonio Maria Fior stellt ihm 30 Aufgaben
(Parameter a, b, c)
I
Tartaglià ermittelt die zugehörigen x und übermittelt diese
zurück an Fior
I
Fior prüft die erhaltenen x und stellt fest, dass diese in der Tat
die jeweilige kubische Gleichung erfüllen, dass also Tartaglià
wirklich eine Lösungsformel kennen muss
⇒ Interaktives Beweisverfahren (Frage – Antwort)
I Fior überzeugt, dass Tartaglià wirklich in Besitz der
Lösungsformel
I Lösungsformel selbst bleibt geheim
12
Diese werden später unter dem Namen Cardanische Formeln bekannt.
116 / 125
Das Geheimnis der Höhle
A
I
Geheime Tür zwischen C und D,
mit Zauberformel zu öffnen
I
Peggy kennt Formel
I
Peggy will Viktor überzeugen,
ohne etwas über die Formel zu
verraten
B
C
D
Literatur: Jean-Jaques Quisquater et al: How to Explain ZeroKnowledge Protocols to Your Children. Proc. CRYPTO’89,
Springer 1990
117 / 125
Das Geheimnis der Höhle
Interaktives Beweisprotokoll
Vorgehensweise:
1. Viktor bleibt an Punkt A
2. Peggy betritt Höhle, geht wahlweise nach C oder D.
3. Viktor geht zu Punkt B.
4. Viktor ruft Peggy zu:
I
I
entweder aus dem linken
oder aus dem rechten Gang zu erscheinen.
5. Peggy kommt Viktors Aufforderung nach, sie muss u. U.
die Zauberformel einsetzen, um die Tür zu öffnen.
6. Peggy und Viktor wiederholen die vorangegangenen
Schritte n-mal, bis Viktor überzeugt ist.
118 / 125
Das Geheimnis der Höhle
Anmerkungen
I
Dritte Partei kann durch Viktor nicht überzeugt werden
I
Videoaufnahme könnte vorher durch Peggy und Viktor
abgesprochen werden
I
Nach n Runden beträgt die Wahrscheinlichkeit, dass
Peggy Viktor betrügt, 1 : 2n .
119 / 125
Quadratische Reste
Es sei
Zn = {0, 1, . . . , n − 1}
und
Zn∗ = {a ∈ Zn | ggT(a, n) = 1}
Ferner gilt kZn∗ k = ϕ(n), die eulersche Phi-Funktion.
Ein Element a ∈ Zn∗ heißt quadratischer Rest modulo n wenn
es ein b ∈ Zn∗ gibt, so dass gilt:
b2 = b · b = a (mod n).
Man sagt, „b ist eine Quadratwurzel von a modulo n.“.
120 / 125
Quadratische Reste
Beispiel
n = 55
Zn∗ = {1, 2, 3, 4, 7, 8, 9, 12, 13, 14, 16, 17, . . . }
a = 34 hat genau 4 Quadratwurzeln modulo 55:
I
b1 = 12, denn 12 · 12 mod 55 = 144 mod 55 = 34
I
b2 = 23, denn 23 · 23 mod 55 = 529 mod 55 = 34
I
b3 = 32, denn 32 · 32 mod 55 = 1024 mod 55 = 34
I
b4 = 43, denn 43 · 43 mod 55 = 1849 mod 55 = 34
Wenn n prim, dann gibt es entweder 0 oder 2 Quadratwurzeln;
ist n das Produkt zweier Primzahlen, dann gibt es entweder
keine oder vier Quadratwurzeln.
Satz: Wenn n = pq und p, q prim, dann ist das Berechnen der
Quadratwurzel modulo n genauso schwierig wie das
Faktorisieren von n.
121 / 125
Anwendung: Das Fiat-Shamir-Protokoll
I
Public-Key-Verfahren
I
genutzt zur Authentifizierung
I
geringer Rechenaufwand (Gegensatz zu RSA)
2 Phasen:
1. Schlüsselerzeugung
2. Anwendung
122 / 125
Fiat-Shamir-Protokoll
Phase 1: Schlüsselerzeugung
1. Alice erzeugt 2 große Primzahlen p und q, berechnet
n = pq (n ist öffentlich; die Faktorisierung natürlich nicht)
2. Alice wählt eine Zahl s (ihr individuelles Geheimnis,
„secret“)
3. Alice berechnet v := s2 mod n (v ist ihr Identitätsmerkmal)
Ebenso möglich: n ist eine Systemkonstante, v und s werden
durch eine zentrale Instanz vorgegeben
123 / 125
Fiat-Shamir-Protokoll
Phase 2: Protokollanwendung
Ziel: Alice will Bob überzeugen, dass sie das „Geheimnis“ von s
kennt, ohne s zu übermitteln (s ist eine Quadratwurzel von v ).
Bob kennt v
1. Alice wählt zufällig ein r ∈ Zn∗ , berechnet das (modulare)
Quadrat x := r 2 mod n und schickt dieses an Bob (den
Host).
2. Bob wählt ein zufälliges Bit („wirft eine Münze“) und schickt
den Wert an Alice.
3. Alice:
I
I
wenn b = 0, so schickt Alice y := r an Bob.
wenn b = 1, so schickt Alice y := rs mod n an Bob.
4. Bob prüft:
I
I
wenn b = 0, ob y 2 mod n = x
wenn b = 1, ob y 2 mod n = xv mod n.
Schritte 1.-4. werden so lange wiederholt, bis Bob überzeugt
ist, dass Alice s besitzt oder bis Alice eine falsche Antwort gibt.
124 / 125
Fiat-Shamir-Protokoll
Anmerkungen:
I
s bleibt geheim, wird nicht übertragen.
I
Bob berechnet (wenn b = 1)
(rs mod n)2 = r 2 s2 mod n = r 2 v mod n
I
Alice kann mit Wkt. 0.5 betrügen
I
betrügerische Alice, die die Wurzel von v nicht kennt, kann
höchstens auf eine der beiden Fragen antworten, niemals
auf beide
I
Nutzung des Protokolls: Authentifizierung bei sehr geringer
Rechenleistung (z. B. per Smartcard)
125 / 125
Herunterladen