Salsa20 Chiffre

Herkunft / Verwendung: Salsa20 ist eine 2005 von Daniel J. Bernstein (USA) entwickelte Stromchiffre mit einer Schlüssellänge von 128 bit (entsprechend 16 Zeichen) bzw. 256 bit (entsprechend 32 Zeichen).

Salsa20 war Kandidat beim eStream Projekt des ECRYPT-Netzwerkes, einem Kryptowettbewerb, der von 2004 bis 2008 lief und das Ziel verfolgte, Vorschläge für neue Stromchiffren entgegenzunehmen, kryptologisch zu untersuchen und zu bewerten und so empfehlenswerte Verfahren zu finden. Das eStream Projekt lief über drei Phasen: Phase 1, die bis März 2006 lief, war eine allgemeine Beurteilung und Analyse der eingereichten 34 Kandidaten. Hier wurden offensichtliche Schwächen erkannt. Phase 2, im August 2006 gestartet, untersuchte die Kandidaten, die weitergekommen waren insbesondere auch auf Design und Performance und beinhaltete weitere Kryptoanalysen. Phase 3 schließlich, im April 2007 gestartet und im April 2008 beendet, verglich die übrigen 14 Kandidaten miteinander und kürte die besten als empfehlenswert: vier in der Kategorie Software-Implementierung und drei in der Kategorie Hardware-Implementierung.

Salsa20 schaffte es bis in Phase 3 des Wettbewerbs und wurde auch als einer der sieben empfehlenswerten Algorithmen eingestuft. Neben Rabbit belegte Salsa20 den ersten Platz bei den Software-Verfahren. Salsa20 ist für die Implementierung in Software optimiert. Salsa20 ist für kommerziellen und nicht-kommerziellen Gebrauch freigegeben.

Es sind bisher keine Schwächen in Salsa20 bekannt geworden, die einen Angriff ermöglichen, der effizienter als ein Brute-Force-Attack wäre.

Beschreibung des Algorithmus

Der Algorithmus funktioniert mit einer Schlüssellänge von 128 bit oder 256 bit und einer Initialisierungsvektorlänge von 64 bit.

Salsa20 arbeitet, wie der Name schon andeutet, über 20 Runden. Pro Iteration generiert Salsa20 einen Schlüssel-Bitstrom von 512 bits, dies ist ungewöhnlich viel. Dazu nutzt die Chiffre einen Pseudozufallszahlengenerator, dessen Ergebnis (Schlüsselstrom) mit dem Klartext per XOR verknüpft und so verschlüsselt wird. Da XOR reziprok ist, kann man durch ein erneuten Aufruf mit demselben Schlüssel ein Chiffrat wieder entschlüsseln.

Der Pseudozufallszahlengenerator basiert auf einem ARX-Design. ARX steht für And, Rotate und Xor. Dies sind einfache und perfomante binäre Operationen, die man auch in Hardware realisieren kann.

Statt des sonst bei Stromchiffren üblichen OFB-Modus nutzt Salsa20 den CTR-Modus. Dadurch ergibt sich, dass der Status lediglich einen Zähler darstellt, bei dem anhand des Zählerstands der Teilschlüsselstrom von 64 Bytes (512 bit) berechnet wird. Das hat den Vorteil, dass man so schnell im Schlüsselstrom vorspulen kann, ohne alle Schritte zuvor durchgerechnet hat. Praktisch ist das z. B., wenn man von einer sehr großen Datei nur den letzten Teil entschlüsseln muss.

Beispiel

Klartext:BeispielklartextBeispielklartext (32 Bytes)
Schlüssel:Schokoladentorte (16 Bytes, 128 bit)
IV:00000000 00000000 (hex 8 Bytes, 64 bit)
Chiffrat:B842AE68 AA8BF914 FD38AF70 E31603DB FEE049FF DB5AB42D E6392736 25B089C8 (hex)

Klartext:BeispielklartextBeispielklartext (32 Bytes)
Schlüssel:Schokoladentorte mit Vanillesoße (32 Bytes, 256 bit)
IV:00000000 00000000 (hex 8 Bytes, 64 bit)
Chiffrat:944C4DD0 4FB5CC93 2E7A338E F740A93B 87F593E3 710881E0 E5CC26DF B0C4486F (hex)

Code / Chiffre online dekodieren / entschlüsseln bzw. kodieren / verschlüsseln (DeCoder / Encoder / Solver-Tool)

Wenn Sie Texte eingeben, die nicht als Hex-Sequenz (ohne Leerzeichen) interpretiert werden können, erfolgt eine automatische Umsetzung in eine Hex-Sequenz. Ist das Ergebnis umsetzbar in druckbare ASCII-Zeichen, erfolgt eine automatische Umsetzung von Hex.

Einen eventuell zu berücksichtigen Initialisierungsvektor (IV) können Sie, durch Komma getrennt, nach dem Schlüssel angeben.



Quellen, Literaturverweise und weiterführende Links

Schmeh, Klaus: Kryptografie: Verfahren - Protokolle - Infrastrukturen, dpunkt Verlag, 5. Auflage 2013, iX-Edition, S. 304
Homepage des eSTREAM Projekts