1 Symmetrische Algorithmen

1.1 Blockchiffren
1.2 Betriebsarten

1.1 Blockchiffren

1.1.1 Einordnung

C.E. SHANNON beschreibt in [61] ein allgemeines (symmetrisches1) Kryptosystem entsprechend Abbildung 1 und formuliert auf dieser Grundlage erstmalig grundlegende Theoreme zur theoretischen Sicherheit.

PIC

Abbildung 1: SHANNON’s Modell

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:

1.1.2 Wirkprinzip

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.

PIC

Abbildung 2: Anwendung von Blockchiffren

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.

1.1.3 Herkömmliche Struktur

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.

pict

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”).

PIC

Abbildung 3: Runde einer typischen FEISTEL-Chiffre

Die Vorteile des Verfahrens gründen sich auf dessen Einfachheit:

  1. Aufwand und Kosten der Realisierung sind überschaubar;
  2. Hardware- und Software-Implementierungen sind gleichermaßen möglich;
  3. die Skalierbarkeit (nach Sicherheitsanforderungen, Geschwindigkeit oder anderen Kriterien) ist durch Variation der Rundenanzahl gegeben;
  4. Ver- und Entschlüsselung können dieselbe Struktur verwenden.

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:

pict

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.

1.1.4 Advanced Encryption Algorithm (AES)

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.

1.2 Betriebsarten

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.

1.2.1 Cipher Block Chaining (CBC)

In der Betriebsart CBC wird jeder Plaintext-Block 𝑝𝑖 vor der Verschlüsselung mit dem letzten Ciphertext-Block 𝑐𝑖1 kombiniert (vgl. auch Abbildung 4).

pict

Dadurch ergibt sich eine Abhängigkeit über den gesamten zu verschlüsselnden Klartext, welche z. B. beim CBC-MAC ausgenutzt wird.

PIC
Abbildung 4: CBC-Verschlüsselung

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ß.

PIC
Abbildung 5: CBC-Entschlüsselung

Die Eigenschaften des CBC-Modus bezüglich der Fehlerfortpflanzung lassen sich entweder aus Abbildung 5 oder aber Formel 3 ableiten:

  1. Bitfehler im Block 𝑐𝑖 wirken sich auf den aktuellen sowie den nächsten Klartext-Block aus. Wegen 𝑝𝑖 = 𝑐𝑖1𝐷𝐾 (𝑐𝑖) sind in 𝑝𝑖 nahezu alle Bits verfälscht7. In 𝑝𝑖+1 = 𝑐𝑖𝐷𝐾 (𝑐𝑖+1) hingegen sind es nur solche, die auch in 𝑐𝑖 fehlerhaft waren. War deren Anzahl 𝑚 so führt die Fehlerfortpflanzung zu 𝑛+𝑚 verfälschten Bits.
  2. Geht die Blocksynchronisation verloren, d. h. wird beispielsweise der Block 𝑐1 in Abbildung 5 gar nicht erst empfangen (und an dessen Stelle 𝑐2 verwendet), so wird der zugeordnete entschlüsselte Block 𝑝2 (jetzt an Stelle von 𝑝1) komplett gestört sein. Alle weiteren Blöcke sind jedoch wieder korrekt8, weshalb man auch von einer selbstsynchronisierenden Betriebsart spricht (self-synchronizing, ciphertext autokey).
  3. Ohne Maßnahmen zur Blocksynchronisation bewirken eingefügte oder verlorene Bits, daß auch alle weiteren Klartext-Blöcke fehlerhaft sind9.
1.2.2 Cipher Feedback (CFB)

Im Gegensatz zum CBC-Modus (siehe Abschnitt 1.2.1) geht der Klartext bei dieser Betriebsart weder direkt noch indirekt über den Verschlüsselungsalgorithmus 𝐸𝐾 .

pict

Aus diesem Grund wird die inverse Operation zwar nicht benötigt, die Eigenschaften der CFB-Betriebsart sind aber trotzdem vergleichbar zum CBC:

  1. sie ist selbstsynchronisierend;
  2. hat eine beschränkte Fehlerfortpflanzung und
  3. ist (zusätzlich) für Blockbreiten kleiner der des Algorithmus geeignet.

Die ersten beiden Punkte lassen sich aus den Blockbildern 6 und 7 erkennen oder über Formel 4 verifizieren.

PIC
Abbildung 6: CFB-Verschlüsselung

PIC
Abbildung 7: CFB-Entschlüsselung

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).

PIC (a) Verschlüsselung PIC (b) Entschlüsselung

Abbildung 8: CFB mit verringerter Blockbreite

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.

PIC (a) Verschlüsselung PIC (b) Entschlüsselung

Abbildung 9: CFB mit Pipelining

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).

1.2.3 Output Feedback (OFB)

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).

PIC (a) Verschlüsselung PIC (b) Entschlüsselung

Abbildung 10: Betriebsart OFB

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.

1.2.4 Counter (CTR)

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.

PIC
Abbildung 11: ATM Counter-Modus

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:

LFSR

Das Schieberegister (LFSR) hat eine Länge von 21 Bit und ist durch das irreduzible (und primitive) Generatorpolynom 𝑔(𝑥) = 𝑥21 +𝑥2 +1 charakterisiert.

I/R

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.

SEQ

Die Sequenznummer (SEQ) wird von höheren Protokollen übernommen (nur AAL-3/4 und AAL-1).

SEG

Die Segmentnummer (SEG) identifiziert das ver- bzw. entschlüsselte Segment einer ATM-Zelle.

JUMP

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:

1.2.5 Mischarten

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.

PIC (a) Verschlüsselung PIC (b) Entschlüsselung

Abbildung 12: Kombination von CFB- und OFB-Modus

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.

Algorithmus 1 Synchronisation
  if synchron then
   for ever do
   𝑐𝑖 = 𝑝𝑖 𝑒𝑖
   FB = 𝑒𝑖 {OFB-Mode}
   end for
  else
   𝑐𝑖 = 𝑝𝑖 𝑒𝑖
   FB = 𝑐𝑖 {CFB-Mode}
  end if