# Camellia (Algorithmus)

Camellia ist eine symmetrische Blockchiffre, die im Jahr 2000 in Zusammenarbeit von Mitsubishi und NTT entwickelt wurde. Camellia wurde vom europäischen NESSIE-Projekt und dem japanischen CRYPTREC-Projekt als einer ihrer empfohlenen Algorithmen ausgewählt. Camellia hat Ähnlichkeiten mit den Algorithmen MISTY1 und E2, welche früher von diesen Unternehmen entwickelt wurden.
Camellia ist patentiert, wurde aber 2001 von der NTT unter eine Royalty-free License gestellt, die eine Verwendung in Open-Source-Bibliotheken erlaubt.
Camellia verwendet die gleichen Parameter wie der Advanced Encryption Standard: eine Blockgröße von 128 Bit und Schlüssellängen von 128, 192 oder 256 Bit. Es ist eine Feistelchiffre mit SPN-Rundenfunktion. Die Anzahl der Runden ist abhängig von der Schlüssellänge – 18 Runden bei 128 Bit oder 24 Runden bei längeren Schlüsseln. Als nichtlineare Substitutionsschicht dienen vier 8×8-Bit große S-Boxen $s_{1},\ldots ,s_{4}$ mit affinen Transformationen und logischem XOR, wobei $s_{2},\ldots ,s_{4}$ durch Rotationen um ein Bit aus $s_{1}$ hervorgehen. Die Permutationsschicht verwendet lediglich lineare Transformationen und ähnelt der P-Funktion von E2. Um bitweise Kryptanalyse zu erschweren, wird zusätzlich alle sechs Runden eine an MISTY angelehnte lineare FL-Funktion auf den linken Halbblock und ihr Inverses FL$^{−1}$ auf den rechten Halbblock angewandt.

## Design

Camellia ist eine Feistelchiffre mit entweder 18 Runden (wenn ein 128-Bit Schlüssel verwendet wird) oder 24 Runden (wenn ein 192- oder 256-Bit Schlüssel benutzt wird). Jede sechs Runden wird ein logischer Transformationslayer angewendet: die sogenannte „FL-Funktion“ oder deren Umkehrfunktion. Camellia verwendet vier 8×8-Bit S-Boxen mit affinen Eingabe und Aufgabe Transformationen und logischen Operationen. Die Chiffre verwendet auch bei Eingabe und Ausgabe die sogenannte „Key Whitening“ Technologie, welche die Sicherheit iterierter Blockchiffren erhöht. Der Diffusionslayer verwendet eine lineare Abbildung, welche auf der Matrix der Zweig-Nummer 5 basiert.

## Sicherheit

Camellia wird als eine moderne, sichere Chiffre angesehen. Sogar die kleineren Schlüsselgrößen (128-Bit) werden als sicher gegenüber Brute-Force-Angriffen mit heutiger Technologie angesehen. Es gibt keine Berichte von erfolgreichen Angriffen auf die Chiffre. Camellia wurde für die Verwendung zertifiziert von ISO/IEC, dem NESSIE Projekt der EU und dem japanischen CRYPTREC Projekt. Die japanische Chiffre hat Sicherheitslevels und Verarbeitungsmethoden, welche mit der von AES verglichen werden können.
Camellia ist eine Blockchiffre, welche vollständig durch Minimalsystemen von multivariaten Polynomen definiert werden kann:
* Die Camellia (gleich bei AES) S-Boxen können durch ein System von 23 quadratischen Gleichungen mit 80 Termen definiert werden.
* Die Key-Schedule kann durch 1120 Gleichungen mit 768 Variablen beschrieben werden, welche 3329 lineare und quadratische Terme verwenden.
* Die ganze Blockchiffre kann durch 5104 Gleichungen mit 2816 Variablen beschrieben werden, welche 14592 lineare und quadratische Terme verwenden.
* Total sind 6224 Gleichungen mit 3584 Variablen nötig, welche 17920 lineare und quadratische Terme verwenden.
* Die Nummer von freien Termen ist 11696, welche ungefähr dieselbe Anzahl wie bei AES ist.
Theoretisch wäre es möglich Camellia (wie auch AES) durch einen algebraischen Angriff zu knacken. Ein XSL-Angriff (eXtended Spare Linearization) wäre auch denkbar.

## Verwendung

Mozilla Firefox 3 implementierte 2008 Camellia. Jedoch wurde die Funktion in Firefox 33 2014 deaktiviert und dann schließlich in der Version 23 2015 entfernt.
Im Jahr 2008 kündigte das FreeBSD-Team an, die Chiffre in FreeBSD 6.4 aufzunehmen. Auch für die Festplattenverschlüsselung war Camellia verfügbar.
Im September 2009 fügte GNU Privacy Guard in der Version 1.4.10 die Unterstützung für Camellia hinzu.
VeraCrypt (Ein Derivat von TrueCrypt) fügte Camellia als einen ihrer Verschlüsselungsalgorithmen hinzu.
Viele größere Bibliotheken mit dem Fokus auf Sicherheit wie Crypto++, GNUTLS, mbedTLS und OpenSSL unterstützen Camellia auch.

## Leistung

Die S-Boxen, welche von Camellia verwendet werden, zeigen große Ähnlichkeiten zu denen von AES. Dies führt dazu, dass CPU-Instruktionen von AES auch für Camellia angewendet werden können, dazu gehört auch AES-NI.

## Patent

Obschon Camellia patentiert wurde, ist der Algorithmus lizenzfrei erhältlich. Dadurch konnte Camellia ab November 2006 Teil des OpenSSL Projekts unter einer Open-Source-Lizenz werden. Das Mozilla NSS (Network Security Services) Modul nahm die Chiffre ebenfalls auf.