In diesem Kapitel werden wir die verschiedenen Betriebsmodi einer Blockchiffre besprechen. Dabei handelt es sich um Verfahrensregeln für eine generische Blockchiffre. Interessanterweise führen die verschiedenen Modi zu unterschiedlichen Eigenschaften, die zur Sicherheit der zugrunde liegenden Blockchiffre beitragen.
Eine Blockchiffre verarbeitet Datenblöcke fester Größe. Normalerweise ist die Größe einer Nachricht größer als die Blockgröße. Daher wird die lange Nachricht in eine Reihe von aufeinanderfolgenden Nachrichtenblöcken unterteilt, und die Chiffre bearbeitet diese Blöcke einzeln.
Electronic Code Book (ECB)-Modus
Dieser Modus ist eine sehr einfache Methode zur Verarbeitung einer Reihe von aufeinanderfolgenden Nachrichtenblöcken.
Vorgang
-
Der Benutzer nimmt den ersten Klartextblock und verschlüsselt ihn mit dem Schlüssel, um den ersten Chiffretextblock zu erzeugen.
-
Dann nimmt er den zweiten Klartextblock und führt denselben Prozess mit demselben Schlüssel durch und so weiter und so fort.
Das ECB-Verfahren ist deterministisch, d.h. wenn die Klartextblöcke P1, P2,…, Pm zweimal mit demselben Schlüssel verschlüsselt werden, sind die ausgegebenen Chiffretextblöcke identisch.
Für einen gegebenen Schlüssel kann man technisch ein Codebuch mit Chiffretexten für alle möglichen Klartextblöcke erstellen. Die Verschlüsselung würde dann nur darin bestehen, den gewünschten Klartext zu suchen und den entsprechenden Chiffretext auszuwählen. Der Vorgang ist also analog zur Zuordnung von Codewörtern in einem Codebuch und erhält daher den offiziellen Namen „Electronic Codebook mode of operation“ (ECB). Sie wird wie folgt veranschaulicht –
Analyse des ECB-Modus
In der Realität haben alle Anwendungsdaten normalerweise Teilinformationen, die erraten werden können. Zum Beispiel kann der Bereich des Gehalts erraten werden. Ein ECB-Chiffretext kann es einem Angreifer ermöglichen, den Klartext durch Ausprobieren zu erraten, wenn die Klartextnachricht innerhalb eines vorhersehbaren Bereichs liegt.
Wenn zum Beispiel ein ECB-Chiffretext bekannt ist, um eine Gehaltsangabe zu verschlüsseln, dann kann ein Angreifer mit einer kleinen Anzahl von Versuchen die Angabe wiederherstellen. Im Allgemeinen möchten wir keine deterministische Chiffre verwenden, und daher sollte der ECB-Modus in den meisten Anwendungen nicht eingesetzt werden.
Cipher Block Chaining (CBC)-Modus
Der CBC-Modus bietet eine Nachrichtenabhängigkeit für die Erzeugung von Chiffretext und macht das System nicht-deterministisch.
Betrieb
Der Betrieb des CBC-Modus ist in der folgenden Abbildung dargestellt. Die Schritte sind wie folgt –
-
Laden Sie den n-Bit-Initialisierungsvektor (IV) in das obere Register.
-
XORieren Sie den n-Bit-Klartextblock mit dem Datenwert im oberen Register.
-
Verschlüsseln Sie das Ergebnis der XOR-Operation mit der zugrundeliegenden Blockchiffre mit Schlüssel K.
-
Geben Sie den Chiffretextblock in das obere Register ein und setzen Sie den Vorgang fort, bis alle Klartextblöcke verarbeitet sind.
-
Für die Entschlüsselung werden die IV-Daten mit dem ersten entschlüsselten Chiffretextblock XOR-verknüpft. Der erste Chiffretextblock wird auch in das Register eingespeist, das die IV-Daten für die Entschlüsselung des nächsten Chiffretextblocks ersetzt.
Analyse des CBC-Modus
Im CBC-Modus wird der aktuelle Klartextblock zum vorherigen Chiffretextblock addiert, und das Ergebnis wird dann mit dem Schlüssel verschlüsselt. Die Entschlüsselung ist also der umgekehrte Prozess, bei dem der aktuelle Chiffretext entschlüsselt und dann der vorherige Chiffretextblock zum Ergebnis addiert wird.
Der Vorteil von CBC gegenüber ECB besteht darin, dass eine Änderung der IV zu einem anderen Chiffretext bei identischer Nachricht führt. Der Nachteil ist, dass sich der Fehler bei der Übertragung aufgrund des Verkettungseffekts bei der Entschlüsselung auf einige weitere Blöcke ausbreitet.
Es ist erwähnenswert, dass der CBC-Modus die Grundlage für einen bekannten Mechanismus zur Authentifizierung der Datenherkunft bildet. Daher ist er für Anwendungen, die sowohl symmetrische Verschlüsselung als auch Datenursprungsauthentifizierung erfordern, von Vorteil.
Cipher Feedback (CFB)-Modus
In diesem Modus wird jeder Chiffriertextblock in den Verschlüsselungsprozess „zurückgeführt“, um den nächsten Klartextblock zu verschlüsseln.
Betrieb
Der Betrieb des CFB-Modus wird in der folgenden Abbildung dargestellt. Im vorliegenden System hat ein Nachrichtenblock beispielsweise eine Größe von „s“ Bits, wobei 1 < s < n. Der CFB-Modus erfordert einen Initialisierungsvektor (IV) als anfänglichen zufälligen n-Bit-Eingabeblock. Der IV muss nicht geheim sein. Die Arbeitsschritte sind: –
-
Laden Sie den IV in das obere Register.
-
Verschlüsseln Sie den Datenwert im oberen Register mit der zugrundeliegenden Blockchiffre mit dem Schlüssel K.
-
Nehmen Sie nur ’s‘ Anzahl der höchstwertigen Bits (linke Bits) der Ausgabe des Verschlüsselungsprozesses und XOR sie mit ’s‘ Bit Klartextnachrichtenblock, um den Chiffretextblock zu erzeugen.
-
Feed ciphertext block into top register by shifting already present data to the left and continue the operation till all plaintext blocks are processed.
-
Essentially, the previous ciphertext block is encrypted with the key, and then the result is XORed to the current plaintext block.
-
Similar steps are followed for decryption. Zu Beginn der Entschlüsselung wird zunächst die im Voraus festgelegte IV geladen.
Analyse des CFB-Modus
Der CFB-Modus unterscheidet sich wesentlich vom ECB-Modus, da der einem bestimmten Klartextblock entsprechende Chiffretext nicht nur von diesem Klartextblock und dem Schlüssel, sondern auch vom vorherigen Chiffretextblock abhängt. Mit anderen Worten, der Chiffretextblock ist von der Nachricht abhängig.
CFB hat eine sehr merkwürdige Eigenschaft. In diesem Modus entschlüsselt der Benutzer den Chiffretext nur mit dem Verschlüsselungsverfahren der Blockchiffre. Der Entschlüsselungsalgorithmus der zugrundeliegenden Blockchiffre wird nie verwendet.
Anscheinend wandelt der CFB-Modus eine Blockchiffre in eine Art Stromchiffre um. Der Verschlüsselungsalgorithmus wird als Schlüsselstromgenerator verwendet, um einen Schlüsselstrom zu erzeugen, der im unteren Register abgelegt wird. Dieser Schlüsselstrom wird dann wie bei einer Stromchiffre mit dem Klartext XOR-verknüpft.
Durch die Umwandlung einer Blockchiffre in eine Stromchiffre bietet der CFB-Modus einige der vorteilhaften Eigenschaften einer Stromchiffre, während die vorteilhaften Eigenschaften einer Blockchiffre erhalten bleiben.
Die Kehrseite der Medaille ist, dass sich der Fehler bei der Übertragung durch den Wechsel der Blöcke ausbreitet.
Output Feedback (OFB) Mode
Dabei werden die aufeinanderfolgenden Ausgangsblöcke von der zugrundeliegenden Blockchiffre in diese zurückgeführt. Diese Rückkopplungsblöcke liefern dem Verschlüsselungsalgorithmus eine Reihe von Bits, die wie im CFB-Modus als Schlüsselstromgenerator dienen.
Der erzeugte Schlüsselstrom wird mit den Klartextblöcken XOR-verknüpft. Der OFB-Modus erfordert einen IV als anfänglichen zufälligen n-Bit-Eingabeblock. Der IV muss nicht geheim sein.
Der Vorgang ist in der folgenden Abbildung dargestellt –
Zähler (CTR)-Modus
Er kann als eine zählerbasierte Version des CFB-Modus ohne Rückkopplung betrachtet werden. In diesem Modus müssen sowohl der Sender als auch der Empfänger Zugang zu einem zuverlässigen Zähler haben, der jedes Mal, wenn ein Chiffretextblock ausgetauscht wird, einen neuen gemeinsamen Wert errechnet. Dieser gemeinsame Zähler ist nicht unbedingt ein geheimer Wert, aber die Herausforderung besteht darin, dass beide Seiten den Zähler synchron halten müssen.
Vorgang
Die folgende Abbildung zeigt sowohl die Verschlüsselung als auch die Entschlüsselung im CTR-Modus. Die Arbeitsschritte sind: –
-
Der Anfangswert des Zählers im oberen Register ist für Sender und Empfänger gleich. Er spielt dieselbe Rolle wie der IV im CFB- (und CBC-) Modus.
-
Verschlüsseln Sie den Inhalt des Zählers mit dem Schlüssel und legen Sie das Ergebnis im unteren Register ab.
-
Nehmen Sie den ersten Klartextblock P1 und verbinden Sie ihn mit dem Inhalt des unteren Registers durch XOR. Das Ergebnis ist C1. Senden Sie C1 an den Empfänger und aktualisieren Sie den Zähler. Die Zähleraktualisierung ersetzt die Rückmeldung des Geheimtextes im CFB-Modus.
-
Fahren Sie auf diese Weise fort, bis der letzte Klartextblock verschlüsselt wurde.
-
Die Entschlüsselung erfolgt in umgekehrter Reihenfolge. Der Chiffretextblock wird mit dem Ausgang des verschlüsselten Inhalts des Zählerwerts XOR-verknüpft. Nach der Entschlüsselung jedes Chiffretextblocks wird der Zähler wie bei der Verschlüsselung aktualisiert.
Analyse des Zählermodus
Es besteht keine Nachrichtenabhängigkeit, so dass ein Chiffretextblock nicht von den vorherigen Klartextblöcken abhängt.
Wie der CFB-Modus beinhaltet der CTR-Modus nicht den Entschlüsselungsprozess der Blockchiffre. Der Grund dafür ist, dass der CTR-Modus die Blockchiffre verwendet, um einen Schlüsselstrom zu erzeugen, der mit der XOR-Funktion verschlüsselt wird. Mit anderen Worten, der CTR-Modus wandelt auch eine Blockchiffre in eine Stromchiffre um.
Der schwerwiegende Nachteil des CTR-Modus ist, dass er einen synchronen Zähler bei Sender und Empfänger erfordert. Der Verlust der Synchronisation führt zu einer falschen Wiederherstellung des Klartextes.
Der CTR-Modus hat jedoch fast alle Vorteile des CFB-Modus. Darüber hinaus werden Übertragungsfehler überhaupt nicht propagiert.