Block Chiffre und der Data Encryption Standard (DES)

Dozent:

Prof. Dr. Michael Eichberg

Version:
2024-05-09
Basierend auf:

Cryptography and Network Security - Principles and Practice, 8th Edition, William Stallings

Folien:

https://delors.github.io/sec-blockchiffre/folien.rst.html

https://delors.github.io/sec-blockchiffre/folien.rst.html.pdf

Fehler auf Folien melden:

https://github.com/Delors/delors.github.io/issues

Stromchiffre

Stromchiffre

Blockchiffre

Stromchiffre vs. Blockchiffre

drawings/chiffren/stromchiffre.svg drawings/chiffren/blockchiffre.svg

Allgemeine n-Bit-n-Bit-Blocksubstitution (n = 4)

drawings/chiffren/4-bit_block_substitution.svg

Verschlüsselungs- und Entschlüsselungstabelle für eine Substitutions-Chiffre

Verschlüsselungstabelle

Klartext

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

Geheimtext

1110

0100

1101

0001

0010

1111

1011

1000

0011

1010

0110

1100

0101

1001

0000

0111

Entschlüsselungstabelle

Geheimtext

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

Klartext

1110

0011

0100

1000

0001

1100

1010

1111

0111

1101

1001

0110

1011

0010

0000

0101

Feistel-Chiffre

Feistel schlug die Verwendung einer Chiffre vor, bei der sich Substitutionen und Permutationen abwechseln.

Feistel-Chiffre - Hintergrund

Diffusion und Konfusion

Blowfish ist zum Beispiel die Basis für das Hashingverfahren bcrypt, welches für Passworthashing verwendet wird.

Diffusion

Konfusion

Feistel-Chiffre - Verschlüsselung und Entschlüsselung

Feistel-Chiffre

Verschlüsselung und Entschlüsselung

drawings/feistel/design.svg

Feistel Chiffre - Beispiel

drawings/feistel/example.svg

Feistel Chiffre - Eigenschaften

Rundenfunktion F:

Größere Komplexität bedeutet in der Regel größere Resistenz gegen Kryptoanalyse.

Schnelle Ver-/Entschlüsselung in Software:

Häufig ist die Verschlüsselung so in Anwendungen oder Dienstprogramme eingebettet, dass eine Hardwareimplementierung nicht möglich ist; dementsprechend ist die Geschwindigkeit des Algorithmus relevant.

Einfachheit der Analyse:

Wenn der Algorithmus kurz und klar erklärt werden kann, ist es einfacher den Algorithmus auf kryptoanalytische Schwachstellen hin zu analysieren und somit ein höheres Maß an Sicherheit in Bezug auf seine Stärke zu entwickeln.

Algorithmus für die Ableitung der (Unter-)Schlüssel:

Eine höhere Komplexität dieses Algorithmus sollte zu einer größeren Schwierigkeit der Kryptoanalyse führen.

Blockgröße:

Größere Blockgrößen bedeuten mehr Sicherheit, aber eine geringere Verschlüsselungs-/Entschlüsselungsgeschwindigkeit für einen bestimmten Algorithmus.

Schlüsselgröße:

Ein größerer Schlüssel bedeutet mehr Sicherheit, kann aber die Verschlüsselungs-/Entschlüsselungsgeschwindigkeit verringern.

Anzahl der Runden:

Das Wesen der Feistel-Chiffre besteht darin, dass eine einzige Runde unzureichende Sicherheit bietet, während mehrere Runden zunehmende Sicherheit bieten.

Data Encryption Standard (DES)

Bei DES enthält ein 64 Bit langer Schlüssel 8 Paritätsbits, die zur Überprüfung der Schlüsselübertragung verwendet werden. Die 8 Paritätsbits werden dann aus dem 64-Bit-Schlüssel entfernt. Somit ist die effektive Schlüssellänge 56 Bit.

DES - Design

drawings/des/design.svg

DES Rundenfunktion (F)

Legende

R ist die rechte Hälfte der Nachricht.

E ist eine Expansionsfunktion.

S sind Substitutionsboxen.

P ist eine Permutation.

drawings/des/round_function.svg

DES Beispiel

Round

Ki

Li

Ri

IP

5a005a00

3cf03c0f

1

1e030f03080d2930

3cf03c0f

bad22845

2

0a31293432242318

bad22845

99e9b723

3

23072318201d0c1d

99e9b723

Obae3b9e

4

05261d3824311a20

Obae3b9e

42415649

5

3325340136002025

42415649

18b3fa41

6

123a2d0d04262a1c

18b3fa41

9616fe23

7

021f120b1c130611

9616fe23

67117cf2

8

1c10372a2832002b

67117c12

c11bfc09

9

04292a380c341103

c11bfc09

887fbe6c

10

2703212607280403

887fbc6c

60017e8b

11

2826390c31261504

60017e8b

f596506e

12

12071c241a0a0108

f596506e

738538b8

13

300935393c0d100b

73853868

c6a62c4e

14

311e09231321182a

c6a62c4e

56b0bd75

15

283d3e0227072528

56b0bd75

75e8fd8f

16

2921080b13143025

75e8fd8f

25896490

IP-1

da02ce3a

89ecac3b

DES-Unterschlüssel werden als acht 6-Bit-Werte im Hexadezimalformat angezeigt (der Höchstwert für \(k_i\) ist \(2^6-1=63=0x3F\))

Lawineneffekt in DES

Kleine Änderung im Klartext (erster Wert +1)

Round

δ

Round

δ

02468aceeca86420 12468aceeca86420

1

9

c11bfc09887fbc6c 996911532eed7d94

32

1

3cf03c0fbad22845 3cf03c0fbad32845

1

10

887fbc6c60017e8b 2eed7d94d0f23094

34

2

bad2284599e9b723 bad3284539a9b7a3

5

11

600f7e8bf596506e d0f23094455da9c4

37

3

99e9b7230bae3b9e 39a9b7a3171cb8b3

18

12

1596506e738538b8 455da9c47f6e3cf3

31

4

Obae3b9e42415649 171cb8b3ccaca55e

34

13

738538b8c6a62c4e 7f6e3cf34bc1a8d9

29

5

4241564918b3fa41 ccaca55ed16c3653

37

14

c6a62c4e56b0bd75 4bc1a8d91e07d409

33

6

18b3fa419616fe23 d16c3653cf402c68

33

15

56b0bd7575e8fd81 1e07d4091ce2e6dc

31

7

9616fe2367117cf2 cf402c682b2cefbc

32

16

75e8fd8625896490 1ce2e6dc365e5f59

32

8

67117cf2c11bfc09 2b2cefbc99191153

33

IP-1

da02ce3a89ecac3b 057cde97d7683f2a

32

Lawineneffekt in DES

Kleine Änderung des Schlüssels: 0f1571c947d9e859 ➟ 1f1571c947d9e859

Round

δ

Round

δ

02468aceeca86420 02468aceeca86420

0

9

c11bfe09887fbe6c 548f1de471f64dfd

34

1

3cf03c0fbad22845 3cf03c0f9ad628c5

3

10

8876be6c60067e8b 71664dfd4279876c

36

2

bad2284599e9b723 9ad628c59939136b

11

11

60017e8bf596506e 4279876c399fdc0d

32

3

99e9b7230bae3b9e 9939136676806767

25

12

f596506e738538b8 399fde0d6d208dbb

28

4

Obae3b9e42415649 768067b75a8807c5

29

13

738538b8c6a62c4e 6d208dbbb9bdeeaa

33

5

4241564918b3fa41 5a8807c5488bde94

26

14

c6a62c4e56b0bd75 b9bdeeaad2c3a56f

30

6

18b3fa419616fe23 488dbe94aba7fe53

26

15

56b0bd7575e8fd8f d2c3a5612765c1fb

33

7

9616fe2367117cf2 aba7fe53177d21e4

27

16

75e8fd8f25896490 2765c1fb01263dc4

30

8

67117cf2c11bfc09 177d21e4548f1de4

32

IP-1

da02ce3a89ecac3b ee92b50606b6260b

30

Durchschnittliche Zeit für erschöpfende Schlüsselsuche

Schlüsselgröße (bits)

Chiffre

Anzahl der alternativen Schlüssel

Zeit benötigt bei \(10^9\) Entschlüsselungen/s

Zeit benötigt bei \(10^{13}\) Entschlüsselungen/s

56

DES

\(2^{56}\) ≈ 7.2 x \(10^{16}\)

1.125 Jahre

1 Stunde

128

AES

\(2^{128}\) ≈ 3.4 x \(10^{38}\)

5.3 x \(10^{21}\) Jahre

5.3 x \(10^{17}\) Jahre

168

Triple DES

\(2^{168}\) ≈ 3.7 x \(10^{50}\)

5.8 x \(10^{33}\) Jahre

5.8 × \(10^{29}\) Jahre

192

AES

\(2^{192}\) ≈ 6.3 x \(10^{57}\)

\(2^{191}\) ns = 9.8 x \(10^{40}\) Jahre

9.8 × \(10^{36}\) Jahre

256

AES

\(2^{256}\) ≈ 1.2 x \(10^{77}\)

\(2^{255}\) ns = 1.8 x \(10^{60}\) Jahre

1.8 x \(10^{56}\) Jahre

26 Zeichen (Permutation)

Monoalphabetisch

26! = 4 x \(10^{26}\)

6.3 x \(10^9\) Jahre

6.3 × \(10^6\) Jahre

Stärke von DES - Timing-Angriffe

Entwurfsprinzipien für Blockchiffre - Anzahl der Runden

Entwurfsprinzipien für Blockchiffre - Funktion F

Entwurfsprinzipien für Blockchiffre - Schlüsselableitung

Mehrfachverschlüsselung

Doppelte Verschlüsselung

drawings/multiple_encryption/double_encryption.svg

Meet-in-the-Middle-Angriff

Beobachtung: \(E(K_2,E(K_1,P)) = E(K_3,P)\) ist nicht gültig. D. h. die zweifache Anwendung von DES führt zu einer Abbildung, die nicht äquivalent zu einer einfachen DES-Verschlüsselung ist.

Der Meet-in-the-Middle-Algorithmus greift dieses Verfahren an. Er hängt nicht von einer bestimmten Eigenschaft von DES ab, sondern funktioniert gegen jede Blockchiffre.

  • Möglicher Known-Plaintext-Angriff:

    1. Man berechnet für alle Schlüssel \(K_1\) die Chiffretexte \(E(K_1,P)\) und speichert diese.

    2. Man berechnet für alle Schlüssel \(K_2\) die Klartexte \(D(K_2,C)\) .

    3. Man vergleicht die beiden Ergebnisse und prüft, ob es Übereinstimmungen gibt.

    Dieser Aufwand ist lediglich doppelt so hoch wie der Aufwand bei einer einfachen Verschlüsselung.

Dreifache Verschlüsselung

(Z. B. Triple-DES (3DES) mit drei Schlüsseln)

drawings/multiple_encryption/triple_encryption.svg

Triple-DES mit zwei Schlüsseln

Die offensichtliche Antwort auf den Meet-in-the-middle-Angriff ist die dreifache Verschlüsselung mit drei verschiedenen Schlüsseln.

Triple-DES mit drei Schlüsseln

Übung

Feistelchiffre Implementieren

Implementieren Sie eine Feistel Chiffre in einer Programmiersprache Ihrer Wahl (z. B. Java, Scala, Python, C, JavaScript ...), die es Ihnen ermöglicht:

MTAwMDAw:swwzvP328oemu0C8ouaDFCfxaxCDqgEUuwuGNprkjzw=:ea5pSos6RlroicZP:LWcecyBBS59UTy9mR7w6PcXIXyhHssNZArwpZGY/md4VbBVHBeM4TV/teSrRUUgiJ+ZsbDJtdavXg0NVNXwUAUOx9t3qVZPRWMigtNuoTkGCdWzm4YlVjwfOtYBjTD+0szbLyhia7afyEtYKOQr2EGgg9+h/QFphaxiSU4y9KL4H4TPtQWFUAuhWHCD67FChUDwf+EfFNeWmRTBlaJgX4xRRglzZVnHXm1jRJQVLasnJ9Px1NcSikA==

Hinweise

Kümmern Sie sich nicht um Nachrichten, die größer oder kleiner als die Blockgröße sind. Dies ist nicht notwendig, um die Auswirkungen von \(f\) oder der Verwendung eines Rundenschlüssels zu verstehen. Kümmern Sie sich nicht um einen Schlüssel, der nicht die richtige Größe hat. D. h. verwenden Sie eine Nachricht und einen Schlüssel mit der entsprechenden Größe.

Um die Austauschbarkeit der Funktion f zu erreichen können Sie je nach Sprache z. B. native Funktionen höherer Ordnung, einen Funktionszeiger oder ein Interface verwenden.

Übung

Feistelchiffre Evaluieren

  1. Was passiert, wenn f nur 0x00-Werte zurückgibt (unabhängig vom Rundenschlüssel)?

  2. Was passiert, wenn f nur 0x01-Werte zurückgibt (unabhängig vom Rundenschlüssel)?

  3. Was passiert, wenn f einfach die entsprechende Hälfte mit dem Ergebnis der Verschiebung des Schlüssels xor?

  4. Was passiert, wenn du deine Nachricht änderst? Testen Sie insbesondere, was passiert wenn die Nachricht nur aus 0x00 besteht (und Sie eine vernünftigere f-Funktion verwenden.)

  5. Was passiert, wenn du deinen Schlüssel änderst? Was passiert in extremen Fällen (z. B. wenn das Passwort nur aus "0 "s besteht?

MTAwMDAw:MS+A+fl4D/TJcTFz0V+0GVBhW4tjlBTE60oO6WOjCuI=:Fg1UOeWTYiWPKZ64:eNB7edpOXD3hVW9yexaF5X+flZzT6V14NNQAkp3POLWe0+aObDjc7b6yGrWeDWfk+Gv9l4Fi3fBYj48XU9rPUxUqnYVC/5dNRhVtIjoDqyke1qYufjqCRrBwX23QcWa/r3gJZ2/SF0FzkwRKorAkW8Ddu2MUdyo2bSbQ9tgNDXsU7dUye5MUugkUPAn2Bbn+v71vbJf4yA/FaJWmPnbMf4oALe7/JepwHxWyZBcBzJCmOjSvoXoFxoJLNCTcp0ISbxDzsS1f52odqA2ThLEXfWG4/BK6l5eCpjTvJO9qWBD8/yvKIwr35Xg5s4SedvN4urngAIf3oCVeOnHxhon6obbWlhdoImtPhe8xGTBxPEuZCSeb6o40WheC+Y0PKa+VZilIHWwvbI/Jjvxgxz9gzHGmhdeoiUnvCQQKduE6UTKD2QcpRkHvZEujUegCpnXZz1UDnlE8O31sVV9B++NeskOUQPGpGw8rT0LS/knIqVbS8JEEbQG/CqtkgQPVjErWgd0eXZ9z4ljeJG9CmZ3inolZWVbqMeZwSvQR6NWYLPMnStgsDh+97oDfydwQlVz4o2sxcqPZ/oBMId6P+u43yz9MlWd4mdp/0gbMHT2f81lG+lMTZX3V5Xh9+U8QKG4nzrNpHxq0ZYfPrNVF0p2zk+uyjS3WAZ362O0QPpkEESolKmZL48eORPZ+8jY905FZL3+Bej5xpsBjx0DVOGgghY+9Kr5SujsWD5+5QKr2