CBC-Modus

CBC steht für Cipher Block Chaining.

Bei diesem Modus fließt das Ergebnis der Verschlüsselung früherer Blöcke in die Verschlüsselung des aktuellen Blockes mit ein. Jeder Block des verschlüsselten Textes hängt also nicht nur vom zugehörigen Klartextblock, sondern auch von allen vorherigen Klartextblöcken ab. Für den ersten Klartextblock wird zusätzlich ein Initialisierungsblock benötigt.

Die Verschlüsselung läuft wie folgt:

  1. Der erste Klartextblock wird verschlüsselt.

  2. Der resultierende Block verschlüsselten Textes wird mit dem nächsten Klartextblock mittels exklusivem Oder verknüpft und erst anschließend verschlüsselt.

  3. Punkt 2 wird so lange fortgesetzt, bis das Ende des Klartextes erreicht ist.

Die Entschlüsselung läuft analog ab:

  1. Der erste Block des verschlüsselten Textes wird entschlüsselt.

  2. Der nächste Block des verschlüsselten Textes wird zunächst entschlüsselt anschließend mit dem vorhergehenden Block des verschlüsselten Textes mittels exklusivem Oder verknüpft.

  3. Punkt 2 wird so lange fortgesetzt, bis das Ende des verschlüsselten Textes erreicht ist.

Dieses Verfahren hat allerdings immer noch den Nachteil, dass zwei Nachrichten bis zum ersten Unterschied den gleichen verschlüsselten Text ergeben. Insbesondere liefern also identische Nachrichten den gleichen verschlüsselten Text. Um das zu verhindern, verwendet man sogenannte Initialisierungsvektoren. Der Initialisierungsvektor ist ein Zufallswert, der unverschlüsselt mit der Nachricht übertragen werden kann. Vor der Verschlüsselung (bzw. Entschlüsselung) des ersten Blockes wird dieser Block mit dem Initialisierungsvektor mittels exklusivem Oder verknüpft. Anschließend läuft das Verfahren so ab wie oben beschrieben.

Im ECB-Modus wird jeder Block unabhängig von den anderen Blöcken verschlüsselt.