# FEAL

FEAL (Fast Data Encipherment Algorithm) ist eine Blockchiffre und zählt zu den symmetrischen Feistelchiffren. Das Ziel bei der Entwicklung, die von dem japanischen Telefonkonzern Nippon Telegraph and Telephone (NTT) ausging, war, eine effiziente Implementierung eines Verschlüsselungsalgorithmus in Software auch für kleine Mikrocontroller zu erreichen und damit eine Alternative zu dem von amerikanischen Behörden entwickelten Data Encryption Standard (DES) zu schaffen. DES ist in Software nur vergleichsweise ineffizient zu implementieren.
FEAL diente in den Jahren nach seiner Entwicklung 1987 vor allem als Testobjekt für verschiedenartige Angriffszenarien auf Verschlüsselungsalgorithmen. Insbesondere diente er dazu, die heute wesentlichen Analyseverfahren, die differentielle Kryptoanalyse und die lineare Kryptoanalyse, in ihrer Entwicklung voranzubringen. FEAL selbst gilt, in den ursprünglichen Versionen wie FEAL-4 und FEAL-8, als gebrochen und sollte daher nicht eingesetzt werden.

## Funktionsweise

Der Datenblock von 64 Bit besteht aus zwei Wörtern $L_{i}$ und $R_{i}$ zu je 32 Bit. Eine Feistelrunde besteht in der Auswertung der Rundenfunktion F (Bild) auf einem Wort und XOR-Verknüpfung des Ergebnisses mit dem anderen Wort und anschließender Vertauschung der Wörter:
    $L_{i+1}\!\,=R_{i}$
    $R_{i+1}\!\,=L_{i}\oplus F(R_{i},K_{i})$
Die Funktion F zerlegt das Wort $R_{i}$ in vier Byte, die im Bild jeweils durch eine Linie symbolisiert werden, und erhält als Eingabe außerdem einen Rundenschlüssel $K_{i}$ (2 Byte). Damit wird viermal eine bitweise XOR-Verknüpfung von zwei Bytes angewandt, und je zweimal eine der Funktionen $S_{0}$ und $S_{1}$ ausgewertet, die zwei Eingabebytes auf ein Ausgabebyte abbilden. Sie addieren zunächst die beiden Eingabebytes modulo $256$, und im Fall von $S_{1}$ wird dazu noch 1 addiert, wodurch das Zwischenergebnis h entsteht. Dieses wird um zwei Bitpositionen nach links rotiert:
    $S_{i}(x,y)=(h\,{\bmod {\,}}64)\cdot 4+\lfloor h/64\rfloor ;\;h=(x+y+i)\,{\bmod {\,}}256$
Die Chiffre verwendet außerdem Key Whitening vor der ersten und nach der letzten Runde.

## Versionen

Ursprünglich wurde 1988 von dem Entwicklerteam um Akihiro Shimizu und Shoji Miyaguchi bei NTT FEAL-4 entwickelt. Dieser Algorithmus und seine Entstehungsgeschichte dokumentiert auch sehr anschaulich und mit teilweise amüsanten Abläufen die Probleme beim Entwickeln sicherer Blockverschlüsselungsalgorithmen.
Damit der Algorithmus in Software einen möglichst hohen Durchsatz erzielt, war die Anzahl der Runden auf nur vier festgelegt. FEAL-4 wurde noch im gleichen Jahr 1988 auf der Eurocrypt '88 von B. den Boer gebrochen. Nur zwei Jahre später wurde von Sean Murphy die von ihm neu entwickelte differentielle Kryptoanalyse erfolgreich gegen FEAL-4 eingesetzt, wobei er nur 20 gewählte Klartextblöcke benötigte.
Die Entwickler verbesserten daraufhin im Jahr 1989 ihren Algorithmus, indem sie die Zahl der Runden auf acht erhöhten (FEAL-8). Dieser Algorithmus wurde ebenfalls im gleichen Jahr von Biham und Shamir auf der Konferenz SECURICOM '89 erfolgreich kryptoanalysiert.
Die Entwickler sahen sich daraufhin gezwungen, ihr Ziel, mit wenigen Runden eine effiziente Softwareimplementierung zu erreichen, endgültig aufzugeben, und veröffentlichten FEAL-N mit einer variablen Anzahl von Runden. Auf der SECURICOM '91 konnte wieder von Biham und Shamir gezeigt werden, das FEAL-N mindestens 32 Runden benötigt, damit es nicht effizienter als durch eine Brute-Force-Suche angegriffen werden kann.
Die Entwickler von FEAL entwarfen parallel im Jahr 1990 auch FEAL-NX, eine Variante, die mit 128 Bit langen Schlüsseln statt der ursprünglichen 64-Bit-Schlüssel arbeitet. Sehr zum Leidwesen der Entwickler wurde auf der SECURICOM '91 von Biham und Shamir gezeigt, dass FEAL-NX genauso leicht zu brechen ist wie FEAL-N mit 64-Bit-Schlüsseln.
Darüber hinaus wurden von verschiedenen Entwicklungsteams Modifikationen zur Stärkung vorgeschlagen, wie FEAL-N(X)S, welche FEAL durch eine dynamische Vertauschungsfunktion stärken soll. Allerdings gehen alle diese Erweiterungen sehr zu Lasten des Datendurchsatzes.
FEAL wird vor allem zum Testen und Verfeinern von kryptoanalytischen Angriffsmethoden genutzt. FEAL sollte, egal in welcher Version, wegen seiner bekannten Schwächen nicht in sicherheitskritischen Bereichen eingesetzt werden. FEAL war in den USA patentiert, das Patent lief 2009 aus.