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\).
| \(a\) | \(b\) | \(a \oplus b\) |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Ein Byte Klartext und ein Byte Schlüssel.
Stelle für Stelle: gleiche Bits ergeben 0, verschiedene Bits ergeben 1.
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.
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.
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.
So verschlüsselt der Sender Block für Block.
Das Entschlüsseln \(D_k\) mit demselben Schlüssel hebt \(E_k\) auf.
XOR ist selbstinvers. Der Empfänger braucht für Block \(i\) also nur die Geheimtextblöcke \(c_i\) und \(c_{i-1}\).
Blockchiffre: Runde = S-Box + Permutation + XOR mit Rundenschlüssel; CBC: \(c_i = E_k(p_i \oplus c_{i-1})\), \(c_0 = \mathrm{IV}\)
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.
