Das Mini-Verfahren der Robotik-AG
AFB I–IIDie Robotik-AG will Steuerbefehle zwischen zwei Mikrocontrollern verschlüsseln und entwirft dafür das Lernverfahren „AG-8“ — eine stark vereinfachte Blockchiffre mit 8-Bit-Blöcken. Eine Runde von AG-8 besteht aus drei Schritten:
- Der Block wird in zwei Nibbles zu je 4 Bit zerlegt; jedes Nibble wird mit der S-Box ersetzt.
- Die 8 Bits werden nach der Permutation umgelegt: Die Bits des linken Nibbles kommen auf die Positionen 1, 3, 5, 7, die Bits des rechten Nibbles auf die Positionen 2, 4, 6, 8 („Reißverschluss“).
- Der Block wird per XOR mit dem Rundenschlüssel verknüpft.
| Eingang \(x\) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| \(S(x)\) | C | 5 | 6 | B | 9 | 0 | A | D | 3 | E | F | 8 | 4 | 7 | 1 | 2 |
| Bitposition vorher | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| Bitposition nachher | 1 | 3 | 5 | 7 | 2 | 4 | 6 | 8 |
- Beschreiben Sie den Aufbau einer Runde von AG-8 und ordnen Sie die drei Schritte den Prinzipien Konfusion und Diffusion zu.
- Wenden Sie eine Runde von AG-8 mit dem Rundenschlüssel \(K_1\) auf den Klartextblock \(0110\,1001\) an. Geben Sie alle Zwischenergebnisse an.
- Erläutern Sie am Ergebnis aus b), wie der Empfänger den Block entschlüsselt, und warum die S-Box jeden Ausgangswert genau einmal enthalten muss.
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
Substitution: Der 8-Bit-Block wird in zwei Nibbles zerlegt; jedes wird nach der festen, nichtlinearen Tabelle der S-Box ersetzt. Das verschleiert den Zusammenhang zwischen Schlüssel und Geheimtext — Konfusion.
Permutation: Die Bits werden nach festem Schema umgelegt, sodass jedes Nibble seine Bits auf beide Nibbles verteilt. In der nächsten Runde wirkt ein Eingangsbit so auf beide S-Boxen — Diffusion.
Schlüsseladdition: XOR mit dem Rundenschlüssel bringt den geheimen Schlüssel ein; ohne diesen Schritt könnte jeder die Runde umkehren, denn S-Box und Permutation sind öffentlich (Kerckhoffs).
Erwartungshorizont zu Aufgabe b)
| Schritt | Block |
|---|---|
| Klartext | 0110 1001 (6 | 9) |
| S-Box | 1010 1110 (A | E) |
| Permutation | 1101 1100 |
| ⊕ K1 = 1011 0010 | 0110 1110 |
S-Box: \(S(6) = \mathrm{A}\), \(S(9) = \mathrm{E}\). Permutation: links \(1010\), rechts \(1110\) im Reißverschluss \(1\,1\;0\,1\;1\,1\;0\,0\). XOR stellenweise ergibt den Geheimtextblock \(0110\,1110\).
Erwartungshorizont zu Aufgabe c)
Der Empfänger kennt \(K_1\) und führt die Schritte in umgekehrter Reihenfolge aus:
1. XOR mit \(K_1\) (selbstinvers): \(0110\,1110 \oplus 1011\,0010 = 1101\,1100\).
2. Umkehrpermutation — Positionen 1, 3, 5, 7 bilden das linke, 2, 4, 6, 8 das rechte Nibble: \(1010\,1110\).
3. Umgekehrte S-Box: \(S^{-1}(\mathrm{A}) = 6\), \(S^{-1}(\mathrm{E}) = 9\) → \(0110\,1001\), der Klartext.
Schritt 3 ist nur möglich, weil jeder Wert 0 bis F in der S-Box genau einmal als Ausgang vorkommt (bijektiv). Hätten zwei Eingänge denselben Ausgang, wüsste der Empfänger nicht, welcher Klartext gemeint war — die Entschlüsselung wäre nicht eindeutig.
Gescannte Formulare in der Schul-Cloud
AFB II–IIIEine Schule speichert eingescannte, unterschriebene Einverständniserklärungen als Schwarz-Weiß-Bitmaps in einer Cloud. Die Dateien werden mit AES-128 im ECB-Modus verschlüsselt; alle Dateien nutzen denselben Schlüssel. Ein Schüler mit Zugriff auf den Speicher, aber ohne Schlüssel, lässt sich die Geheimtextblöcke einer Datei anzeigen. Die Tabelle zeigt die ersten acht Blöcke zu je 16 Bytes; der erste Block enthält den Dateikopf.
Die IT-Beauftragte schlägt vor, auf CBC umzustellen: „Damit es einfach bleibt, verwenden wir für alle Dateien den IV 00…00 und weiterhin denselben Schlüssel.“
| Block | Geheimtext (16 Bytes) |
|---|---|
| 1 | 9485C080 FBC5F8C9 2479B07D 05E6F730 |
| 2 | 8AF28601 42F786F4 09307C1A 3F7EAAAC |
| 3 | 8AF28601 42F786F4 09307C1A 3F7EAAAC |
| 4 | 7DF76B0C 1AB899B3 3E42F047 B91B546F |
| 5 | 8AF28601 42F786F4 09307C1A 3F7EAAAC |
| 6 | 7DF76B0C 1AB899B3 3E42F047 B91B546F |
| 7 | 7DF76B0C 1AB899B3 3E42F047 B91B546F |
| 8 | 8AF28601 42F786F4 09307C1A 3F7EAAAC |
- Analysieren Sie den Ausschnitt im Hinblick darauf, welche Informationen der Schüler ohne Schlüssel gewinnen kann.
- Implementieren Sie in Python eine Funktion
cbc_entschluesseln(bloecke, iv, D). Die Geheimtextblöcke und der IV sind ganze Zahlen,D(c)entschlüsselt einen einzelnen Block mit dem festen Schlüssel,a ^ bberechnet das bitweise XOR. Die Funktion gibt die Liste der Klartextblöcke zurück. - Beurteilen Sie den Vorschlag der IT-Beauftragten.
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
Es kommen nur drei verschiedene Geheimtextblöcke vor: Block 1 (Dateikopf), \(X =\) 8AF28601… (Blöcke 2, 3, 5, 8) und \(Y =\) 7DF76B0C… (Blöcke 4, 6, 7). Im ECB-Modus gilt \(c_i = E_k(p_i)\) mit demselben Schlüssel — gleiche Geheimtextblöcke bedeuten also gleiche Klartextblöcke.
In einem Schwarz-Weiß-Scan sind die häufigsten Blöcke einfarbige Flächen: 128 weiße bzw. 128 schwarze Pixel. Der Schüler kann den Blöcken daher mit hoher Wahrscheinlichkeit „Hintergrund“ (häufigster Block) und „andere einfarbige Fläche“ zuordnen und aus der Lage aller Blöcke den Umriss des Formulars, der Schrift und der Unterschrift rekonstruieren — wie beim bekannten ECB-Pinguin. Den Schlüssel erfährt er nicht, und Blöcke mit individuellen Mustern kann er nicht lesen.
Weil alle Dateien denselben Schlüssel nutzen, sind \(X\) und \(Y\) in jeder Datei gleich; außerdem verraten gleiche Blöcke an gleicher Stelle, welche Scans auf demselben Formular beruhen.
Erwartungshorizont zu Aufgabe b)
def cbc_entschluesseln(bloecke, iv, D):
klartext = []
vorher = iv # c0 = IV
for c in bloecke:
p = D(c) ^ vorher # D(c_i) XOR c_(i-1)
klartext.append(p)
vorher = c # c merken, nicht p
return klartextGetestet mit AG-8 aus Aufgabe 1 als Blockchiffre (\(E\), \(D\) mit \(K_1\)) und IV \(= \mathrm{3C}\): Die Klartextblöcke 69 69 69 00 FF ergeben im CBC-Modus B2 D8 23 DF CA (im ECB-Modus dagegen 6E 6E 6E 42 BE), und cbc_entschluesseln liefert wieder 69 69 69 00 FF.
Bewertet werden: Startwert IV, richtige Formel (erst entschlüsseln, dann XOR), Merken des Geheimtextblocks, Rückgabe der Liste.
Erwartungshorizont zu Aufgabe c)
Pro: Innerhalb einer Datei beseitigt CBC das Problem aus a): Jeder Block wird vor dem Verschlüsseln mit dem vorigen Geheimtextblock verknüpft, gleiche Pixelblöcke ergeben verschiedene Geheimtextblöcke; der Umriss ist nicht mehr zu sehen. Der Aufwand ist gering, die Verschlüsselung bleibt AES-128.
Contra: Mit festem IV und festem Schlüssel wird jede Datei deterministisch verschlüsselt. Zwei Dateien mit gleichem Anfang (dasselbe Formular, derselbe Dateikopf) haben identische Geheimtextblöcke bis zum ersten Unterschied — ein Angreifer erkennt, welche Formulare übereinstimmen und ab welchem Block sie sich unterscheiden. Eine Datei, die zweimal gespeichert wird, ist als identisch erkennbar. Außerdem schützt CBC nicht vor unbemerkten Veränderungen des Geheimtexts (keine Integrität).
Urteil: Der Vorschlag ist eine deutliche Verbesserung gegenüber ECB, aber in dieser Form nicht ausreichend. Empfehlung: für jede Datei einen neuen zufälligen IV erzeugen und offen zusammen mit dem Geheimtext speichern (er muss nicht geheim sein); zusätzlich die Integrität sichern, z. B. mit einem Prüfwert bzw. einem Modus, der Verschlüsselung und Echtheitsprüfung verbindet. Vollständig ist ein Urteil, das mindestens einen Vorteil und den Nachteil des festen IV begründet und zu einer klaren Empfehlung kommt.
