Cipher Block Chaining Mode - LinkFang.de





Cipher Block Chaining Mode


Cipher Block Chaining Mode (CBC Mode) 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.

Allgemeines

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 wie folgt 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 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.

Für die Sicherheit des Algorithmus ist es nicht notwendig, den Initialisierungsvektor geheim zu übertragen.

Der CBC-Mode hat einige wichtige Vorteile:

  • Klartextmuster werden zerstört.
  • 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 allzu groß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 allzu groß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 gefährlich ist.

Beispiel

Klartext
01 10
Aufgeteilt in Blöcke
01 = [math]B_1[/math], 10 = [math]B_2[/math]
Schlüssel
11=k
Init. Vektor (IV)
01

Zur Vereinfachung wird als Verschlüsselungsfunktion [math]E[/math] die binäre Addition und als Entschlüsselungsfunktion [math]D[/math] die binäre Subtraktion verwendet.

Verschlüsselung

Block 1:

  • [math]B_1\oplus IV = 01 \oplus 01 = 00 = C_{1}'[/math]
  • [math]E_k(C_1') = C_{1}'+k = 00 + 11 = 11 = C_1[/math]

Block 2:

  • [math]B_2\oplus C_1 = 10 \oplus 11 = 01 = C_{2}'[/math]
  • [math]E_k(C_2') = C_{2}'+k = 01 + 11 = 00 = C_2[/math]

Verschlüsselter Text:

  • [math]C_1 C_2 = 11 00[/math]

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.

Entschlüsselung

Block 1:

  • [math]D_k(C_1) = C_1 - k = 11 - 11 = 00 = C_{1}'[/math]
  • [math]C_{1}'\oplus IV = 00 \oplus 01 = 01 = B_1[/math]

Block 2:

  • [math]D_k(C_2) = C_2 - k = 00 - 11 = 01 = C_{2}'[/math]
  • [math]C_{2}'\oplus C1 = 01\oplus 11 = 10 = B_2[/math]

Klartext:

  • [math]B_1 B_2 = 01 10[/math]

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.

Integritätssicherung mit CBC, CBC-MAC

CBC kann auch zur Integritätssicherung benutzt werden, indem der Initialisierungsvektor auf Null gesetzt und 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.[1] 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. Falls eine mit CBC verschlüsselte Nachricht mit einem CBC-MAC gesichert werden soll, darf für die Generierung des CBC-MAC nicht derselbe Schlüssel verwendet werden wie für die Verschlüsselung. Würde derselbe Schlüssel verwendet, so wäre der MAC-Block gleich dem letzten Chiffratblock und ein Angreifer könnte unentdeckt die gesamte Nachricht mit Ausnahme des letzten Blocks verändern.

CBC-MAC ist nur für Nachrichten fester Länge sicher. Variiert die Nachrichtenlänge, kann das Verfahren durch Length-Extension angegriffen werden. Ein Angreifer kann aus zwei gültigen Nachricht-MAC-Paaren einen gültigen MAC für eine neue Nachricht (die Konkatenation der beiden Nachrichten) erzeugen. Zwei Modifikationen können diesen Angriff verhindern: Jeder Nachricht kann die Nachrichtenlänge vorangestellt werden oder der MAC-Block wird zusätzlich mit einem zweiten Schlüssel verschlüsselt.

Einzelnachweise

  1. Mihir Bellare, Joe Kiliany, Phillip Rogaway: The Security of the Cipher Block Chaining Message Authentication Code. In: Journal of Computer and System Science. Bd. 61, Nr. 3, 2000, S. 362–399 (Digitalisat (PDF; 466 KB) (Memento vom 5. Februar 2012 im Internet Archive)).

Literatur

  • Reinhard Wobst: Abenteuer Kryptologie. Methoden, Risiken und Nutzen der Datenverschlüsselung. 2., überarbeitete Auflage. Addison-Wesley Longman, Bonn u. a. 1998, ISBN 3-8273-1413-5.

Kategorien: Symmetrisches Kryptosystem

Quelle: Wikipedia - http://de.wikipedia.org/wiki/Cipher Block Chaining Mode (Vollständige Liste der Autoren des Textes [Versionsgeschichte])    Lizenz: CC-by-sa-3.0

Änderungen: Alle Bilder mit den meisten Bildunterschriften wurden entfernt. Ebenso alle zu nicht-existierenden Artikeln/Kategorien gehenden internen Wikipedia-Links (Bsp. Portal-Links, Redlinks, Bearbeiten-Links). Entfernung von Navigationsframes, Geo & Normdaten, Mediadateien, gesprochene Versionen, z.T. ID&Class-Namen, Style von Div-Containern, Metadaten, Vorlagen, wie lesenwerte Artikel. Ansonsten sind keine Inhaltsänderungen vorgenommen worden. Weiterhin kann es durch die maschinelle Bearbeitung des Inhalts zu Fehlern gerade in der Darstellung kommen. Darum würden wir jeden Besucher unserer Seite darum bitten uns diese Fehler über den Support mittels einer Nachricht mit Link zu melden. Vielen Dank!

Stand der Informationen: August 201& - Wichtiger Hinweis: Da die Inhalte maschinell von Wikipedia übernommen wurden, ist eine manuelle Überprüfung nicht möglich. Somit garantiert LinkFang.de nicht die Richtigkeit und Aktualität der übernommenen Inhalte. Sollten die Informationen mittlerweile fehlerhaft sein, bitten wir Sie darum uns per Support oder E-Mail zu kontaktieren. Wir werden uns dann innerhalb von spätestens 10 Tagen um Ihr Anliegen kümmern. Auch ohne Anliegen erfolgt mindestens alle drei Monate ein Update der gesamten Inhalte.