C.E. SHANNON beschreibt in [61] ein allgemeines (symmetrisches1) Kryptosystem entsprechend Abbildung 1 und formuliert auf dieser Grundlage erstmalig grundlegende Theoreme zur theoretischen Sicherheit.
In Teil III widmet er sich auch praktischen Aspekten der Auswahl bzw. des Designs solcher Verschlüsselungsalgorithmen. Dabei bezieht er sich unter anderem auf die folgenden Kriterien zur Bewertung von Kryptosystemen:
Blockchiffren zeichnen sich dadurch aus, daß sie einen Klartext-Vektor (Plaintext) der Breite 𝑛 (Bit) in einen gleichgroßen Vektor verschlüsselte Daten (Ciphertext) transformieren. Diese Abbildung 𝐸 von 2𝑛 möglichen Eingangsmustern auf wieder 2𝑛 Ausgangsmuster ist praktisch immer eineindeutig (affin, reversibel) und wird durch den geheimen Schlüssel 𝐾 gesteuert. Besteht der Klartext wie in Abbildung 2 aus mehr Bits als die Blockbreite 𝑛 vorgibt, dann muß er in Teilblöcke dieser Breite segmentiert und der letzte Block unter Umständen mit einem Muster pad(ding) aufgefüllt werden.
Die Klartext-Blöcke 𝑝𝑖 werden dann nacheinander durch den Algorithmus 𝐸 in Ciphertext-Blöcke 𝑐𝑖 = 𝐸(𝑝𝑖) transformiert. Dieser Prozeß kann vollständig unabhängig für jede Blockchiffre (bzw. jeden Block 𝑝𝑖) ablaufen2 oder aber durch die Weitergabe von Zustandsvektoren 𝑠𝑖 beeinflußt sein3. Den ersten Zustandsvektor nennt man Initialisierungsvektor (IV) und wählt ihn entweder zufällig (dann muß er zum Ort der Entschlüsselung übertragen werden) oder per Vereinbarung, z. B. als statisches Muster. Bei der Entschlüsselung läuft der gesamte Prozeß umgekehrt ab, d. h. derselbe Schlüssel 𝐾 wird verwendet um mit Hilfe des inversen Algorithmus jeden Klartext-Block 𝑝𝑖 = 𝐸−1(𝑐𝑖) wieder zu gewinnen.
SHANNON hat schon in vorgeschlagen symmetrische Kryptoalgorithmen durch Anwendung von Substitution (als nichtlineare Komponente) und Permutation zu realisieren. Fast alle bekannten Blockchiffren wenden dieses Prinzip auf der Grundlage einer einfachen Verarbeitungsstruktur nach H. FEISTEL an [16]. Dazu wird der Plaintext-Block 𝑝 in zwei Hälften 𝑙0 und 𝑟0 aufgeteilt (𝑝 = 𝑙0||𝑟0) und an das Feistel-Netzwerk nach Abbildung 3 übergeben. Das Ergebnis 𝑙1||𝑟1 wird danach wieder auf den Eingang zurückgeführt und das Verfahren in mehreren Runden wiederholt.
Der sogenannte Rundschlüssel 𝐾𝑖 wird aus dem Schlüssel 𝐾 abgeleitet (Key Scheduling) und sollte für jede Runde verschieden sein. Die nichtlineare Funktion 𝑓 realisiert dabei die Substitution (in Abhängigkeit vom Rundenschlüssel), die ständige Kreuzung von linker und rechter Hälfte zusammen mit der Exklusiv-Oder (XOR) Operation eine reversible4 Permutation (und „Durchmischung”).
Die Vorteile des Verfahrens gründen sich auf dessen Einfachheit:
Der letzte Punkt soll noch kurz erläutert werden, wobei von Formel 1 auszugehen ist. Stellen wir diese einfach für die Rückwärtsrichtung (Entschlüsselung) um, so ergibt sich:
d. h. alle Operationen bleiben erhalten5. Was sich ändert ist einzig und allein die Verwendung der Rundenschlüssel, welche bei der Verschlüsselung mit 𝐾0 startete. Bei der Entschlüsselung muß man, wie Formel 2 zeigt, umgekehrt vorgehen, also den Schlüssel 𝐾0 zuletzt benutzen.
Der AES ist definiert im NIST-Standard [2] und mittlerweile auch als [25]. Es gibt so viele Beschreibungen und Implementierungshinweise zum AES, daß ich dies hier nicht weiter ausführe.
Normalerweise bildet eine Blockchiffre 𝑛 bit Klartext auf die gleiche Anzahl verschlüsselter Bits ab (Electronic Codebook, ECB-Modus). Betriebsarten, wie im Folgenden beschrieben, verknüpfen die Eingangs- und Ausgangsvektoren durch Rückkopplungen mittels modularer Arithmetik. Auf diese Weise werden ganz spezielle Eigenschaften erzeugt und kryptoanalytische Nachteile der einen oder anderen Betriebsart umgangen. Eine genaue Auflistung der jeweiligen Eigenschaften geben z. B. [26], [42] sowie [39, S. 7.2.2], historische Spezifikationen der Betriebsarten sind in [5, 41] zu finden.
In der Betriebsart CBC wird jeder Plaintext-Block 𝑝𝑖 vor der Verschlüsselung mit dem letzten Ciphertext-Block 𝑐𝑖−1 kombiniert (vgl. auch Abbildung 4).
Dadurch ergibt sich eine Abhängigkeit über den gesamten zu verschlüsselnden Klartext, welche z. B. beim CBC-MAC ausgenutzt wird.
An Hand von Abbildung 5 (oder aus Formel 3) kann man das Entschlüsselungsverfahren leicht erklären. Jeder Block 𝑐𝑖 wird zuerst entschlüsselt, danach die Exklusiv-Oder (XOR) Operation mit Hilfe des “Vorgängers” 𝑐𝑖−1 rückgängig gemacht6. Für den ersten Block wird als Startwert ein Initialisierungsvektor (IV) verwendet, der auch nicht unbedingt geheim sein muß.
Die Eigenschaften des CBC-Modus bezüglich der Fehlerfortpflanzung lassen sich entweder aus Abbildung 5 oder aber Formel 3 ableiten:
Im Gegensatz zum CBC-Modus (siehe Abschnitt 1.2.1) geht der Klartext bei dieser Betriebsart weder direkt noch indirekt über den Verschlüsselungsalgorithmus 𝐸𝐾 .
Aus diesem Grund wird die inverse Operation zwar nicht benötigt, die Eigenschaften der CFB-Betriebsart sind aber trotzdem vergleichbar zum CBC:
Die ersten beiden Punkte lassen sich aus den Blockbildern 6 und 7 erkennen oder über Formel 4 verifizieren.
Wegen der Rückführung des Ciphertextes wirkt sich ein Empfangsfehler im Block 𝑐𝑖 nur auf den aktuellen Klartext 𝑝𝑖 = 𝑐𝑖 ⊕ 𝐸𝐾 (𝑐𝑖−1) und den darauffolgenden Block 𝑝𝑖+1 = 𝑐𝑖+1 ⊕ 𝐸𝐾 (𝑐𝑖) aus. In 𝑝𝑖+2 = 𝑐𝑖+2 ⊕ 𝐸𝐾 (𝑐𝑖+1) ist kein Einfluß von 𝑐𝑖 gegeben, weshalb (wie im CBC-Modus) ein Fehlerburst von 𝑚 Bits durch diese Art der Rückführung zu 𝑛 +𝑚 fehlerhaften Bits verbreitert wird.
Blockbreitenreduktion (Fall 𝑟 < 𝑛) Die Betriebsart CFB ist auch für Nachrichtenblöcke geeignet, deren Anzahl von Bits 𝑟 kleiner als die Blockbreite 𝑛 des Algorithmus ist. Man benutzt in diesem Fall einfach nur die ersten 𝑟 Output-Bits des Algorithmus, muß jedoch im Eingangsvektor die restlichen 𝑛−𝑟 Bits auf einen konstanten Wert setzen (in [26] auf “1”, vgl. Abbildung 8).
(a) Verschlüsselung
(b) Entschlüsselung
Pipelining (Fall 𝑟 > 𝑛) Bei Einsatz eines Feedback (FB) Registers im Rückkopplungszweig wird es möglich den Kryptoalgorithmus zu parallelisieren10. Man geht dazu wie in Abbildung 9 skizziert vor.
(a) Verschlüsselung
(b) Entschlüsselung
Die damit einhergehende Verzögerung verschleppt allerdings auch die Auswirkung von Bitfehlern, was oftmals unerwünscht ist. Denn, sollte ein empfangener Cipherblock fehlerhaft sein, so wirkt sich dies auf den aktuellen und den 𝑘-ten darauffolgenden Block aus (wenn mit 𝑘 die Tiefe des FB bezeichnet wird).
Auch in der Betriebsart OFB ist man prinzipiell in der Lage Blockbreiten 𝑟 < 𝑛 zu verarbeiten, verliert aber die Eigenschaft der Selbstsynchronisation. Das Prinzip dieser Betriebsart besteht darin, daß sowohl auf Sende- als auch Empfangsseite der gleiche (Pseudozufalls-) Strom 𝑒𝑖 erzeugt und dann direkt zum Ver- bzw. Entschlüsseln verwendet wird (siehe XOR-Operation in Abbildung 10).
(a) Verschlüsselung
(b) Entschlüsselung
Vorteilhaft ist, daß Bitfehler in einem Cipherblock 𝑐𝑖 ohne jegliche Streuwirkung transparent auf den Klartext 𝑝𝑖 abgebildet werden – die Fehlerfortpflanzung demzufolge sehr begrenzt ausfällt11. Gehen jedoch ganze Blöcke 𝑐𝑖 verloren, so ist die Synchronisation bleibend gestört und der gesamte Klartext ab diesem Zeitpunkt dauerhaft fehlerhaft12. Zur Resynchronisation ist es deshalb unbedingt notwendig, daß von Zeit zu Zeit (je nach Anforderung) ein neuer Initialisierungsvektor in Richtung Empfänger übertragen wird.
Die CTR-Betriebsart13 arbeitet ähnlich wie der OFB-Modus, nur daß der “Pseudozufall” aus einer einem Zähler mit sehr großer (praktisch nicht erreichbarer) Periode stammt [38]. Das Beispiel in Abbildung 11, welches für ATM gilt (vgl. [3, Annex 6.4.4]), soll das Prinzip verdeutlichen.
Entscheidend ist, daß der Counter für jeden zu ver- oder entschlüsselnden Block einen anderen Wert (Zustandsvektor) liefert. Er besteht in diesem Fall aus:
Das Schieberegister (LFSR) hat eine Länge von 21 Bit und ist durch das irreduzible (und primitive) Generatorpolynom 𝑔(𝑥) = 𝑥21 +𝑥2 +1 charakterisiert.
Das Initiator/Responder-Bit (I/R) identifiziert den Anrufenden (Calling Party) bzw. Angerufenen (Called Party) und schützt damit vor Angriffen auf schlüsselgleiche Texte.
Die Sequenznummer (SEQ) wird von höheren Protokollen übernommen (nur AAL-3/4 und AAL-1).
Die Segmentnummer (SEG) identifiziert das ver- bzw. entschlüsselte Segment einer ATM-Zelle.
Die Jump Number (JUMP) wird bei jeder Session Key Changeover OAM-Zelle und bei einem End Of Message (EOM) im AAL-5 erhöht.
Bezüglich der Synchronisation und Fehlerfortpflanzung gelten dieselben Aussagen wie für die Betriebsart OFB. Vorteilhaft ist der CTR-Modus insbesondere für Hochgeschwindigkeitsanwendungen, denn:
Will man (in Verbindung mit hohen Datenraten) die Eigenschaft der Selbstsynchronisation mit einer geringen Fehlerfortpflanzung kombinieren, so bietet sich eine Mischung von OFB und CFB als Betriebsarten an. Dazu muß man nur die Rückkopplungen beider Betriebsarten (umschaltbar) miteinander vereinen, was in Abbildung 12 durch einen Multiplexer (MUX) realisiert wird.
(a) Verschlüsselung
(b) Entschlüsselung
Algorithmus beschreibt den Entschlüsselungsvorgang, wobei statistische Selbstsynchronisation (siehe z. B. [60] für Details) eine Möglichkeit darstellt um den Zeitpunkt der Umschaltung von einer Betriebsart in die andere zu bestimmen.