Blockverschlüsselung

Eine Blockverschlüsselung, auch Blockchiffre genannt, ist ein Verschlüsselungsverfahren, bei dem der Klartext in eine Folge gleichlanger Blöcke zerlegt wird, wobei die Blöcke anschließend unabhängig voneinander mit dem gleichen Schlüssel chiffriert werden. Somit werden auch Chiffretextblöcke mit einer festen Länge erzeugt. Den Chiffretext erhält man, indem man die Chiffretextblöcke wieder aneinanderfügt (konkateniert).

Typische Werte für die Blockgröße moderner Verfahren sind 128, 192 oder 256 Bit. Manche haben auch eine variable Blockgröße. Auch die Schlüssellänge kann fest (meist 128 bis 256 Bit) oder variabel sein. Um statistische Analysen zu erschweren, sollte die Blockgröße nicht zu klein sein, in der Praxis haben sich 64-Bit-Blöcke oder Vielfache davon durchgesetzt. Sollte ein Datenblock nicht die erforderliche Länge aufweisen, wird er mit Füll-Bits aufgefüllt (Padding). Der letzte Block muss jeweils mit Fülldaten aufgefüllt werden, in diesem kann auch die Länge der eigentlichen Nachricht kodiert werden.

Einige bekannte Blockchiffren sind:

DES Camellia RC2 3DES
FEAL RC6 AES Blowfish
Serpent IDEA Twofish Skipjack
CAST MARS TEA XTEA

Neben der Blockchiffre existiert die Stromchiffre. Diese ist eine Verschlüsselung, bei der die Information kontinuierlich zeichenweise oder bitweise verschlüsselt wird.

Inhaltsverzeichnis

Arbeitsweise

Blockchiffre-Verfahren wie AES oder DES arbeiten mit logischen Verknüpfungen wie XOR-Operationen, Substitutionen, Permutationen und arithmetischen Operationen der Dualarithmetik. Um eine unbefugte Entschlüsselung so weit wie möglich zu verhindern, arbeiten Blockchiffre-Verfahren bei der Verschlüsselung in mehreren Runden. Eine Runde soll sowohl für Verwirrung als auch Zerstreuung sorgen, wobei durch die Verwirrung (in der kryptologischen Fachsprache Konfusion genannt) der Zusammenhang zwischen Geheimtext und Schlüssel so komplex wie möglich gemacht wird. Die Zerstreuung (Diffusion genannt) soll die Information an einer Stelle des Klartextblocks über den gesamten Geheimtextblock verteilen; am Ende soll jedes Bit des Schlüsseltextblocks von jedem Bit des Klartextblocks abhängen. Das Durchlaufen mehrerer Runden sorgt für eine weitere Erhöhung von Konfusion und Diffusion.

Deterministische Blockchiffre

Eine deterministische Blockchiffre liegt vor, wenn die Chiffretextblöcke die gleiche Länge wie die Klartextblöcke aufweisen. Gleiche Klartextblöcke ergeben dann auch gleiche Chiffretextblöcke. Dies stellt einen Nachteil dar, da sich dadurch Muster des Klartextes nachvollziehen lassen. Aus diesem Grund wird versucht, eine deterministische Blockchiffre in einem Kryptographischen Modus zu verwenden, der diese in einen indeterministischen Zustand versetzt.

Indeterministische Blockchiffre

Bei einer indeterministischen Blockchiffre sind die Chiffretextblöcke länger als die Klartextblöcke. Es gibt mehr mögliche Chiffretext- als Klartextblöcke, so dass auch bei gleichen Klartextblöcken, die chiffriert werden, unterschiedliche Chiffretextblöcke entstehen können.

Geschichte

Lucifer wird als die erste zivil nutzbare Blockchiffre anerkannt, sie wurde im Jahr 1971 von IBM auf der Grundlage von Horst Feistels kryptographischen Arbeiten entwickelt. Eine revidierte Version von Lucifer wurde vom National Bureau of Standards (NBS) der USA (woraus 1988 das National Institute of Standards and Technology, NIST hervorging) übernommen und zum DES (Data Encryption Standard) erklärt, nachdem Änderungen vom NBS selbst und vom Geheimdienst NSA am Algorithmus vorgenommen worden waren. Der DES wurde 1976 der Öffentlichkeit vorgestellt und fand eine weit verbreitete Anwendung.

Der DES wurde, aufgrund seiner in der Zwischenzeit zu geringen Schlüssellänge von 56 Bit und seiner daraus resultierenden Schwäche für Brute-Force-Angriffe mit heutiger Technologie, im Jahr 2001 nach einer fünfjährigen Ausschreibungsphase durch den AES (Advanced Encryption Standard) ersetzt. Der Auswahlprozess des AES wird weltweit von vielen Kryptographen wegen seiner offenen Gestaltung als vorbildlich angesehen. Der Algorithmus des AES war von Joan Daemen und Vincent Rijmen unter dem Namen Rijndael entwickelt worden.

Feistelchiffre

Hauptartikel: Feistelchiffre

Feistelchiffre, auch als Feistelnetzwerk bezeichnet, ist eine allgemeine Struktur, mit der Blockchiffren realisiert werden können. Horst Feistel, ein Mitarbeiter von IBM, der im Jahr 1970 an der Chiffre Lucifer arbeitete, gilt als Erfinder. Der Klartext wird zuerst in einzelne Blöcke geteilt, deren Größe 64 Bit oder Vielfache davon beträgt. Die Blöcke werden in einem weiteren Durchgang in zwei Hälften geteilt und in mehreren Runden mit verschiedenen Schlüsseln chiffriert, ist dieser Schritt abgeschlossen, werden die chiffrierten, geteilten Blöcke wieder zusammengeführt. Feistelnetzwerke ermöglichen eine Entschlüsselung, ohne dass eine Umkehrfunktion der mathematischen Chiffrierfunktion benötigt wird. Die Feistelchiffre diente als Grundlage verschiedener Chiffren zum Beispiel von DES, Twofish und Blowfish.

Produktchiffre

Die Schwierigkeit, eine Blockchiffre zu entwickeln, liegt darin, eine mathematisch umkehrbar eindeutige Transformation zu finden, welche den kryptographischen Anforderungen gerecht wird, und mit wenig Aufwand implementierbar ist. Aus diesem Grund beschränkt man sich meistens auf eine mehrfache Ausführung der Substitutionen und Permutationen, wodurch man versucht, eine möglichst komplexe Verschlüsselungsfunktion zu erhalten. Die Permutation kann mit einer relativ einfachen Struktur implementiert werden. Produktchiffre ist eine Bezeichnung für eine Verschlüsselungsfunktion, die aus Kombinationen von Substitution und Permutation aufgebaut ist.

Kryptographische Modi

Ein kryptographischer Modus legt fest, wie sich die Verschlüsselung mehrerer Klartextblöcke vollzieht, indem er definiert, in welcher Art der Verschlüsselungsalgorithmus auf den Datenstrom angewandt wird. Je nach den Anforderungen der Anwendung variiert die Fehleranfälligkeit und Sicherheit. Der internationale Standard ISO 10116 definiert für blockorientierte Verschlüsselungsalgorithmen vier verschiedenen Betriebsarten: Electronic Code Book (ECB), Cipher Block Chain (CBC), Cipher Feedback (CFB) und Output Feedback (OFB).

ECB – Electronic Code Book

Hauptartikel: Electronic Code Book Mode

Wird der Algorithmus blockweise auf den Klartext angewandt, spricht man vom Electronic Code Book Modus (ECB). Dieser Modus kann gut mittels Parallelisierung beschleunigt werden, da keine Rückkopplung erfolgt, er weist aber Schwächen auf, weil gleiche Klartextblöcke stets auf dieselben Chiffretextblöcke abgebildet werden. Zudem kann ein Angreifer innerhalb einer Schlüsselperiode Blöcke durcheinanderbringen oder wieder einspielen, ohne dass dies erkannt wird.

ECB eignet sich gut zur Verschlüsselung zufälliger Daten. Wenn die Daten kurz und zufällig sind (zum Beispiel verschiedene Schlüssel), wirkt sich keiner der Nachteile von ECB aus. In der Praxis wird ECB hauptsächlich für die Chiffrierung von Schlüsseln verwendet.

CBC – Cipher Block Chaining

Hauptartikel: Cipher Block Chaining

Der CBC-Modus wird eingesetzt, um die Schwächen des ECB-Modus auszugleichen. Dieser macht Muster im Klartext unkenntlich, indem er einen Klartextblock mit dem vorangegangenen Chiffretextblock mittels einer XOR-Operation verknüpft. Der erste Block wird mit einem Initialisierungsvektor, ein Block zufälliger Bits, verknüpft – die weiteren mit dem vorangehenden Chiffretextblock, dadurch werden zwei identische Klartextblöcke nie auf denselben Chiffretext abgebildet. Der Initialisierungsvektor wird zumeist vor der Nachricht im Klartext übertragen.

Da Muster im Klartext verborgen werden, eignet sich der CBC-Modus am besten für die Verschlüsselung von Dateien.

CFB – Cipher Feedback

Hauptartikel: Cipher Feedback Mode

Der CFB-Modus ist dem CBC-Modus ähnlich, da ebenfalls eine Rückkopplung des Chiffretextblockes erfolgt. Allerdings wird bei diesem Algorithmus durch Anwendung des Initialisierungsvektors zuerst ein temporärer Schlüssel erzeugt, der dann mit dem Klartext mittels einer XOR-Operation verknüpft wird. Eine Chiffrierung mittels CFB und nachfolgender OFB Anwendung kann dadurch zum Beispiel ohne Padding verwendet werden, da sie mehr einer Stromchiffre ähnelt.

Wenn alle Zeichen einzeln behandelt werden müssen, stellt der CFB-Modus, insbesondere 8-Bit-CFB, die beste Wahl zur Verschlüsselung von Zeichenströmen dar.

OFB – Output Feedback

Hauptartikel: Output Feedback

Der OFB-Modus ist etwas einfacher als der CFB-Modus aufgebaut. Hier ist der Schlüsselstrom nicht vom Datenstrom abhängig, was bedeutet, dass die Verschlüsselung nicht durch Rückkopplung vom Chiffretextblock und Klartextblock abhängig ist. Der Schlüsselstrom wird durch Anwendung des Schlüssels auf den Initialisierungsvektor bzw. auf den Block des vorhergehenden Durchgangs erzeugt.

OFB eignet sich am besten für fehleranfällige Umgebungen, da hier keine Folgefehler in der Ausführungszeit der Implementierung auftreten. Dieser Modus kommt außerdem zum Einsatz, wenn Vorausberechnungen nötig sind.

Weitere kryptographische Modi

Weitere kryptographische Modi sind

  • BC (Block Chaining[1]),
  • CBCC (Cipher Block Chaining with Checksum[1]),
  • CBCPD (Cipher Block Chaining of Plaintext Difference[1]),
  • CCM (Counter with CBC MAC),
  • CTR (Counter Modus[1]),
  • GCM (Galois/Counter Mode),
  • OCB (Offset Codebook Mode),
  • OCFB (Output Cipher Feedback[2]),
  • OFBNLF (Output Feedback with a Nonlinear Function[1]),
  • PBC (Plaintext Block Chaining[1]),
  • PCBC (Propagating Cipher Block Chaining[1], bzw. Plain Cipher Block Chaining[2]) und
  • PFB (Plaintext Feedback[1]).

Mathematische Betrachtung

Eine Blockchiffre ist eine Funktion F: S \times K \rightarrow C: (s,k) \mapsto F_s(k) = c, die einen Klartext k auf einen Schlüsseltext c abbildet, mit dem Schlüssel s als Parameter. Für jeden möglichen Schlüssel  s \in S ist die Abbildung  F_s: K \rightarrow C injektiv, als Bedingung dafür, dass die Entschlüsselungsfunktion F^{-1}: S \times C \rightarrow K existiert, die zu jedem Schlüsseltext wieder den Klartext berechnet: \forall s \in S, k \in K: F^{-1}_s(F_s(k)) = k.

Meist ist K = C, und die Ver- und Entschlüsselungsfunktionen sind dann für jeden Schlüssel aus S bijektiv. Heute verwendet man außerdem meist Bitblockchiffren, die auf Blöcken mit b Bit arbeiten: K \!\, =C=\{0,1\}^b.

Eine bijektive Abbildung von {0,1}b auf {0,1}b ist eine Permutation von 2b Elementen. Es gibt folglich eine extrem große Zahl (2b!) verschiedener Abbildungen.

Durch den Schlüssel einer Blockchiffre wird von den 2b! möglichen bijektiven Abbildungen genau eine ausgewählt. Da die Schlüssellänge typischer Blockchiffren weit geringer als log 2(2b!) Bits ist, wird durch die Gesamtheit aller Schlüssel nur ein kleiner Teil aller möglichen Abbildungen erfasst. Bei einer Blockgröße von 8 Bit wäre ein 1684-Bit-Schlüssel nötig um alle Permutationen realisieren zu können.

Weblinks

Einzelnachweise

  1. a b c d e f g h Bruce Schneier: Applied Cryptography. Protocols, Algorithms and Source Code in C. 2. Auflage. John Wiley & Sons, New York 1996, ISBN 0-471-11709-9, S. 206-208.
  2. a b Andreas Pfitzmann (15. Oktober 2000): Sicherheit in Rechnernetzen (PDF) S. 116-118. Abgerufen am 7. August 2010.

Wikimedia Foundation.

Synonyme:

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Blockverschlüsselung — Blockchiffre …   Universal-Lexikon

  • Blockchiffre — Blockverschlüsselung …   Universal-Lexikon

  • Electronic Codebook Mode — Electronic Code Book Mode (ECB Mode) ist eine unsichere Betriebsart (Modus, Mode) für Blockverschlüsselungen. Der Betriebsmodus wie ECB ist unabhängig vom verwendeten Blockverschlüsselungalgorithmus. Eine konkreter… …   Deutsch Wikipedia

  • SHACAL — Entwickler Helena Handschuh, David Naccache Abgeleitet von SHA 1, SHA 256 Zertifizierung NESSIE (SHACAL 2) Schlüssellänge 128 bis 512 Bit Blockgröße 160 Bit (SHACAL 1), 256 Bit (SHACAL 2) Struktur …   Deutsch Wikipedia

  • SHACAL-1 — SHACAL Entwickler Helena Handschuh, David Naccache Abgeleitet von SHA 1, SHA 256 Zertifizierung NESSIE (SHACAL 2) Schlüssellänge 128 bis 512 Bit Blockgröße 160 Bit (SHACAL 1), 256 Bit (SHACAL 2) Struktur …   Deutsch Wikipedia

  • SHACAL-2 — SHACAL Entwickler Helena Handschuh, David Naccache Abgeleitet von SHA 1, SHA 256 Zertifizierung NESSIE (SHACAL 2) Schlüssellänge 128 bis 512 Bit Blockgröße 160 Bit (SHACAL 1), 256 Bit (SHACAL 2) Struktur …   Deutsch Wikipedia

  • Stream-cipher — Stromverschlüsselung (engl. stream cipher) ist ein kryptographischer Algorithmus, bei dem Zeichen des Klartextes mit den Zeichen eines Schlüsselstroms einzeln (XOR bei nur zwei verschiedenen Zeichen) verknüpft werden. Der Schlüsselstrom ist eine… …   Deutsch Wikipedia

  • Stromchiffre — Stromverschlüsselung (engl. stream cipher) ist ein kryptographischer Algorithmus, bei dem Zeichen des Klartextes mit den Zeichen eines Schlüsselstroms einzeln (XOR bei nur zwei verschiedenen Zeichen) verknüpft werden. Der Schlüsselstrom ist eine… …   Deutsch Wikipedia

  • Stromchiffrierer — Stromverschlüsselung (engl. stream cipher) ist ein kryptographischer Algorithmus, bei dem Zeichen des Klartextes mit den Zeichen eines Schlüsselstroms einzeln (XOR bei nur zwei verschiedenen Zeichen) verknüpft werden. Der Schlüsselstrom ist eine… …   Deutsch Wikipedia

  • Blockalgorithmus — Die Blockverschlüsselung, auch Blockchiffre, ist ein Algorithmus, der einen Datenblock von gewöhnlich 64 oder 128 Bit mittels eines Schlüssel­werts verschlüsselt. Der resultierende, verschlüsselte Block hat dabei dieselbe Länge. Typische Werte… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”