23.12.2013 Aufrufe

Überblick über die Vorlesung 4 Symmetrische Verfahren ...

Überblick über die Vorlesung 4 Symmetrische Verfahren ...

Überblick über die Vorlesung 4 Symmetrische Verfahren ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!