Auf einen Blick
- Ein Schlüssel für beide: Sender und Empfänger teilen denselben geheimen Schlüssel $k$.
- Sehr schnell: Hardware-effizient, oft dedizierte CPU-Instruktionen (AES-NI).
- Schwachstelle: Sicherer Austausch des Schlüssels ist das Kernproblem (Schlüsselverteilung).
- Standards: DES (unsicher), 3DES (Übergang), AES (heutiger Standard).
- Betriebsmodus zählt: ECB ist unsicher; CTR/GCM sind modern und parallelisierbar.
Kernkonzepte
Grundprinzip
Bei symmetrischer Verschlüsselung nutzen Sender $A$ und Empfänger $B$ denselben geheimen Schlüssel $k$:
$$c = E_k(m) \qquad m = D_k(c)$$
Da $E$ und $D$ mit demselben $k$ arbeiten, muss dieser vor der Kommunikation sicher ausgetauscht werden – das ist das Schlüsselverteilungsproblem. Bei $n$ Teilnehmern wären $\binom{n}{2} = \frac{n(n-1)}{2}$ Schlüsselpaare nötig.
Blockchiffren vs. Stromchiffren
| Blockchiffre | Stromchiffre | |
|---|---|---|
| Verarbeitung | feste Blöcke (z.B. 64/128 Bit) | bit-/byteweise |
| Prinzip | Permutation auf $\{0,1\}^n$ | Klartext XOR Schlüsselstrom |
| Beispiele | DES, 3DES, AES | RC4, ChaCha20, A5/1 |
| Padding nötig? | ja (außer CTR/CFB/OFB) | nein |
DES – Data Encryption Standard (1977)
- Blockgröße: 64 Bit
- Schlüssellänge: 64 Bit — davon 8 Paritätsbits → effektiv 56 Bit
- Struktur: 16 Runden Feistel-Netzwerk
- Schlüsselraum: $2^{56} \approx 7{,}2 \cdot 10^{16}$
- Heute per Bruteforce brechbar (in Stunden bis Tagen mit spezialisierter Hardware).
Feistel-Struktur: Block wird in $L_i, R_i$ geteilt. Pro Runde:
$$L_{i+1} = R_i \qquad R_{i+1} = L_i \oplus F(R_i, k_i)$$
Elegant: dieselbe Struktur ver- und entschlüsselt (Schlüsselreihenfolge umgekehrt); $F$ muss nicht invertierbar sein.
3DES (Triple-DES)
Um DES zu retten, wurde es dreifach angewendet:
$$c = E_{k_3}(D_{k_2}(E_{k_1}(m)))$$
- 3-Key-3DES ($k_1 \neq k_2 \neq k_3$): effektive Sicherheit $\approx 112$ Bit (Meet-in-the-Middle), nominal 168 Bit.
- 2-Key-3DES ($k_1 = k_3$): effektiv ca. 80 Bit, veraltet.
- Rückwärtskompatibel: mit $k_1 = k_2 = k_3$ ergibt sich reines DES.
AES – Advanced Encryption Standard (Rijndael, 2001)
| Variante | Schlüssel | Runden | Rundenschlüssel |
|---|---|---|---|
| AES-128 | 128 Bit | 10 | 11 × 128 Bit |
| AES-192 | 192 Bit | 12 | 13 × 128 Bit |
| AES-256 | 256 Bit | 14 | 15 × 128 Bit |
Blockgröße immer 128 Bit (angeordnet als 4×4-Byte-Matrix, „State"). AES ist keine Feistel-Chiffre, sondern ein Substitution-Permutation-Network (SPN).
Rundenoperationen:
SubBytes– nichtlineare S-Box-Substitution jedes BytesShiftRows– zyklisches Verschieben der ZeilenMixColumns– Matrixmultiplikation in $\mathrm{GF}(2^8)$ (entfällt in letzter Runde)AddRoundKey– XOR mit dem Rundenschlüssel
Schlüsselraum AES-128: $2^{128} \approx 3{,}4 \cdot 10^{38}$ – bruteforce-sicher auf absehbare Zeit.
Betriebsmodi (Modes of Operation)
| Modus | Kürzel | Eigenschaften |
|---|---|---|
| Electronic Codebook | ECB | deterministisch, keine Verkettung – unsicher, Muster sichtbar |
| Cipher Block Chaining | CBC | $c_i = E_k(m_i \oplus c_{i-1})$, IV nötig, sequenziell |
| Cipher Feedback | CFB | macht Blockchiffre zur Stromchiffre, kein Padding |
| Output Feedback | OFB | Schlüsselstrom vorberechenbar, kein Padding |
| Counter | CTR | $c_i = m_i \oplus E_k(\text{Nonce} \| i)$, parallelisierbar |
| Galois/Counter Mode | GCM | CTR + Authentifizierung (AEAD), modernster Standard |
ECB-Warnung: Zwei identische Klartextblöcke → identische Chiffratblöcke. Das klassische „Tux-Pinguin"-Beispiel zeigt, wie Bildstruktur trotz „Verschlüsselung" erkennbar bleibt.
Padding – PKCS#7
Blockchiffren brauchen Blöcke fester Größe. Fehlen $p$ Bytes, werden $p$ Bytes mit dem Wert $p$ angehängt:
- Bei 13 Bytes → 3 Bytes mit Wert
0x03anhängen. - Bei 16 Bytes (voll) → ganzer zusätzlicher Block mit 16×
0x10anhängen (sonst mehrdeutig!). - Beim Entschlüsseln: letztes Byte $p$ lesen, $p$ Bytes entfernen.
AEAD – Authenticated Encryption with Associated Data
AEAD-Verfahren (z.B. AES-GCM, ChaCha20-Poly1305) liefern gleichzeitig:
- Vertraulichkeit für den Klartext (Verschlüsselung),
- Integrität + Authentizität via Tag (MAC),
- optional Associated Data (Header o.ä.), die nur authentifiziert, nicht verschlüsselt wird.
Ergebnis: $(c, \text{tag})$ – Manipulation am Chiffrat wird beim Entschlüsseln erkannt.
Merksätze
🖊️ Handrechnung — klassische symmetrische Chiffren
Karte 1 · Verschiebe-Chiffre (Cäsar) per Hand
Die Cäsar-Chiffre ist der Einstieg in jede Klausur. Man arbeitet auf dem Restklassenring $\mathbb{Z}_{26}$ und codiert Buchstaben als Zahlen A=0, B=1, ..., Z=25. Der Schlüssel $k$ ist eine feste Verschiebung.
Verschlüsseln: $e_k(m) = (m + k) \bmod 26$ · Entschlüsseln: $d_k(c) = (c - k) \bmod 26$
Referenz-Codierung A=0..Z=25:
A=0 B=1 C=2 D=3 E=4 F=5 G=6 H=7 I=8 J=9 K=10 L=11 M=12
N=13 O=14 P=15 Q=16 R=17 S=18 T=19 U=20 V=21 W=22 X=23 Y=24 Z=25
Beispiel — verschlüsseln von HALLO mit $k = 3$:
H=7 → (7+3) mod 26 = 10 → K
A=0 → (0+3) mod 26 = 3 → D
L=11 → (11+3) mod 26 = 14 → O
L=11 → (11+3) mod 26 = 14 → O
O=14 → (14+3) mod 26 = 17 → R
→ Chiffrat: KDOOR
Rückrechnen mit $k = 3$: KDOOR → HALLO
K=10 → (10-3) mod 26 = 7 → H
D=3 → (3-3) mod 26 = 0 → A
O=14 → (14-3) mod 26 = 11 → L
O=14 → (14-3) mod 26 = 11 → L
R=17 → (17-3) mod 26 = 14 → O
Kryptoanalyse: Der Schlüsselraum hat nur $|K| = 26$ Werte, effektiv 25 (weil $k=0$ die Identität ist). Brute-Force in der Klausur: alle 25 Verschiebungen durchprobieren und die erkennbare deutsche/englische Wortfolge wählen.
Karte 2 · Substitutions-Chiffre per Hand
Statt einer festen Verschiebung wird jedem Klartext-Buchstaben ein beliebiger Chiffretext-Buchstabe zugeordnet. Der Schlüssel ist eine Permutation von $\{A, B, ..., Z\}$, also $|K| = 26! \approx 4{,}03 \cdot 10^{26}$ mögliche Schlüssel. Brute-Force scheitert — Frequenzanalyse jedoch nicht.
Klausur-Vorgehen: Die Substitutionstabelle ist gegeben, man wendet sie einfach zeichenweise an.
Beispieltabelle (Miller-Übungsaufgabe 1, gekürzter Auszug):
Klartext: a b c d e f g h i j k l m n o p q r s t u v w x y z
Chiffrat: q w e r t z u i o p a s d f g h j k l y x c v b n m
Entschlüsseln der Chiffrat-Folge s i k e l y o l s:
s → l i → h k → r e → c l → s y → t o → i l → s s → l
→ Klartext-Fragment: lhrcstisl
In der Klausur genau die vorgegebene Tabelle spaltenweise ablesen und Buchstabe für Buchstabe ersetzen. Kein Kopfrechnen nötig.
Kryptoanalyse per Frequenzanalyse (Deutsch):
Die häufigsten Buchstaben im Deutschen sind in fallender Reihenfolge etwa $E \approx 17{,}4\,\%$, $N \approx 9{,}8\,\%$, $I \approx 7{,}6\,\%$, $R \approx 7{,}0\,\%$, $S \approx 7{,}0\,\%$. Man zählt die Häufigkeiten im Chiffrat, ordnet der häufigsten Chiffratletter ein E zu, der zweithäufigsten ein N, usw., und rekonstruiert nach und nach die Substitutionstabelle. Bei kurzen Texten ist das ungenau, aber bei mehr als ca. 100 Zeichen fast immer erfolgreich.
Karte 3 · Skytala / Permutations-Chiffre per Hand
Bei der Skytala wird der Klartext in eine Matrix mit $k$ Zeilen zeilenweise eingetragen und spaltenweise ausgelesen. Der Schlüssel ist die Zeilenzahl $k$. Zum Entschlüsseln kehrt man den Prozess um.
Beispiel — Klartext DIESISTEINGEHEIMERTEXT mit $k = 5$:
Schritt 1 — zeilenweise in eine Matrix mit 5 Zeilen schreiben. Länge 22, also 5 Spalten (letzte Spalte kürzer):
Spalte: 1 2 3 4 5
Zeile 1: D I E S I
Zeile 2: S T E I N
Zeile 3: G E H E I
Zeile 4: M E R T E
Zeile 5: X T
Schritt 2 — spaltenweise auslesen ergibt das Chiffrat:
Spalte 1: D S G M X
Spalte 2: I T E E T
Spalte 3: E E H R
Spalte 4: S I E T
Spalte 5: I N I E
→ Chiffrat: DSGMXITEETEEHRSIETINIE
Entschlüsseln: Chiffratlänge $22$ mit $k = 5$ ergibt $\lceil 22/5 \rceil = 5$ Spalten (davon eine kurz). Man trägt spaltenweise ein und liest zeilenweise aus — Klartext wieder da.
Kryptoanalyse: Kleiner Schlüsselraum (nur so viele $k$ wie Textlänge). Brute-Force durch alle plausiblen $k$ führt in der Klausur schnell zum Ziel. Frequenzanalyse bringt nichts, weil die Buchstaben nur umsortiert werden.
Karte 4 · Vigenère per Hand (Miller-Beispiel)
Vigenère ist eine Cäsar-Chiffre mit rotierendem Schlüssel: jeder Klartextbuchstabe wird mit einem Buchstaben eines periodisch wiederholten Schlüsselworts der Länge $n$ verschoben.
Formel: $c_i = (m_i + k_{i \bmod n}) \bmod 26$
Miller-Beispiel: Klartext $m$ = ANGRIFFUMSECHS, Schlüsselwort $k$ = IMHO ($n = 4$).
Schritt 1 — Klartext in Zahlen:
A N G R I F F U M S E C H S
0 13 6 17 8 5 5 20 12 18 4 2 7 18
Schritt 2 — Schlüssel periodisch fortsetzen und in Zahlen umsetzen:
I M H O I M H O I M H O I M
8 12 7 14 8 12 7 14 8 12 7 14 8 12
Schritt 3 — Summe modulo 26 pro Position:
(0+8) mod 26 = 8 → i
(13+12) mod 26 = 25 → z
(6+7) mod 26 = 13 → n
(17+14) mod 26 = 5 → f
(8+8) mod 26 = 16 → q
(5+12) mod 26 = 17 → r
(5+7) mod 26 = 12 → m
(20+14) mod 26 = 8 → i
(12+8) mod 26 = 20 → u
(18+12) mod 26 = 4 → e
(4+7) mod 26 = 11 → l
(2+14) mod 26 = 16 → q
(7+8) mod 26 = 15 → p
(18+12) mod 26 = 4 → e
→ Chiffrat: c = iznfqrmiuelqpe
Entschlüsseln: mit $m_i = (c_i - k_{i \bmod n}) \bmod 26$ komplett symmetrisch — dieselbe Tabelle, Minus statt Plus.
Kryptoanalyse:
- Kasiski-Test — sich wiederholende Buchstabenfolgen im Chiffrat (Länge $\geq 3$) markieren. Die Abstände zwischen den Wiederholungen sind mit hoher Wahrscheinlichkeit Vielfache der Schlüssellänge $n$. Der $\gcd$ aller Abstände liefert einen guten Kandidaten für $n$.
- Frequenzanalyse pro Spalte — sobald $n$ bekannt ist, zerlegt man den Chiffretext in $n$ Teiltexte (jeder Teiltext ist mit einem festen $k_j$ Cäsar-verschlüsselt). Jeden Teiltext klassisch per Buchstabenhäufigkeit analysieren und den Schlüsselbuchstaben bestimmen.
Karte 5 · Affine Chiffre per Hand
Die affine Chiffre nutzt einen Schlüssel $k = (a, b)$ mit der Bedingung $\gcd(a, 26) = 1$ (sonst existiert keine eindeutige Umkehrung).
Verschlüsseln: $c = (a \cdot m + b) \bmod 26$ · Entschlüsseln: $m = a^{-1} \cdot (c - b) \bmod 26$, wobei $a^{-1}$ das multiplikative Inverse von $a$ modulo $26$ ist (per erweitertem Euklid).
Spezialfall: Für $a = 1$ wird die affine Chiffre zur klassischen Cäsar-Verschiebung $c = (m + b) \bmod 26$ mit $b$ als Verschiebung.
Klausur-Aufgabe: $k = (a, b) = (9, 13)$, Chiffrat $c$ = n c c n f z. Entschlüssle.
Schritt 1 — Chiffretext in Zahlen codieren:
n = 13 c = 2 c = 2 n = 13 f = 5 z = 25
Schritt 2 — $a^{-1} \bmod 26$ bestimmen:
Gesucht ist $a^{-1}$ mit $9 \cdot a^{-1} \equiv 1 \pmod{26}$. Erweiterter Euklid oder Probieren: $9 \cdot 3 = 27 = 26 + 1 \equiv 1 \pmod{26}$. Also $9^{-1} \equiv 3 \pmod{26}$.
Schritt 3 — Entschlüsselungsformel $m = 3 \cdot (c - 13) \bmod 26$ pro Zeichen:
c=13: 3·(13-13) = 3·0 = 0 → A
c=2 : 3·(2-13) = 3·(-11) = 3·15 mod 26 = 45 mod 26 = 19 → T
c=2 : 3·(2-13) = 19 → T
c=13: 3·(13-13) = 0 → A
c=5 : 3·(5-13) = 3·(-8) = 3·18 mod 26 = 54 mod 26 = 2 → C
c=25: 3·(25-13) = 3·12 = 36 mod 26 = 10 → K
→ Klartext: ATTACK
Faustregel für die Klausur:
- Prüfe $\gcd(a, 26) = 1$, sonst ist der Schlüssel ungültig.
- Bestimme $a^{-1} \bmod 26$ per erweitertem Euklid oder Probier-Tabelle.
- Wende $m_i = a^{-1} \cdot (c_i - b) \bmod 26$ zeichenweise an und decodiere zurück in Buchstaben.
Karte 6 · One-Time Pad (OTP) per Hand
Das One-Time Pad ist die einzige beweisbar perfekt sichere Chiffre (Shannon 1949) — unter drei strengen Bedingungen: der Schlüssel ist so lang wie die Nachricht, jedes Zeichen ist echt zufällig, und der Schlüssel wird nur ein einziges Mal verwendet.
Auf Bit-Ebene: $c = m \oplus k$, entschlüsselt via $m = c \oplus k$ — XOR ist selbstinvers.
Auf Buchstaben-Ebene: $c_i = (m_i + k_i) \bmod 26$ mit einem Schlüsselstrom gleicher Länge wie der Klartext.
Bit-Beispiel:
m = 1011 0100
k = 0110 1010
c = 1101 1110 (bitweises XOR)
Zurück: c ⊕ k = 1011 0100 = m
Klausur-Fangfrage: Chiffrat c = xzttreef ohne Schlüssel entschlüsseln. Antwort: unmöglich — perfekte Sicherheit bedeutet, dass jeder Klartext gleicher Länge (also z. B. ATTACKUP oder HALLOWAS) mit passendem $k$ dasselbe Chiffrat erzeugt. Ohne $k$ gibt es keinerlei Information über $m$.
Wichtiger Trick — modifiziertes OTP: Sobald der Schlüssel kürzer als die Nachricht ist und wiederholt wird, ist es kein OTP mehr, sondern Vigenère. Damit wird es angreifbar per Kasiski-Test + spaltenweiser Frequenzanalyse. Die Einmaligkeit und volle Länge des Schlüssels sind also nicht optional, sondern konstitutiv.
OTP vs. Vigenère: Formal identische Rechenvorschrift. Der einzige Unterschied ist die Schlüssellänge und -verwendung — $|k| = |m|$ und nur einmalig ergibt OTP; $|k| < |m|$ mit Periodizität ergibt Vigenère.
Karte 7 · AES — nur die Struktur merken, nicht per Hand rechnen
AES ist eine moderne Blockchiffre und wird in der Klausur bei Pagnia ausschließlich konzeptuell geprüft. In den Folien steht wörtlich: Details finden sich z. B. in [PP2016]. In den Übungen gibt es keine einzige AES-Handrechenaufgabe, nur AES-Programmieraufgaben (ECB-Bildvergleich, GCM in Java).
Kern-Kennzahlen:
- Blocklänge: 128 Bit (fest)
- Schlüssellänge: 128 / 192 / 256 Bit
- Rundenzahl: 10 / 12 / 14 Runden (je nach Schlüssellänge)
Die vier Layer pro Runde:
- Key Addition Layer — bitweise XOR-Verknüpfung des State mit dem Rundenschlüssel aus der Schlüsselexpansion.
- Byte Substitution Layer — jedes Byte wird durch eine feste, nichtlineare S-Box ersetzt (Konfusion).
- ShiftRows (Teil des Diffusion Layer) — Zeilen der State-Matrix werden zyklisch nach links verschoben.
- MixColumns (Teil des Diffusion Layer) — jede Spalte wird als Polynom über $GF(2^8)$ multipliziert (Diffusion).
Was in der Klausur gefragt werden kann:
- Nenne die 4 Layer und beschreibe in einem Satz, was jedes tut.
- Warum 10/12/14 Runden — wovon hängt das ab?
- Was ist die Blocklänge, was die Schlüssellänge?
Was in der Klausur nicht gefragt wird:
- State-Matrix von Hand durchrechnen
- S-Box-Einträge auswendig kennen
- MixColumns-Multiplikation im $GF(2^8)$ per Hand ausführen
- Rundenschlüssel-Expansion durchspielen
DES als konzeptueller Gegenpol: Pagnia behandelt DES ausführlicher als AES. DES ist eine Feistel-Chiffre mit 16 Runden, 64-Bit-Blöcken und effektiv 56-Bit-Schlüssel, mit acht festen S-Boxen und Expansion/Permutation pro Runde. Feistel-Struktur bedeutet: die Rundenfunktion muss nicht invertierbar sein, weil ver- und entschlüsseln die gleichen Schritte in umgekehrter Rundenschlüssel-Reihenfolge verwenden. Historisch wichtig; heute wegen 56 Bit Schlüssel per Brute-Force gebrochen (→ 3DES als Übergang, dann AES).
Karte 8 · Betriebsarten (ECB, CBC, CTR, GCM)
Eine Blockchiffre wie AES verschlüsselt genau einen Block (128 Bit). Für Nachrichten beliebiger Länge braucht man eine Betriebsart (Mode of Operation), die festlegt, wie mehrere Blöcke kombiniert werden.
ECB — Electronic Codebook:
Jeder Klartext-Block wird unabhängig mit demselben Schlüssel verschlüsselt: $c_i = e_k(m_i)$. Fatal: gleiche Klartext-Blöcke → gleiche Chiffretext-Blöcke. Strukturen im Klartext bleiben sichtbar. Klassisches Bild-Beispiel: ein ECB-verschlüsseltes Pinguin-Bild zeigt immer noch klar den Umriss des Pinguins, weil gleichfarbige Flächen im Original zu identischen Chiffretext-Blöcken werden.
CBC — Cipher Block Chaining:
Vor der Verschlüsselung wird jeder Klartext-Block mit dem vorherigen Chiffretext-Block XOR-verknüpft, für den allerersten Block dient ein zufälliger Initialisierungsvektor (IV): $c_i = e_k(m_i \oplus c_{i-1})$, mit $c_0 = IV$. Vorteil: gleiche Klartext-Blöcke ergeben unterschiedliche Chiffretext-Blöcke. Nachteil: rein sequentiell verschlüsselbar, da $c_i$ von $c_{i-1}$ abhängt (parallelisierbar ist nur die Entschlüsselung).
CTR — Counter Mode:
Ein Zähler (Counter) plus Nonce wird verschlüsselt und das Ergebnis mit dem Klartext-Block XOR-verknüpft: $c_i = m_i \oplus e_k(\text{Nonce} \| i)$. Effekt: die Blockchiffre wird zur Stromchiffre. Ver- und Entschlüsselung sind vollständig parallelisierbar, man kann direkt an beliebiger Stelle im Chiffrat lesen (random access). Nonce darf niemals mit demselben Schlüssel wiederverwendet werden, sonst bricht die Sicherheit sofort zusammen.
GCM — Galois/Counter Mode:
Kombiniert CTR-Verschlüsselung mit einer Authentifizierung im Galois-Feld $GF(2^{128})$. Ergebnis ist AEAD (Authenticated Encryption with Associated Data): sowohl Vertraulichkeit als auch Integrität und Authentizität werden garantiert. Manipulationen am Chiffretext werden beim Entschlüsseln erkannt (Tag stimmt nicht). Heute der empfohlene Standard-Modus für AES.
Klausur-Fragen zu Betriebsarten:
- Wieso ist ECB unsicher? Weil identische Klartext-Blöcke identische Chiffretext-Blöcke erzeugen und damit Struktur des Klartexts (z. B. Muster in Bildern, wiederkehrende Header) sichtbar bleibt.
- Wieso ist GCM empfehlenswert? Weil es zusätzlich zur Verschlüsselung (CTR) auch Integrität und Authentizität via Auth-Tag liefert, parallelisierbar und performant ist und den heutigen Best-Practice-Standard darstellt.
- CBC vs. CTR: CBC ist sequentiell verschlüsselbar (Kettenabhängigkeit), CTR ist voll parallel und erlaubt random access — auf Kosten strikter Nonce-Disziplin.
🧮 Rechenaufgaben mit Lösung
Klick auf eine Aufgabe, um den vollständigen Lösungsweg zu sehen.
R1 · Bruteforce-Angriff auf DES
Lösungsweg
DES hat einen effektiven Schlüsselraum von $2^{56}$.
$$2^{56} = 72\,057\,594\,037\,927\,936 \approx 7{,}21 \cdot 10^{16}$$
Bei $10^9$ Schlüsseln/s:
$$t = \frac{2^{56}}{10^9} = \frac{7{,}21 \cdot 10^{16}}{10^9} = 7{,}21 \cdot 10^{7}\ \text{s}$$
| Umrechnung | Wert |
|---|---|
| Sekunden | $7{,}21 \cdot 10^7$ |
| Minuten | $\approx 1{,}20 \cdot 10^6$ |
| Stunden | $\approx 20\,027$ |
| Tage | $\approx 834$ |
| Jahre | $\approx 2{,}3$ |
Bei $10^{12}$ Schlüsseln/s (spezialisierte Hardware):
$$t = \frac{7{,}21 \cdot 10^{16}}{10^{12}} = 7{,}21 \cdot 10^{4}\ \text{s} \approx 20\ \text{Stunden}$$
Im Durchschnitt genügt die Hälfte der Zeit (Schlüssel wird meist vor Ende gefunden).
Ergebnis: $\approx 2{,}3$ Jahre bzw. $\approx 20$ Stunden
R2 · Größe der AES-128-Rundenschlüssel
Lösungsweg
Struktur: initialer AddRoundKey + 10 Runden, jede mit AddRoundKey → $\mathbf{11}$ Rundenschlüssel.
Jeder Rundenschlüssel hat die Größe eines State-Blocks = 128 Bit.
| Rechnung | Ergebnis |
|---|---|
| $11 \cdot 128$ Bit | $1408$ Bit |
| $1408 / 8$ | $176$ Byte |
| $11 \cdot 16$ Byte | $176$ Byte |
Der AES-Key-Schedule expandiert also 16 Byte Eingangsschlüssel auf 176 Byte Schlüsselmaterial.
Ergebnis: 11 Rundenschlüssel = 1408 Bit = 176 Byte
R3 · XOR-Verschlüsselung (Vernam-Prinzip)
Verschlüsselung
| Bit-Position | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| $m$ | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
| $k$ | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
| $c = m \oplus k$ | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
$$c = 10010110_2$$
Entschlüsselung
| Bit-Position | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| $c$ | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
| $k$ | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
| $c \oplus k$ | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
Ergibt wieder $m = 01011010_2$. Grund: XOR ist selbstinvers, $x \oplus x = 0$ und $x \oplus 0 = x$, also $(m \oplus k) \oplus k = m \oplus 0 = m$.
Ergebnis: $c = 10010110_2 = \mathrm{0x96}$, Entschlüsselung liefert $m$ zurück.
R4 · PKCS#7-Padding berechnen
Fall 1: 13 Byte Klartext
Fehlend bis zum vollen Block:
$$p = 16 - (13 \bmod 16) = 16 - 13 = 3\ \text{Byte}$$
PKCS#7 füllt mit dem Byte-Wert der Padding-Länge auf:
| Position | 0..12 | 13 | 14 | 15 |
|---|---|---|---|---|
| Inhalt | Klartext (13 Byte) | 0x03 | 0x03 | 0x03 |
Fall 2: 16 Byte Klartext (voller Block)
$$p = 16 - (16 \bmod 16) = 16 - 0 = 16\ \text{Byte}$$
Es wird ein kompletter zusätzlicher Block aus 16× 0x10 angehängt. Grund: sonst wäre nicht unterscheidbar, ob das letzte Byte Nutzdaten oder Padding war.
Ergebnis: 13 Byte → 3× 0x03; 16 Byte → 16× 0x10.
R5 · Modus-Wahl für Datei-Streaming
Anforderungen prüfen
| Modus | Parallel? | Random Access? | Padding? | Bemerkung |
|---|---|---|---|---|
| ECB | ja | ja | ja | unsicher, Muster |
| CBC | nein (Verschl.) | Entschl. ja | ja | Fehlerfortpflanzung |
| CFB | nein | Entschl. ja | nein | seriell |
| OFB | nein | nein | nein | Keystream seriell |
| CTR | ja | ja | nein | ideal |
| GCM | ja | ja | nein | CTR + Auth |
Warum CTR / GCM?
Bei CTR wird der Blockindex $i$ direkt in den Counter kodiert:
$$c_i = m_i \oplus E_k(\text{Nonce} \| i)$$
Jeder Block kann unabhängig berechnet werden ⇒ voll parallelisierbar und Random-Access-fähig. GCM ergänzt einen Authentifizierungs-Tag und ist damit für die Praxis vorzuziehen.
Ergebnis: AES-GCM (oder AES-CTR ohne Auth) ist optimal.
R6 · ECB-Angriff sichtbar machen
Formaler Nachweis
Unter ECB gilt für jeden Block $i$:
$$c_i = E_k(m_i)$$
$E_k$ ist eine deterministische Permutation. Also:
$$m_i = m_j \;\Longrightarrow\; c_i = c_j$$
Zwei identische Klartextblöcke ergeben also zwangsläufig zwei identische Chiffratblöcke.
Praktische Konsequenz
Verschlüsselt man ein Bitmap-Bild (z.B. den Tux-Pinguin) blockweise mit AES-ECB, bleiben große monochrome Flächen als wiederkehrende Chiffratblöcke sichtbar. Der Umriss des Pinguins ist im „verschlüsselten" Bild deutlich erkennbar – ECB verschlüsselt Werte, aber nicht Struktur.
Abhilfe
- CBC/CTR/GCM verwenden – hier fließen IV bzw. Counter in jeden Block ein.
- Selbst identischer Klartext ergibt unterschiedliche Chiffratblöcke.
Ergebnis: Ja, unter ECB deterministisch sichtbar. Muster im Chiffrat = Muster im Klartext.
Übungsfragen
F1Warum ist der ECB-Modus unsicher?
F2Was ist der Vorteil von CTR gegenüber CBC?
- Parallelisierbar: Jeder Block $c_i = m_i \oplus E_k(\text{Nonce}\|i)$ ist unabhängig ⇒ Ver- und Entschlüsselung skalieren auf viele Kerne. CBC-Verschlüsselung ist strikt sequenziell (jeder Block braucht den vorigen).
- Random Access: Beliebige Position ent-/verschlüsselbar (wichtig für Festplatten, Streaming).
- Kein Padding: Blockchiffre wird zur Stromchiffre, Klartext beliebiger Länge.
- Nur Verschlüsselungsrichtung nötig: $E_k$ genügt, $D_k$ wird nie aufgerufen.
F3Wie viele Runden hat AES-128 / AES-192 / AES-256?
MixColumns weg.
F4Warum ist 3DES noch relevant, obwohl DES unsicher ist?
F5Was ist eine Feistel-Struktur, was macht sie besonders?
- Die Rundenfunktion $F$ muss nicht invertierbar sein – sie kann eine beliebige nichtlineare Funktion sein.
- Ver- und Entschlüsselung nutzen dieselbe Struktur, nur die Reihenfolge der Rundenschlüssel wird umgekehrt.
- Das spart Hardware/Code, weshalb DES, 3DES, Blowfish, Twofish etc. Feistel-basiert sind. AES hingegen ist ein SPN.
F6Was ist der Sinn von Padding?
- immer eine ganze Blockzahl entsteht,
- der Empfänger das Padding zuverlässig entfernen kann.
F7Wie groß ist der Schlüsselraum von DES bzw. AES-128?
- DES: $2^{56} \approx 7{,}21 \cdot 10^{16}$ Schlüssel – heute per Bruteforce brechbar.
- AES-128: $2^{128} \approx 3{,}40 \cdot 10^{38}$ Schlüssel – bruteforce-sicher weit über die absehbare Zukunft hinaus.
F8Was bedeutet AEAD (Authenticated Encryption with Associated Data)?
- Vertraulichkeit: der Klartext wird verschlüsselt.
- Integrität + Authentizität: ein kryptografischer Tag (MAC) beweist, dass Chiffrat und ggf. Metadaten nicht verändert wurden.
- Associated Data: zusätzlich mitauthentifizierte, aber unverschlüsselte Daten (etwa TCP/IP-Header, Session-IDs).
F9Warum ist AES eine SPN-Struktur (kein Feistel)?
- Vollständige Diffusion in wenigen Runden (Wide-Trail-Prinzip).
- Bessere Analysierbarkeit gegen differentielle und lineare Kryptoanalyse.
F10Was ist ein IV (Initialization Vector) und was passiert bei Wiederverwendung?
- CBC: IV wird mit erstem Klartextblock XOR-verknüpft; er muss unvorhersagbar sein.
- CTR/GCM: IV/Nonce initialisiert den Zähler; Einzigartigkeit pro Schlüssel ist zwingend.
F11Wie viele Schlüsselpaare braucht ein symmetrisches Netzwerk mit $n$ Teilnehmern?
F12Warum darf man DES nicht einfach zweimal anwenden (2DES)?
- Für alle $k_1$: $x = E_{k_1}(m)$ und speichert $(x, k_1)$ in einer Tabelle ($2^{56}$ Einträge).
- Für alle $k_2$: $y = D_{k_2}(c)$ und sucht Treffer $x = y$.