MINT lernen

Moderne Blockchiffren

Wie wird aus zwei harmlosen Buchstaben ein Bitsalat, in dem ein einziges gekipptes Bit die Hälfte des Geheimtexts umwirft?

1

Blöcke, Runden, Rundenschlüssel

Moderne Verfahren verschlüsseln keine Buchstaben mehr, sondern Bitblöcke — in vielen gleich gebauten Runden.

  • Blockchiffre:Die Daten werden in Blöcke fester Länge zerlegt; jeder Block wird mit dem Schlüssel zu einem gleich langen Geheimtextblock.
  • AES:Blocklänge immer 128 Bit; Schlüssel mit 128, 192 oder 256 Bit und dazu 10, 12 bzw. 14 Runden.
  • Auffüllen (Padding):Der letzte Block wird auf volle Länge ergänzt, z. B. nach PKCS#7: Fehlen \(n\) Bytes, werden \(n\) Bytes mit dem Wert \(n\) angehängt. Ist die Länge schon ein Vielfaches von 16 Bytes, kommt ein ganzer Füllblock dazu.
  • Runde:Substitution (eine S-Box ersetzt kleine Bitgruppen nach einer festen Tabelle) → Permutation bzw. Mischen (Bits oder Bytes werden umgelegt) → XOR mit dem Rundenschlüssel.
  • Rundenschlüssel:werden aus dem eigentlichen Schlüssel abgeleitet (Schlüsselexpansion) — für jede Runde ein anderer.
  • Konfusion:Der Zusammenhang zwischen Schlüssel und Geheimtext wird verschleiert — Aufgabe der S-Box (Claude Shannon, 1949).
  • Diffusion:Jedes Klartextbit wirkt auf viele Geheimtextbits — Aufgabe von Permutation und Mischen.
  • Lawineneffekt:Ändert man ein einziges Klartext- oder Schlüsselbit, ändert sich nach genügend Runden etwa die Hälfte aller Geheimtextbits.
  • AES-Runde:SubBytes (S-Box), ShiftRows und MixColumns (Mischen), AddRoundKey (XOR mit dem Rundenschlüssel); vor der ersten Runde steht ein zusätzliches AddRoundKey, in der letzten Runde entfällt MixColumns.
  • XOR (\(\oplus\)):bitweise „entweder – oder“: Ergebnis 1, wenn genau eines der beiden Bits 1 ist. XOR ist selbstinvers: \(p \oplus k \oplus k = p\).
XOR-Tabelle
\(a\)\(b\)\(a \oplus b\)
000
011
101
110
Beispiel:
\(p = 1011\,0110,\quad k = 0101\,1100\)
gegeben

Ein Byte Klartext und ein Byte Schlüssel.

\(c = p \oplus k = 1110\,1010\)
| ⊕ k

Stelle für Stelle: gleiche Bits ergeben 0, verschiedene Bits ergeben 1.

\(c \oplus k = 1011\,0110 = p\)
| ⊕ k

Noch einmal mit demselben Schlüssel verknüpft, kommt der Klartext zurück — wegen \(k \oplus k = 0000\,0000\).

Schicke einen 16-Bit-Block durch vier Runden: ▶ spielt ab, „Schritt vor“ oder die Pfeiltasten ← → auf der Bühne gehen einzeln. Schalte dann „P′ mit 1 Bit anders“ ein (oder klicke in Runde 1 ein Eingangsbit an) und verfolge, wie sich der rot markierte Unterschied ausbreitet.

Ein Block in vier Runden

Halte fest: Die S-Box ersetzt (Konfusion), die Permutation verteilt die vier Bits jedes Nibbles auf alle vier Nibbles (Diffusion), der Rundenschlüssel bringt den Schlüssel hinein. Über alle 16-Bit-Blöcke gemittelt unterscheiden sich P und P′ nach einer Runde in 2,4 Bits, nach vier Runden in 7,9 von 16 Bits — der Lawineneffekt. Das Netz ist ein vereinfachtes Lernmodell (16-Bit-Block, feste Rundenschlüssel), nicht AES.

2

Betriebsmodi: ECB und CBC

  • Betriebsmodus:legt fest, wie eine Blockchiffre die vielen Blöcke einer langen Nachricht verarbeitet.
  • ECB:(Electronic Codebook) jeder Block einzeln: \(c_i = E_k(p_i)\). Gleiche Klartextblöcke ergeben gleiche Geheimtextblöcke — Muster bleiben sichtbar.
  • „ECB-Pinguin“:Verschlüsselt man ein Bild mit großen einfarbigen Flächen (bekannt: das Linux-Maskottchen Tux) im ECB-Modus, bleibt der Umriss im verschlüsselten Bild deutlich erkennbar — nur die Farben sind vertauscht.
  • CBC:(Cipher Block Chaining) Jeder Klartextblock wird vor dem Verschlüsseln mit dem vorigen Geheimtextblock XOR-verknüpft, der erste mit dem Initialisierungsvektor (IV). Gleiche Klartextblöcke ergeben so verschiedene Geheimtextblöcke.
  • IV:zufällig und für jede Nachricht neu; er muss nicht geheim sein und wird mit dem Geheimtext mitgeschickt.
  • AES im Alltag:aus dem Wettbewerbssieger Rijndael (Daemen und Rijmen), seit 2001 Standard der US-Behörde NIST; steckt in WLAN (WPA2/WPA3), HTTPS und Festplattenverschlüsselung.
CBC-Verschlüsselung: Jeder Geheimtextblock fließt in den nächsten Block ein (orange).
Herleitung:
\(c_i = E_k(p_i \oplus c_{i-1}),\quad c_0 = \mathrm{IV}\)
CBC

So verschlüsselt der Sender Block für Block.

\(D_k(c_i) = p_i \oplus c_{i-1}\)
| Dk

Das Entschlüsseln \(D_k\) mit demselben Schlüssel hebt \(E_k\) auf.

\(p_i = D_k(c_i) \oplus c_{i-1}\)
| ⊕ ci−1

XOR ist selbstinvers. Der Empfänger braucht für Block \(i\) also nur die Geheimtextblöcke \(c_i\) und \(c_{i-1}\).

Merke

Blockchiffre: Runde = S-Box + Permutation + XOR mit Rundenschlüssel; CBC: \(c_i = E_k(p_i \oplus c_{i-1})\), \(c_0 = \mathrm{IV}\)

3

Allgemeine Hinweise

ECB verrät Muster

Gleiche Klartextblöcke ergeben im ECB-Modus gleiche Geheimtextblöcke — der Angreifer sieht, was sich wiederholt, ohne den Schlüssel zu kennen. Für mehr als einen Block deshalb einen verkettenden Modus wie CBC nehmen.

Zweimal XOR hebt sich auf

\(p \oplus k \oplus k = p\): Dieselbe XOR-Verknüpfung verschlüsselt und entschlüsselt. S-Box und Permutation braucht man beim Entschlüsseln dagegen als Umkehrung — und alle Schritte in umgekehrter Reihenfolge.

Blocklänge ist nicht Schlüssellänge

AES-256 hat einen 256-Bit-Schlüssel, verschlüsselt aber trotzdem 128-Bit-Blöcke. Mehr Schlüsselbits bedeuten mehr Runden (14 statt 10), keine größeren Blöcke.

Videos