# Output Feedback Mode

Output Feedback Mode (OFB) ist eine Betriebsart, in der Blockchiffren betrieben werden können. Dabei wird ein Blockalgorithmus wie beispielsweise Data Encryption Standard (Blocklänge 64 Bit) oder Advanced Encryption Standard (Blocklänge 128 Bit) genutzt, um daraus eine (synchrone) Stromchiffre zu bilden.
Der Klartext P$_i${\textstyle P_{i}} wird in jedem Schritt i{\textstyle i} mit der i{\textstyle i} fachen Verschlüsselung des Initialisierungsvektors per XOR (exklusives ODER) verknüpft. Dabei gilt $1\leq i\leq u$ mit $u$ gleich der Anzahl an Blöcken.
$C_{i}=P_{i}\oplus E_{K}^{i}(IV)$
In diesem Modus wird, wie in der Abbildung dargestellt, die Ausgabe der Blockchiffre mit dem Klartext bitweise per XOR verknüpft, um daraus den Geheimtext zu bilden. Dieses Verfahren ergibt eine Stromchiffre. Die Ausgabe der Blockchiffre wird wieder ihrem Eingang zugeführt, so dass ein kontinuierlicher Strom an chiffrierten Blöcken entsteht. Für die Verknüpfung mit dem Klartext werden nur so viele Bits wie nötig verwendet. Dies muss nicht einer vollen Blocklänge entsprechen. Der Bitstrom ist pseudozufällig, weil er von der Blockchiffre, dem Schlüssel und dem Initialisierungsvektor abhängig ist. Deshalb bezeichnet man dieses System auch als Pseudo-One-Time-Pad. Der Initialisierungsvektor ist ähnlich wie beim Cipher Block Chaining Mode als Startwert zu sehen und vom gewählten (geheimen) Schlüssel unabhängig.
Einer der Vorteile besteht darin, dass die Bitfolge, mit der die Klartextdaten bitweise XOR-verknüpft werden, bereits vorab berechnet werden kann. Weiter besteht bei OFB wie bei allen Stromchiffren der Vorteil, dass sich bei der Entschlüsselung Übertragungsfehler (Bitfehler) im Chiffrat nur auf die entsprechende Bitstelle im entschlüsselten Klartext auswirken und sich der Fehler nicht im Klartext fortpflanzt. Bei anderen Betriebsmodi führt nur ein Bitfehler im Chiffrat zu mindestens einem komplett zerstörten Klartextdatenblock. Dies erschwert bzw. macht eine Vorwärtsfehlerkorrektur unmöglich. Andererseits kann die Tatsache, dass die verursachten Bitfehler im Klartext vorhersagbar sind, ausgenutzt werden, um Nachrichten unbemerkt zu verfälschen.
Ein weiterer Vorteil des Verfahrens ist, dass keine separate Entschlüsselungsfunktion notwendig ist, denn Ver- und Entschlüsselung sind identisch. Außerdem wird nur die Verschlüsselung des Blockalgorithmus (oder nur die Entschlüsselung) benötigt. Die Konstruktion ist sogar so, dass sich als Blockalgorithmus auch Verfahren eignen, die nicht bijektiv sind. Beispielsweise könnte als Blockalgorithmus auch eine sichere Hashfunktion wie SHA-256 verwendet werden. Die Blockgröße wäre dann die Ausgabegröße der Hashfunktion, bei SHA-256 also 256 Bits.
Identisch zur Verschlüsselung wird bei der Entschlüsselung auch die i{\textstyle i} fache Verschlüsselung des Initialisierungsvektors (IV) per XOR verknüpft. Statt P$_i${\textstyle P_{i}} wird hierbei nun der Ciphertext C$_i${\textstyle C_{i}} eingesetzt.
$P_{i}=C_{i}\oplus E_{K}^{i}(IV)$
Ein Nachteil von OFB ist die aufwendige Synchronisation der Blockchiffren zwischen Sender und Empfänger, da OFB im Gegensatz zu Cipher Feedback Mode (CFB) grundsätzlich nicht selbstsynchronisierend ist. Der Blockchiffre am Empfänger wird dabei wie in obiger Abbildung dargestellt, ebenfalls wie bei der Verschlüsselung betrieben, erzeugt also bei gleichem Initialisierungsvektor und gleichem Schlüssel die gleiche binäre Datenfolge mit der die XOR-Operation des Senders rückgängig gemacht werden kann. Das dafür notwendige, genaue zeitliche Zusammenspiel muss, durch geeignete Verfahren, in den Übertragungsprotokollen sichergestellt werden.
Wenn mehrere Nachrichten mit dem gleichen Schlüssel verschlüsselt werden, muss für jede Nachricht ein anderer Initialisierungsvektor verwendet werden, da ansonsten der gleiche Schlüsselstrom erzeugt wird. In diesem Fall ist das Verfahren gegen einen einfachen Angriff anfällig, bei dem zwei Chiffrate XOR-verknüpft werden. Dadurch löschen sich die zur Verschlüsselung verwendeten (gleichen) Schlüsselströme aus, und als Ergebnis bleibt das XOR der beiden Klartexte, aus dem die Klartexte leicht ermittelt werden können. Ist sogar der Klartext einer Nachricht bekannt, kann ein Klartextangriff durchgeführt werden: Durch XOR-Verknüpfung von Klar- und Geheimtext kann man den verwendeten Schlüsselstrom bestimmen und die entsprechenden Abschnitte der anderen Nachrichten entschlüsseln.