Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Cipher Block Chaining Mode – Wikipedia
Cipher Block Chaining Mode – Wikipedia
aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Cipher Block Chaining)

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. Der Modus wurde 1976 von William F. Ehrsam, Carl H. W. Meyer, John L. Smith und Walter L. Tuchman veröffentlicht.[1]

Allgemeines

[Bearbeiten | Quelltext bearbeiten]

Die Struktur der Verschlüsselung im CBC-Modus ist in nachfolgender Abbildung dargestellt:

CBC-Verschlüsselung

Man kann dieses Diagramm auch mathematisch in Formeln ausdrücken, bezeichne dazu E K {\displaystyle E_{K}} {\displaystyle E_{K}} die Verschlüsselungsfunktion mit dem Schlüssel K {\displaystyle K} {\displaystyle K}, sei D K {\displaystyle D_{K}} {\displaystyle D_{K}} die zugehörige Entschlüsselungsfunktion. Bezeichne P i {\displaystyle P_{i}} {\displaystyle P_{i}} den i-ten Klartextblock, C i {\displaystyle C_{i}} {\displaystyle C_{i}} den i-ten Geheimtextblock und sei I V {\displaystyle IV} {\displaystyle IV} der Initialisierungsvektor; in der Regel wird C 0 = I V {\displaystyle C_{0}=IV} {\displaystyle C_{0}=IV} definiert. Außerdem bezeichne ⊕ {\displaystyle \oplus } {\displaystyle \oplus } das logische XOR. Dann ist die Verschlüsselung im CBC-Modus wie folgt rekursiv definiert:

∀ i ∈ N + : C i = E K ( P i ⊕ C i − 1 ) {\displaystyle \forall i\in \mathbb {N} ^{+}:C_{i}=E_{K}(P_{i}\oplus C_{i-1})} {\displaystyle \forall i\in \mathbb {N} ^{+}:C_{i}=E_{K}(P_{i}\oplus C_{i-1})}

Die Struktur der Entschlüsselung im CBC-Modus ist in nachfolgender Abbildung dargestellt:

CBC Entschlüsselung

Die zugehörige Entschlüsselung ist im CBC-Modus hingegen nicht rekursiv und lautet mit den gleichen Bezeichnungen wie oben:

∀ i ∈ N + : P i = D K ( C i ) ⊕ C i − 1 {\displaystyle \forall i\in \mathbb {N} ^{+}:P_{i}=D_{K}(C_{i})\oplus C_{i-1}} {\displaystyle \forall i\in \mathbb {N} ^{+}:P_{i}=D_{K}(C_{i})\oplus C_{i-1}}

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.
  • Eine Umsortierung von Chiffratblöcken führt zu fehlerhaften Klartextblöcken.

Jedoch hat der CBC-Mode auch einige Nachteile:

  • Die Verschlüsselung ist nicht parallelisierbar, da C i − 1 {\displaystyle C_{i-1}} {\displaystyle C_{i-1}} bekannt sein muss, aber sehr wohl die Entschlüsselung.
  • Bitfehler im Chiffrat multiplizieren sich beim Entschlüsseln im Klartext.
  • Das Chiffrat ist veränderbar und annähernd XOR-homorph.[2]

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: Der Klartextblock P i {\displaystyle P_{i}} {\displaystyle P_{i}} wird zerstört und im Klartextblock P i + 1 {\displaystyle P_{i+1}} {\displaystyle P_{i+1}} wird das respektive Bit negiert. Dies ist unmittelbar aus der Definition der Entschlüsselung und obiger Abbildung ersichtlich, da ein beschädigter Geheimtextblock C i {\displaystyle C_{i}} {\displaystyle C_{i}} nur die Klartextblöcke P i {\displaystyle P_{i}} {\displaystyle P_{i}} und P i + 1 {\displaystyle P_{i+1}} {\displaystyle P_{i+1}} 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 P 1 {\displaystyle P_{1}} {\displaystyle P_{1}} 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

[Bearbeiten | Quelltext bearbeiten]
Klartext
01 10
Aufgeteilt in Blöcke
01 = B 1 {\displaystyle B_{1}} {\displaystyle B_{1}}, 10 = B 2 {\displaystyle B_{2}} {\displaystyle B_{2}}
Schlüssel
11=k
Init. Vektor (IV)
01

Zur Vereinfachung wird als Verschlüsselungsfunktion E {\displaystyle E} {\displaystyle E} die binäre Addition und als Entschlüsselungsfunktion D {\displaystyle D} {\displaystyle D} die binäre Subtraktion verwendet.

Verschlüsselung

[Bearbeiten | Quelltext bearbeiten]

Block 1:

  • B 1 ⊕ I V = 01 ⊕ 01 = 00 = C 1 ′ {\displaystyle B_{1}\oplus IV=01\oplus 01=00=C_{1}'} {\displaystyle B_{1}\oplus IV=01\oplus 01=00=C_{1}'}
  • E k ( C 1 ′ ) = C 1 ′ + k = 00 + 11 = 11 = C 1 {\displaystyle E_{k}(C_{1}')=C_{1}'+k=00+11=11=C_{1}} {\displaystyle E_{k}(C_{1}')=C_{1}'+k=00+11=11=C_{1}}

Block 2:

  • B 2 ⊕ C 1 = 10 ⊕ 11 = 01 = C 2 ′ {\displaystyle B_{2}\oplus C_{1}=10\oplus 11=01=C_{2}'} {\displaystyle B_{2}\oplus C_{1}=10\oplus 11=01=C_{2}'}
  • E k ( C 2 ′ ) = C 2 ′ + k = 01 + 11 = 00 = C 2 {\displaystyle E_{k}(C_{2}')=C_{2}'+k=01+11=00=C_{2}} {\displaystyle E_{k}(C_{2}')=C_{2}'+k=01+11=00=C_{2}}

Verschlüsselter Text:

  • C 1 C 2 = 1100 {\displaystyle C_{1}C_{2}=1100} {\displaystyle C_{1}C_{2}=1100}

Betrachtet man die Verschlüsselung von B 2 {\displaystyle B_{2}} {\displaystyle B_{2}}, sieht man, dass dazu C 1 {\displaystyle C_{1}} {\displaystyle C_{1}} benötigt wird. Generell bedeutet das, dass für eine Verschlüsselung von B i {\displaystyle B_{i}} {\displaystyle B_{i}} der Chiffratblock C i − 1 {\displaystyle C_{i-1}} {\displaystyle C_{i-1}} benötigt wird. Eine Parallelisierung des Verschlüsselungsvorgangs fällt damit aus.

Entschlüsselung

[Bearbeiten | Quelltext bearbeiten]

Block 1:

  • D k ( C 1 ) = C 1 − k = 11 − 11 = 00 = C 1 ′ {\displaystyle D_{k}(C_{1})=C_{1}-k=11-11=00=C_{1}'} {\displaystyle D_{k}(C_{1})=C_{1}-k=11-11=00=C_{1}'}
  • C 1 ′ ⊕ I V = 00 ⊕ 01 = 01 = B 1 {\displaystyle C_{1}'\oplus IV=00\oplus 01=01=B_{1}} {\displaystyle C_{1}'\oplus IV=00\oplus 01=01=B_{1}}

Block 2:

  • D k ( C 2 ) = C 2 − k = 00 − 11 = 01 = C 2 ′ {\displaystyle D_{k}(C_{2})=C_{2}-k=00-11=01=C_{2}'} {\displaystyle D_{k}(C_{2})=C_{2}-k=00-11=01=C_{2}'}
  • C 2 ′ ⊕ C 1 = 01 ⊕ 11 = 10 = B 2 {\displaystyle C_{2}'\oplus C1=01\oplus 11=10=B_{2}} {\displaystyle C_{2}'\oplus C1=01\oplus 11=10=B_{2}}

Klartext:

  • B 1 B 2 = 0110 {\displaystyle B_{1}B_{2}=0110} {\displaystyle B_{1}B_{2}=0110}

Betrachtet man die Entschlüsselung von C 2 {\displaystyle C_{2}} {\displaystyle C_{2}}, sieht man, dass B 1 {\displaystyle B_{1}} {\displaystyle B_{1}} dafür nicht benötigt wird, sondern lediglich C 1 {\displaystyle C_{1}} {\displaystyle C_{1}}. Generell bedeutet das, dass für eine Entschlüsselung von C i {\displaystyle C_{i}} {\displaystyle C_{i}} nur C i − 1 {\displaystyle C_{i-1}} {\displaystyle C_{i-1}} benötigt wird. Damit ist eine Parallelisierung des Entschlüsselungsvorgangs möglich.

Integritätssicherung mit CBC, CBC-MAC

[Bearbeiten | Quelltext bearbeiten]
Struktur zur CBC-MAC-Berechnung

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.[3] Der Empfänger kann mithilfe 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.

Literatur

[Bearbeiten | Quelltext bearbeiten]
  • 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. 

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ William F. Ehrsam, Carl H. W. Meyer, John L. Smith, Walter L. Tuchman, "Message verification and transmission error detection by block chaining", US-Patent 4074066, 1976
  2. ↑ Practical malleability attack against CBC-Encrypted LUKS partitions | Jakob Lell's Blog. Abgerufen am 17. Februar 2022 (amerikanisches Englisch). 
  3. ↑ Mihir Bellare, Joe Kiliany, Phillip Rogaway: The Security of the Cipher Block Chaining Message Authentication Code. In: Journal of Computer and System Science. Band 61, Nr. 3, 2000, S. 362–399 (cs.ucdavis.edu (Memento vom 5. Februar 2012 im Internet Archive) [PDF; 466 kB]). 
Betriebsmodi von Blockchiffren

Ohne Authentifizierung: ECB • CBC • CFB • OFB • CTR • XTS

Mit Authentifizierung: CCM • GCM • EAX

Abgerufen von „https://de.teknopedia.teknokrat.ac.id/w/index.php?title=Cipher_Block_Chaining_Mode&oldid=232410158“
Kategorie:
  • Symmetrisches Kryptosystem

  • indonesia
  • Polski
  • العربية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصرى
  • Nederlands
  • 日本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українська
  • Tiếng Việt
  • Winaray
  • 中文
  • Русский
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id