SHACAL
# SHACAL

SHACAL-1 und SHACAL-2 sind symmetrische Blockchiffren mit einer variablen Schlüssellänge von 128 Bit bis 512 Bit, basierend auf den kryptographischen Hashfunktionen SHA-1 und SHA-256. Die SHACAL-Algorithmen wurden entworfen von Helena Handschuh und David Naccache, beide Angestellte des Chipkartenherstellers Gemplus.
* SHACAL-1 (ursprünglich nur SHACAL) ist eine Verschlüsselung für Blöcke mit 160 Bit Länge und basiert auf dem Hashverfahren SHA-1.
* SHACAL-2 ist eine Verschlüsselung für Blöcke mit 256 Bit Länge und basiert auf dem Hashverfahren SHA-256.

## Funktionsweise

Die beiden SHACAL-Varianten verwenden die Kompressionsfunktion von SHA-1 bzw. SHA-256, um eine Blockchiffre zu konstruieren. Die Kompressionsfunktion ist umkehrbar, sofern der letzte Schritt zur Addition des Initialisierungsvektors weggelassen wird. Somit kann die Kompressionsfunktion zur Verschlüsselung und deren Umkehrfunktion zur Entschlüsselung verwendet werden. Die Blocklänge entspricht hierbei der Länge des erzeugten Hashwerts: 160 Bit bei SHACAL-1 und 256 Bit bei SHACAL-2. Der zu verschlüsselnde Klartext bzw. zu entschlüsselnde Geheimtext bildet den Initialisierungsvektor der Kompressionsfunktion.
Der Schlüssel wird anstelle des Nachrichtenblocks in die Kompressionsfunktion gegeben. Daraus ergibt sich eine Schlüssellänge von 512 Bit. Die Schlüssellänge kann reduziert werden, indem die fehlenden Stellen mit Nullen bis auf 512 Bit aufgefüllt werden. Schlüssellängen kürzer als 128 Bit sind nicht vorgesehen.

## Sicherheit

Laut den Urhebern sei die Stärke von SHACAL die Wiederverwendung von Hashfunktionen, die umfangreichen Sicherheitsanalysen unterzogen wurden.
2003 wurde SHACAL-2 vom NESSIE-Projekt als einer ihrer 17 empfohlenen Algorithmen ausgewählt. SHACAL-1 wurde aufgrund von Sicherheitsbedenken nicht ausgewählt.