# Cipher Feedback Mode

Cipher Feedback Mode (CFB) ist eine Betriebsart (Modus), in der Blockchiffren als Stromchiffren betrieben werden, beispielsweise um damit Klartexte zu verschlüsseln, deren Länge kein Vielfaches der Blocklänge des Chiffrierverfahrens ist. Beispiele für Blockchiffren sind der Data Encryption Standard (Blocklänge 64 Bit) oder der Advanced Encryption Standard (Blocklänge 128 Bit).
Die Verschlüsselung im CFB-Modus kann wie folgt grafisch dargestellt werden:
In diesem Modus wird, wie in der Abbildung dargestellt, die Ausgabe der Blockchiffre mit dem Klartext bitweise XOR (exklusives ODER) verknüpft, um daraus den Geheimtext zu bilden. Diese Betriebsart bzw. dieser Modus ergibt damit eine Stromchiffre. Die ausgegebenen Geheimtextdaten fließen als Eingabe in den nächsten Block zur Verschlüsselung.
Damit ergibt sich als wesentlicher Unterschied zu dem Output Feedback Mode (OFB) eine Selbstsynchronisation. Dies bedeutet, dass der Empfänger bei der Entschlüsselung nicht den genauen Inhalt (inneren Zustand) der Blockchiffre kennen muss bzw. durch geeignete, zusätzliche Übertragungsverfahren im Rahmen der Übertragungsprotokolle mitgeteilt bekommen muss. Ist beispielsweise der Wert des Initialisierungsvektors nicht bekannt, so kann der Datenstrom ab dem zweiten Block trotzdem entschlüsselt werden. Bei anderen Betriebsarten ist dies mitunter nicht möglich, da der Initialisierungsvektor sich auf eine Art und Weise fortpflanzt, die dafür sorgt, dass jeder Block direkt vom Initialisierungsvektor abhängig ist.
Der Initialisierungsvektor (IV) dient ähnlich wie bei dem Cipher Block Chaining (CBC) als Startwert.
Bezeichne $E_{K}$ die Verschlüsselungsfunktion mit dem Schlüssel $K$, eine zugehörige Entschlüsselungsfunktion $D_{K}$ ist in dieser Betriebsart nicht nötig. Bezeichne $P_{i}$ den i-ten Klartextblock, $C_{i}$ den i-ten Geheimtextblock und sei $IV$ der Initialisierungsvektor. Außerdem bezeichne $\oplus$ das logische XOR. Dann ist die Verschlüsselung im CFB-Modus mathematisch wie folgt rekursiv definiert:
    ${\begin{aligned}C_{0}&=P_{0}\oplus E_{k}(\mathrm {IV} )\\C_{i}&=P_{i}\oplus E_{k}(C_{i-1})\end{aligned}}$
Die Entschlüsselung kann nun grafisch wie folgt dargestellt werden:
Die Entschlüsselung beim Empfänger, wie in obiger Abbildung dargestellt, funktioniert wie Verschlüsselung, erzeugt also bei gleichem Initialisierungsvektor und gleichem Schlüssel die gleiche binäre Datenfolge mit der die XOR-Operation des Sender rückgängig gemacht werden kann. Die Grafik zeigt auch den wesentlichen Nachteil dieser Stromchiffre: Durch nur einen einzigen Bitfehler, der bei der Übertragung auftreten kann, wird im aktuellen Klartextdatenblock genau ein Bitfehler erzeugt und zusätzlich im nachfolgenden Datenblock im Mittel 50 % der Datenbits zerstört. Diese Fehlerfortpflanzung ist ähnlich wie bei der Betriebsart Cipher Block Chaining (CBC) und erschwert die Entschlüsselung des Klartextes.
Mathematisch kann man die Entschlüsselung im CFB-Modus wie folgt definieren:
    ${\begin{aligned}P_{0}&=C_{0}\oplus E_{k}(\mathrm {IV} )\\P_{i}&=C_{i}\oplus E_{k}(C_{i-1})\end{aligned}}$
Dabei kann man sehen, dass die Entschlüsselung im Gegensatz zur Verschlüsselung nicht rekursiv ist.
Trotz des Vorteils der Selbstsynchronisation wird der CFB in der Praxis nur selten eingesetzt: Spielt die Fehlerfortpflanzung auf den nächsten Block in einer bestimmten Anwendung keine Rolle bzw. wird durch geeignete zusätzliche Verfahren kompensiert, wird meist der CBC verwendet. Wird eine Stromchiffre ohne Fehlerfortpflanzung in einer Anwendung benötigt, wird meist der Modus OFB verwendet.
Ohne Authentifizierung: ECB • CBC • CFB • OFB • CTR • XTS
Mit Authentifizierung: CCM • GCM • EAX