Samstag, 31. Juli 2010


Topthema

Donnerstag, 31. August 2006 | Topthema

About Security #70: Kryptographie — Feistel-Netzwerke

(Link zum Artikel: http://www.entwickler.de/php/kolumnen/030994)

Ab dieser Folge lernen Sie aktuell eingesetzte kryptographische Verfahren kennen. Während bisher mit Ausnahme der bitweisen Vigenère-Verschlüsselung zeichenorientierte Verfahren behandelt wurden, wird in den nun folgenden Verfahren in der Regel bitweise gearbeitet. Zuerst müssen wieder einige Grundbegriffe erklärt werden:

Konfusion und Diffusion

N E U ! Security aktuell
Täglich aktuelle Security-Infos!

Claude Shannon hat 1949 in seinem Artikel "Communication Theory of Secrecy Systems" (als gescannte Bilder) zwei Grundprinzipien der Chiffrierung beschrieben: Bei der Konfusion wird der Zusammenhang zwischen Klartext- und Geheimtextzeichen verwischt, wie z.B. bei der einfachen Substitution (siehe About Security #66). Bei der Diffusion werden die Informationen des Klartexts im Geheimtext verteilt.

Stromchiffren

Bei einer Stromchiffre wird ausgehend von einem Schlüssel eine "zufällige" Bitfolge generiert, die meistens als Schlüssel eines One-Time-Pads (siehe About Security #69) verwendet, d.h. über XOR mit dem Klartext verknüpft wird. Die Sicherheit des Verfahrens hängt vollständig von der Generierung der Bitfolge ab. Stromchiffren sind besonders gut zur Onlineverschlüsselung von Nachrichtenkanälen geeignet.

About Security: Die komplette Serie
Blockchiffren

Bei einer Blockchiffre werden Gruppen von Bits zu Blöcken zusammengefasst und gemeinsam verschlüsselt. Eine Substitution (siehe About Security #66) kann als Blockchiffre mit 8-Bit-Blöcken betrachtet werden, bei polyalphabetischen Substitutionen (siehe About Security #68) entspricht die Blocklänge der Periode (siehe About Security #69).

Produktalgorithmen

Bei einem Produktalgorithmus werden mehrere einfache, kryptographisch unsichere Schritte (genannt Runden) nacheinander ausgeführt. Diese Kombination der einfachen Funktionen kann die Sicherheit stark erhöhen. Zum Vergleich nennt Reinhard Wobst in seinem Buch "Abenteuer Kryptologie" das Lösen von Gleichungen: Lineare Gleichungen der Form "ax + b = c" sind leicht zu lösen, für quadratische Gleichungen lernt man die Formel in der Schule, und für kubische Gleichungen werden bereits mehrere Formeln benötigt. Die Formeln für Gleichungen 4. Grades sind schon sehr komplex, und für Gleichungen ab dem 5. Grad gibt es keine allgemeinen Lösungen mehr.

Feistel-Netzwerke

Feistel-Netzwerke wurden erstmals 1973 von Horst Feistel in seinem Artikel "Cryptography and Computer Privacy" (als gescannte Bilder) beschrieben. Sie dienen der Beschreibung einer Runde in einem Produktalgorithmus.

Jeder Block wird in zwei gleich große Hälften geteilt. In der i-ten Runde wird die linke Hälfte des (Klartext-)Blocks als L_i-1, die rechte als R_i-1 bezeichnet. Die Verschlüsselungsfunktion f verwendet einen geheimen Schlüssel S_i, um aus einem gegebenen (Klartext-)block K_i einen (Geheimtext-)block f(S_i, K_i)zu erzeugen. Die eigentliche Verschlüsselung erfolgt dann, indem die beiden Halbblöcke vertauscht und L_i-1mit f(S_i, R_i-1) XOR-verknüpft werden:

<pre> L_i := R_i-1 R_i := L_i-1 (+) f(S_i, R_i-1) </pre>

Grafisch lässt sich das Ganze folgendermaßen darstellen:

Eine Verschlüsselungsrunde eines Feistel-Netzwerks

Für die Entschlüsselung muss dieser Prozess umgekehrt werden. Das Ergebnis von Runde i ist

<pre> L_i := R_i-1 R_i := L_i-1 (+) f(S_i, R_i-1) </pre>

Zum Entschlüsseln werden L_i und R_igetauscht, außerdem wird der Rundenindex i rückwärts statt vorwärts gezählt. Führt man die Runde erneut durch, so ergibt sich

<pre> L_i =: R_i-1 L_i-1 (+) f(S_i, R_i-1) (+) f(S_i, L_i) = L_i-1 (+) f(S_i, L_i) (+) f(S_i, L_i) =: L_i-1 </pre>

Grafisch lässt sich das Ganze folgendermaßen darstellen:

Eine Entschlüsselungsrunde eines Feistel-Netzwerks

Wie man sieht, ist das Entschlüsselungsprinzip unabhängig von Blocklänge und Rundenzahl. Auch die Verschlüsselungsfunktion f(S_i, K_i)muss nicht mehr wie bei den klassischen Verfahren umkehrbar sein. Bisher war eine Grundbedingung der kryptographischen Verfahren, dass die Umkehrung der Verschlüsselungsfunktion f(S, K) nur bei Kenntnis des Schlüssels S möglich ist. Bei Feistel-Netzwerken reicht die Forderung, dass ohne Kenntnis des Schlüssels S keine der Funktionen f(S_i, K_i)berechnet werden kann. Dies ist eine deutlich einfachere Aufgabe, da auf die Umkehrbarkeit nicht mehr geachtet werden muss.

Feistel-Netzwerke werden in vielen kryptographischen Verfahren eingesetzt, so z.B. in DES oder Blowfish.

Die Entwicklung von DES

Der Data Encryption Standard DES entstand in Folge einer 1973 vom US-amerikanischen National Bureau of Standards (NBS, heute NIST) gestarteten Ausschreibung für einen einheitlichen, sicheren Verschlüsselungsalgorithmus. Die ersten Ergebnisse waren mehr als mager: Kein einziger der eingereichten Entwürfe erfüllte auch nur annähernd die Anforderungen. Erst nach einer zweiten Ausschreibung 1974 wurde von einem IBM-Team, dem u.a. der bereits oben erwähnte Horst Feistel angehörte, ein auf dem IBM-Projekt Lucifer basierender Algorithmus eingereicht. Ende 1976 wurde dieser nach eingehender Prüfung durch das NBS und die hinzugezogene National Security Agency (NSA) zum offiziellen Standard erklärt.

Über die Beteiligung der NSA ranken Gerüchte, so soll der Algorithmus absichtlich unsicherer gemacht oder eine Hintertür eingebaut worden sein. 1978 untersuchte ein Komitee mit Zugriff auf geheime Unterlagen diese Befürchtungen und erklärte sie für unbegründet, hielt die Begründung dafür jedoch geheim.

Der Algorithmus des DES-Verfahrens wird in der nächsten Folge vorgestellt.

Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!

Carsten Eilers

About Security – Übersicht zum aktuellen Thema "Kryptographie – Grundlagen"

Kommentare

Folgende Links könnten Sie auch interessieren