Salsa20 Verschlüsselung
Hochgeschwindigkeits-Stromchiffre mit erweiterter Nonce-Variante
Clientseitige Sicherheit
Salsa20 ist eine ARX-Stromchiffre ohne Nachschlagetabellen — inhärent konstante Ausführungszeit. Nonce-Wiederverwendung ist katastrophal. Nutzen Sie XSalsa20 (192-Bit-Nonce) für sichere Zufalls-Nonce-Erzeugung.
Initialer Blockzählerwert (normalerweise 0 für Verschlüsselung, gleicher Wert für Entschlüsselung)
Über Salsa20
Salsa20 ist eine ARX-Stromchiffre von Daniel J. Bernstein (2005). Sie arbeitet auf einer 4×4-Matrix von 32-Bit-Wörtern (512-Bit-Zustand) mit nur Addition (mod 2³²), Rotation und XOR — ohne S-Boxen oder Tabellen. Der 64-Bit-Stromzähler ermöglicht wahlfreien Zugriff auf beliebige Positionen des Schlüsselstroms.
Salsa20 wurde 2008 für eSTREAM Profile 1 (Software) ausgewählt. XSalsa20 (Bernstein 2011) leitet per HSalsa20 einen 256-Bit-Teilschlüssel ab, der zufällige 192-Bit-Nonces ohne Geburtstagsproblem ermöglicht. Basis des NaCl secretbox (XSalsa20-Poly1305).
Algorithmenvergleich
| Algorithmus | Runden | Nonce-Länge | Geschwindigkeit | Beste Verwendung |
|---|---|---|---|---|
| Salsa20/20 | 20 | 64 bits (8 bytes) | Standard | Langzeit-Sitzungsverschlüsselung mit sequenziellen Nonces; hoher Durchsatz; eSTREAM-zertifizierte Bereitstellungen |
| Salsa20/12 | 12 | 64 bits (8 bytes) | Schnell | Performance-optimiert mit ausreichender Sicherheitsmarge; Bernstein-Empfehlung |
| Salsa20/8 | 8 | 64 bits (8 bytes) | Am schnellsten | Nur Benchmarking und Forschung |
| XSalsa20 | 20 | 192 bits (24 bytes) | Standard | Anwendungen mit zufälliger Nonce-Erzeugung; NaCl/libsodium-secretbox-Kompatibilität |
Wie Salsa20 funktioniert
Salsa20 initialisiert eine 4×4-Matrix: 4 Konstanten (“expand 32-byte k”), 8×32 Bit Schlüssel, 2×32 Bit Zähler, 2×32 Bit Nonce.
Viertelrunde auf (a,b,c,d): b⊕=(a+d)‹‹7; c⊕=(b+a)‹‹9; d⊕=(c+b)‹‹13; a⊕=(d+c)‹‹18. Doppelrunde = Spaltenrunde + Diagonalrunde. Salsa20/20 = 10 Doppelrunden. Ausgabe = XOR des transformierten Zustands mit dem Eingangszustand.
64-Bit-Zähler: 2⁶⁴ Blöcke × 64 Byte = 2⁷² Byte pro (Schlüssel, Nonce). Wahlfreier Zugriff durch Setzen des Zählers. Parallele Verarbeitung unabhängiger 64-Byte-Segmente möglich.
Rundenvarianten
- Salsa20/20 (20 Runden): maximale Sicherheitsmarge, eSTREAM nominiert, kein bekannter Vollangriff. Für alle sicherheitskritischen Anwendungen.
- Salsa20/12 (12 Runden): ~35% schneller als /20, kein bekannter Angriff auf 12 Runden, Bernsteins Leistungs-Sicherheits-Empfehlung.
- Salsa20/8 (8 Runden): schnellste Variante; bekannte reduzierte Angriffe (Aumasson 2008, 2²⁴⁹). Nicht für sicherheitskritische Nutzung. Nur Benchmarking.
Hauptmerkmale
- ARX-Design: keine S-Box, keine Tabellen. Ausführungszeit unabhängig von Schlüssel/Daten. Inhärente Immunität gegen Cache-Timing-Angriffe.
- Großer Schlüsselstrom: 2⁷² Byte pro (Schlüssel, Nonce) via 64-Bit-Zähler. Wahlfreier Zugriff ohne Neuverarbeitung.
- 64-Bit-Nonce: strenge Eindeutigkeitsverwaltung nötig. Nach 2³² Nachrichten gleicher Schlüssel Kollisionswahrscheinlichkeit nicht vernachlässigbar. XSalsa20 (192 Bit) für Langzeitschlüssel.
- XSalsa20 (192-Bit-Nonce, 2011): HSalsa20-abgeleiteter Teilschlüssel ermöglicht zufällige Nonce-Erzeugung. NaCl-secretbox-Standard.
- eSTREAM Profile 1 (Software, 2008): 4-jährige öffentliche Evaluierung. Kein Angriff auf 12 oder 20 Runden.
Sicherheitsüberlegungen
- Nonce-Wiederverwendung katastrophal: enthüllt XOR der Klartexte. Eindeutige Nonces erzwingen. XSalsa20 mit 192-Bit-Zufalls-Nonce eliminiert Geburtstagsrisiko.
- Geburtstagsproblem kurzer Nonce: 64-Bit-Nonce → ~2³² Nachrichten bis ~50% Kollision. XSalsa20 (192 Bit) verwenden.
- Reduzierte-Runden-Angriffe: keine auf /20 oder /12. Salsa20/8: bekannte Unterscheider. Nur /20 für kritische Nutzung.
- Keine Authentifikation: XSalsa20-Poly1305 oder ChaCha20-Poly1305 für AEAD verwenden.
Reale Verwendung
- NaCl secretbox (XSalsa20-Poly1305): ursprüngliche AEAD-Primitive von NaCl; 192-Bit-Nonce + Poly1305; weit verbreitet in libsodium-Anwendungen.
- eSTREAM Profile 1 (2008): Salsa20/12 als primäre Software-Stromchiffre im ECRYPT-Wettbewerb 2004-2008 ausgewählt.
- Einfluss auf ChaCha20: Bernstein entwarf ChaCha20 (2008) als Salsa20-Variante mit verbesserter Rundendiffusion.
- Legacy-Systeme: Viele VPN-Tools, Dateiverschlüsselung, Messenger nutzten XSalsa20-Poly1305 vor RFC 7539/8439.
Referenzen
Verwandte Tools
ChaCha20 Verschlüsselung
Moderne Stromchiffre mit ChaCha20, ChaCha20-Poly1305 AEAD und XChaCha20 Varianten
AES-Verschlüsselung/Entschlüsselung
Verschlüsseln und entschlüsseln Sie Text sicher mit dem AES-Algorithmus
RC-Verschlüsselung (RC4/RC5/RC6)
RC-Familie Strom- und Blockchiffren einschließlich RC4, RC4-Drop, RC5 und RC6 (AES-Finalist)