CoderTools

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.

ChaCha20 (Strom): 256 Bit, Nonce 96 Bit, Zähler 32 Bit, 20 Runden; ohne Authentifizierung.

Anfangswert des Zählers (Standard: 0)

Formatoptionen
🔒 100% Lokale VerarbeitungIhre eingegebenen Daten werden vollständig in Ihrem Browser verarbeitet. Es werden keine Daten auf einen Server hochgeladen.

Ü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

Schnellmenü

Keine aktuellen Tools