← Alle Klicktafeln

Klicktafel · Informatik · Sek II, erhöhtes Niveau · Kryptografie-Reihe, Teil 11

AES: Wie eine moderne Blockchiffre rechnet

Ein einziges Bit im Klartext ändern, und der halbe Geheimtext kippt. Wie schafft AES das? Ihr rechnet im Körper GF(28), zerlegt die S-Box, verfolgt eine echte AES-128-Verschlüsselung Runde für Runde und seht, warum man AES nie „pur“ benutzt.

Einstieg

Ein Bit Unterschied

Zwei Nachrichten, derselbe AES-128-Schlüssel 2b7e1516 28aed2a6 abf71588 09cf4f3c

KlartextByte 12 binär
Treffen um 17:000011 0111
Treffen um 16:000011 0110

Die beiden Klartexte unterscheiden sich in genau 1 von 128 Bit. Beide werden mit AES verschlüsselt.

Geheimtext 1: ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??

Geheimtext 2: ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??

Wie viele der 128 Bit im Geheimtext unterscheiden sich?

Station 1 · Bauplan

Was den alten Verfahren fehlt

Auftrag: Vergleicht die drei Verfahren aus der Reihe. Welche Eigenschaft fehlt allen dreien?

VerfahrenEin Klartextzeichen ändern …Häufigkeiten im Geheimtext
Cäsarändert genau 1 Geheimtextzeichenbleiben erhalten, nur verschoben
Vigenèreändert genau 1 Geheimtextzeichenverwischt, aber je Spalte wie Cäsar
Skytaleändert genau 1 Zeichen, nur an anderem Ortbleiben exakt erhalten

Konfusion

Der Zusammenhang zwischen Schlüssel und Geheimtext ist so verwickelt, dass man ihn nicht zurückrechnen kann. Werkzeug: ersetzen, nichtlinear.

Diffusion

Jedes Klartextbit wirkt auf viele Geheimtextbits. Statistische Muster verteilen sich. Werkzeug: umstellen und mischen.

Begriffe nach Claude E. Shannon, „Communication Theory of Secrecy Systems“, 1949.

Was fehlt allen drei Verfahren?

Station 2 · Block und Zustand

128 Bit als 4 × 4-Tabelle

Auftrag: Sagt voraus, in welcher Zelle das 7. Zeichen landet. Dann tippt die Zelle an und prüft.

Tippt eine Zelle an.

Das 7. Zeichen (Byte 6) landet in … (Zeilen und Spalten ab 0)

Blocklängeimmer 128 Bit = 16 Byte
Schlüssel128 / 192 / 256 Bit → 10 / 12 / 14 Runden
Längere Textein Blöcke teilen, Betriebsart nötig (Station 10)

Station 3 · Überblick

Der Rundenplan von AES-128

Auftrag: Lest den Plan von oben nach unten. Begründet, warum in der letzten Runde MixColumns fehlt.

Klartext (128 Bit) AddRoundKey (K₀) Runde 1 bis 9(9-mal) SubBytes ShiftRows MixColumns AddRoundKey (Kᵢ) Runde 10 SubBytes ShiftRows AddRoundKey (K₁₀) ↓ Geheimtext (128 Bit) Schlüssel Schlüssel-expansion K₁ … K₉ K₁₀

Warum fehlt MixColumns in Runde 10?

Station 4 · Werkzeug

Rechnen mit Bytes: der Körper GF(28)

Auftrag: Rechnet {57} · {13} zuerst selbst mit der xtime-Regel. Dann deckt die Rechnung auf.

Ein Byte ist ein Polynom mit Koeffizienten 0 oder 1:

{57} = 0101 0111 = x6 + x4 + x2 + x + 1

Addition = Koeffizienten mod 2 addieren = XOR. Plus und Minus sind dasselbe.

{57} ⊕ {83} = 0101 0111 ⊕ 1000 0011 = 1101 0100 = {D4}

Multiplikation = Polynome multiplizieren und den Rest bei Division durch

m(x) = x8 + x4 + x3 + x + 1 = {11B}

nehmen. Mal x (xtime): Bits eins nach links schieben. Fällt eine 1 links heraus, mit {1B} XOR-verknüpfen.

Weil m(x) irreduzibel ist, hat jedes Byte außer {00} ein Inverses: {53} · {CA} = {01}. Das braucht die S-Box auf der nächsten Station.

·

Station 5 · SubBytes

Die S-Box: Konfusion in einer Tabelle

Auftrag: Sucht ein Byte, das die S-Box auf sich selbst abbildet. Prüft dann, ob S(a ⊕ b) = S(a) ⊕ S(b) gilt.

Zeile = erste Hex-Ziffer, Spalte = zweite. Tippt eine Zelle an.

Jeder Eintrag: Inverses in GF(28), dann affine Abbildung der Bits:

b′i = bi ⊕ bi+4 ⊕ bi+5 ⊕ bi+6 ⊕ bi+7 ⊕ ci, Indizes mod 8, c = {63}

Linear? a = …, b = …

S(a ⊕ b) = …   S(a) ⊕ S(b) = …

Station 6 · ShiftRows MixColumns

Verschieben und mischen: Diffusion

Auftrag: Ändert ein einziges Byte der Spalte. Wie viele Bytes ändern sich nach MixColumns? Erst vermuten, dann tippen.

ShiftRows: Zeile r rückt r Plätze nach links

Jede Spalte enthält noch Bytes aus nur einer Spalte (A, B, C oder D).

MixColumns: jede Spalte mal eine feste Matrix

02030101010203010101020303010102
·
=

Tippt ein Byte der Eingabe an, es wird um 1 erhöht.

Station 7 · AddRoundKey

Aus 1 Schlüssel werden 11 Rundenschlüssel

Auftrag: Rechnet w4 für den Beispielschlüssel nach. Wozu dient Rcon?

Der Schlüssel liefert die Wörter w0 … w3 (je 4 Byte). Jedes weitere Wort ist

wi = wi−4 ⊕ t,   t = wi−1   oder, wenn i durch 4 teilbar ist,   t = SubWord(RotWord(wi−1)) ⊕ Rcon

w₄

Rcon = xj−1 in GF(28) für j = i/4: 01, 02, 04, …, 80, 1B, 36. Ohne Rcon ergäbe ein Schlüssel aus lauter gleichen Bytes nur Rundenschlüssel aus lauter gleichen Bytes; Rcon bricht solche Symmetrien.

Rundenschlüssel K0 … K10

Schlüssel 2b7e1516 28aed2a6 abf71588 09cf4f3c (FIPS 197, Anhang A.1)

AddRoundKey verknüpft den Zustand Byte für Byte per XOR mit Kr. Zweimal angewendet hebt es sich auf.

Station 8 · Simulation

AES-128 Schritt für Schritt

Auftrag: Vermutet vor jedem Klick, welche Bytes sich ändern. Vergleicht das Ergebnis mit FIPS 197, Anhang B.

Rundenschlüssel

Alle 41 Schritte, antippen zum Springen. Buchstaben: S SubBytes, R ShiftRows, M MixColumns, K AddRoundKey.

Station 9 · Zurück zum Einstieg

Wie schnell breitet sich ein Bit aus?

Auftrag: Schätzt erst, dann auflösen. Wählt danach selbst ein Bit im Klartext oder im Schlüssel.

Ein Klartextbit kippt. Nach welcher Runde unterscheiden sich alle 16 Bytes des Zustands?

Byte wählen (0–15), dann Bit (7 = höchstes):

Klartext „Treffen um 17:00“, Schlüssel wie im FIPS-Beispiel.

Station 10 · Lange Nachrichten

Ein Bild, Block für Block verschlüsselt

Auftrag: Erklärt, warum man im ECB-Bild den Leuchtturm noch erkennt, obwohl jeder Block mit AES verschlüsselt ist.

Original
1 Byte je Pixel
AES-ECB
jeder Block einzeln
AES-CBC
Blöcke verkettet
Jede Bildzeile: 128 Pixel = 8 Blöcke zu 16 Byte.

ECB (Electronic Codebook): jeder Block einzeln. Gleiche Klartextblöcke ergeben gleiche Geheimtextblöcke.

Ci = AESK(Pi)

CBC (Cipher Block Chaining): vorher mit dem vorigen Geheimtextblock XOR-verknüpfen, am Anfang mit einem zufälligen IV.

Ci = AESK(Pi ⊕ Ci−1), C0 = IV

CTR (Counter): einen Zähler verschlüsseln und das Ergebnis als Schlüsselstrom per XOR auf die Daten legen. Ähnlich wie beim One-Time-Pad, aber der Strom ist berechnet, nicht zufällig.

Ci = Pi ⊕ AESK(Nonce ‖ i)

Station 11 · Angriff ohne Schlüssel

Geheim heißt nicht unverfälscht

Auftrag: Eve kennt den Schlüssel nicht, aber das Format der Überweisung. Vermutet, dann lasst Eve angreifen.

Alice → Bank, verschlüsselt mit AES-128 im CTR-Modus

Geheimtext, den Eve abfängt (Hex):

Eve weiß: Byte 16 ist die Tausenderstelle, bei Beträgen unter 1000 steht dort „0“. Sie verknüpft das Byte mit „0“ ⊕ „neue Ziffer“:

Die Bank entschlüsselt mit dem richtigen Schlüssel:

Kann Eve den Betrag gezielt ändern?

Station 12 · Einordnen

Wie sicher ist AES heute?

Auftrag: Rechnet den Aufwand für das Durchprobieren. Ordnet dann ein: Welcher Angriff ist praktisch am gefährlichsten?

Alle 2128 ≈ 3,4 · 1038 Schlüssel durchprobieren

Mathematisch

Bester bekannter Angriff auf volles AES-128 (Biclique, 2011): 2126,1 statt 2128 Schritte, nur rund 3,7-mal schneller.

Seitenkanal

Angriff auf die Umsetzung, nicht auf die Mathematik: Laufzeit, Cache, Stromverbrauch. Bernstein zeigte 2005, wie Zeitmessungen an einem Server den Schlüssel verraten.

Quantencomputer

Grovers Algorithmus durchsucht N Schlüssel in rund √N Schritten, etwa 264 für AES-128, die sich aber schlecht aufteilen lassen. NIST plant keinen Umstieg weg von AES.

Was ist heute praktisch am gefährlichsten?

Abschluss

Check

Auftrag: Entscheidet euch zu jeder Frage zuerst, dann auflösen und begründen.

1. Welcher Schritt verhindert, dass man AES als lineares Gleichungssystem lösen kann?

2. Eine Datei mit vielen gleichen 16-Byte-Blöcken wird mit AES-ECB verschlüsselt. Was erfährt ein Angreifer ohne Schlüssel?

3. Warum nutzt TLS 1.3 AES-GCM und nicht einfach AES-CTR?

Hinweise für Lehrkräfte

Jahrgang und Zeit

Qualifikationsphase, Informatik auf erhöhtem Anforderungsniveau (Leistungskurs). Vorwissen: Binär- und Hexadezimalzahlen, XOR, symmetrisch/asymmetrisch, gern die Tafeln Vigenère, One-Time-Pad und Schlüsselaustausch.

90 Minuten (straff): Einstieg, Stationen 1–3, 5, 6, 8–10, Check; Station 4 und 7 nur als Regel nennen.
2 × 90 Minuten: alle Stationen; dazwischen {57}·{13} und w4 von Hand rechnen.
Projekt (4–6 Stunden): AES-128 selbst implementieren und gegen FIPS 197, Anhang C.1 testen: Schlüssel 000102…0f, Klartext 00112233…eeff, Geheimtext 69c4e0d8 6a7b0430 d8cdb780 70b4c55a.

Lernziele

  • Konfusion und Diffusion erklären und den alten Verfahren zuordnen.
  • Den Zustand und den Rundenplan von AES-128 beschreiben.
  • In GF(28) addieren und mit xtime multiplizieren.
  • Die Aufgabe jedes Rundenschritts begründen, auch das fehlende MixColumns in Runde 10.
  • Den Lawineneffekt messen und mit ShiftRows und MixColumns erklären.
  • ECB, CBC, CTR und GCM unterscheiden und Fehler in der Anwendung erkennen.
  • Die Sicherheit von AES begründet einordnen (Durchprobieren, Kryptoanalyse, Seitenkanäle, Quantencomputer).

Typische Fehlvorstellungen

  • „AES ist sicher, weil der Algorithmus geheim ist.“ Richtig ist: AES ist seit 2001 öffentlich (Kerckhoffs).
  • „AES-Daten sind automatisch fälschungssicher.“ Richtig ist: Erst ein Prüfwert (GCM) schützt vor Änderungen.
  • „Ein guter Algorithmus macht jede Betriebsart sicher.“ Richtig ist: ECB verrät Muster.
  • „AES-256 verschlüsselt größere Blöcke.“ Richtig ist: Der Block hat immer 128 Bit; mit dem Schlüssel wachsen nur Rundenzahl und Schlüsselexpansion.
  • „CTR ist ein One-Time-Pad.“ Richtig ist: Der Schlüsselstrom wird aus einem kurzen Schlüssel berechnet; ein Zählerwert darf mit demselben Schlüssel nie zweimal vorkommen.
  • „Quantencomputer knacken jede Verschlüsselung.“ Richtig ist: Grover halbiert grob die Schlüssellänge; RSA und Diffie-Hellman sind viel stärker betroffen.
  • „Hexadezimal ist schon verschlüsselt.“ Richtig ist: Das ist nur eine Schreibweise.

Was vereinfacht ist

  • Die Tafeln zeigen nur AES-128 und nur das Verschlüsseln. Die Entschlüsselung nutzt InvSubBytes, InvShiftRows und InvMixColumns; dass Runde 10 ohne MixColumns auskommt, gibt ihr denselben Aufbau.
  • Station 2 füllt fehlende Zeichen mit Leerzeichen auf; echte Anwendungen nutzen ein festgelegtes Auffüllen (Padding) oder CTR/GCM ohne Padding.
  • Das Bild auf Station 10 hat 1 Byte je Pixel ohne Dateikopf.
  • Station 11: CTR mit 8 Byte Nonce und 8 Byte Zähler; GCM wird nur beschrieben.
  • Die Rechnung ist nicht gegen Seitenkanäle geschützt, sie ist nur zum Lernen da.

An der Tafel

Adresse mit #tafel startet den Tafelmodus, #tafel-9 die Simulation. → / Bild↓ weiter, ← / Bild↑ zurück, Esc beendet. Die Seite speichert nichts im Browser und lädt nichts nach.

Die AES-Rechnung der Seite ist mit test/aes.test.cjs gegen die Beispiele aus FIPS 197 geprüft. Zum Weiterarbeiten: CrypTool.