Zum Hauptinhalt springen

Übungen zur Blockchiffre

ECB-Modus

Lösen Sie diese Übungen von Hand. Als Hilfsmittel ist nur der 👉 Pentacode Text-Editor erlaubt.

Aufabe 1

Verschlüsseln Sie den Text BUCHSTABENSPIELE mit dem Schlüssel AKRONYM. Wie lautet der Geheimtext?

Lösung anzeigen
C?QG.MLCN--?PHMN
Aufgabe 2

Entschlüssen Sie den Geheimtext XWVJZWEKK,XWVJIK mit dem Schlüssel VVXKZ. Wie lautet der Klartext?

Lösung anzeigen
NANA ASS ANANAS.

CBC-Modus

Lösen Sie diese Übungen von Hand. Als Hilfsmittel ist nur der 👉 Pentacode Text-Editor erlaubt.

Aufgabe 1

Verschlüsseln Sie den Text WINTER mit dem Schlüssel NY und dem IV AZ. Wie lautet der Pentacode-Geheimtext?

Lösung anzeigen

Block 1:

  • p: 10111 01001
  • IV: 00001 11010
  • nach XOR mit IV: 10110 10011
  • k: 01110 11001
  • c: 11000 01010

Block 2:

  • p: 01110 10100
  • IV: 11000 01010
  • nach XOR mit IV: 10110 11110
  • c: 11000 00111

Block 3:

  • p: 00101 10010
  • IV: 11000 00111
  • nach XOR mit IV: 11101 10101
  • c: 10011 01100

Resultat:
XJXGSL

Aufgabe 2

Entschlüsseln Sie den Text NNHDFBA mit dem Schlüssel BE und beliebigem IV.

Lösung anzeigen

Block 1:

  • c: 01110 01110
  • k: 00010 00101
  • nach XOR mit Schlüssel: 01100 01011
  • IV: beliebig...
  • p: abhängig von IV

Block 2:

  • c: 01000 00100
  • nach XOR mit Schlüssel: 01010 00001
  • IV: 01110 01110
  • p: 00100 01111

Block 3:

  • c: 00110 00010
  • nach XOR mit Schlüssel: 00100 00111
  • IV: 01000 00100
  • p: 01100 00011

Block 4:

  • c: 00001
  • nach XOR mit Schlüssel: 00011
  • IV: 00110
  • p: 00101

Resultat:
??DOLCE (die ersten beiden Zeichen sind unbekannt)

Vertiefungsaufgaben

ECB und CBC im Vergleich

Verschlüsseln Sie den Klartext BORABORA mit dem Schlüssel RABE. Verwenden Sie dazu die 👉 XOR-Blockchiffre, und zwar zuerst im ECB-Modus und dann im CBC-Modus. Verwenden Sie beim CBC-Modus der Vergleichbarkeit halber den Initialvektor ABCD.

Beantworten Sie anschliessend der Reihe nach die unten stehenden Fragen. Notieren Sie zuerst Ihre Antwort und klappen Sie anschliessend die Frage auf, um den Lösungsvorschlag anzusehen.

Frage 1: Hier passieren einige interessante Dinge. Was fällt Ihnen auf?

Beobachtung 1: Im ECB-Modus erhalten wir den Geheimtext PNPDPNPD - also zweimal hintereinander die Buchstabenfolge PNPD. Auch im Klartext BORABORA finden wir zweimal hintereinander die Buchstabenfolge BORA. Im CBC-Modus sehen wir diese Symmetrie nicht mehr.

Beobachtung 2: Dafür taucht beim CBC-Modus im zweiten Block plötzlich der Initialvektor wieder auf - und zwar egal, mit welchen Initialvektor wir es versuchen.

Frage 2: Wie erklären Sie sich die Beobachtung 1 aus der Antwort zur ersten Frage?

Im ECB-Modus wird jeder Block mit den gleichen Schlüssel verschlüsselt. Wenn also zwei Klartextblöcke identisch sind, dann werden auch die resultierenden Geheimtextblöcke identisch sein. Da der Schlüssel RABE genau halb so lang ist wie der Klartext BORABORA verschlüsseln wir also zweimal den Klartextblock BORA mit dem Schlüssel RABE und erhalten somit zweimal den Geheimtextblock PNPD.

Beim CBC-Modus sehen wir dieses Verhalten nicht mehr, weil wir dort für jeden Block nn den Output des vorangehenden Blocks n1n-1 als zusätzlichen Input verwenden. Tatsächlich ist dies genau die Idee hinter diesem Verknüpfen von Blöcken.

⭐️ Frage 3: Wie erklären Sie sich die Beobachtung 2 aus der Antwort zur ersten Frage?

Für diese Erklärung verwenden wir für die XOR-Operation das mathematische Symbol \oplus. Der Leserlichkeit halber verzichten wir zudem darauf, den Text jeweils explizit ins Binärformat umzuwandeln. Tatsächlich ist die XOR-Funktion aber natürlich nicht für Buchstaben, sonder nur für Binärzahlen definiert!

Mithilfe der 👉 Wahrheitstabelle für die XOR-Verschlüsselung können Sie sich leicht davon überzeugen, dass folgende Gesetze gelten:

  • xx=0x \oplus x = 0
  • x0=0x=xx \oplus 0 = 0 \oplus x = x

Wenn wir nun das Resultat für den ersten Block berechnen wollen, so nehmen wir zuerst den Klartextblock BORA und den Initialvektor ABCD und rechnen  BORA  ABCD \text{ BORA } \oplus \text{ ABCD }. Diesen Input verschlüsseln wir mit der XOR-Verschlüsselung mit dem Schlüsse RABE und erhalten somit insgesamt

 BORA  ABCD  RABE \text{ BORA } \oplus \text{ ABCD } \oplus \text{ RABE }

Für den zweiten Block verwenden wir diesen Output des ersten Blocks nun aber auch wieder als Input. Auch hier ist der Klartextblock wieder BORA und der Schlüssel wieder RABE. Also erhalten wir für den zweiten Block folgenden Geheimtext:

 BORA ( BORA  ABCD  RABE ) RABE \text{ BORA } \oplus (\text{ BORA } \oplus \text{ ABCD } \oplus \text{ RABE }) \oplus \text{ RABE }

Wenn wir die Klammern entfernen (die dienen lediglich der Übersicht), so erhalten wir folgende Berechnung:

 BORA  BORA  ABCD  RABE  RABE \text{ BORA } \oplus \text{ BORA } \oplus \text{ ABCD } \oplus \text{ RABE } \oplus \text{ RABE }

Weil aber xx=0x \oplus x = 0 gilt, können wir diese Berechnung wie folgt kürzen:

0 ABCD 00 \oplus \text{ ABCD } \oplus 0

Und weil wir wissen, dass x0=0x=xx \oplus 0 = 0 \oplus x = x gilt, so ergibt sich:

0 ABCD 0= ABCD 0 \oplus \text{ ABCD } \oplus 0 = \text{ ABCD }

Dieses Phänomen tritt also nur deshalb auf, weil wir als Verschlüsselungsmechanismus die XOR-Verschlüsselung verwenden, die "zufällig" auch für die Verkettung verwendet wird. Bei echten Anwendungen von CBC verwenden wir andere, sicherere Verschlüsselungsmechanismen und werden diese Regelmässigkeit deshalb dort nicht antreffen.

CBC: Initialvektor bei der Entschlüsselung

Auf den ersten Blick erstaunlich ist die Tatsache, dass die Entschlüsselung mit falschem Initialvektor (IV) nur dazu führt, dass der erste Klartext-Block unleserlich ist, während die restlichen Blöcke korrekt entschlüsselt werden. Weshalb ist das so?

Notieren Sie zuerst Ihre Antwort und vergleichen Sie anschliessend mit dem Lösungsvorschlag.

Lösungsvorschlag

Bei der verschlüsselung verwenden wir den IV als zusätzlichen Input, wenn wir den ersten Block verschlüsseln. Da wir für jeden weiteren Block nn den Output des vorangehenden Blocks n1n-1 als zusätzlichen Input verwenden, zieht sich bei der Verschlüsselung jede Veränderung am IV durch die gesamte Kette hindurch.

Bei der entschlüsselung passiert alles in umgekehrter Reihenfolge. Den Klartext eines Blocks nn erhalten wir, indem wir den Geheimtext dieses Blocks zuerst mit dem Schlüssel entschlüsseln und das Resultat anschliessend mit dem Geheimtext des vorangehenden Blocks n1n-1 (und nicht etwa mit dem Resultat seiner Entschlüsselung) XOR-verrechnen. Der ursprünglich verwendete IV ist in den beiden Geheimtexten bei der Verschlüsselung "hineingerechnet" worden und wir müssen ihn in diesem Moment für die Entschlüsselung nicht kennen.

Lediglich für den ersten Block haben wir keinen solchen vorangehenden Block n1n-1. Hier müssen wir den ursprünglich verwendeten IV kennen und anwenden. Wenn wir hier den falschen IV verwenden, dann wir der erste Block unleserlich - jedoch hat dies eben keinen Einfluss auf alle anderen Blocks.