ChaCha20
Was ist ChaCha20?
ChaCha20Eine moderne Stromchiffre von Daniel J. Bernstein mit 256-Bit-Schlüssel und 96-Bit-Nonce, weit verbreitet zusammen mit Poly1305 als AEAD ChaCha20-Poly1305.
ChaCha20 ist eine 20-rundige Stromchiffre, die Daniel J. Bernstein 2008 als Weiterentwicklung seines Salsa20-Entwurfs konzipiert hat. Sie erzeugt einen Schlüsselstrom aus einem 256-Bit-Schlüssel, einem 96-Bit-Nonce und einem 32-Bit-Blockzähler und verwendet dabei ausschließlich Add-Rotate-XOR-Operationen (ARX) auf 32-Bit-Worten – eine „Quarter-Round" mischt jeweils vier Zustandsworte. Da sie keine Nachschlagetabellen benötigt, ist sie schnell und auf CPUs ohne AES-Hardware von Natur aus konstant in der Zeit, weshalb Google sie 2014 erstmals zum Schutz von Android- und Chrome-Datenverkehr einsetzte. Kombiniert mit dem Poly1305-MAC ist das AEAD-Verfahren ChaCha20-Poly1305 in RFC 8439 standardisiert (der RFC 7539 abgelöst hat) und eine der beiden verpflichtenden Ciphersuites in TLS 1.3, neben AES-GCM. Es bildet außerdem die Grundlage von QUIC, WireGuard, OpenSSH, dem Signal-Protokoll und dem RNG des Linux-Kernels.
Die entscheidende betriebliche Falle ist die Nonce-Wiederverwendung: Werden zwei Nachrichten mit demselben Schlüssel und Nonce verschlüsselt, offenbart dies das XOR ihrer Klartexte und den Einmal-Poly1305-Schlüssel, wodurch sowohl Vertraulichkeit als auch Authentizität gebrochen werden. Der 96-Bit-Nonce ist für einen verbindungsbezogenen Zähler komfortabel, für die zufällige Erzeugung in großem Maßstab jedoch riskant, weshalb XChaCha20 (draft-irtf-cfrg-xchacha) den Nonce über eine HChaCha20-Teilschlüsselableitung auf 192 Bit erweitert und damit zufällige Nonces sicher macht. Nach mehr als einem Jahrzehnt Kryptanalyse gibt es keinen Angriff, der die vollständige 20-Runden-Chiffre bricht.
flowchart LR K[256-Bit-Schlüssel] --> S[Zustand initialisieren: Konstanten, Schlüssel, Zähler, Nonce] N[96-Bit-Nonce] --> S CTR[Blockzähler] --> S S --> R[20 Runden ARX-Quarter-Rounds] R --> KS[Schlüsselstrom-Block] PT[Klartext] --> X((XOR)) KS --> X X --> CT[Chiffrat] CT --> P[Poly1305-MAC] P --> TAG[Authentifizierungs-Tag]
● Beispiele
- 01
TLS 1.3 und QUIC nutzen auf Mobilgeräten TLS_CHACHA20_POLY1305_SHA256.
- 02
WireGuard verschlüsselt sämtliche Datenpakete mit ChaCha20-Poly1305.
● Häufige Fragen
Was ist ChaCha20?
Eine moderne Stromchiffre von Daniel J. Bernstein mit 256-Bit-Schlüssel und 96-Bit-Nonce, weit verbreitet zusammen mit Poly1305 als AEAD ChaCha20-Poly1305. Es gehört zur Kategorie Kryptografie der Cybersicherheit.
Was bedeutet ChaCha20?
Eine moderne Stromchiffre von Daniel J. Bernstein mit 256-Bit-Schlüssel und 96-Bit-Nonce, weit verbreitet zusammen mit Poly1305 als AEAD ChaCha20-Poly1305.
Wie schützt man sich gegen ChaCha20?
Schutzmaßnahmen gegen ChaCha20 kombinieren typischerweise technische Kontrollen und operative Praktiken, wie in der Definition oben beschrieben.