Salsa20 (auch Snuffle 2005) ist eine Stromverschlüsselung, die 2005 von Daniel J. Bernstein entwickelt wurde. Im EU-Projekt eSTREAM ist die auf 12 Runden reduzierte Version Salsa20/12 einer der Finalisten (Profil 1 – Software-Anwendungen).[1] Salsa20 ist frei von Patenten.
Daniel J. Bernstein entwickelte Snuffle 2005 als Antwort auf die früheren Versuche der USA, kryptographische Publikationen zu beschränken. Von den Beschränkungen waren Hashfunktionen ausgenommen; mit Snuffle 2005 wurde gezeigt, dass eine starke Verschlüsselung auch mittels Hashfunktionen vorgenommen werden kann.[2]
Salsa20 Core ist der Kern verschiedener Hashfunktionen und Stromverschlüsselungen.
Salsa20 oder Snuffle 2005 ist eine Familie von 256-Bit-Stromverschlüsselungen:[3]
Salsa20/20 mit 20 Runden ist als Standard gedacht.
Salsa20/12 mit 12 Runden für zeitkritische Anwendungen war Finalist im eSTREAM-Projekt, einem europäischen Auswahlverfahren für Stromverschlüsselungen.
Salsa20/8 mit 8 Runden für zeitkritische Anwendungen wird in der Schlüsselableitungsfunktion scrypt benutzt.[4]
XSalsa20 ist eine Variante mit erweiterter Nonce (192 Bit statt 64 Bit).[5]
ChaCha (oder Snuffle 2008) ist eine Variante von Salsa20, die entwickelt wurde, um die Diffusion pro Runde bei gleichbleibender bis schnellerer Geschwindigkeit zu erhöhen. Der Zahlensuffix bei ChaCha entspricht der Rundenzahl, also entspricht ChaCha8 beispielsweise einem modifizierten Salsa20/8.[8][9]
Analog zu XSalsa20 gibt es auch die XChaCha-Variante mit erweiterter Nonce.[10]
Salsa20 beruht auf wenigen einfachen Operationen und ist damit ähnlich aufgebaut wie die Verschlüsselungsfunktionen XTEA und IDEA. Durch das konservative Design wird eine gute und konstante Software-Performance auf vielen CPUs und eine weitgehende Resistenz gegen einige Seitenkanalattacken(time-attacks) erreicht.
Der Kern besteht aus einer Funktion, die Schlüssel, Nonce und Zähler auf einen 64-Byte-Block abbildet. Die Funktion besteht aus einer langen Verkettung von nur drei Operationen: 32-Bit-Addition, 32-Bit-XOR, 32-Bit-Rotation (mit konstanten Abständen).
Für die Stromverschlüsselung wird das Ergebnis der Funktion im Counter Mode benutzt und mit dem Klartextexklusiv-Oder-verknüpft (XOR).
Die empfohlene Schlüssellänge beträgt 256 Bit, kürzere Schlüssel sind jedoch möglich. Salsa20 hat eine kompakte Implementierung, ist schnell und Speicher-schonend.
In einem neuen Verfahren, basierend auf den probabilistic neutral bits (PNBs), stellten Aumasson et al. 2008 einen Angriff auf Salsa20/7, Salsa20/8, ChaCha6, ChaCha7 und Rumba3 vor, in dem unter anderem Salsa20/7 (128-Bit-Schlüssel) mit einer Zeitkomplexität von 2111, einer Datenkomplexität von 221 und einer Erfolgsquote von 50 % gebrochen werden konnte.[20]
2012 wurde dieser Angriff von Shi et al. noch einmal verbessert.[21] Die besten Kryptoanalysen für die rundenreduzierten Varianten von Salsa20 und ChaCha sind demnach (Stand: September 2014):
Salsa20/7 (128-Bit-Schlüssel): Zeitkomplexität 2109, Platzkomplexität 219. Zur Veranschaulichung: der Superrechner Roadrunner bräuchte ungefähr 20.580.831.662 Jahre dafür und müsste außerdem für frei gewählte Klartexte Zugang zu den entsprechenden Geheimtexten haben (Chosen-Plaintext-Attacke). Unberücksichtigt bleibt dabei jedoch die Möglichkeit der Parallelisierung; Daniel J. Bernstein, der Erfinder von Salsa20, hält daher 128-Bit-Schlüssel für „uncomfortably risky“ („beunruhigend riskant“).[22]
↑Daniel J. Bernstein: ChaCha, a variant of Salsa20. (PDF) In: Department of Mathematics, Statistics, and Computer Science. The University of Illinois at Chicago, abgerufen am 6. März 2024.
↑Scott Arciszewski: XChaCha: eXtended-nonce ChaCha and AEAD_XChaCha20_Poly1305. draft-irtf-cfrg-xchacha-03. Internet Engineering Task Force, 10. Januar 2020 (ietf.org [abgerufen am 6. März 2024]).
↑Eric Rescorla: RFC: 8446 – The Transport Layer Security (TLS) Protocol Version 1.3. (englisch).
↑Jean-Philippe Aumasson: SHA-3 proposal BLAKE. In: 131002.net. 10. Juli 2019, archiviert vom Original (nicht mehr online verfügbar); abgerufen am 6. März 2024.
↑Zhenqing Shi, Bin Zhang, Dengguo Feng, Wenling Wu: Improved Key Recovery Attacks on Reduced-Round Salsa20 and ChaCha. In: Information Security and Cryptology – ICISC 2012. Springer Berlin Heidelberg 2013. ISBN 978-3-642-37681-8, S. 337–351.