|
|
Lexikon auf Ihrer Homepage |
|
Lexikon als Lesezeichen hinzufügen |
Cipher Block Chaining Mode (CBC) ist eine Betriebsart, in der Blockchiffren betrieben werden können. Vor dem Verschlüsseln eines Klartextblocks wird dieser zunächst mit dem im vorhergehenden Schritt erzeugten Geheimtextblock per XOR (exklusives Oder) verknüpft.
Inhaltsverzeichnis |
Die Struktur der Verschlüsselung im CBC-Modus ist in nachfolgender Abbildung dargestellt:
Man kann dieses Diagramm auch mathematisch in Formeln ausdrücken, bezeichne dazu <math>E_K</math> die Verschlüsselungsfunktion mit dem Schlüssel <math>K</math>, sei <math>D_K</math> die zugehörige Entschlüsselungsfunktion. Bezeichne <math>P_i</math> den i-ten Klartextblock, <math>C_i</math> den i-ten Geheimtextblock und sei <math>IV</math> der Initialisierungsvektor; in der Regel wird <math>C_0 = IV</math> definiert. Außerdem bezeichne <math>\oplus</math> das logische XOR. Dann ist die Verschlüsselung im CBC-Modus wiefolgt rekursiv definiert:
<math> \forall i \in \mathbb{N}^+ : C_i = E_K(P_i \oplus C_{i-1}) </math>
Die Struktur der Entschlüsselung im CBC-Modus ist in nachfolgender Abbildung dargestellt:
Die zugehörige Entschlüsselung ist im CBC-Modus hingegen nicht rekursiv und lautet mit den gleichen Bezeichnungen wie oben:
<math> \forall i \in \mathbb{N}^+ : P_i = D_K(C_i) \oplus C_{i-1} </math>
Als Initialisierungsvektor (IV) benutzt man
Wenn man diesen Initialisierungsvektor geheim überträgt, trägt es nicht zur Sicherheit des Algorithmus bei.
Der CBC-Mode hat einige wichtige Vorteile:
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 und der darauffolgende Klartextblock falsch dechiffriert. Dies ist unmittelbar aus der Definition der Entschlüsselung und obiger Abbildung ersichtlich, da ein beschädigter Geheimtextblock <math>C_i</math> nur die Klartextblöcke <math>P_i</math> und <math>P_{i+1}</math> 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öglich machen. Genauso verursacht ein beschädigter Initialisierungsvektor beim Entschlüsseln keinen allzugroßen Schaden, da dadurch nur der Klartextblock <math>P_1</math> 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 Gefahren birgt.
Zur Vereinfachung wird als Verschlüsselungsfunktion die binäre Addition und als Entschlüsselungsfunktion die binäre Subtraktion verwendet.
Block 1:
Block 2:
Verschlüsselter Text:
Betrachtet man die Verschlüsselung von <math>B_2</math>, sieht man, dass dazu <math>C_1</math> benötigt wird. Generell bedeutet das, dass für eine Verschlüsselung von <math>B_i</math> der Chiffratblock <math>C_{i-1}</math> benötigt wird. Eine Parallelisierung des Verschlüsselungsvorgangs fällt damit aus.
Block 1:
Block 2:
Klartext:
Betrachtet man die Entschlüsselung von <math>C_2</math>, sieht man, dass <math>B_1</math> dafür nicht benötigt wird, sondern lediglich <math>C_1</math>. Generell bedeutet das, dass für eine Entschlüsselung von <math>C_i</math> nur <math>C_{i-1}</math> benötigt wird. Damit ist eine Parallelisierung des Entschlüsselungsvorgangs möglich.
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.