Überblick über die Vorlesung 4 Symmetrische Verfahren ...
Überblick über die Vorlesung 4 Symmetrische Verfahren ...
Überblick über die Vorlesung 4 Symmetrische Verfahren ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Überblick</strong> <strong>über</strong> <strong>die</strong> <strong>Vorlesung</strong><br />
1. Einführung<br />
2. Grundlagen<br />
3. Klassische <strong>Verfahren</strong><br />
4. <strong>Symmetrische</strong> <strong>Verfahren</strong><br />
– Blockchiffren<br />
– Feistel-Chiffre<br />
– Kryptographische Güte einer Verschlüsselungsfunktion<br />
– DES<br />
• Betriebsarten<br />
• Differentielle Kryptoanalyse<br />
• Lineare Kryptoanalyse<br />
– IDEA<br />
– AES<br />
5. Asymmetrische <strong>Verfahren</strong><br />
Kryptographie und Kryptoanalyse 88<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Blockchiffren<br />
Blockchiffren<br />
• Verschlüsselung von Nachrichten fester Länge<br />
(Stromchiffren: Verschlüsselung von Nachrichten beliebiger<br />
Länge)<br />
• Nachricht m in b Blöcke der Länge l unterteilt:<br />
m = m 1<br />
m 2<br />
… m b<br />
, m i<br />
= m i1<br />
m i2<br />
… m il<br />
, m ij<br />
∈ {0, 1}<br />
• Verschlüsselung der Nachrichtenblöcke mit k ∈ K:<br />
c i<br />
= enc(k, m i<br />
)<br />
praktischer Einsatz: Betriebsarten<br />
• längentreue <strong>Verfahren</strong>: length(m i<br />
) = length(c i<br />
)<br />
• Anforderungen an enc k : Sicherheit und Performance<br />
Kryptographie und Kryptoanalyse 89<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Blockchiffren<br />
Sicherheitsanforderungen an enc k<br />
• Diffusion und Konfusion<br />
[Claude Shannon: Communication Theory of Secrecy Systems. Bell<br />
Systems Technical Journal, 28(1949), 656-715.]<br />
• Ziel: Erschweren statistischer Angriffe<br />
• Diffusion: im Klartext enthaltene Redundanz wird im<br />
Schlüsseltext „verteilt“<br />
• Konfusion: Beziehungen zwischen Schlüsseltexten und<br />
Schlüsseln so komplex wie möglich<br />
• Produktchiffre: Kombination von Verschlüsselungsverfahren<br />
Kryptographie und Kryptoanalyse 90<br />
1
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Blockchiffren<br />
• Produktchiffre als Kombination von<br />
Substitution ( Konfusion) und Transposition ( Diffusion)<br />
bietet Möglichkeit der effizienten Konstruktion<br />
entsprechender Verschlüsselungsfunktionen<br />
Substitutions-Permutations-Netzwerk (SP-Netzwerk)<br />
• Iterierte Blockchiffren<br />
– Verschlüsselung erfolgt in mehreren Runden<br />
c = enc n (k n , enc n-1 (k n-1 , ... enc 2 (k 2 , enc 1 (k 1 , m)) ... ))<br />
– Verwendung von Rundenschlüsseln<br />
– Algorithmus zur Generierung der Runden- bzw. Teilschlüssel<br />
– Verschlüsselungsfunktion muss im Allgemeinen invertierbar sein<br />
– Anwendung der Rundenschlüssel bei Entschlüsselung in<br />
umgekehrter Reichenfolge<br />
m = dec 1 (k 1 , dec 2 (k 2 , ... dec n-1 (k n-1 , dec n (k n , c)) ... ))<br />
Kryptographie und Kryptoanalyse 91<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Blockchiffren<br />
Allgemeine Ansätze zur Kryptoanalyse von Blockchiffren<br />
• Unabhängig von der internen Struktur<br />
• Vollständige Schlüsselsuche<br />
– Klartext-Schlüsseltext-Angriff<br />
– Aufwand abhängig vom Schlüsselraum<br />
• Zugriff auf eine vorab berechnete Tabelle<br />
– Gewählter Klartext-Schlüsseltext-Angriff<br />
– Aufwand abhängig vom Schlüsselraum<br />
• Time-Memory-Tradeoff<br />
• Kodebuchanalyse<br />
– Gewählter Klartext-Schlüsseltext-Angriff<br />
– Ziel: Rekonstruktion des Klartextes<br />
– Aufwand abhängig von Struktur und Redundanz des Klartextes<br />
Kryptographie und Kryptoanalyse 92<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Feistel-Chiffre<br />
Feistel-Chiffre<br />
• Forschungsprogramm „Lucifer“ in den späten 60er Jahren<br />
• Feistel-Chiffre 1973 von Horst Feistel veröffentlicht<br />
• Permutationen und Substitutionen<br />
• Iterierte Blockchiffre<br />
• Struktur <strong>die</strong>ser Chiffre gehört zu den grundlegenden<br />
Konzepten der Kryptographie<br />
• Anwendung des Prinzips z.B. in DES, 3-DES, Blowfish, CAST,<br />
FEAL und Twofish<br />
Kryptographie und Kryptoanalyse 93<br />
2
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Feistel-Chiffre<br />
• Zerlegung des Nachrichtenblocks m i ∈ A l in zwei Teilblöcke:<br />
m i = (L 0 , R 0 )<br />
c i<br />
= (L n<br />
, R n<br />
)<br />
• Schema ist selbstinvers: Ver- und Entschlüsselung geschieht<br />
mit den gleichen Funktionen, nur Reihenfolge der<br />
Rundenschlüssel wird umgekehrt<br />
• Rundenfunktion f muss nicht bijektiv sein<br />
• Verarbeitung von Teilblöcken ermöglicht effiziente<br />
Implementierung<br />
• f bestimmt kryptographische Sicherheit des <strong>Verfahren</strong>s<br />
Kryptographie und Kryptoanalyse 94<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Feistel-Chiffre<br />
Verschlüsselung<br />
enc(k i , (L i-1 , R i-1 )) = R i-1 , f(R i-1 , k i ) ⊕ L i-1 = L i , R i<br />
Runde 1: L 0<br />
R 0<br />
f<br />
k 1<br />
L 1<br />
R 1<br />
enc(k 1<br />
, (L 0<br />
, R 0<br />
)) = R 0<br />
, f(R 0<br />
, k 1<br />
) ⊕ L 0<br />
= L 1<br />
, R 1<br />
Kryptographie und Kryptoanalyse 95<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Feistel-Chiffre<br />
Entschlüsselung<br />
dec(k i<br />
, (L i<br />
, R i<br />
)) = f(L i<br />
, k i<br />
) ⊕ R i<br />
, L i<br />
= L i-1<br />
, R i-1<br />
Runde 1: L 1<br />
R 1<br />
k 1<br />
f<br />
L 0<br />
R 0<br />
dec(k 1<br />
, (L 1<br />
, R 1<br />
)) = f(L 1<br />
, k 1<br />
) ⊕ R 1<br />
, L 1<br />
= L 0<br />
, R 0<br />
Kryptographie und Kryptoanalyse 96<br />
3
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Kryptographische Güte<br />
Kryptographische Güte einer Verschlüsselungsfunktion<br />
[J.A. Gordon, H. Retkin: Are Big S-Boxes Best? Springer LNCS 149,<br />
1983, 257-262.]<br />
• Kryptographisch entscheidende Funktion f muss bestimmten<br />
Anforderungen genügen ( Konfusion und Diffusion)<br />
• Merkmale zur Beurteilung von f (Designkriterien):<br />
– Vollständigkeit<br />
– Avalanche<br />
– Nichtlinearität<br />
– keine Informationen <strong>über</strong> Outputbits ohne Wissen <strong>über</strong><br />
Inputbits ( Korrelationsimmunität)<br />
Kryptographie und Kryptoanalyse 97<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Kryptographische Güte<br />
Vollständigkeit<br />
Eine Funktion f: {0,1} n {0,1} m heißt vollständig, wenn<br />
jedes Bit des Outputs von jedem Bit des Inputs abhängt.<br />
Grad der Vollständigkeit k/n: im Mittel hängen k Output-Bits<br />
von den n Inputbits ab<br />
‣ Beispiel: S Bsp<br />
y 1 = x 1 x 2 ⊕ x 1 x 3 ⊕ x 2 x 3 ⊕ x 2 ⊕ x 3 ⊕ 1<br />
y 2 = x 1 x 2 ⊕ x 1 x 3 ⊕ x 2 x 3 ⊕ x 1 ⊕ x 3 ⊕ 1<br />
y 3 = x 1 x 2 ⊕ x 1 x 3 ⊕ x 2 x 3 ⊕ x 1 ⊕ x 2 ⊕ 1<br />
kein hinreichendes Kriterium<br />
Kryptographie und Kryptoanalyse 98<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Kryptographische Güte<br />
y 1 = x 1 x 2 ⊕ x 1 x 3 ⊕ x 2 x 3 ⊕ x 2 ⊕ x 3 ⊕ 1<br />
y 2 = x 1 x 2 ⊕ x 1 x 3 ⊕ x 2 x 3 ⊕ x 1 ⊕ x 3 ⊕ 1<br />
y 3 = x 1 x 2 ⊕ x 1 x 3 ⊕ x 2 x 3 ⊕ x 1 ⊕ x 2 ⊕ 1<br />
Input<br />
Output<br />
x 3<br />
x 2<br />
x 1<br />
y 3<br />
y 2<br />
y 1<br />
0<br />
0<br />
0<br />
1<br />
1<br />
1<br />
0<br />
0<br />
1<br />
0<br />
0<br />
1<br />
0<br />
0<br />
1<br />
1<br />
1<br />
1<br />
0<br />
0<br />
0<br />
1<br />
0<br />
1<br />
0<br />
0<br />
1<br />
1<br />
1<br />
1<br />
0<br />
0<br />
0<br />
1<br />
0<br />
1<br />
6 von 8 möglichen<br />
Belegungen des Inputs<br />
werden identisch<br />
ausgegeben!<br />
1<br />
1<br />
0<br />
1<br />
1<br />
0<br />
1<br />
1<br />
1<br />
0<br />
0<br />
0<br />
Kryptographie und Kryptoanalyse 99<br />
4
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Kryptographische Güte<br />
‣ Beispiel: Vollständigkeit der Feistel-Chiffre (f vollst.)<br />
Outputbit<br />
j<br />
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
0<br />
c 0 = m = L 0 , R 0<br />
01234567<br />
Inputbit i<br />
Outputbit<br />
j<br />
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
0<br />
c 1 = L 1 , R 1<br />
01234567<br />
Inputbit i<br />
Outputbit<br />
j<br />
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
0<br />
c 2 = L 2 , R 2<br />
01234567<br />
Inputbit i<br />
Outputbit<br />
j<br />
c 3 = L 3 , R 3<br />
01234567<br />
Inputbit i<br />
Kryptographie und Kryptoanalyse 100<br />
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
0<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Kryptographische Güte<br />
Avalanche<br />
Eine Funktion f: {0,1} n {0,1} m besitzt dann den<br />
Avalanche-Effekt, wenn <strong>die</strong> Änderung eines Input-Bits im<br />
Mittel <strong>die</strong> Hälfte aller Output-Bits ändert.<br />
Wird durch Änderung eines Input-Bits jedes Output-Bit mit<br />
einer Wahrscheinlichkeit von 50% verändert, erfüllt f das<br />
strikte Avalanche-Kriterium.<br />
<br />
Erfüllt f das strikte Avalanche-Kriterium, so ist f stets<br />
vollständig.<br />
Kryptographie und Kryptoanalyse 101<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Kryptographische Güte<br />
‣ Beispiel (S Bsp )<br />
m<br />
m 2 1<br />
000 001 010 011 100 101 110<br />
000<br />
2 2<br />
2<br />
001 2<br />
1<br />
1<br />
010 2<br />
1<br />
1<br />
011<br />
1 1<br />
100 2<br />
1 1<br />
101<br />
1<br />
1<br />
110<br />
1<br />
1<br />
111<br />
2<br />
2 2<br />
Gesamtzahl der geänderten Bits<br />
111<br />
2<br />
2<br />
2<br />
Σ<br />
6<br />
4<br />
4<br />
4<br />
4<br />
4<br />
4<br />
6<br />
36<br />
Kryptographie und Kryptoanalyse 102<br />
5
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Kryptographische Güte<br />
Linearität<br />
Eine Funktion f: {0,1} n {0,1} m ist dann linear, wenn jedes<br />
Output-Bit y i linear von den Input-Bits x i abhängt:<br />
y i = a j,1 x 1 + a j,2 x 2 + … + a j,n x n + b j<br />
Wenn wenigstens ein Output-Bit linear von den Input-Bits<br />
abhängt, ist f partiell linear.<br />
weiteres Maß: Grad der Übereinstimmung von f mit ihrer<br />
besten linearen Approximation g<br />
Güte der Approximation: Anteil der Funktionswerte, in denen<br />
f und g <strong>über</strong>einstimmen<br />
Kryptographie und Kryptoanalyse 103<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Kryptographische Güte<br />
Korrelationsimmunität<br />
f(x 1 , x 2 , …, x n ) boolesche Funktion in n Variablen<br />
Die Funktion f heißt dann k-korrelationsimmun, wenn man<br />
aus Kenntnis von k beliebigen Eingangswerten keine<br />
Information <strong>über</strong> den resultierenden Ausgangswert erhalten<br />
kann und umgekehrt.<br />
Kryptographie und Kryptoanalyse 104<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Kryptographische Güte<br />
Abhängigkeitsmatrix AM<br />
• Beurteilungsmethode für <strong>die</strong> Gütekriterien Vollständigkeit,<br />
Avalanche, Nichtlinearität/partielle Nichtlinearität<br />
[W. Fumy, H. Rieß: Kryptographie: Einsatz, Entwurf und Analyse<br />
symmetrischer Kryptoverfahren. 2. akt. u. erw. Aufl., Oldenburg, 1994.]<br />
• Die AM einer Funktion f: {0,1} n {0,1} m ist eine<br />
(n x m)-Matrix, deren Einträge a i,j <strong>die</strong> Wahrscheinlichkeit<br />
angeben, dass bei einer Änderung des i-ten Eingabebits das<br />
j-te Ausgabebit komplementiert wird.<br />
• Eigenschaften von AM:<br />
– AM(f = const): Nullmatrix<br />
– AM(f: Permutation): Permutationsmatrix<br />
– AM(f) = AM(1 ⊕ f)<br />
Kryptographie und Kryptoanalyse 105<br />
6
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Kryptographische Güte<br />
Eigenschaften von f (x i : Inputbits, y j : Outputbits)<br />
a i,j = 0<br />
y j nicht von x i abhängig; f ist nicht vollständig<br />
Anzahl a i,j mit a i,j > 0: Grad der Vollständigkeit<br />
∀ a i,j > 0<br />
f ist vollständig<br />
a i,j = 1<br />
∃ j. ∀ i. a i,j ∈ {0,1}<br />
∀ i. ∀ j. a i,j ∈ {0,1}<br />
y j ändert sich bei jeder Änderung von x i<br />
y j hängt linear von x i ab<br />
f ist partiell linear (Spalte a j binärer Vektor)<br />
f ist linear (AM binäre Matrix)<br />
1 1<br />
m<br />
n<br />
∑∑<br />
m n i= 1 j=<br />
1<br />
a i<br />
, j<br />
≈ 0, 5<br />
∀ i. ∀ j.a i,j ≈ 0,5<br />
f besitzt Avalanche-Effekt<br />
f erfüllt striktes Avalanche-Kriterium<br />
Kryptographie und Kryptoanalyse 106<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Kryptographische Güte<br />
Berechnung der Abhängigkeitsmatrix<br />
exakte Berechnung nur für kleine n, m möglich<br />
näherungsweise Berechnung<br />
∀ i. ∀ j. a i,j := 0<br />
für „hinreichend viele“ X<br />
wähle zufälligen n-Bit Vektor X<br />
für alle i von 1 bis n<br />
Bestimme X i (unterscheidet sich von X genau im Bit i)<br />
V i = f(X) ⊕ f(X i )<br />
a i,j := a i,j + V i,j<br />
Division aller a i,j durch Anzahl der Vektoren X<br />
Kryptographie und Kryptoanalyse 107<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Kryptographische Güte<br />
‣ Beispiel (S Bsp )<br />
y 1 y 2 y 3<br />
x 1 40,5 14<br />
0,5<br />
14<br />
0,5<br />
x 2<br />
x 3<br />
14 0,5 40,5<br />
14<br />
0,5<br />
14 0,5 14<br />
0,5<br />
40,5<br />
X = 000<br />
X 1 = 001 V 1 = 111 ⊕ 001 = 110<br />
X 2 = 010 V 2 = 111 ⊕ 010 = 101<br />
X 3 = 100 V 3 = 111 ⊕ 100 = 011<br />
X = 001 …<br />
Kryptographie und Kryptoanalyse 108<br />
7
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Kryptographische Güte<br />
Designkriterien – Zusammenfassung<br />
• Kriterien sind zwar notwendig, aber nicht hinreichend<br />
• Teilweise gegenläufig<br />
• Optimierung notwendig<br />
• Notwendig:<br />
– Höchstmaß an Vollständigkeit, Avalanche, Nichtlinearität<br />
und Korrelationsimmunität,<br />
– Geringhaltung der Existenz linearer Faktoren der<br />
Verschlüsselungsfunktion<br />
• Gewünscht:<br />
– Gute Implementierbarkeit, Schnelligkeit, Längentreue,<br />
– Minimierung der Fehlerfortpflanzungsmöglichkeiten<br />
Kryptographie und Kryptoanalyse 109<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
DES (Data Encryption Standard)<br />
• 1973 Ausschreibung des National Bureau of Standards (NBS) der<br />
USA für ein standardisiertes kryptographisches <strong>Verfahren</strong><br />
• 1974 erneute Ausschreibung<br />
• 1975 Veröffentlichung der Einzelheiten des Algorithmus im Federal<br />
Register<br />
• 1976 zwei Workshops zur Evaluierung des Algorithmus<br />
• 1977 vom NBS als Standard publiziert (FIPS PUB 46)<br />
• Überprüfung der Sicherheit aller 5 Jahre<br />
• 1992 differenzielle Kryptoanalyse (Biham, Shamir)<br />
• 1994 lineare Kryptoanalyse (Matsui)<br />
• 1999 Brute-Force-Angriff (Deep Crack und weitere Rechner): 22<br />
Stunden, 15 Minuten<br />
• 1999 FIPS 46-3: Empfehlung 3-DES<br />
• 2001 Veröffentlichung des AES (FIPS 197)<br />
• 2002 AES tritt in Kraft<br />
Kryptographie und Kryptoanalyse 110<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
<strong>Überblick</strong> <strong>über</strong> den Algorithmus<br />
• grundlegende Struktur: Feistel-Chiffre mit n = 16 Runden<br />
• Einteilung der Nachricht in l Blöcke der Länge 64:<br />
m = m 1 m 2 … m l , m i ∈ {0, 1} 64<br />
c = c 1 c 2 … c l , c i ∈ {0, 1} 64<br />
• Schlüssel der Länge 64 Bits:<br />
k ∈ {0,1} 64 , davon jedoch nur 56 Elemente frei wählbar<br />
Teilschlüssel k i , i = 1, …, 16 aus k erzeugt (Länge k i : 48 Bit)<br />
• Permutation vor der ersten und nach der letzten Runde (IP<br />
bzw. IP -1 ) (kryptographisch nicht relevant)<br />
Kryptographie und Kryptoanalyse 111<br />
8
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Struktur des DES<br />
m i<br />
64<br />
L 0<br />
IP<br />
Iterationsrunde 1<br />
R 0<br />
L 1 R 1<br />
L 2 R 2<br />
.<br />
L 15 R 15<br />
L 16 R 16<br />
IP -1<br />
64<br />
c i<br />
Iterationsrunde 2<br />
Iterationsrunde 16<br />
k<br />
(56 Bit wählbar)<br />
Kryptographie und Kryptoanalyse 112<br />
48<br />
48<br />
48<br />
.<br />
k 1<br />
k 2<br />
k 16<br />
64<br />
Teilschlüsselgenerierung<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Eingangspermutation IP<br />
Folge der Klartextbits:<br />
1<br />
9<br />
17<br />
25<br />
33<br />
41<br />
49<br />
57<br />
2<br />
10<br />
18<br />
26<br />
34<br />
42<br />
50<br />
58<br />
3<br />
11<br />
19<br />
27<br />
35<br />
43<br />
51<br />
59<br />
4<br />
12<br />
20<br />
28<br />
36<br />
44<br />
52<br />
60<br />
5<br />
13<br />
21<br />
29<br />
37<br />
45<br />
53<br />
61<br />
6<br />
14<br />
22<br />
30<br />
38<br />
46<br />
54<br />
62<br />
7<br />
15<br />
23<br />
31<br />
39<br />
47<br />
55<br />
63<br />
8<br />
16<br />
24<br />
32<br />
40<br />
48<br />
56<br />
64<br />
58<br />
60<br />
62<br />
64<br />
50<br />
52<br />
54<br />
56<br />
42<br />
44<br />
46<br />
48<br />
34<br />
36<br />
38<br />
40<br />
26<br />
28<br />
30<br />
32<br />
18<br />
20<br />
22<br />
24<br />
linke Hälfte<br />
10<br />
12<br />
14<br />
16<br />
2<br />
4<br />
6<br />
8<br />
57<br />
59<br />
61<br />
63<br />
49<br />
51<br />
53<br />
55<br />
41<br />
43<br />
45<br />
47<br />
33<br />
35<br />
37<br />
39<br />
25<br />
27<br />
29<br />
31<br />
17<br />
19<br />
21<br />
23<br />
rechte Hälfte<br />
9<br />
11<br />
13<br />
15<br />
1<br />
3<br />
5<br />
7<br />
Kryptographie und Kryptoanalyse 113<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Iterationsrunde i: Rundenfunktion f<br />
R i-1<br />
f<br />
E<br />
32<br />
48<br />
48<br />
k i<br />
6 6 6<br />
S1 S2 …<br />
S8<br />
4 4<br />
4<br />
P<br />
32<br />
Kryptographie und Kryptoanalyse f(R i-1 ,k i ) = P(S(E(R i-1 ) ⊕ k i )) 114<br />
9
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Expansionsabbildung E<br />
32<br />
4<br />
8<br />
12<br />
16<br />
20<br />
24<br />
28<br />
1<br />
5<br />
9<br />
13<br />
17<br />
21<br />
25<br />
29<br />
2<br />
6<br />
10<br />
14<br />
18<br />
22<br />
26<br />
30<br />
3<br />
7<br />
11<br />
15<br />
19<br />
23<br />
27<br />
31<br />
4<br />
8<br />
12<br />
16<br />
20<br />
24<br />
28<br />
32<br />
5<br />
9<br />
13<br />
17<br />
21<br />
25<br />
29<br />
1<br />
1 2 3 4<br />
5 6 7 8<br />
…<br />
29 30 31 32<br />
32 1 2 3 4 5<br />
4 5 6 7 8 9<br />
28 29 30 31 32 1<br />
Kryptographie und Kryptoanalyse 115<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Substitutionsboxen Si<br />
b 5 b 4 b 3 b 2 b 1 b 0<br />
6-Bit Wert<br />
vor der<br />
Substitution<br />
S1:<br />
S2:<br />
0<br />
1<br />
2<br />
3<br />
0<br />
1<br />
2<br />
3<br />
0<br />
14<br />
0<br />
4<br />
15<br />
15<br />
3<br />
0<br />
13<br />
1<br />
4<br />
15<br />
1<br />
12<br />
1<br />
13<br />
14<br />
8<br />
2<br />
13<br />
7<br />
14<br />
8<br />
8<br />
4<br />
7<br />
10<br />
3<br />
1<br />
4<br />
8<br />
2<br />
14<br />
7<br />
11<br />
1<br />
4<br />
2<br />
14<br />
13<br />
4<br />
6<br />
15<br />
10<br />
3<br />
5<br />
15<br />
2<br />
6<br />
9<br />
11<br />
2<br />
4<br />
15<br />
6<br />
11<br />
13<br />
2<br />
1<br />
3<br />
8<br />
13<br />
4<br />
7<br />
8<br />
1<br />
11<br />
7<br />
4<br />
14<br />
1<br />
2<br />
8<br />
3<br />
10<br />
15<br />
5<br />
9<br />
12<br />
5<br />
11<br />
9<br />
10<br />
6<br />
12<br />
11<br />
7<br />
0<br />
8<br />
6<br />
10<br />
6<br />
12<br />
9<br />
3<br />
2<br />
1<br />
12<br />
7<br />
11<br />
12<br />
11<br />
7<br />
14<br />
13<br />
10<br />
6<br />
12<br />
12<br />
5<br />
9<br />
3<br />
10<br />
12<br />
6<br />
9<br />
0<br />
13<br />
9<br />
5<br />
10<br />
0<br />
0<br />
9<br />
3<br />
5<br />
14<br />
0<br />
3<br />
5<br />
6<br />
5<br />
11<br />
2<br />
14<br />
15<br />
7<br />
8<br />
0<br />
13<br />
10<br />
5<br />
15<br />
9<br />
. . .<br />
S8: 0<br />
1<br />
2<br />
3<br />
10<br />
12<br />
0<br />
15<br />
13<br />
1<br />
7<br />
2<br />
2<br />
15<br />
11<br />
1<br />
8<br />
13<br />
4<br />
14<br />
4<br />
8<br />
1<br />
7<br />
6<br />
10<br />
9<br />
4<br />
Kryptographie und Kryptoanalyse 116<br />
15<br />
3<br />
12<br />
10<br />
11<br />
7<br />
14<br />
8<br />
1<br />
4<br />
2<br />
13<br />
9<br />
5<br />
6<br />
12<br />
3<br />
6<br />
10<br />
9<br />
14<br />
11<br />
13<br />
0<br />
5<br />
0<br />
15<br />
3<br />
0<br />
14<br />
3<br />
5<br />
12<br />
9<br />
5<br />
6<br />
7<br />
2<br />
8<br />
11<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Permutation P<br />
16<br />
1<br />
2<br />
19<br />
7<br />
15<br />
8<br />
13<br />
20<br />
23<br />
24<br />
30<br />
21<br />
26<br />
14<br />
6<br />
29<br />
5<br />
32<br />
22<br />
12<br />
18<br />
27<br />
11<br />
28<br />
31<br />
3<br />
4<br />
17<br />
10<br />
9<br />
25<br />
S 1 S 2 S 3 S 4 S 5 S 6 S 7 S 8<br />
S 1 S 2 S 3 S 4 S 5 S 6 S 7 S 8<br />
Kryptographie und Kryptoanalyse 117<br />
10
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Teilschlüsselgenerierung<br />
k<br />
64<br />
PC-1<br />
56<br />
28 28<br />
C<br />
D<br />
k i<br />
48<br />
PC-2<br />
Kryptographie und Kryptoanalyse 118<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Schlüsselpermutation PC-1 (Permuted Choice)<br />
externer Schlüssel k:<br />
1<br />
9<br />
17<br />
25<br />
33<br />
41<br />
49<br />
57<br />
2<br />
10<br />
18<br />
26<br />
34<br />
42<br />
50<br />
58<br />
3<br />
11<br />
19<br />
27<br />
35<br />
43<br />
51<br />
59<br />
4<br />
12<br />
20<br />
28<br />
36<br />
44<br />
52<br />
60<br />
5<br />
13<br />
21<br />
29<br />
37<br />
45<br />
53<br />
61<br />
6<br />
14<br />
22<br />
30<br />
38<br />
46<br />
54<br />
62<br />
7<br />
15<br />
23<br />
31<br />
39<br />
47<br />
55<br />
63<br />
8<br />
16<br />
24<br />
32<br />
40<br />
48<br />
56<br />
64<br />
Paritätsbits<br />
57<br />
58<br />
59<br />
60<br />
49<br />
50<br />
51<br />
52<br />
41<br />
42<br />
43<br />
44<br />
33<br />
34<br />
35<br />
36<br />
25<br />
26<br />
27<br />
C<br />
17<br />
18<br />
19<br />
9<br />
10<br />
11<br />
1<br />
2<br />
3<br />
63<br />
62<br />
61<br />
55<br />
54<br />
53<br />
47<br />
46<br />
45<br />
39<br />
38<br />
37<br />
D<br />
31<br />
30<br />
29<br />
28<br />
23<br />
22<br />
21<br />
20<br />
15<br />
14<br />
13<br />
12<br />
7<br />
6<br />
5<br />
4<br />
Kryptographie und Kryptoanalyse 119<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Anzahl der Shifts<br />
Verschlüsselung: Links-Shifts<br />
Entschlüsselung: Rechts-Shifts<br />
Runde<br />
Anzahl Links-Shifts:<br />
Anzahl Rechts-Shifts:<br />
1<br />
1<br />
0<br />
2<br />
1<br />
1<br />
3<br />
2<br />
2<br />
4<br />
2<br />
2<br />
5<br />
2<br />
2<br />
6<br />
2<br />
2<br />
7<br />
2<br />
2<br />
8<br />
2<br />
2<br />
9<br />
1<br />
1<br />
10<br />
2<br />
2<br />
11<br />
2<br />
2<br />
12<br />
2<br />
2<br />
13<br />
2<br />
2<br />
14<br />
2<br />
2<br />
15<br />
2<br />
2<br />
16<br />
1<br />
1<br />
Schlüsselauswahl: PC-2<br />
14<br />
15<br />
26<br />
41<br />
51<br />
34<br />
17<br />
6<br />
8<br />
52<br />
45<br />
53<br />
11<br />
21<br />
16<br />
31<br />
33<br />
46<br />
24<br />
10<br />
7<br />
37<br />
48<br />
42<br />
1<br />
23<br />
27<br />
47<br />
44<br />
50<br />
5<br />
19<br />
20<br />
55<br />
49<br />
36<br />
3<br />
12<br />
13<br />
30<br />
39<br />
29<br />
28<br />
4<br />
2<br />
40<br />
56<br />
32<br />
Kryptographie und Kryptoanalyse 120<br />
11
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Bewertung der Schlüssel<br />
Bis auf wenige Ausnahmen liefert das <strong>Verfahren</strong> für jede<br />
Runde einen anderen Teilschlüssel.<br />
4 schwache Schlüssel, <strong>die</strong> jeweils 16 identische Teilschlüssel<br />
erzeugen:<br />
01<br />
FE<br />
1F<br />
E0<br />
externer Schlüssel k<br />
01<br />
FE<br />
1F<br />
E0<br />
01<br />
FE<br />
1F<br />
E0<br />
01<br />
FE<br />
1F<br />
E0<br />
01<br />
FE<br />
0E<br />
F1<br />
01<br />
FE<br />
0E<br />
F1<br />
01<br />
FE<br />
0E<br />
F1<br />
01<br />
FE<br />
0E<br />
F1<br />
0<br />
F<br />
0<br />
F<br />
0<br />
F<br />
0<br />
F<br />
0<br />
F<br />
0<br />
F<br />
C<br />
0<br />
F<br />
0<br />
F<br />
0<br />
F<br />
0<br />
F<br />
0<br />
F<br />
0<br />
F<br />
0<br />
F<br />
0<br />
F<br />
0<br />
F<br />
F<br />
0<br />
0<br />
F<br />
F<br />
0<br />
0<br />
F<br />
F<br />
0<br />
D<br />
0<br />
F<br />
F<br />
0<br />
0<br />
F<br />
F<br />
0<br />
0<br />
F<br />
F<br />
0<br />
0<br />
F<br />
F<br />
0<br />
Kryptographie und Kryptoanalyse 121<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
12 semi-schwache Schlüssel, <strong>die</strong> jeweils nur 2 verschiedene<br />
Teilschlüssel erzeugen:<br />
01<br />
FE<br />
1F<br />
E0<br />
01<br />
E0<br />
1F<br />
FE<br />
01<br />
1F<br />
E0<br />
FE<br />
externer Schlüssel k<br />
FE<br />
01<br />
E0<br />
1F<br />
E0<br />
01<br />
FE<br />
1F<br />
1F<br />
01<br />
FE<br />
E0<br />
01<br />
FE<br />
1F<br />
E0<br />
01<br />
E0<br />
1F<br />
FE<br />
01<br />
1F<br />
E0<br />
FE<br />
FE<br />
01<br />
E0<br />
1F<br />
E0<br />
01<br />
FE<br />
1F<br />
1F<br />
01<br />
FE<br />
E0<br />
01<br />
FE<br />
0E<br />
F1<br />
01<br />
F1<br />
0E<br />
FE<br />
01<br />
0E<br />
F1<br />
FE<br />
FE<br />
01<br />
F1<br />
0E<br />
F1<br />
01<br />
FE<br />
0E<br />
0E<br />
01<br />
FE<br />
F1<br />
01<br />
FE<br />
0E<br />
F1<br />
01<br />
F1<br />
0E<br />
FE<br />
01<br />
0E<br />
F1<br />
FE<br />
FE<br />
01<br />
F1<br />
0E<br />
F1<br />
01<br />
FE<br />
0E<br />
0E<br />
01<br />
FE<br />
F1<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
0<br />
0<br />
F<br />
F<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
0<br />
0<br />
F<br />
F<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
0<br />
0<br />
F<br />
F<br />
C<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
0<br />
0<br />
F<br />
F<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
0<br />
0<br />
F<br />
F<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
0<br />
0<br />
F<br />
F<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
0<br />
0<br />
F<br />
F<br />
A<br />
5<br />
5<br />
A<br />
0<br />
0<br />
F<br />
F<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
5<br />
A<br />
0<br />
0<br />
F<br />
F<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
5<br />
A<br />
0<br />
0<br />
F<br />
F<br />
A<br />
5<br />
A<br />
5<br />
D<br />
A<br />
5<br />
5<br />
A<br />
0<br />
0<br />
F<br />
F<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
5<br />
A<br />
0<br />
0<br />
F<br />
F<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
5<br />
A<br />
0<br />
0<br />
F<br />
F<br />
A<br />
5<br />
A<br />
5<br />
A<br />
5<br />
5<br />
A<br />
0<br />
0<br />
F<br />
F<br />
A<br />
5<br />
A<br />
5<br />
Kryptographie und Kryptoanalyse 122<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Eigenschaften des DES<br />
• Vollständig: jedes Output-Bit hängt von jedem Input-Bit ab<br />
(nach ca. 5 Durchläufen), Avalanche, Nichtlinearität<br />
• Problem schwacher und semischwacher Schlüssel<br />
(explizit ausschließen)<br />
• Komplement-Eigenschaft:<br />
enc(k, m) = enc(k, m)<br />
ermöglicht Einschränkung des Schlüsselraums:<br />
Angriff bei Kenntnis von zwei Klartext-Schlüsseltextpaaren<br />
(m 1<br />
, c 1<br />
) und (m 2<br />
, c 2<br />
) mit m 2<br />
= m 1<br />
Kryptographie und Kryptoanalyse 123<br />
12
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
3-DES<br />
• Schlüssellänge heute zu kurz<br />
• Erhöhung der Sicherheit durch mehrmalige Verschlüsselung<br />
(Kaskadenverschlüsselung)<br />
Meet-in-the-Middle-Angriff:<br />
Sicherheitsgewinn bei Doppelverschlüsselung: 1 Bit<br />
• 3-DES (Triple-DES):<br />
Verbesserung der Sicherheit durch 3-fache Anwendung<br />
• Verschiedene Varianten, häufig EDE<br />
c = enc(k 1 , (dec(k 2 , (enc(k 1 , m)))<br />
Kryptographie und Kryptoanalyse 124<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Betriebsarten des DES<br />
• Verschlüsselung längerer Nachrichten?<br />
• Authentikation mittels DES möglich?<br />
• 1981 für DES standardisiert (FIPS 81):<br />
– Electronic Code Book (ECB)<br />
– Cipher Block Chaining (CBC)<br />
– Cipher Feedback (CFB)<br />
– Output Feedback (OFB)<br />
• Weitere Varianten in der Literatur zu finden<br />
• Auch für andere Blockchiffren verwendbar<br />
• Unterschiede bzgl. Fehlerauswirkung, Sicherheit und Länge<br />
der verarbeiteten Einheiten ( Verschlüsselungsrate,<br />
mögliche Anpassung an Übertragungs- oder Speichersystem)<br />
Kryptographie und Kryptoanalyse 125<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
• Anwendung der Betriebsarten erlaubt <strong>die</strong> Konstruktion von<br />
synchronen oder selbstsynchronisierenden „Stromchiffren“<br />
aus Blockchiffren<br />
(zugrunde liegendes Alphabet wird bei ECB und CBC gewechselt,<br />
bei CFB und OFB muss es nicht unbedingt gewechselt werden)<br />
– Synchrone Stromchiffre: Verschlüsselung eines Zeichens ist<br />
abhängig von der Position bzw. von vorhergehenden Klartextoder<br />
Schlüsselzeichen<br />
– Selbstsynchronisierende Stromchiffre: Verschlüsselung ist nur<br />
von begrenzter Anzahl vorhergehender Zeichen abhängig<br />
• ECB, CBC und CFB: selbstsynchronisierende Stromchiffre<br />
• OFB: synchrone Stromchiffre<br />
Kryptographie und Kryptoanalyse 126<br />
13
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
• Betrachtung von Fehlerauswirkungen<br />
– Unterscheidung nach Ort des Fehlers<br />
• während der Übertragung (Speicherung)<br />
• während der Ver- bzw. Entschlüsselung (transient)<br />
Sender<br />
enc<br />
dec<br />
Empfänger<br />
– Unterscheidung nach Fehlerart<br />
• Additive Fehler: Verfälschung einzelner Bits („Addition<br />
eines Fehlermusters“); Blockgrenzen bleiben erhalten<br />
• Synchronisationsfehler: Hinzufügen bzw. Verlust von<br />
Blöcken / Bits (letzteres ändert <strong>die</strong> Blockgrenzen)<br />
Kryptographie und Kryptoanalyse 127<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Electronic Codebook (ECB)<br />
Verschlüsselung<br />
Entschlüsselung<br />
k<br />
k<br />
m i 64<br />
64 c i<br />
enc<br />
c i 64<br />
64 m i<br />
dec<br />
c i = enc(k, m i ), 1 < i ≤ n<br />
m i = dec(k, c i ), 1 < i ≤ n<br />
c = enc(k, m 1 ) enc(k, m 2 ) ... enc(k, m n ) m = dec(k, c 1 ) dec(k, c 2 ) ... dec(k, c n )<br />
Kryptographie und Kryptoanalyse 128<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Electronic Codebook (ECB) – Eigenschaften<br />
• Selbstsynchronisierend (Abhängigkeit von 0 Blöcken)<br />
• Länge der verarbeiteten Einheiten: entsprechend Blockgröße<br />
der Blockchiffre (DES: 64 Bit)<br />
• Keine Abhängigkeiten zwischen den Blöcken<br />
– Direktzugriff auf einzelne Schlüsseltextblöcke möglich<br />
– gleiche Klartextblöcke liefern gleiche Schlüsseltextblöcke<br />
ggf. Kodebuchanalysen möglich<br />
• Fehlerauswirkungen<br />
– additive Fehler: keine Fehlerfortpflanzung<br />
– Synchronisationsfehler bzgl. ganzer Blöcke: keine<br />
Fehlerfortpflanzung<br />
gezieltes Einfügen und Entfernen von Blöcken möglich<br />
– Synchronisationsfehler bzgl. Bits: Entschlüsselung fehlerhaft,<br />
bis Blockgrenzen erneut festgelegt<br />
Kryptographie und Kryptoanalyse 129<br />
14
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Cipher Block Chaining (CBC) – Verschlüsselung<br />
k<br />
m i<br />
64<br />
enc<br />
c i<br />
64<br />
c i-1 ∨ IV<br />
1 64<br />
…<br />
Speicher für<br />
Schlüsseltextblock<br />
c i-1 bzw. IV<br />
c 1 = enc(k, (m 1 ⊕ IV )); IV: Initialisierungsvektor<br />
c i = enc(k, (m i ⊕ c i-1 )), 1 < i ≤ n<br />
c = enc(k, (m 1 ⊕IV)) enc(k, (m 2 ⊕c 1 )) enc(k, (m 3 ⊕c 2 )) … enc(k, (m n ⊕c n-1 ))<br />
Kryptographie und Kryptoanalyse 130<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Cipher Block Chaining (CBC) – Entschlüsselung<br />
k<br />
c i<br />
64<br />
dec<br />
64<br />
m i<br />
m 1 = dec(k, c 1 ) ⊕ IV<br />
m i = dec(k, c i ) ⊕ c i-1 , 1 < i ≤ n<br />
c i-1 ∨ IV<br />
1 64<br />
…<br />
Speicher für<br />
Schlüsseltextblock<br />
c i-1 bzw. IV<br />
m = dec(k, c 1 ) ⊕ IV dec(k, c 2 ) ⊕ c 1 dec(k, c 3 ) ⊕ c 2 … dec(k, c n ) ⊕ c n-1<br />
Kryptographie und Kryptoanalyse 131<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Cipher Block Chaining (CBC)– Eigenschaften<br />
• Selbstsynchronisierend (Abhängigkeit von 1 Block)<br />
• Länge der verarbeiteten Einheiten: entsprechend Blockgröße<br />
der Blockchiffre (DES: 64 Bit)<br />
• Abhängigkeiten zwischen den Blöcken<br />
– kein Direktzugriff auf einzelne Schlüsseltextblöcke möglich<br />
– gleiche Klartextblöcke liefern unterschiedliche<br />
Schlüsseltextblöcke<br />
Kodebuchanalysen erschwert<br />
• Initialisierungsvektor IV muss Sender und Empfänger<br />
bekannt sein<br />
Kryptographie und Kryptoanalyse 132<br />
15
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
• Fehlerauswirkungen<br />
– Fehler während der Übertragung<br />
• additive Fehler: Fehlerfortpflanzung in den Folgeblock<br />
• Synchronisationsfehler bzgl. ganzer Blöcke: 2 Blöcke<br />
betroffen<br />
• Synchronisationsfehler bzgl. Bits: Entschlüsselung fehlerhaft,<br />
bis Blockgrenzen erneut festgelegt<br />
– Fehler während der Verschlüsselung<br />
• ab Fehlerstelle wird ein anderer Schlüsseltext erzeugt<br />
• Entschlüsselung: nur ein Klartextblock betroffen<br />
<strong>Verfahren</strong> eignet sich zur Authentikation: Manipulationen,<br />
Einfügen und Entfernen von Blöcken erkennbar<br />
Kryptographie und Kryptoanalyse 133<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
CBC zur Authentikation (CBC-MAC)<br />
k<br />
enc<br />
c i<br />
c i-1 ∨ IV<br />
1 64<br />
…<br />
letzter<br />
Schlüsseltextblock<br />
c n<br />
m i<br />
letzter Schlüsseltextblock wird als MAC angehängt: m 1 m 2 m 3 … m n c n<br />
Empfänger berechnet ebenfalls c n und vergleicht mit erhaltenem c n<br />
Kryptographie und Kryptoanalyse 134<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Cipher Feedback (CFB) – Verschlüsselung<br />
64 r+1 r 1<br />
… …<br />
enc<br />
64 1<br />
… …<br />
r<br />
m i<br />
r<br />
Schieberegister A<br />
a i Inhalt zum Zeitpunkt i<br />
a 1 = IV<br />
k<br />
Ausgabeblock B<br />
b i Ausgabe zum Zeitpunkt i<br />
r<br />
c i<br />
c i = m i ⊕ b i [1:r] = m i ⊕ enc(k, a i )[1:r]<br />
für r = 8: a i = c i-8 c i-7 c i-6 … c i-2 c i-1 ; a 1 = IV = c -7 c -6 c -5 … c 1 c 0<br />
Kryptographie und Kryptoanalyse 135<br />
16
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Cipher Feedback (CFB) – Entschlüsselung<br />
64 r+1 r 1<br />
… …<br />
enc<br />
64 1<br />
… …<br />
r<br />
c i<br />
r<br />
Schieberegister A<br />
a i Inhalt zum Zeitpunkt i<br />
a 1 = IV<br />
k<br />
Ausgabeblock B<br />
b i Ausgabe zum Zeitpunkt i<br />
r<br />
m i<br />
m i = c i ⊕ b i [1:r] = c i ⊕ enc(k, a i )[1:r]<br />
für r = 8: a i = c i-8 c i-7 c i-6 … c i-2 c i-1 ; a 1 = IV = c -7 c -6 c -5 … c 1 c 0<br />
Kryptographie und Kryptoanalyse 136<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Cipher Feedback (CFB) – Eigenschaften<br />
⎡b⎤<br />
• Selbstsynchronisierend (Abhängigkeit von Einheiten; b:<br />
⎢r<br />
⎥<br />
Blockgröße der Chiffre; DES: b = 64)<br />
• Länge der verarbeiteten Einheiten: r < b, frei wählbar (z.B.<br />
8 Bit, also byteweise Verarbeitung)<br />
• Abhängigkeiten zwischen den Blöcken<br />
– kein Direktzugriff auf einzelne Schlüsseltextblöcke möglich<br />
– gleiche Klartextblöcke liefern unterschiedliche<br />
Schlüsseltextblöcke<br />
• Initialisierungsvektor IV muss Sender und Empfänger<br />
bekannt sein<br />
• es entsteht immer eine symmetrische Chiffre<br />
Kryptographie und Kryptoanalyse 137<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
• Fehlerauswirkungen<br />
– Fehler während der Übertragung<br />
• additive Fehler und Synchronisationsfehler bzgl. ganzer<br />
Blöcke: Fehlerfortpflanzung entsprechend der<br />
Abhängigkeiten von vorherigen Blöcken<br />
• Synchronisationsfehler bzgl. Bits: Entschlüsselung fehlerhaft,<br />
bis Blockgrenzen erneut festgelegt; durch geeignete Wahl<br />
von r können Verschiebungen der Blockgrenzen verhindert<br />
werden<br />
– Fehler während der Verschlüsselung entsprechend CBC<br />
<strong>Verfahren</strong> eignet sich zur Authentikation (verschlüsselten<br />
letzten Block c n als MAC): Manipulationen, Einfügen und<br />
Entfernen von Blöcken erkennbar<br />
Kryptographie und Kryptoanalyse 138<br />
17
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Output Feedback (OFB) – Ver-/Entschlüsselung<br />
64 r+1 r 1<br />
… …<br />
enc<br />
64 1<br />
… …<br />
r<br />
m i<br />
r<br />
c i<br />
c i = m i ⊕ b i [1:r] = c i ⊕ enc(k, a i )[1:r]<br />
m i = c i ⊕ b i [1:r] = m i ⊕ enc(k, a i )[1:r]<br />
Schieberegister A<br />
a i Inhalt zum Zeitpunkt i<br />
a 1 = IV<br />
k<br />
Ausgabeblock B<br />
b i Ausgabe zum Zeitpunkt i<br />
r<br />
c i<br />
m i<br />
Kryptographie und Kryptoanalyse 139<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – DES<br />
Output Feedback (OFB) – Eigenschaften<br />
• Synchron<br />
• Länge der verarbeiteten Einheiten: r < b, frei wählbar (z.B.<br />
8 Bit, also byteweise Verarbeitung)<br />
• Abhängigkeit von Position der verarbeiteten Einheit<br />
– kein Direktzugriff auf einzelne Schlüsseltextblöcke möglich<br />
– gleiche Klartextblöcke liefern unterschiedliche<br />
Schlüsseltextblöcke<br />
• Initialisierungsvektor IV muss Sender und Empfänger<br />
bekannt sein<br />
• es entsteht immer eine symmetrische Chiffre<br />
• Fehlerauswirkungen<br />
– additive Fehler: keine Fehlerfortpflanzung<br />
– anfällig gegen Synchronisationsfehler<br />
Kryptographie und Kryptoanalyse 140<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Kryptoanalyse des DES<br />
Kryptoanalyse des DES<br />
• Allgemeine Angriffe auf Blockchiffren:<br />
– Vollständige Schlüsselsuche<br />
– Zugriff auf eine vorab berechnete Tabelle<br />
– Time-Memory-Tradeoff<br />
– Kodebuchanalyse<br />
• Angriffe auf DES, auch relevant für andere Blockchiffren:<br />
– Differentielle Kryptoanalyse<br />
– Lineare Kryptoanalyse<br />
Kryptographie und Kryptoanalyse 141<br />
18
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
Differentielle Kryptoanalyse<br />
• E. Biham and A. Shamir: Differential Cryptanalysis of DESlike<br />
Cryptosystems. Advances in Cryptology – CRYPTO '90.<br />
Springer-Verlag. 2-21.<br />
• Gewählter Klartext-Schlüsseltext Angriff<br />
• Aufwand für DES lt. Standard, 16 Runden:<br />
ca. 2 47 Klartextpaare bei ca. 2 37 Verschlüsselungsschritten<br />
• Anwendbar für iterierte Blockchiffren<br />
• Prinzip:<br />
– Verwendung von beliebigen Klartextpaaren mit bestimmten<br />
Differenzen<br />
– Analyse der Auswirkungen der Klartext-Differenzen auf <strong>die</strong><br />
Differenzen der resultierenden Schlüsseltextpaare<br />
– Ermittlung wahrscheinlicher Schlüssel<br />
Kryptographie und Kryptoanalyse 142<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
Notation (1)<br />
• Eingangs- und Ausgangspermutation<br />
haben keinen<br />
Einfluss - weggelassen<br />
• L m , R m : linke bzw. rechte<br />
Hälfte des Klartextes<br />
• L c , R c : linke bzw. rechte<br />
Hälfte des Schlüsseltextes<br />
• x, x*: zusammengehörige<br />
Zwischenwerte<br />
• x‘ = x ⊕ x*: Differenz<br />
Klartext m = (L m , R m )<br />
k 1<br />
y 1 x 1<br />
f<br />
k 2<br />
y 2 x 2<br />
f<br />
. . .<br />
k 16<br />
y 16 x 16<br />
f<br />
Schlüsseltext c = (L c , R c )<br />
Kryptographie und Kryptoanalyse 143<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
Notation (2)<br />
f<br />
x i<br />
32<br />
E<br />
48<br />
k i<br />
48<br />
S1 Ei S2 Ei S3 Ei … S8 Ei<br />
S1 Ki S2 Ki S3 Ki … S8 Ki<br />
S1 Ii<br />
S2 Ii<br />
6 6 6<br />
S1 S2 …<br />
S8<br />
4 4<br />
4<br />
P<br />
Kryptographie und Kryptoanalyse y i<br />
144<br />
32<br />
S8 Ii<br />
S1 Oi S2 Oi S8 Oi<br />
19
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
Einfluss der Operationen auf <strong>die</strong> XOR-Differenzen<br />
• Expansionsabbildung E:<br />
E(x) ⊕ E(x*) = E(x ⊕ x*)<br />
• Bitweise Addition mit Rundenschlüssel k:<br />
(x ⊕ k) ⊕ (x* ⊕ k) = x ⊕ x*<br />
• Permutation P:<br />
P(x) ⊕ P(x*) = P(x ⊕ x*)<br />
• Verknüpfung von Zwischenwerten (Input und Output<br />
aufeinander folgender Rundenfunktionen):<br />
(x ⊕ y) ⊕ (x* ⊕ y*) = (x ⊕ x*) ⊕ (y ⊕ y*)<br />
Kryptographie und Kryptoanalyse 145<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
• Substitutionsboxen Si<br />
– Nichtlinear komplexe Beziehungen zwischen Eingabeund<br />
Ausgabedifferenzen<br />
Differenz:<br />
Eingabe:<br />
Ausgabe:<br />
Si I Si I *<br />
6<br />
6<br />
Si<br />
Si<br />
4<br />
4<br />
Si O Si O *<br />
Si I ‘= Si I ⊕ Si I *<br />
Si O ‘ = Si O ⊕ Si O *<br />
–2 6·2 4 mögliche Tupel von Eingabe- und<br />
Ausgabedifferenzen<br />
– nicht alle möglichen Ausgabedifferenzen Si O ‘ existieren<br />
–existierende Si O ‘ sind nicht gleichwahrscheinlich<br />
Kryptographie und Kryptoanalyse 146<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
Beschreibung der Differenzen - Differenzentabelle<br />
Differenzentabelle für S1, Eingabediff. S1 I ‘ = 110100 2 = 34 x<br />
S1 I<br />
S1 I * =<br />
S1 O ‘= S1 O ⊕ S1 O *<br />
S1 I ⊕ S1 I ‘ 0000 0001 0010 0011 … 1101 1110 1111<br />
000000 110100<br />
000001 110101<br />
1<br />
.<br />
. . . . . .<br />
.<br />
.. .. . .. .. .<br />
.<br />
.<br />
.<br />
.<br />
..<br />
111110<br />
111111<br />
001010<br />
001011<br />
Differenzenverteilung:<br />
S1:<br />
0<br />
1<br />
2<br />
3<br />
0<br />
14<br />
0<br />
4<br />
15<br />
1<br />
4<br />
15<br />
1<br />
12<br />
2<br />
13<br />
7<br />
14<br />
8<br />
0<br />
3<br />
1<br />
4<br />
8<br />
2<br />
4<br />
2<br />
14<br />
13<br />
4<br />
8<br />
5<br />
15<br />
2<br />
6<br />
9<br />
6<br />
11<br />
13<br />
2<br />
1<br />
6 … 8<br />
Kryptographie und Kryptoanalyse 147<br />
16<br />
7<br />
8<br />
1<br />
11<br />
7<br />
8<br />
3<br />
10<br />
15<br />
5<br />
9<br />
10<br />
6<br />
12<br />
11<br />
10<br />
6<br />
12<br />
9<br />
3<br />
11<br />
12<br />
11<br />
7<br />
14<br />
12<br />
5<br />
9<br />
3<br />
10<br />
13<br />
9<br />
5<br />
10<br />
0<br />
0<br />
14<br />
0<br />
3<br />
5<br />
6<br />
15<br />
7<br />
8<br />
0<br />
13<br />
1<br />
1<br />
6<br />
20
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
Differenzenverteilungstabelle von S1<br />
Eingabediff.<br />
S1 I<br />
’<br />
0<br />
1<br />
2<br />
3<br />
.<br />
0<br />
64<br />
0<br />
0<br />
14<br />
1<br />
0<br />
0<br />
0<br />
4<br />
2<br />
0<br />
0<br />
0<br />
2<br />
3<br />
0<br />
6<br />
8<br />
2<br />
4<br />
0<br />
0<br />
0<br />
10<br />
Ausgabedifferenzen S1 O<br />
’<br />
5<br />
0<br />
2<br />
4<br />
6<br />
6<br />
0<br />
4<br />
4<br />
4<br />
7<br />
0<br />
4<br />
4<br />
2<br />
.<br />
8<br />
0<br />
0<br />
0<br />
6<br />
9<br />
0<br />
10<br />
6<br />
4<br />
A<br />
0<br />
12<br />
8<br />
4<br />
B<br />
0<br />
4<br />
6<br />
0<br />
C<br />
0<br />
10<br />
12<br />
2<br />
D<br />
0<br />
6<br />
6<br />
2<br />
E<br />
0<br />
2<br />
4<br />
2<br />
F<br />
0<br />
4<br />
2<br />
0<br />
33<br />
34<br />
35<br />
.<br />
4<br />
0<br />
2<br />
4<br />
8<br />
2<br />
6<br />
16<br />
4<br />
2<br />
6<br />
0<br />
10<br />
2<br />
8<br />
8<br />
0<br />
0<br />
4<br />
0<br />
0<br />
2<br />
12<br />
0<br />
.<br />
4<br />
6<br />
14<br />
0<br />
0<br />
4<br />
2<br />
0<br />
6<br />
2<br />
0<br />
8<br />
4<br />
0<br />
0<br />
6<br />
8<br />
2<br />
0<br />
4<br />
14<br />
4<br />
6<br />
0<br />
3D<br />
3E<br />
3F<br />
0<br />
0<br />
4<br />
8<br />
8<br />
8<br />
6<br />
2<br />
4<br />
2<br />
2<br />
2<br />
2<br />
2<br />
4<br />
6<br />
4<br />
0<br />
0<br />
4<br />
2<br />
8<br />
14<br />
4<br />
4<br />
4<br />
4<br />
4<br />
2<br />
2<br />
0<br />
0<br />
4<br />
4<br />
2<br />
8<br />
0<br />
0<br />
8<br />
12<br />
8<br />
6<br />
4<br />
4<br />
2<br />
4<br />
4<br />
2<br />
S1 I<br />
‘<br />
→ S1 O‘ , z.B.: 34 x → 1 x , 34 x → 2 x ,34 x → 5 x<br />
Kryptographie und Kryptoanalyse 148<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
Analyse der Rundenfunktion (1)<br />
gewählt: x, x* x‘<br />
gesucht: k<br />
f<br />
E<br />
S1 E S2 E S3 E … S8 E<br />
S1 K S2 K S3 K … S8 K<br />
S1 E ‘, S2 E ‘, …, S8 E ‘<br />
S1 I ‘<br />
S1<br />
S2 I ‘ S8 I ‘<br />
S2<br />
…<br />
S8<br />
S1 O , S1 O<br />
*<br />
S1 O ‘<br />
S2 O , S2 O<br />
*<br />
S2 O ‘<br />
P<br />
S8 O , S8 O<br />
*<br />
S8 O ‘<br />
beobachtet: y, y* y‘<br />
Kryptographie und Kryptoanalyse 149<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
Analyse der Rundenfunktion (2)<br />
• Gewählt: Inputpaar x, x* ( x’)<br />
• Beobachtet: y, y* Outputdifferenz y’<br />
1. Schritt:<br />
Bestimmung von Kandidaten für <strong>die</strong> Belegung der Input-<br />
Vektoren der S-Box<br />
2. Schritt:<br />
Ermittlung möglicher Schlüsselbits mit Hilfe der ermittelten<br />
Input-Vektoren<br />
• Wiederholen <strong>die</strong>ser Schritte zur weiteren Einschränkung des<br />
Schlüsselraums<br />
• Vollständige Suche <strong>über</strong> eingeschränkten Schlüsselraum<br />
‣ Beispiel: S1 E = 01 x , S1 E * = 35 x ; S1 O ‘= 0D x<br />
Kryptographie und Kryptoanalyse 150<br />
21
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
Mögliche Inputpaare für S1 I ‘= 34 x<br />
Outputdifferenzen<br />
S1 O ‘<br />
Eingabepaare für S1 I ‘= 34 x<br />
1 03, 37; 0F, 3B; 1E, 2A; 1F, 2B<br />
2 04, 30; 05, 31; 0E, 3A; 11, 25; 12, 26; 14, 20;<br />
1A, 2E; 1B, 2F<br />
3 01, 35; 02, 36; 15, 21<br />
4 13, 27<br />
7 00, 34; 08, 3C; 0D, 39; 17, 23; 18, 2C; 1D, 29<br />
8 09, 3D; 0C, 38; 19, 2D<br />
D 06, 32; 10, 24; 16, 22; 1C, 28<br />
F 07, 33; 0A, 3E; 0B, 3F<br />
Kryptographie und Kryptoanalyse 151<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
Mögliche Schlüsselbits S1 K<br />
1D, 29<br />
1. Paar:<br />
S1 E = 01 x ,<br />
S1 E *= 35 x<br />
S1 I ‘ = 34 x<br />
S1 O ‘ = 0D x<br />
S1 I , S1 I *<br />
06, 32<br />
10, 24<br />
16, 22<br />
1C, 28<br />
Mögliche Schlüsselbits<br />
07, 33<br />
11, 25<br />
17, 23<br />
2. Paar:<br />
S1 E = 21 x ,<br />
S1 E *= 15 x<br />
S1 I ‘ = 34 x<br />
S1 O ‘ = 03 x<br />
S1 I , S1 I *<br />
01, 35<br />
02, 36<br />
15, 21<br />
Mögliche Schlüsselbits<br />
20, 14<br />
23, 17<br />
34, 00<br />
Kryptographie und Kryptoanalyse 152<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
Analyse des DES<br />
• Betrachtung der einzelnen S-Boxen:<br />
Inputdifferenz Si I ’ liefert Outputdifferenz Si O ’ mit<br />
P(Si, Si I<br />
’ Si O<br />
’ ) (Differenzenverteilungstabelle)<br />
• Analyse der Input- und Output-Differenzen der<br />
Rundenfunktion m.H. der Input- und Output-Differenzen der<br />
S-Boxen:<br />
P(<br />
f , x'<br />
→ y')<br />
=<br />
8<br />
∏<br />
i=<br />
1<br />
P(<br />
Si,<br />
Si I<br />
' → Si O<br />
')<br />
• Verfolgen von Differenzen und Wahrscheinlichkeiten <strong>über</strong><br />
mehrere Runden: Charakteristik<br />
Kryptographie und Kryptoanalyse 153<br />
22
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
n-Runden-Charakteristik Ω (1)<br />
Ω = (Ω m , Ω Λ , Ω c )<br />
Ω Λ = (Λ 1 , Λ 2 , …, Λ n )<br />
mit: Λ i = (λ Ii , λ Oi )<br />
Ω m = m’ = (L Ω m ,R Ω m )<br />
Ω c = c’ = (L Ω c ,R Ω c )<br />
λ Ii = x i ’, λ Oi = y i ’<br />
Es gilt:<br />
λ I1 = R Ω m<br />
λ I2 = L Ω m ⊕ λ O1<br />
λ In = R Ω c<br />
λ On = L Ω c ⊕ λ In-1<br />
Klartext m<br />
k 1<br />
y 1 x 1<br />
f<br />
k 2<br />
x 2<br />
f<br />
. . .<br />
f<br />
y 16<br />
y 2<br />
x 16<br />
k 15<br />
y 15 x 15<br />
f<br />
k 16<br />
2 ≤ i ≤ n-1: λ Oi = λ Ii-1 ⊕ λ Ii+1<br />
Schlüsseltext c<br />
Kryptographie und Kryptoanalyse 154<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
n-Runden-Charakteristik Ω (2)<br />
• Wahrscheinlichkeit p iΩ der Runde i einer Charakteristik<br />
p iΩ = P(λ Ii → λ Oi )<br />
• Wahrscheinlichkeit p Ω einer n-Runden-Charakteristik<br />
p<br />
Ω n<br />
Ω<br />
= ∏ p i<br />
i=<br />
1<br />
• Richtiges Paar bzgl. einer n-Runden-Charakteristik und eines<br />
unabhängigen Schlüssels k:<br />
– m’ = Ω m<br />
– für <strong>die</strong> ersten n Runden der Berechnung gilt:<br />
x i ’= λ Ii y i ’= λ Oi<br />
• Übrige Paare: falsche Paare<br />
Kryptographie und Kryptoanalyse 155<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
1-Runden-Charakteristik mit p Ω = 1<br />
einziger möglicher Fall: λ Ii = (00 00 00 00)<br />
Ω m = (L Ω m , 00 00 00 00)<br />
p Ω = 1<br />
y 1 ‘ = (00 00 00 00)<br />
f<br />
x 1 ‘ = (00 00 00 00)<br />
k 1<br />
Ω c = ( L Ω m , 00 00 00 00)<br />
Kryptographie und Kryptoanalyse 156<br />
23
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
1-Runden-Charakteristik mit λ Ii 0<br />
• Ziel: p Ω möglichst groß<br />
– Si I ’ ≠ 0 für nur eine S-Box: nur <strong>die</strong> mittleren Bits dürfen mit 1<br />
belegt sein<br />
1 2 3 4<br />
S1 E :<br />
32<br />
1 2 3 4<br />
5<br />
Si I ’= 000100 ∨ 001000 ∨ 001100 = 04 x ∨ 08 x ∨ 0C x<br />
– Wahrscheinlichkeit für Si I ’ → Si O ’ maximal (S1: bei 0C x → E x )<br />
• 1-Runden-Charakteristik mit p Ω 14<br />
= für<br />
64<br />
S1: 0C x → E x mit Wahrscheinlichkeit<br />
S2, …, S8: 00 x → 0 x mit Wahrscheinlichkeit 1<br />
14<br />
64<br />
Kryptographie und Kryptoanalyse 157<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
1-Runden-Charakteristik mit p Ω = 14<br />
64<br />
Ω m = (L Ω m , 60 00 00 00)<br />
p Ω =<br />
14 y 1 ‘ = (00 80 82 00)<br />
64 = P(E0 00 00 00)<br />
f<br />
x 1 ‘ = (60 00 00 00)<br />
k 1<br />
Ω c = (L Ω m ⊕ 00 80 82 00, 60 00 00 00)<br />
P(E0 00 00 00): 16<br />
1<br />
2<br />
7<br />
15<br />
8<br />
19 13 30 6 22 11 4 25<br />
Kryptographie und Kryptoanalyse 158<br />
20<br />
23<br />
24<br />
21<br />
26<br />
14<br />
29<br />
5<br />
32<br />
12<br />
18<br />
27<br />
28<br />
31<br />
3<br />
17<br />
10<br />
9<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
Konkatenation von n-Runden Charakteristiken<br />
Ω a = (Ω m,a<br />
, Ω Λ,a<br />
, Ω c,a<br />
) sei n-Runden-Charakteristik,<br />
Ω b = (Ω m,b<br />
, Ω Λ,b , Ω c,b<br />
) sei m-Runden-Charakteristik<br />
Ω m,a<br />
= (L Ω m,a , R Ω m,a ), Ω c,a<br />
= (L Ω c,a , R Ω c,a ) etc.<br />
Ω a und Ω b können verbunden werden, falls<br />
L Ω c,a = R Ω m,b und R Ω c,a = L Ω m,b<br />
Ω = Ω a Ω b = (Ω m,a<br />
, Ω Λ , Ω c,b<br />
)<br />
mit Ω Λ = (Λ a1 , Λ a2 , …, Λ an , Λ b1 , Λ b2 , …, Λ bm )<br />
Kryptographie und Kryptoanalyse 159<br />
24
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
2<br />
3-Runden-Charakteristik mit p Ω 14<br />
= ≈ 0,05<br />
64<br />
Ω m = (00 80 82 00 60 00 00 00)<br />
p Ω =<br />
1<br />
14<br />
64<br />
y 1 ‘ = (00 80 82 00)<br />
f<br />
x 1 ‘ = (60 00 00 00)<br />
k 1<br />
p Ω = 1<br />
2<br />
y 2 ‘ = (00 00 00 00)<br />
f<br />
x 2 ‘ = (00 00 00 00)<br />
k 2<br />
p Ω =<br />
3<br />
14<br />
64<br />
y 3 ‘ = (00 80 82 00)<br />
f<br />
x 3 ‘ = (60 00 00 00)<br />
k 3<br />
Ω c = (00 80 82 00 60 00 00 00)<br />
Kryptographie und Kryptoanalyse 160<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
Iterative Charakteristik Ω = (Ω m , Ω Λ , Ω c )<br />
• L Ω m = R Ω c R Ω m = L Ω c<br />
• basiert auf Si I ’ Si O ’ mit Si I ’ ≠ 0 Si O ’ = 0<br />
• kann zur Konstruktion von n-Runden-Charakteristiken<br />
verwendet werden mit begrenzter Verringerung von p Ω<br />
Ω m = (L Ω m,00 00 00 00)<br />
p Ω = 1<br />
1<br />
y 1 ‘ = (00 00 00 00)<br />
f<br />
x 1‘ = (00 00 00 00)<br />
k 1<br />
p Ω<br />
2<br />
y 2 ‘ = (00 00 00 00)<br />
f<br />
x 2‘ = (L Ω m)<br />
k 2<br />
Ω c = (00 00 00 00, L Ω m)<br />
Kryptographie und Kryptoanalyse 161<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Differentielle Kryptoanalyse<br />
• Falsche Paare liefern nicht notwendigerweise den richtigen<br />
Teilschlüssel<br />
Betrachten der Schnittmenge i. Allg. nicht möglich<br />
• Richtiger Teilschlüssel jedoch häufiger vertreten (mit<br />
Wahrscheinlichkeit p Ω von den richtigen Paaren geliefert,<br />
dazu kommt zufälliges Auftreten in falschen Paaren)<br />
• DES: Erschweren der differentiellen Kryptoanalyse durch<br />
entsprechende Designkriterien für <strong>die</strong> Substitutionen und<br />
Permutationen<br />
Don Coppersmith: The Data Encryption Standard and its strength<br />
against attacks. IBM Journal of Research and Development 38/3,<br />
1994, 243-250.<br />
• Wichtiges Designkriterium:<br />
möglichst hohe Anzahl aktiver S-Boxen pro Runde<br />
Kryptographie und Kryptoanalyse 162<br />
25
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Lineare Kryptoanalyse<br />
Lineare Kryptoanalyse<br />
• Matsui, M.: Linear Cryptanalysis Method for DES Cipher.<br />
Advances in Cryptology – EUROCRYPT '93, LNCS 765,<br />
Springer-Verlag, 386-397.<br />
• Klartext-Schlüsseltext Angriff<br />
• Anwendbar für iterierte Blockchiffren<br />
• Aufwand: ca. 2 43 Klartextblöcke erforderlich<br />
• Prinzip:<br />
– Ziel: Approximation der Chiffrierfunktion durch eine lineare<br />
Abbildung<br />
– Suche nach Approximationsgleichungen mit möglichst hoher<br />
Güte<br />
– Untersuchung genügend vieler Klartext-Schlüsseltext-Paare<br />
liefert Schlüsselbits<br />
Kryptographie und Kryptoanalyse 163<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Lineare Kryptoanalyse<br />
Grundlagen<br />
• Körper:<br />
Menge F 2 = {0, 1}, Addition ⊕, Multiplikation ·<br />
• Vektorraum:<br />
n<br />
Menge F2 = {( b1<br />
, b2<br />
,..., bn<br />
) | bi<br />
∈F2}<br />
Addition:<br />
(b 1 , b 2 , …, b n ) ⊕ (c 1 , c 2 , …, c n ) = (b 1 ⊕ c 1 , b 2 ⊕ c 2 , …, b n ⊕ c n )<br />
Skalare Multiplikation:<br />
a ·(b 1 , b 2 , …, b n ) = (a · b 1 , a · b 2 , …, a · b n )<br />
• U, V Vektorräume <strong>über</strong> K; L: U V Abbildung<br />
• L linear, wenn für alle u, u 1 , u 2 ∈ U und k ∈ K gilt:<br />
– L(u 1 + u 2 ) = L(u 1 ) + L(u 2 )<br />
– L(k · u) = k · L(u)<br />
Kryptographie und Kryptoanalyse 164<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Lineare Kryptoanalyse<br />
• Matrixdarstellung einer linearen Abbildung<br />
L : F<br />
F<br />
⎛ e1<br />
⎞<br />
⎜ ⎟<br />
⎛ a1<br />
⎞ ⎛l11<br />
l12<br />
l13<br />
l14<br />
l15<br />
l16<br />
⎞ ⎜e2<br />
⎟<br />
⎜ ⎟ ⎜<br />
⎟<br />
⎜ ⎟<br />
⎜a2<br />
⎟ ⎜l21<br />
l22<br />
l23<br />
l24<br />
l25<br />
l26<br />
⎟ e3<br />
= =<br />
⋅⎜<br />
⎟<br />
⎜ ⎟ L(<br />
e)<br />
a ⎜<br />
⎟<br />
3<br />
l31<br />
l32<br />
l33<br />
l34<br />
l35<br />
l36<br />
⎜e4<br />
⎟<br />
⎜ ⎟ ⎜<br />
⎟<br />
⎜ ⎟<br />
⎝a4<br />
⎠ ⎝l41<br />
l42<br />
l43<br />
l44<br />
l45<br />
l46<br />
⎠ ⎜<br />
e5<br />
⎟<br />
⎝e6<br />
⎠<br />
6 4<br />
6<br />
4<br />
2<br />
→ F ; e = ( e1e<br />
2e<br />
2 3e4e5e6<br />
) ∈F2<br />
; a = ( a1a2a3a4<br />
) ∈<br />
2<br />
⎛l11e1<br />
⎜<br />
⎜l21e1<br />
= ⎜l31e1<br />
⎜<br />
⎝l41e1<br />
⊕<br />
⊕<br />
⊕<br />
⊕<br />
l e<br />
12<br />
22<br />
32<br />
42<br />
2<br />
l e<br />
2<br />
l e<br />
2<br />
l e<br />
2<br />
⊕<br />
⊕<br />
⊕<br />
⊕<br />
...<br />
...<br />
...<br />
...<br />
⊕<br />
⊕<br />
⊕<br />
⊕<br />
l16e6<br />
⎞<br />
⎟<br />
l26e6<br />
⎟<br />
l ⎟<br />
36e6<br />
⎟<br />
l<br />
46e6<br />
⎠<br />
Kryptographie und Kryptoanalyse 165<br />
26
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Lineare Kryptoanalyse<br />
Vor<strong>über</strong>legungen zur linearen Kryptoanalyse<br />
• DES: Substitutionen sind <strong>die</strong> einzigen nicht-linearen<br />
Abbildungen<br />
• Lineare Abhängigkeit einzelner Ausgabebits einer S-Box<br />
Si O [i]?<br />
6<br />
gesucht: Funktionen ϕ : F → F mit<br />
Si O [i] = ϕ(Si I ) = l 1 Si I [1] ⊕ l 2 Si I [2] ⊕ … ⊕ l 6 Si I [6]<br />
2<br />
Paritätsfunktionen (alle Bits: Parität; nur Berechnung <strong>über</strong><br />
bestimmte Bits: gewichtete Parität)<br />
• Kennzeichnung der verwendeten Bits mittels<br />
Auswahlvektor w: w T Si I<br />
Indexmenge: Angabe der verwendeten Positionen Si I<br />
[p1, p2, …]<br />
2<br />
Kryptographie und Kryptoanalyse 166<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Lineare Kryptoanalyse<br />
Untersuchung der Substitutionsboxen<br />
• Paritätsfunktionen bzgl. der Eingabe Si I<br />
nicht vorhanden<br />
• Paritätsfunktionen bzgl. Eingabe Si I und Ausgabe Si O<br />
Auswahlvektoren u = (u 1 u 2 u 3 u 4 u 5 u 6 ) und v = (v 1 v 2 v 3 v 4 )<br />
mit u T Si I = v T Si(Si I ) = v T Si O<br />
nicht vorhanden (Ausnahme u = 000000, v = 0000)<br />
• Affine Abbildungen<br />
Auswahlvektoren u, v, bei denen u T Si I und v T Si O stets unterschiedlich<br />
Nutzen für Analyse: u T Si I = v T Si O ⊕ 1<br />
nicht vorhanden<br />
Approximation notwendig<br />
Güte p A der Approximation ϕ der Funktion S: Anteil der Argumente,<br />
in denen <strong>die</strong> Funktionswerte <strong>über</strong>einstimmen<br />
Kryptographie und Kryptoanalyse 167<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Lineare Kryptoanalyse<br />
Beste lineare Approximation von S5 O [1]<br />
Substitution<br />
Lineare Abbildung (Auswahlvektor u)<br />
S5 I S5 O 000000 000001 … 110111 … 111110 111111<br />
000000 0010 0 0<br />
000001 1110 0 1<br />
000010 1100 0 0<br />
000011 1011 0 1<br />
000100 0100 0 0<br />
…<br />
…<br />
…<br />
…<br />
…<br />
0 …<br />
1 …<br />
1 …<br />
0 …<br />
1 …<br />
0 0<br />
0 1<br />
1 1<br />
1 0<br />
1 1<br />
. . . . . . . 111101 0101<br />
111110 1110<br />
111111 0011<br />
Häufigkeit:<br />
0<br />
0<br />
0<br />
32<br />
1<br />
0<br />
1<br />
32<br />
…<br />
…<br />
…<br />
…<br />
0<br />
0<br />
1<br />
44<br />
…<br />
…<br />
…<br />
…<br />
0<br />
1<br />
1<br />
34<br />
1<br />
1<br />
0<br />
34<br />
Kryptographie und Kryptoanalyse 168<br />
27
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Lineare Kryptoanalyse<br />
Approximationsmatrix von S5<br />
Ausw.-<br />
vektor u<br />
000000<br />
000001<br />
000010<br />
000011<br />
.<br />
001111<br />
010000<br />
010001<br />
.<br />
111101<br />
111110<br />
111111<br />
0<br />
64<br />
32<br />
32<br />
32<br />
32<br />
32<br />
32<br />
32<br />
32<br />
32<br />
1<br />
32<br />
32<br />
36<br />
32<br />
30<br />
34<br />
34<br />
36<br />
28<br />
28<br />
2<br />
32<br />
32<br />
30<br />
30<br />
30<br />
30<br />
30<br />
34<br />
36<br />
28<br />
3<br />
32<br />
32<br />
34<br />
38<br />
40<br />
32<br />
32<br />
34<br />
28<br />
28<br />
4<br />
32<br />
32<br />
30<br />
30<br />
38<br />
32<br />
36<br />
36<br />
34<br />
46<br />
5<br />
32<br />
32<br />
34<br />
30<br />
36<br />
30<br />
34<br />
36<br />
34<br />
38<br />
Auswahlvektor v<br />
6<br />
32<br />
32<br />
28<br />
36<br />
32<br />
26<br />
30<br />
30<br />
30<br />
26<br />
7<br />
32<br />
32<br />
32<br />
28<br />
34<br />
34<br />
30<br />
8<br />
32<br />
32<br />
36<br />
32<br />
.<br />
34<br />
24<br />
28<br />
.<br />
34<br />
32<br />
36<br />
9<br />
32<br />
32<br />
32<br />
32<br />
36<br />
30<br />
34<br />
A<br />
32<br />
32<br />
34<br />
30<br />
40<br />
30<br />
34<br />
B<br />
32<br />
32<br />
30<br />
38<br />
30<br />
28<br />
32<br />
C<br />
32<br />
32<br />
34<br />
30<br />
40<br />
32<br />
24<br />
D<br />
32<br />
32<br />
30<br />
30<br />
26<br />
34<br />
26<br />
E<br />
32<br />
32<br />
32<br />
36<br />
34<br />
42<br />
34<br />
F<br />
32<br />
32<br />
28<br />
28<br />
32<br />
12<br />
36<br />
30 42 32 32 34 34 36 32<br />
34 30 30 30 36 28 32 36<br />
34 30 38 30 32 32 28 32<br />
Kryptographie und Kryptoanalyse 169<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Lineare Kryptoanalyse<br />
Bestimmung von Schlüsselbits<br />
m<br />
6<br />
S5 I<br />
S5<br />
S5 O<br />
4<br />
6<br />
k<br />
mit p A<br />
= 0,81:<br />
(010000) T m ⊕ (010000) T k<br />
= (1111) T c ⊕ 1<br />
bzw.<br />
m [2] ⊕ k [2] = c [1,2,3,4] ⊕ 1<br />
c<br />
Umstellen nach k [2] :<br />
k [2] = m [2] ⊕ c [1,2,3,4] ⊕ 1<br />
Analyse von genügend Klartext-<br />
Schlüsseltext-Paaren liefert k [2]<br />
Kryptographie und Kryptoanalyse 170<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Lineare Kryptoanalyse<br />
Analyse der DES-Rundenfunktion<br />
• Verwendung der Approximationsfunktion<br />
• Einbeziehung der Expansionsabbildung E<br />
und der Schlüsseladdition<br />
32<br />
4<br />
8<br />
12<br />
16<br />
20<br />
24<br />
28<br />
1<br />
5<br />
9<br />
13<br />
17<br />
21<br />
25<br />
29<br />
2<br />
6<br />
10<br />
14<br />
18<br />
22<br />
26<br />
30<br />
3<br />
7<br />
11<br />
15<br />
19<br />
23<br />
27<br />
31<br />
4<br />
8<br />
12<br />
16<br />
20<br />
24<br />
28<br />
32<br />
5<br />
9<br />
13<br />
17<br />
21<br />
25<br />
29<br />
1<br />
• Berücksichtigung der Permutation P<br />
16<br />
1<br />
2<br />
19<br />
7<br />
15<br />
8<br />
13<br />
20<br />
23<br />
24<br />
30<br />
21<br />
26<br />
14<br />
6<br />
29<br />
5<br />
32<br />
22<br />
12<br />
18<br />
27<br />
11<br />
28<br />
31<br />
3<br />
4<br />
17<br />
10<br />
9<br />
25<br />
Approximationsgleichung für Rundenfunktion<br />
Kryptographie und Kryptoanalyse 171<br />
28
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Lineare Kryptoanalyse<br />
Allgemeines Vorgehen<br />
Vorbereitung:<br />
Auswahlvektoren u, v, w bestimmen mit:<br />
w T k = u T m ⊕ v T c oder<br />
w T k = u T m ⊕ v T c ⊕ 1<br />
Güte der Approximation p A > 0,5<br />
1. Schritt:<br />
Untersuchung von N Klartext-Schlüsseltext-Paare<br />
Z: Anzahl von Paaren, für <strong>die</strong> <strong>die</strong> rechte Seite der entsprechenden<br />
Gleichung 0 ist<br />
2. Schritt:<br />
Z > N/2: w T k = 0<br />
Z < N/2: w T k = 1<br />
Kryptographie und Kryptoanalyse 172<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – Lineare Kryptoanalyse<br />
Analyse des DES mit 3 Runden<br />
m = (L m , R m )<br />
k [26] =<br />
1<br />
x [17] ⊕ y [3,8,14,25] ⊕ 1<br />
1 1<br />
y 1 = L m ⊕ x 2<br />
f<br />
x 1 = R m<br />
k 1<br />
k 2<br />
y 2 x 2<br />
f<br />
k [26] =<br />
3<br />
x [17] ⊕ y [3,8,14,25] ⊕ 1<br />
3 3<br />
y 3 = L c ⊕ x 2<br />
f<br />
x 3 = R c<br />
k 3<br />
c = (L c , R c )<br />
Kryptographie und Kryptoanalyse 173<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – IDEA<br />
IDEA (International Data Encryption Algorithm)<br />
• Wesentliche Anforderungen an den Entwurf: höhere<br />
Sicherheit im Vergleich zu DES (größerer Schlüsselraum)<br />
und effiziente Implementierbarkeit in Hard- und Software<br />
• Gemeinschaftsprojekt zwischen der ETH Zürich und der<br />
Ascom Systec AG<br />
• 1990 Xuejia Lai, James L. Massey: PES (Proposed Encryption<br />
Standard)<br />
• 1991 Xuejia Lai, James L. Massey, S. Murphy: IPES<br />
(Improved PES) – gegen differentielle Kryptoanalyse<br />
optimierte Version IDEA<br />
• Patentiert (in Europa bis 2011), Nutzung für nichtkommerzielle<br />
Zwecke möglich (Einsatz in PGP)<br />
Kryptographie und Kryptoanalyse 174<br />
29
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – IDEA<br />
<strong>Überblick</strong> <strong>über</strong> den Algorithmus<br />
• Einteilung der Nachricht in Blöcke m i der Länge 64 Bit<br />
• Schlüssellänge 128 Bit<br />
• 8 identische Runden und zusätzliche Output-Transformation<br />
• Grundlage bilden einfache arithmetische Operationen auf<br />
Operanden der Länge 16 Bit:<br />
– XOR-Verknüpfung<br />
+<br />
– Addition modulo 2 16<br />
+<br />
– Multiplikation modulo 2 16 +1 (wegen erforderlicher<br />
Invertierbarkeit wird 0 durch 2 16 dargestellt)<br />
⋅<br />
• Aufteilung der Nachrichtenblöcke in jeweils vier Teilblöcke<br />
m i1 , m i2 , m i3 , m i4 zu je 16 Bit<br />
• 52 Teilschlüssel k i,j zu je 16 Bit:<br />
– Zerlegung des 128-Bit-Schlüssels in 8 16-Bit-Schlüssel<br />
– Linksshift um 25 Bit und erneute Aufteilung in 8 16-Bit-<br />
Schlüssel<br />
Kryptographie und Kryptoanalyse 175<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – IDEA<br />
m i1 m i2 m i3 m i4<br />
k 1,1 ⋅ + k 1,2 k 1,3 + ⋅ k 1,4<br />
k 9,1<br />
+<br />
+<br />
k 1,5 ⋅<br />
+<br />
+<br />
⋅<br />
k 1,6<br />
+ +<br />
+<br />
+<br />
… … …<br />
⋅ + k 9,2 k 9,3 + ⋅<br />
c i1 c i2 c i3 c i4<br />
Kryptographie und Kryptoanalyse 176<br />
k 9,4<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – IDEA<br />
Teilschlüssel<br />
Entschlüsselung: umgekehrte Reihenfolge, inverse<br />
Teilschlüssel (-k: additives Inverses mod 2 16 bzw. k -1 :<br />
multiplikatives Inverses mod 2 16 +1)<br />
Runde Verschlüsselung<br />
1 k 1,1 k 1,2 k 1,3 k 1,4 k 1,5 k 1,6<br />
2 k 2,1 k 2,2 k 2,3 k 2,4 k 2,5 k 2,6<br />
3 k 3,1 k 3,2 k 3,3 k 3,4 k 3,5 k 3,6<br />
4 k 4,1 k 4,2 k 4,3 k 4,4 k 4,5 k 4,6<br />
5 k 5,1 k 5,2 k 5,3 k 5,4 k 5,5 k 5,6<br />
6 k 6,1 k 6,2 k 6,3 k 6,4 k 6,5 k 6,6<br />
7 k 7,1 k 7,2 k 7,3 k 7,4 k 7,5 k 7,6<br />
8 k 8,1 k 8,2 k 8,3 k 8,4 k 8,5 k 8,6<br />
9 k 9,1 k 9,2 k 9,3 k 9,4<br />
Entschlüsselung<br />
k -1<br />
9,1 –k 9,2 –k 9,3 k -1<br />
9,4 k 8,5 k 8,6<br />
k -1<br />
8,1 –k 8,3 –k 8,2 k -1<br />
8,4 k 7,5 k 7,6<br />
k -1<br />
7,1 –k 7,3 –k 7,2 k -1<br />
7,4 k 6,5 k 6,6<br />
k -1<br />
6,1 –k 6,3 –k 6,2 k -1<br />
6,4 k 5,5 k 5,6<br />
k -1<br />
5,1 –k 5,3 –k 5,2 k -1<br />
5,4 k 4,5 k 4,6<br />
k -1<br />
4,1 –k 4,3 –k 4,2 k -1<br />
4,4 k 3,5 k 3,6<br />
k -1<br />
3,1 –k 3,3 –k 3,2 k -1<br />
3,4 k 2,5 k 2,6<br />
k -1<br />
2,1 –k 2,3 –k 2,2 k -1<br />
2,4 k 1,5 k 1,6<br />
k -1<br />
1,1 –k 1,2 –k 1,3 k -1<br />
1,4<br />
Kryptographie und Kryptoanalyse 177<br />
30
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – IDEA<br />
Konfusion<br />
• Mischen der drei inkompatiblen Gruppenoperationen<br />
(Distributivgesetz und verallgemeinertes Assoziativgesetz<br />
von keinem Paar der Operationen erfüllt)<br />
• Ergebnis einer Operation ist niemals Eingabe einer Operation<br />
desselben Typs<br />
Diffusion<br />
• Multiplikations-Additions-Struktur: unter Nutzung von k i,5<br />
und k i,6 werden zwei Eingabeblöcke I 1 , I 2 in zwei<br />
Ausgabeblöcke O 1 , O 2 transformiert<br />
• Jeder Ausgabeblock hängt von jedem Eingabeblock ab<br />
• Geringstmögliche Anzahl von Operationen für <strong>die</strong>se<br />
“ganzheitliche Diffusion”<br />
Kryptographie und Kryptoanalyse 178<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – IDEA<br />
Eigenschaften des IDEA<br />
• Verwendung linearer Funktionen, <strong>die</strong> aber in<br />
unterschiedlichen Vektorräumen arbeiten durch<br />
Verknüpfung wird Nichtlinearität erreicht<br />
• Betriebsarten und Mehrfachverschlüsselung anwendbar<br />
• Sehr gut in Hard- und Software implementierbar<br />
• Sehr effizient<br />
• Gegen differenzielle Kryptoanalyse optimiert (nach vier<br />
Runden immun)<br />
• Problem schwacher Schlüssel einfache Modifikation der<br />
Teilschlüsselgenerierung: XOR-Addition einer Konstante:<br />
kˆ<br />
0DAE<br />
i, j<br />
= ki,<br />
j<br />
⊕α,<br />
α =<br />
x<br />
Kryptographie und Kryptoanalyse 179<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
AES (Advanced Encryption Standard)<br />
• 1997 Ausschreibung eines öffentlichen Wettbewerbs für <strong>die</strong><br />
Einreichung eines kryptographischen Algorithmus “AES” als<br />
Nachfolger des DES durch das National Institute of<br />
Standards and Technology (NIST) der USA<br />
• Kriterien:<br />
– Sicherheit (bestmöglich, resistent gegen alle bekannten<br />
Angriffe)<br />
– Kosten (weltweit ohne Einschränkungen und Lizenzgebühren<br />
verfügbar)<br />
– Performance (effiziente Realisierbarkeit in Hard- und Software)<br />
– Algorithmische Eigenschaften (klar strukturiert, flexibel, für<br />
möglichst viele Anwendungen einsetzbar)<br />
• Einreichungsfrist bis zum 15.6.1998<br />
• 15 Algorithmen erfüllten formale Kriterien und wurden in<br />
einer ersten <strong>Verfahren</strong>srunde begutachtet<br />
Kryptographie und Kryptoanalyse 180<br />
31
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
August 1999: 5 Finalisten<br />
• MARS (IBM, USA):<br />
komplexes <strong>Verfahren</strong> mit 32 Runden, aus Feistel-Chiffre abgeleitet<br />
• RC6 (Ron Rivest u.a., RSA Labs, USA):<br />
“Rons Code”, Weiterentwicklung von RC5, basiert auf Feistel-<br />
Netzwerk mit 20 Runden<br />
• Rijndael (Vincent Rijmen und Joan Daemen, Belgien):<br />
SP-Netzwerk mit wahlweise 10, 12 oder 14 Runden;<br />
Weiterentwicklung von SAFER<br />
• Serpent (Ross Anderson/UK, Eli Biham/Israel, Lars<br />
Knudsen/Norwegen):<br />
SP-Netzwerk mit 32 Runden<br />
• Twofish (Bruce Schneier u.a., USA):<br />
Weiterentwicklung von Blowfish, Feistel-Algorithmus mit 16 Runden<br />
Kryptographie und Kryptoanalyse 181<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Sieger des Wettbewerbs: Rijndael<br />
• Entscheidung Oktober 2000<br />
• Begründung:<br />
Beste Kombination von Sicherheit, Leistungsfähigkeit,<br />
Effizienz und Implementierbarkeit sowohl in Software als<br />
auch in Hardware.<br />
• Publikation als Standard im Herbst 2001 (FIPS Standard<br />
„Specification for the Advanced Encryption Standard“, FIPS<br />
197)<br />
• 2002 trat AES in Kraft<br />
• Einsatz z.B.: Verschlüsselungsstandard 802.1 für Wireless<br />
LAN bzw. für Wi-Fi WPA2, SSH, IPSec, 7-Zip, PGP<br />
Kryptographie und Kryptoanalyse 182<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
<strong>Überblick</strong> <strong>über</strong> den Algorithmus<br />
• Verschlüsselung von Klartextblöcken der Länge 128 Bit<br />
(vorgeschlagene Längen von 192 und 256 Bits nicht<br />
standardisiert)<br />
• Schlüssellänge wahlweise 128, 192 oder 256 Bits<br />
• Mehrere Runden, jeweils Substitutionen, Permutationen und<br />
Schlüsseladdition<br />
• Anzahl der Runden r hängt von Schlüssel- und Klartextlänge<br />
ab:<br />
Schlüssel- Blocklänge des Klartextes n b<br />
länge n k<br />
128 Bit<br />
192 Bit<br />
256 Bit<br />
128 Bit<br />
10<br />
12<br />
14<br />
192 Bit<br />
Kryptographie und Kryptoanalyse 183<br />
12<br />
12<br />
14<br />
256 Bit<br />
14<br />
14<br />
14<br />
32
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Struktur des AES<br />
k n k<br />
m i<br />
n b<br />
c i<br />
n b<br />
k 1<br />
Iterationsrunde 1<br />
b<br />
Teil-<br />
Iterationsrunde 2<br />
n b<br />
k 2<br />
schlüs-<br />
sel-<br />
generie-<br />
rung<br />
.<br />
.<br />
n b<br />
k r<br />
Iterationsrunde r<br />
Kryptographie und Kryptoanalyse 184<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Struktur der Iterationsrunden<br />
s i<br />
s r<br />
s i,a<br />
SubByte<br />
s i,b<br />
ShiftRow<br />
s i,c<br />
MixColumn<br />
s r,a<br />
SubByte<br />
s r,b<br />
ShiftRow<br />
s r,c<br />
k r<br />
s i,d<br />
k i<br />
s i+1<br />
Runde i, i = 1, 2, …, r-1<br />
Runde r<br />
Kryptographie und Kryptoanalyse 185<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Notation<br />
• Darstellung eines Bytes als Folge von Bits:<br />
a = {a 7 a 6 a 5 a 4 a 3 a 2 a 1 a 0 } 2 , a i ∈ {0,1}<br />
• Darstellung als Polynom:<br />
a =<br />
∑<br />
i=<br />
0<br />
• Darstellung als Hexadezimalzahl<br />
7<br />
i<br />
a i<br />
x<br />
Kryptographie und Kryptoanalyse 186<br />
33
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Darstellung der Operanden<br />
Byte-Matrizen mit 4 Zeilen und N b (N k ) Spalten<br />
mit N b (N k ): Blocklänge n b (Schlüssellänge n k ) / 32<br />
a 0,0<br />
a 0,1<br />
a 1,0<br />
a 0,3<br />
a 1,1<br />
a 2,0<br />
a 1,3<br />
a 2,1<br />
a 3,0<br />
a 2,3<br />
a 3,1<br />
a 0,2<br />
a 1,2<br />
a 2,2<br />
a 3,2<br />
a 3,3<br />
a 0,4<br />
a 1,4<br />
a 2,4<br />
a 3,4<br />
a 0,5<br />
a 1,5<br />
a 2,5<br />
a 3,5<br />
a 0,6<br />
a 1,6<br />
a 2,6<br />
a 3,6<br />
a 0,7<br />
a 1,7<br />
a 2,7<br />
a 3,7<br />
Matrix (state) für<br />
Blocklänge<br />
128 , 192 , 256<br />
Bit<br />
Schlüssel für<br />
Schlüssellänge<br />
128 , 192 , 256<br />
Bit<br />
k 0,0 k 0,1 k 0,2 k 0,3 k 0,4 k 0,5 k 0,6 k 0,7<br />
k 1,0 k 1,1 k 1,2 k 1,3 k 1,4 k 1,5 k 1,6 k 1,7<br />
k 2,0 k 2,1 k 2,2 k 2,3 k 2,4 k 2,5 k 2,6 k 2,7<br />
k 3,0 k 3,1 k 3,2 k 3,3 k 3,4 k 3,5 k 3,6 k 3,7<br />
Kryptographie und Kryptoanalyse 187<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Mathematische Grundlagen<br />
• Alle Verschlüsselungsschritte basieren auf Operationen in<br />
endlichen Körpern<br />
• Alle Bytes als Elemente des Körpers GF(2 8 ) interpretierbar:<br />
a 7 x 7 + a 6 x 6 + a 5 x 5 + a 4 x 4 + a 3 x 3 + a 2 x 2 + a 1 x + a 0 mod m(x)<br />
mit m(x) = x 8 + x 4 + x 3 + x + 1 (irreduzibles Polynom)<br />
• Addition ⊕:<br />
a = {a 7 a 6 a 5 a 4 a 3 a 2 a 1 a 0 }, b = {b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 }<br />
c = a ⊕ b mit c i = a i ⊕ b i<br />
• Multiplikation :<br />
c = a b = a · b mod m(x)<br />
⋅<br />
⋅<br />
Kryptographie und Kryptoanalyse 188<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
• Polynome dritten Grades mit Koeffizienten aus GF(2 8 ):<br />
Polynomring GF(2 8 )[x]/(x 4 +1)<br />
a(x) = a 3 x 3 + a 2 x 2 + a 1 x + a 0 mit a i GF(2 8 )<br />
• Addition ⊕:<br />
c(x) = a(x) ⊕ b(x) =<br />
(a 3 ⊕ b 3 )x 3 + (a 2 ⊕ b 2 )x 2 + (a 1 ⊕ b 1 )x + (a 0 ⊕ b 0 )<br />
• Multiplikation ⊗:<br />
c(x) = a(x) ⊗ b(x) = a(x) · b(x) mod (x 4 +1)<br />
⋅<br />
∈<br />
Kryptographie und Kryptoanalyse 189<br />
34
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
c(x) = c 6 x 6 + c 5 x 5 + c 4 x 4 + c 3 x 3 + c 2 x 2 + c 1 x + c 0<br />
⋅<br />
c 0 = (a 0 b 0 )<br />
c 1 = (a 1 b 0 ) ⊕ (a 0 b 1 )<br />
c 2 = (a 2 ⋅ b 0 ) ⊕ (a 1 b 1 ) ⊕ (a 0 b 2 )<br />
c 3 = (a 3 b 0 ) ⊕ (a 2 b 1 ) ⊕ (a 1 b 2 ) ⊕ (a 0 b 3 )<br />
c 4 = (a ⋅<br />
3 b 1 ) ⊕ (a 2 b 2 ) ⊕ (a 1 ⋅b 3 )<br />
c 5 = (a 3 ⋅ b 2 ) ⊕ (a 2 ⋅ b 3 )<br />
c 6 = (a 3 b 3 )<br />
⋅<br />
⋅<br />
mit x i mod (x 4 +1) = x i mod 4 : d(x) = d 3 x 3 + d 2 x 2 + d 1 x + d 0<br />
⋅<br />
d 0 = (a 0 b 0 ) ⊕ (a 3 b 1 ) ⊕ (a 2 b 2 ) ⊕ (a 1 b 3 )<br />
d 1 = (a 1 b 0 ) ⊕ (a 0 b 1 ) ⊕ (a 3 b 2 ) ⊕ (a 2 b 3 )<br />
d 2 = (a 2 ⋅ b 0 ) ⊕ (a 1 ⋅b 1 ) ⊕ (a 0 ⋅ b 2 ) ⊕ (a 3 ⋅ b 3 )<br />
d 3 = (a 3 b 0 ) ⊕ (a 2 b 1 ) ⊕ (a 1 b 2 ) ⊕ (a 0 b 3 )<br />
⋅<br />
⋅<br />
⋅<br />
⋅<br />
⋅<br />
(oftmals Matrixschreibweise)<br />
Kryptographie und Kryptoanalyse 190<br />
⋅<br />
⋅<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Schritt 1: SubByte<br />
• Alle Bytes einer Matrix werden unabhängig voneinander<br />
substituiert<br />
• Nichtlinearität<br />
b i,j := S 8 (a i,j )<br />
s i,a<br />
=<br />
a 0,0 a 0,3<br />
b 0,3<br />
a 0,1 a 0,2<br />
b 0,0 b 0,1 b 0,2<br />
a 1,0<br />
a 1,1 a 1,2 a 1,3<br />
b 1,0 b 1,1 b 1,2 b 1,3<br />
a 2,0 a 2,1 a 2,2 a 2,3<br />
b 2,0 b 2,1 b 2,2 b 2,3<br />
a 3,0 a 3,1 a 3,2 a 3,3<br />
b 3,0 b 3,1 b 3,2 b 3,3<br />
= s i,b<br />
Kryptographie und Kryptoanalyse 191<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Substitutionsbox S 8 (a 7 a 6 a 5 a 4 a 3 a 2 a 1 a 0 )<br />
a 7 a 6 a 5 a 4 a 3 a 2 a 1 a 0<br />
0<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
0<br />
63<br />
CA<br />
B7<br />
04<br />
09<br />
53<br />
D0<br />
51<br />
1<br />
7C<br />
82<br />
FD<br />
C7<br />
83<br />
D1<br />
EF<br />
A3<br />
2<br />
77<br />
C9<br />
93<br />
23<br />
2C<br />
00<br />
AA<br />
40<br />
3<br />
7B<br />
7D<br />
26<br />
C3<br />
1A<br />
ED<br />
FB<br />
8F<br />
4<br />
F2<br />
FA<br />
36<br />
18<br />
1B<br />
20<br />
43<br />
92<br />
5<br />
6B<br />
59<br />
3F<br />
96<br />
6E<br />
FC<br />
4D<br />
9D<br />
6<br />
6F<br />
47<br />
F7<br />
05<br />
5A<br />
B1<br />
33<br />
38<br />
7 8<br />
C5 30<br />
F0 AD<br />
CC 34<br />
9A 07<br />
A0 52<br />
5B<br />
85<br />
6A<br />
45<br />
F5 BC<br />
. . .<br />
9<br />
01<br />
D4<br />
A5<br />
12<br />
3B<br />
CB<br />
F9<br />
B6<br />
A<br />
67<br />
A2<br />
E5<br />
80<br />
D6<br />
BE<br />
02<br />
DA<br />
B<br />
2B<br />
AF<br />
F1<br />
E2<br />
B3<br />
39<br />
7F<br />
21<br />
C<br />
FE<br />
9C<br />
71<br />
EB<br />
29<br />
4A<br />
50<br />
10<br />
D<br />
D7<br />
A4<br />
D8<br />
27<br />
E3<br />
4C<br />
3C<br />
FF<br />
E<br />
AB<br />
72<br />
31<br />
B2<br />
2F<br />
58<br />
9F<br />
F3<br />
F<br />
76<br />
C0<br />
15<br />
75<br />
84<br />
CF<br />
A8<br />
D2<br />
C<br />
D<br />
E<br />
F<br />
BA<br />
70<br />
E1<br />
8C<br />
78<br />
3E<br />
F8<br />
A1<br />
25<br />
B5<br />
98<br />
89<br />
2E<br />
66<br />
11<br />
0D<br />
1C<br />
48<br />
69<br />
BF<br />
A6<br />
03<br />
D9<br />
E6<br />
B4<br />
F6<br />
8E<br />
42<br />
C6<br />
0E<br />
94<br />
68<br />
E8<br />
61<br />
9B<br />
41<br />
DD<br />
35<br />
1E<br />
99<br />
74<br />
57<br />
87<br />
2D<br />
1F<br />
B9<br />
E9<br />
0F<br />
4B<br />
86<br />
CE<br />
B0<br />
BD<br />
C1<br />
55<br />
54<br />
8B<br />
1D<br />
28<br />
BB<br />
8A<br />
9E<br />
DF<br />
16<br />
Kryptographie und Kryptoanalyse 192<br />
35
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Schritt 2: ShiftRow<br />
• Zyklische Verschiebung der Zeilen nach links<br />
• Diffusion<br />
Zeile<br />
0<br />
1<br />
2<br />
3<br />
N b = 4<br />
0<br />
1<br />
2<br />
3<br />
N b = 6<br />
0<br />
1<br />
2<br />
3<br />
N b = 8<br />
0<br />
1<br />
3<br />
4<br />
b 0,0<br />
c 3,3<br />
s i,b<br />
=<br />
b 0,1<br />
b 1,0<br />
b 0,3<br />
b 1,1<br />
b 2,0<br />
b 1,3<br />
b 2,1<br />
b 3,0<br />
b 2,3<br />
b 3,1<br />
b 0,2<br />
b 1,2<br />
b 2,2<br />
b 3,2<br />
b 3,3<br />
c 0,0<br />
c 0,1<br />
c 1,0<br />
c 0,3<br />
c 1,1<br />
c 2,0<br />
c 1,3<br />
c 2,1<br />
c 3,0<br />
c 2,3<br />
c 3,1<br />
c 0,2<br />
c 1,2<br />
c 2,2<br />
c 3,2<br />
= s i,c<br />
Kryptographie und Kryptoanalyse 193<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Schritt 3: MixColumn<br />
• Operiert jeweils auf Spalten der Matrix (32-Bit Substitution)<br />
• Diffusion<br />
d i := a(x) ⊗ c i mod (x 4 + 1)<br />
c 0,0<br />
c 0,1<br />
d 3,1<br />
d 3,3<br />
s i,c<br />
=<br />
c 0,1<br />
c 1,0 c 1,3<br />
c 1,1<br />
c 1,2<br />
c 0,3<br />
c 2,0 c 2,1<br />
c 2,2 c 2,3<br />
c 3,0<br />
c 3,1<br />
c 0,2<br />
c 3,2<br />
c 3,3<br />
d 0,0<br />
d 0,1<br />
d 0,2 d 0,3<br />
d 1,0<br />
d 1,1<br />
d 1,2 d 1,3<br />
d 2,0<br />
d 2,1<br />
d 2,2<br />
d 3,1 d 3,2<br />
d 3,0<br />
d 2,3<br />
= s i,d<br />
Kryptographie und Kryptoanalyse 194<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
d i<br />
:= a(x) ⊗ c i<br />
mod (x 4 +1)<br />
a(x) = {03} x 3 + {01} x 2 + {01} x + {02}<br />
d 0,i<br />
d 1,i<br />
d<br />
= 2,i<br />
d 3,i<br />
02 03 01 01<br />
01 02 03 01<br />
01 01 02 03<br />
03 01 01 02<br />
c 0,i<br />
c 1,i<br />
c 2,i<br />
c 3,i<br />
d 0,i = ({02}·c 0,i ) ⊕ ({03}·c 1,i ) ⊕ c 2,i ⊕ c 3,i<br />
d 1,i = c 0,i ⊕({02}·c 1,i ) ⊕ ({03}·c 2,i ) ⊕ c 3,i<br />
d 2,i = c 0,i ⊕ c 1,i ⊕ ({02}·c 2,i ) ⊕ ({03}·c 3,i )<br />
d 3,i = ({03}·c 0,i ) ⊕ c 1,i ⊕ c 2,i ⊕ ({02}·c 3,i )<br />
Kryptographie und Kryptoanalyse 195<br />
36
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Schritt 4: AddRoundKey<br />
• Macht Iterationsrunden schlüsselabhängig<br />
• Länge des Rundenschlüssels k i : n b<br />
s i,d<br />
s i+1,a<br />
d 0,0<br />
a 3,3<br />
d 0,1<br />
d 1,0<br />
d 0,3<br />
d 1,1<br />
d 2,0<br />
d 1,3<br />
d 2,1<br />
d 3,0<br />
d 2,3<br />
d 3,1<br />
d 0,2<br />
d 1,2<br />
d 2,2<br />
d 3,2<br />
d 3,3<br />
k i<br />
k 0,0 k 0,1 k 0,2 k 0,3<br />
k 1,0 k 1,1 k 1,2 k 1,3<br />
=<br />
k 2,0 k 2,1 k 2,2<br />
k 3,0<br />
k 2,3<br />
k 3,1<br />
k 3,2<br />
k 3,3<br />
a 0,0<br />
a 0,1<br />
a 1,0<br />
a 0,3<br />
a 1,1<br />
a 2,0<br />
a 1,3<br />
a 2,1<br />
a 3,0<br />
a 2,3<br />
a 3,1<br />
a 0,2<br />
a 1,2<br />
a 2,2<br />
a 3,2<br />
Kryptographie und Kryptoanalyse 196<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Teilschlüsselgenerierung<br />
• Expansion des AES-Schlüssels, abhängig von n b und n k<br />
• n b bestimmt Länge der Rundenschlüssel<br />
• n b und n k bestimmen Anzahl der Runden Anzahl der<br />
Rundenschlüssel<br />
• Länge des expan<strong>die</strong>rten Schlüssels in Byte = 4N b (r+1):<br />
Schlüssellänge<br />
n k<br />
128 Bit<br />
192 Bit<br />
256 Bit<br />
Blocklänge des Klartextes n b<br />
128 Bit 192 Bit 256 Bit<br />
16·11 24·13 32·15<br />
16·13 24·13 32·15<br />
16·15 24·15 32·15<br />
Kryptographie und Kryptoanalyse 197<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Teilschlüsselgenerierung<br />
• Verschiedene Expansionsalgorithmen für n b = 128, 192 und<br />
256 Bit<br />
• Expan<strong>die</strong>rter Schlüssel: Folge von 4-Byte Blöcken w i<br />
w 0 w 1 w 2 … w i …w N<br />
b *(r+1)-1<br />
• Auswahl der Rundenschlüssel:<br />
w 0<br />
w 1<br />
w 2<br />
… w N -1<br />
w N<br />
w N +1<br />
…<br />
b<br />
b<br />
b<br />
k 0<br />
k 1<br />
Kryptographie und Kryptoanalyse 198<br />
37
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Schlüsselexpansion<br />
KeyExpansion(byte k[4*N k ], word w[N b *(r+1)]){<br />
for (i=0; i < N k ; i++)<br />
w[i] = (k[4*i], k[4*i+1], k[4*i+2], k[4*i+3]);<br />
for (i=N k ; i < N b *(r+1); i++) {<br />
temp = w[i-1];<br />
if (i mod N k == 0)<br />
temp = SubWord(Rot(temp)) ⊕ Rcon[i/N k ];<br />
else if (N k > 6 and i mod N k == 4)<br />
temp = SubWord(temp);<br />
w[i] = w[i-N k ] ⊕ temp;<br />
}<br />
}<br />
Kryptographie und Kryptoanalyse 199<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Schlüsselexpansion für N k<br />
= 4<br />
w 0<br />
k[0:3]<br />
w 1<br />
k[4:7]<br />
k[8:11] k[12:15]<br />
w 2 w 3<br />
Rcon[1]<br />
Rot<br />
SubWord<br />
w 4<br />
w 5<br />
w 6<br />
w 7<br />
Rcon[2]<br />
… … … …<br />
Rot SubWord<br />
Kryptographie und Kryptoanalyse 200<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Schlüsselexpansion – Verwendete Funktionen<br />
• Rot: zyklische Verschiebung<br />
Rot([a 0 , a 1 , a 2 , a 3 ]) = [a 1 , a 2 , a 3 , a 0 ]<br />
• SubWord: byteweise Substitution unter Nutzung von S 8<br />
SubWord([a 0 , a 1 , a 2 , a 3 ]) = [S 8 (a 0 ), S 8 (a 1 ), S 8 (a 2 ), S 8 (a 3 )]<br />
• Rcon: Konstante für <strong>die</strong> betreffenden Runden<br />
Rcon[j = i/N k ] = [x j-1 , {00}, {00}, {00}]<br />
Kryptographie und Kryptoanalyse 201<br />
38
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Entschlüsselung<br />
• Umgekehrte Reihenfolge, inverse Funktionen<br />
s i+1<br />
k r<br />
k i<br />
s r,c<br />
MixColumn -1<br />
ShiftRow<br />
s i -1<br />
SubByte -1 ShiftRow -1<br />
s r,b<br />
s i,c<br />
s r,a<br />
s i,d<br />
s i,b<br />
s r<br />
SubBytes -1<br />
Runde r Runde i, i = r-1, r-2, …, 1<br />
s i,a<br />
s i<br />
• Zum Schluss Addition des Rundenschlüssels k 0<br />
Kryptographie und Kryptoanalyse 202<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Inverse Funktionen<br />
• ShiftRow -1 :<br />
zyklische Verschiebung nach rechts<br />
• SubByte -1 :<br />
Anwendung der inversen Substitution a i,j := S 8<br />
-1<br />
(b i,j )<br />
• MixColumn -1 :<br />
Multiplikation mit dem multiplikativen Inversen mod (x 4 + 1)<br />
a -1 (x)= ({03} x 3 + {01} x 2 + {01} x + {02}) -1 mod (x 4 + 1)<br />
= {0b} x 3 + {0d} x 2 + {09} x + {0e}<br />
Kryptographie und Kryptoanalyse 203<br />
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Entschlüsselung in äquivalenter Reihenfolge<br />
• SubByte(ShiftRow(s i )) = ShiftRow(SubByte(s i ))<br />
und<br />
SubByte -1 (ShiftRow -1 (s i )) = ShiftRow -1 (SubByte -1 (s i ))<br />
• MixColumn(s i ⊕ k i ) = MixColumn(s i ) ⊕ MixColumn(k i )<br />
und<br />
MixColumn -1 (s i ⊕ k i ) = MixColumn -1 (s i ) ⊕ MixColumn -1 (k i )<br />
→ Reihenfolge der Abarbeitung wie bei Verschlüsselung<br />
→ k i ’ = MixColumn(k i ), i = 1, 2, …, r-1<br />
Kryptographie und Kryptoanalyse 204<br />
39
4 <strong>Symmetrische</strong> <strong>Verfahren</strong> – AES<br />
Entschlüsselung in äquivalenter Reihenfolge<br />
• Addition des Rundenschlüssels k r<br />
s i+1<br />
s i,a<br />
s 1<br />
s 1,a<br />
SubByte -1<br />
SubByte -1<br />
s i,b<br />
s 1,b<br />
ShiftRow -1 ShiftRow -1<br />
s i,c<br />
s 1,c<br />
k 0<br />
MixColumn -1<br />
s i,d<br />
k i ‘<br />
s i<br />
Runde i, i = r-1, r-2, …, 1<br />
Kryptographie und Kryptoanalyse 205<br />
40