Cipher Block Chaining Mode
Cipher Block Chaining Mode (CBC) ist eine Betriebsart, in der Blockchiffre betrieben werden können. Vor dem Verschlüsseln eines Klartextblocks wird dieser erst mit dem im letzten Schritt erzeugten Geheimtextblock per XOR (exklusives Oder) verknüpft. Die Struktur von CBC ist in nachfolgender Abbildung dargestellt:
Die Verschlüsselung ist im CBC-Modus rekursiv definiert:
Die zugehörige Entschlüsselung ist im CBC-Modus hingegen nicht rekursiv:
Hierbei ist die Verschlüsselungsfunktion mit dem Schlüssel , ist die zugehörige Entschlüsselungsfunktion. bezeichnet den i. Klartextblock, den i. Geheimtextblock, ist der Initialisierungsvektor. bezeichnet das logische XOR.
Als Initialisierungsvektor (IV) benutzt man
- entweder einen Zeitstempel
- oder eine zufällige Zahlenfolge.
- Manche Anwendungen benutzen auch eine vorhersagbare, einfach aufsteigende Zahl, aber dies ist nicht sicher, weil fremde Personen unerwünscht einen Wasserzeichenangriff (watermark attack) auf solche Daten ausführen können.
- Das Modul dm-crypt benutzt zur Generierung des IV das ESS-Verfahren.
Wenn man diesen Initialisierungsvektor geheim überträgt, trägt es nicht zur Sicherheit des Algorithmus bei.
Der CBC-Mode hat einige wichtige Vorteile:
- Klartextmuster werden zerstört.
- Jeder Geheimtextblock hängt von allen vorherigen Klartextblöcken ab.
- Identische Klartextblöcke ergeben unterschiedliche Geheimtexte.
- Verschiedene Angriffe (Time-Memory-Tradeoff und Klartextangriffe) werden erschwert.
Da ein Geheimtextblock nur von dem vorherigen Block abhängt, verursacht ein beschädigter Geheimtextblock, wie beispielsweise ein Bitfehler bei der Datenübertragung, beim Entschlüsseln keinen allzugroßen Schaden, denn es werden nur der betroffene Klartextblock zu 50% und im darauffolgende Klartextblock ein Bit falsch im Klartext dechiffriert. Dies ist unmittelbar aus der Definition der Entschlüsselung und obiger Abbildung ersichtlich, da ein beschädigter Geheimtextblock nur die Klartextblöcke und beeinflusst und sich nicht unbeschränkt weiter verbreitet. Trotzdem kann diese beschränkte Vervielfachung nur eines einzigen Bitfehlers im Chiffrat bei CBC eine Vorwärtsfehlerkorrektur des Klartextes erschweren bzw. unmöglichen machen. Genauso verursacht ein beschädigter Initialisierungsvektor beim Entschlüsseln keinen allzugroßen Schaden, da dadurch nur der Klartextblock beschädigt wird.
Der CBC-Modus ist wesentlich sicherer als der ECB-Modus, vor allem wenn man keine zufälligen Texte hat. Unsere Sprache und andere Dateien, wie z. B. Video-Dateien, sind keinesfalls zufällig, weswegen der ECB-Mode im Gegensatz zum CBC-Mode Gefahren birgt. Generell sollte ein Blockchiffre immer im CBC-Modus betrieben werden - Ausnahmen sollten gut begründet sein.
Beispiel
Klartext: 01 10 ^ ^ | | Aufgeteilt in Blöcke: Schlüssel: 11 Init. Vektor (IV): 01
Zur Vereinfachung wird als Codierfunktion + (plus) verwendet (dementsprechend als Decodierfunktion - (minus)) und Überträge mitgezogen
Verschlüsselung
Verschlüsselung (Block 1):
IV = 01 01 = 00 = + Schlüssel = 00 + 11 = 11 =
Verschlüsselung (Block 2):
= 10 11 = 01 = + Schlüssel = 01 + 11 = 100 =
Verschlüsselter Text = = 11 100
Betrachtet man die Verschlüsselung von , sieht man, dass dazu benötigt wird. Generell bedeutet das, dass für eine Verschlüsselung von der Codeblock benötigt wird. Eine Parallelisierung des Kodiervorgangs fällt damit aus.
Entschlüsselung
Verschlüsselter Text: 11 100 ^ ^ | | Aufgeteilt in Blöcke:
Entschlüsselung (Block 1):
- Schlüssel = 11 - 11 = 00 = IV = 00 01 = 01 =
Entschlüsselung (Block 2):
- Schlüssel = 100 - 11 = 01 = C1 = 01 11 = 10 =
Klartext = = 01 10
Betrachtet man die Entschlüsselung von , sieht man, dass dafür nicht benötigt wird, sondern lediglich . Generell bedeutet das, dass für eine Dekodierung von nur benötigt wird. Damit ist eine Parallelisierung des Entschlüsselungsvorgangs möglich.
Integritätssicherung mit CBC, CBC-MAC

CBC kann auch zur Integritätssicherung benutzt werden, indem der letzte mit CBC verschlüsselte Block als MAC (dem sogenannten CBC-MAC oder CBC-Restwert) an die ursprüngliche unverschlüsselte Nachricht angehängt und diese samt diesem MAC versandt wird. Der Empfänger kann mit Hilfe des CBC-Algorithmus den CBC-MAC der empfangenen Nachricht berechnen und nun vergleichen, ob der gerade selbst berechnete Wert mit dem an der Nachricht angehängten übereinstimmt.
Literaturhinweis
- Abenteuer Kryptologie von Reinhard Wobst, ISBN 3-8273-1413-5