Symmetrische Blockchiffren DES – der Data Encryption Standard Jürgen Ecker FH Hagenberg – Universität Linz
Blockchiffren Die Nachricht liegt als Bitfolge vor. Aufteilung in Blöcke einer fixen Länge (z.B. 128, 372 oder 512). Ggf. wird die Nachricht durch auffüllen mit 0en auf eine Länge gebracht, die Vielfaches der Blocklänge ist (padding). Verschlüsselung erfolgt blockweise, aus einem Klartextblock wird ein verschlüsselter Block der selben Länge. (Substitution)
DES: Eckdaten Blocklänge: 64 Schlüssellänge: 64 es gibt also 264 verschiedene Blöcke Häufigkeitsanalyse unrealistisch Schlüssellänge: 64 es gibt also 264 verschiedene Schlüssel 8 Bits des Schlüssels sind jedoch Kontrollstellen, tatsächlich also nur 256 verschiedene Schlüssel Brute-Force-Attacke nicht ganz unrealistisch
DES: Das Grundprinzip Input: ein 64-Bit-Block Permutation Aufteilen in die beiden Hälften L0 und R0 L1 = R0, R1 = L0 f ( R0, K1 ) K1 … 1ter Rundenschlüssel (48 Bits lang) Li = Ri-1, Ri = Li-1 f (Ri-1, Ki ), für 2 ≤ i ≤ 16 Ki … iter Rundenschlüssel (48 Bits lang) Permutation rückgängig IP 58 50 42 34 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 15 7 Output: ein 64-Bit-Block
Die Berechnung von f (Ri-1,Ki) Expansion des rechten Blocks 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 XOR mit Rundenschlüssel Aufteilen auf 8 6erblöcke S-Boxen Permutation Beispiel: 110010 im Block 3 Spalte 9 01 0001 Zeile 2 S3 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0 10 00 09 14 06 03 15 05 01 13 12 07 11 04 02 08 1 13 07 00 09 03 04 06 10 02 08 05 14 12 11 15 01 2 13 06 04 09 08 15 03 00 11 01 02 12 05 10 14 07 3 01 10 13 00 06 09 08 07 04 15 14 03 11 05 02 12 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
Die Rundenschlüssel Aus einem Schlüssel K der Länge 64 werden 16 Rundenschlüssel K1,…,K16 der Länge 48 erzeugt. PC1a 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 C0 = PC1a ( K ), D0 = PC1b ( K ) Ci = zirkulärer Linksshift von Ci-1 um vi Stellen vi 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 PC1b 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4 PC2 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32 Ki = PC2 ( Ci Di )
Entschlüsseln Genau wie Verschlüsseln, nur die Rundenschlüssel werden in der umgekehrten Reihenfolge verwendet.
Details Handbook of Applied Cryptography http://www.cacr.math.uwaterloo.ca/hac/ (kostenlos zum Download)