ChaCha20-Verschlüsselung
Moderne Stromverschlüsselung mit optionaler Authentifizierung
Clientseitige Sicherheit
ChaCha20-Poly1305 (RFC 8439) ist der empfohlene AEAD-Modus. Reines ChaCha20 bietet keine Integrität — immer Poly1305 verwenden. 96-Bit-IETF-Nonce: strenge Eindeutigkeit erzwingen. XChaCha20-Poly1305 (192 Bit) für sichere Zufalls-Nonce-Erzeugung.
Anfangswert des Zählers (Standard: 0)
Über ChaCha20
ChaCha20 ist ein ARX-Stromchiffre von Bernstein (2008), verbesserte Variante von Salsa20. Gleiche 4×4-Matrix, aber neues Quarter-Round mit Rotationen 16-12-8-7: vollständige Diffusion in 2 Runden (Salsa20: 4). IETF (RFC 8439): 96-Bit-Nonce + 32-Bit-Zähler (max. 256 GB/Nonce).
ChaCha20-Poly1305 (RFC 7539→RFC 8439): IETF-standardisiertes AEAD. Einmaliger Poly1305-Schlüssel aus ersten 32 Bytes ChaCha20 (Zähler=0), Verschlüsselung ab Zähler=1. 128-Bit-Tag. Google 2014 für Android-TLS. TLS 1.3 (RFC 8446): TLS_CHACHA20_POLY1305_SHA256 Pflichtchiffre.
Algorithmusvergleich
| Algorithmus | Authentifizierung | Schlüssellänge | Nonce-Größe | Anwendungsfall |
|---|---|---|---|---|
| ChaCha20 | Stromverschlüsselung | 256 bits | 96 bits (12 bytes) | Protokoll-Forschung; Streaming mit Authentifizierung auf höherer Ebene; Benchmarking |
| ChaCha20-Poly1305 | AEAD | 256 bits | 96 bits (12 bytes) | TLS 1.3, WireGuard, SSH, QUIC, Signal; Geräte ohne AES-NI; Timing-resistentes AEAD |
| XChaCha20 | Stromverschlüsselung | 256 bits | 192 bits (24 bytes) | Datei-/DB-Verschlüsselung ohne garantierte Nonce-Eindeutigkeit; libsodium secretstream; Backup-Verschlüsselung |
| XChaCha20-Poly1305 | AEAD | 256 bits | 192 bits (24 bytes) | Ruhezustandsdaten mit zufälliger Nonce + 128-Bit-Auth; libsodium-App-Speicher; Standard-AEAD ohne zentrale Nonce-Verwaltung |
Wie ChaCha20 funktioniert
Initialisierung 4×4: Zeile 0=Konstanten “expa nd 32-byte k”, Zeilen 1-2=256-Bit-Schlüssel (8×32), Zeile 3=[Zähler|Nonce₀|Nonce₁|Nonce₂] (IETF). Quarter-Round(a,b,c,d): a+=b; d^=a; d‹‹‹16; c+=d; b^=c; b‹‹‹12; a+=b; d^=a; d‹‹‹8; c+=d; b^=c; b‹‹‹7.
Doppelrunde = Spalten-Quarter-Round + Diagonal-Quarter-Round. Rotationen 16-12-8-7: vollständige Diffusion in 2 Runden (Salsa20: 4). 10 Doppelrunden; Ausgabe = XOR transformierter Zustand mit Eingangszustand.
AEAD: Authentifizierte Verschlüsselung
ChaCha20-Poly1305 (RFC 8439): Einmal-Poly1305-Schlüssel aus ersten 32 Bytes ChaCha20 (Zähler=0); Verschlüsselung ab Zähler=1; MAC über [gepolstertes AAD||Chiffrat||len(AAD)||len(Chiffrat)]; 16-Byte-Tag.
XChaCha20-Poly1305: HChaCha20 leitet 256-Bit-Teilschlüssel aus ersten 128 Bit eines 192-Bit-Nonce + Originalschlüssel ab. 2^32 Nachrichten → Kollisionswahrscheinlichkeit 2^(-128). libsodium: crypto_aead_xchacha20poly1305_ietf_encrypt.
Hauptmerkmale
- Bessere Diffusion als Salsa20: Rotationen 16-12-8-7 → vollständige Diffusion in 2 Runden. ChaCha20/8 ≈ Salsa20/16 in Sicherheit.
- IETF-Standardisierung (RFC 8439, 2018): TLS 1.3, WireGuard, SSH, QUIC, Signal, Noise Protocol, Android TLS.
- AES-unabhängige Leistung: 25-40% schneller als AES-GCM auf ARM ohne AES-NI. Ideal für IoT/Mobil/Embedded.
- 96-Bit-IETF-Nonce: 32-Bit-Zähler (max. 256 GB/Nonce). XChaCha20: 192 Bit für sichere Zufalls-Nonce-Erzeugung.
- Keine bekannten Angriffe auf ChaCha20/20 (2025). Beste reduzierte Analyse: Shi et al. (2012) auf ChaCha20/6.
Sicherheitsüberlegungen
- Nonce-Wiederverwendung zerstört ChaCha20-Poly1305: XOR Plaintexts enthüllt + Poly1305-Schlüssel offenbart. TLS 1.3: Nonce XOR Sequenznummer.
- 32-Bit-Zähler-Limit: max. 256 GB pro (Schlüssel, Nonce). TLS 1.3 Re-Keying via key_update.
- Poly1305-Einmalschlüssel: Nonce-Wiederverwendung → Poly1305-Schlüsselwiederverwendung → Forgery-Angriff (Bernstein 2005). RFC 8439 §2.8.
- Authentifizierungs-Tag-Kürzung verboten: RFC 8439 fordert 16 Byte. Kürzung auf 64 Bit → 2^(-64), nicht konform TLS 1.3.
Praxisanwendung
- TLS 1.3 (RFC 8446): TLS_CHACHA20_POLY1305_SHA256 Pflichtchiffre. OpenSSL, BoringSSL, NSS, WolfSSL, mbedTLS.
- WireGuard VPN: einzige symmetrische Chiffre (Donenfeld 2017, Linux 5.6). Mit Curve25519, Poly1305, BLAKE2, SipHash.
- Signal Protocol/Double Ratchet: ChaCha20-Poly1305 nach X3DH. WhatsApp, Messenger-Secret, Matrix, Keybase.
- OpenSSH chacha20-poly1305@openssh.com (6.5, 2014): zwei ChaCha20-Instanzen zur Timing-Leck-Eliminierung.
- Google Mobile TLS (2014): Langley+Duong. 3x schneller als AES-128-GCM auf Nexus 5 Cortex-A15. IETF-Einfluss.
Referenzen
Verwandte Tools
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)
Blowfish-Verschlüsselung/Entschlüsselung
Schnelle symmetrische Blockverschlüsselung von Bruce Schneier mit variabler Schlüssellänge (32-448 Bit)