Blockverschlüsselung

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Eine Blockverschlüsselung (auch Blockchiffre bzw. auf englisch block cipher genannt) ist ein deterministisches Verschlüsselungsverfahren, bei dem ein Klartext fester Länge auf ein Chiffrat fester Länge abgebildet wird. Die genaue Transformation wird dabei durch einen Schlüssel bestimmt.

Im Gegensatz zu einer Stromchiffre kann eine Blockchiffre nur einen einzigen Block verschlüsseln. Zur Verschlüsselung längerer Daten wird ein Betriebsmodus verwendet, der festlegt, wie die Blockchiffre anzuwenden ist. Blockchiffren werden aber auch als Bausteine beispielsweise zur Konstruktion kryptographischer Hashfunktionen verwendet.

Arbeitsweise[Bearbeiten]

Alle modernen Blockchiffren wie AES oder DES sind als iterierte Blockchiffren konzipiert, was bedeutet dass die Verarbeitung der Eingabe in mehreren Runden erfolgt, die gleich aufgebaut sind. Dazu werden üblicherweise aus dem Schlüssel mehrere Rundenschlüssel abgeleitet. Bei der Verschlüsselung können zwei Ziele unterschieden werden: Durch Konfusion soll der Zusammenhang zwischen Geheimtext und Schlüssel so komplex wie möglich gemacht werden. Diffusion 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. Deshalb besteht eine Runde oft aus einer Substitutionsphase (oft aus S-Boxen aufgebaut), die vom Rundenschlüssel abhängt und für Konfusion sorgen soll, und einer Permutation, die gute Diffusion garantiert.

Geschichte[Bearbeiten]

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.

Definition[Bearbeiten]

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 2^b Elementen. Es gibt folglich eine extrem große Zahl (2^b!) verschiedener Abbildungen.

Durch den Schlüssel einer Blockchiffre wird von den 2^b! möglichen bijektiven Abbildungen genau eine ausgewählt. Da die Schlüssellänge typischer Blockchiffren weit geringer als \log_2(2^b!) 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.

Entwurfsprinzipien[Bearbeiten]

Produktchiffre[Bearbeiten]

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.

Feistelchiffre[Bearbeiten]

Hauptartikel: Feistelchiffre
Allgemeine Struktur eines Feistelchiffre

Feistelchiffre, auch als Feistelnetzwerk bezeichnet, ist eine allgemeine Struktur, mit der Blockchiffren realisiert werden können. Horst Feistel, der im Jahr 1970 bei IBM an der Chiffre Lucifer arbeitete, gilt als Erfinder. Ein Klartextblock wird in zwei Hälften geteilt und in mehreren Runden verarbeitet. In jeder Runde wird auf den einen Teil die Ausgabe einer vom Rundenschlüsseln abhängigen Rundenfunktion des anderen Teils addiert. 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.

Substitutions-Permutations-Netzwerk[Bearbeiten]

Ein Substitutions-Permutations-Netzwerk (SPN) ist eine Abfolge von Runden gleichen Aufbaus. In jeder Runde wird zuerst der Rundenschlüssel auf die Eingabe addiert, dann wird eine S-Box angewendet und deren Ergebnis mit einer Permutation vermischt.

Die bekannteste nach dem SPN-Prinzip entworfenen Blockchiffre ist AES.

Kryptographische Betriebsmodi[Bearbeiten]

Ein kryptographischer Betriebsmodus 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.[1] 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 Chaining (CBC), Cipher Feedback (CFB) und Output Feedback (OFB).

Bekannte Blockchiffren[Bearbeiten]

Einige bekannte Blockchiffren sind:

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

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

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