5 DES
DES wurde 1975 von IBM entwickelt. Aus Lucifer hervorgegangen, ist
es das weltweit am weitesten verbreitete Kryprosystem.
DES verschlüsselt einen Klartext-Bitstring x der Länge 64
mit einem Schlüssel der Länge 56. Der erhaltene Chiffretext hat
wieder Länge 64 Bit.
Die Berechnung der 16 einzelnen Schlüssel für Punkt (2) ist sehr
aufwendig und wird in 5.1 DES-Schlüssel
beschrieben.
Der Algorithmus hat drei Stufen:
- Gegeben ein Klartext x, wird ein Bitstring x0
konstruiert, indem die Bits von x entsprechend einer festen
initialen Permutation IP umgeordnet werden.
Wir schreiben x0 = IP(x) = L0
R0 ,
wobei L0 die ersten 32 Bits von x0
enthält und R0 die letzten.
- Jetzt werden 16 Wiederholungen einer bestimmten Funktion
durchgeführt. Wir berechnen LiRi,
i = 1,...,16, nach der folgenden Regel:
- Li = Ri-1
- Ri = Li-1 [+] f(Ri-1 , Ki) ,
wobei [+] das Exklusiv-Oder zweier Bitstrings darstellt.
f wird weiter unten beschrieben, und
K1, K2 , ... , K16
sind Bitstrings der Länge 48, die als Funktion des Schlüssels
K berechnet werden.
- Wende die inverse Permutation IP-1
auf den Bitstring
R16 L16 an; das liefert den Chiffretext
y,
also y = IP-1(R16 L16).
(Beachte die umgedrehte Reihenfolge von L16 und
R16).
Die Funktion f nimmt als Eingabe als erstes Argument
A
(Bitstring der Länge 32) und als zweites J (Bitstring der
Länge 48), und gibt einen Bitstring der Länge 32 zurück:
- Das erste Argument A wird zu einem Bitstring der Länge 48
"ausgedehnt" mittels einer festen expansion
function E. E(A)
besteht aus 32 Bits aus A, auf gewisse Weise permutiert, wobei 16
der Bits zweimal vorkommen.
- Berechne E(A) [+] J und schreibe das Ergebnis als
Konkatenation von acht Strings zu je sechs Bit,
B = B1B2 B3
B4 B5 B6
B7 B8.
- Jedes Bi wird jetzt in den sogenannten
S-Boxen Sj zu Cj permutiert,
also Cj = Sj (Bj ),
j = 1,...,8.
Die S-Boxen sind 4x16-Matrizen mit Einträgen von 0 bis 15.
Sei Bj = b1b2
b3 b4 b5
b6. Dann entsprechen die beiden Bits
b1b6 der Binärdarstellung
einer Zeile r von Sj (0 <= r <= 3),
und die vier Bits b2 b3
b4 b5 legen die Nummer der Spalte
c von Sj fest (0 <= c <= 15).
Sj (Bj) ist dann der so gefundene Eintrag
Sj (r,c), geschrieben als Bitstring der Länge 4.
- Der Bitstring C = C1C2
C3 C4 C5
C6 C7 C8
der Länge 32 wird nun gemäß der
festen Permutation P
umgeordnet. Der erhaltene Bitstring P(C) ist f(A,J).
Applet in neuem Fenster starten
Initiale Permutation IP:
58 | 50 | 42 | 31 | 26 | 18 | 10 | 2 |
60 | 52 | 44 | 36 | 28 | 20 | 12 | 4 |
62 | 54 | 46 | 38 | 30 | 22 | 14 | 6 |
64 | 56 | 48 | 40 | 32 | 24 | 16 | 8 |
57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 |
59 | 51 | 43 | 35 | 27 | 19 | 11 | 3 |
61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 |
63 | 55 | 47 | 39 | 31 | 23 | 25 | 7 |
Finale Permutation IP>-1:
40 | 8 | 48 | 16 | 56 | 24 | 64 | 32 |
39 | 7 | 47 | 15 | 55 | 23 | 63 | 31 |
38 | 6 | 46 | 14 | 54 | 22 | 62 | 30 |
37 | 5 | 45 | 13 | 53 | 21 | 61 | 29 |
36 | 4 | 44 | 12 | 52 | 20 | 60 | 28 |
35 | 3 | 43 | 11 | 51 | 19 | 59 | 27 |
34 | 2 | 42 | 10 | 50 | 18 | 58 | 26 |
33 | 1 | 41 | 9 | 49 | 17 | 57 | 25 |
Bit-Auswahltafel E:
32 | 1 | 2 | 3 | 4 | 5 |
4 | 5 | 6 | 7 | 8 | 9 |
8 | 9 | 10 | 11 | 12 | 13 |
12 | 13 | 14 | 15 | 16 | 17 |
16 | 17 | 18 | 19 | 20 | 21 |
20 | 21 | 22 | 23 | 24 | 25 |
24 | 25 | 26 | 27 | 28 | 29 |
28 | 29 | 30 | 31 | 32 | 1 |
Permutation P:
16 | 7 | 20 | 21 |
29 | 12 | 28 | 17 |
1 | 15 | 23 | 26 |
5 | 18 | 31 | 10 |
2 | 8 | 24 | 14 |
32 | 27 | 3 | 9 |
19 | 13 | 30 | 6 |
22 | 11 | 4 | 25 |