Jedes Mal, wenn Sie eine Nachricht senden, eine Online-Zahlung tätigen oder sich bei einem sicheren Dienst anmelden, arbeitet die Verschlüsselung im Hintergrund, um Ihre Daten privat zu halten. Einer der Algorithmen, die diese Aufgabe heute erfüllen, ist ChaCha20: eine schnelle, sichere und leichtgewichtige Chiffre, der Tech-Giganten und Sicherheitsexperten gleichermaßen vertrauen. Hier erfahren Sie, was dahintersteckt und wie Ihre Daten geschützt bleiben.

ChaCha20

Den ChaCha20-Algorithmus verstehen

Um den ChaCha20-Algorithmus zu verstehen, ist es hilfreich, ihn in seine Kernelemente zu zerlegen: seinen Ursprung, den Prozess, mit dem er verschlüsselte Daten erzeugt, sowie die Rolle von Schlüssel, Nonce und Zähler. All diese Teile wirken zusammen und sorgen für Geschwindigkeit, Effizienz und Sicherheit, wodurch ChaCha20 in vielen modernen Verschlüsselungsprotokollen eine starke Option darstellt.

Wer hat ChaCha20 entwickelt und warum?

ChaCha wurde 2008 von Daniel J. Bernstein entwickelt, einem amerikanisch-deutschen Mathematiker, Informatiker und Kryptografen. Es basiert auf seinem früheren Entwurf Salsa20.

Einer der Hauptgründe für die Entwicklung von ChaCha20 war, eine starke Alternative zu weit verbreiteten Chiffren wie dem Advanced Encryption Standard (AES) zu bieten. AES ist zwar sehr sicher, läuft aber am schnellsten auf Geräten, die Hardwarebeschleunigung unterstützen: spezielle CPU-Befehle wie Intels Advanced Encryption Standard New Instructions (AES-NI), die seine Operationen beschleunigen. Viele ältere, mobile oder energiearme Geräte verfügen nicht über diese Hardwareunterstützung, wodurch AES langsamer und stromhungriger wird, wenn es rein in Software implementiert wird.

ChaCha20 wurde entworfen, um dieses Problem zu vermeiden. Es verwendet ausschließlich einfache Operationen, die auf praktisch jedem Prozessor schnell laufen. Dieses schlanke Design macht es besonders geeignet für Smartphones, eingebettete Systeme und andere ressourcenbeschränkte Umgebungen. Heute wird ChaCha20 in modernen Protokollen wie Transport Layer Security (TLS) 1.3 als zuverlässige Option neben AES empfohlen.

So funktioniert ChaCha20

Angenommen, Sie möchten diese Nachricht mit ChaCha20 verschlüsseln: “ExpressVPN protects my online privacy and helps keep my data safe.” So wird das Schritt für Schritt gemacht.

1. Wandeln Sie die Nachricht in Bytes um.

Computer arbeiten mit Bytes, also 8-Bit-Einheiten, die eine Zahl von 0 bis 255 speichern können. Text wie unser Satz wird gespeichert, indem jedes Zeichen (“E,” “x,” Leerzeichen, “.” usw.) auf 1 Byte abgebildet wird. Unser Satz ist 66 Bytes lang, daher wird etwas mehr als ein 64-Byte-Chunk (Block) zum Verschlüsseln benötigt.

2. Als Nächstes benötigen Sie einen geheimen Schlüssel.

ChaCha20 ist eine symmetrische Chiffre, das heißt, dasselbe Geheimnis wird zum Ver- und Entschlüsseln verwendet. Dieses Geheimnis ist ein 256-Bit-Schlüssel (32 Bytes). Sie können ihn sich als langes, zufälliges Passwort vorstellen, das nur Absender und Empfänger kennen. Warum 256 Bits? Die Länge reicht aus, sodass ein Erraten durch Ausprobieren praktisch unmöglich ist.

3. Sie benötigen außerdem eine Nonce (number used once).

Eine Nonce ist eine öffentliche, eindeutige Zahl, die für jede Nachricht gewählt wird, die Sie mit einem bestimmten Schlüssel verschlüsseln.

Im Internet Engineering Task Force (IETF)-Version von ChaCha20, beträgt die Nonce 96 Bits (12 Bytes). Sie muss nicht geheim sein, darf aber niemals mit demselben Schlüssel wiederholt werden. Die Wiederverwendung eines Schlüssel-Nonce-Paars würde Ihre Nachricht preisgeben.

4. ChaCha20 erzeugt einen Schlüsselstrom.

ChaCha20 gehört zur Familie der „Stromchiffren“. Anstatt Ihre Nachricht direkt zu vermischen, erzeugt sie zunächst einen Strom aus pseudozufälligen Bytes, den sogenannten Schlüsselstrom. Diesen Schlüsselstrom kombinieren Sie anschließend mit den Bytes Ihrer Nachricht über eine einfache Operation namens Exclusive OR (XOR) .

Wie erzeugt ChaCha20 den Schlüsselstrom?

Internen Zustand aufbauen

ChaCha20 hält einen kleinen Arbeitsbereich namens Zustand vor, angeordnet als 4×4-Gitter aus Zahlen. Jede Zahl im Gitter ist ein Wort, das hier eine vorzeichenlose 32-Bit-Ganzzahl (4 Bytes) bedeutet, zum Beispiel 00000000 00000000 00000111 01001001.

Die 16 Wörter im Gitter werden gefüllt mit:

  • 4 festen Konstanten (sie identifizieren lediglich den Algorithmus),
  • 8 Wörter aus dem 256-Bit-Schlüssel (da 8 × 4 Bytes = 32 Bytes),
  • 1 Blockzähler (wird als Nächstes erklärt),
  • 3 Wörter aus der Nonce (3 × 4 Bytes = 12 Bytes).

ChaCha internal state

Der Blockzähler

Der Schlüsselstrom wird in Blöcken von jeweils 64 Bytes erzeugt.

Damit jeder 64-Byte-Block anders ist, verwendet ChaCha20 einen 32-Bit-Zähler im Zustand, der beim ersten Block bei 0 beginnt, beim nächsten Block 1 beträgt und so weiter.

Den Zustand mischen (der ARX-Kern)

ChaCha20 mischt die 16 Wörter aus dem Raster wiederholt mit nur drei Operationen: Addition (modulo 2³²), Rotation (bitweise Rotation von 32-Bit-Wörtern) und XOR (vergleicht zwei Bits und gibt 1 aus, wenn sie unterschiedlich sind, und 0, wenn sie gleich sind).

Dieses Mischen, das auf Addition-, Rotations- und XOR-Operationen (ARX) basiert, erfolgt in Runden (ChaCha20 führt 20 Runden durch). Der entscheidende Punkt ist, dass diese einfachen, schnellen Operationen den Zustand gründlich durchmischen, sodass er ohne den Schlüssel schwer umzukehren ist.

64 Bytes Schlüsselstrom erzeugen

Nach dem Mischen addiert ChaCha20 den ursprünglichen Zustand zum gemischten Zustand (Wort für Wort) und gibt das Ergebnis dann als 64 Schlüsselstrom-Bytes aus. Das ist ein Schlüsselstromblock.

5. So viele Schlüsselstromblöcke erzeugen, wie benötigt werden

Ihre Nachricht kann beliebig lang sein. ChaCha20 verwendet einfach counter = 0, um die ersten 64 Bytes des Keystreams zu erzeugen, counter = 1 für die nächsten 64 Bytes, counter = 2 für die nächsten 64 Bytes und so weiter. Weil sich der Zähler ändert, ist jeder Keystream-Block einzigartig (auch bei gleichem Schlüssel und Nonce).

6. Keystream an Ihrer Nachricht ausrichten

Unsere Beispielnachricht ist 67 Bytes lang, daher deckt Block 0 die Nachrichtenbytes 0–63 (64 Bytes) ab und Block 1 die Nachrichtenbytes 64–66 (die letzten 3 Bytes). Wir verwenden nur die ersten 3 Bytes des zweiten Keystream-Blocks und ignorieren den Rest.

7. Nachricht mit dem Keystream per XOR kombinieren

XOR ist eine byteweise Operation mit einer praktischen Eigenschaft: Dieselbe XOR-Operation zweimal auszuführen, führt Sie zum Ausgangspunkt zurück:

Verschlüsselung (pro Byte): Klartext XOR Keystream = Ciphertext

Entschlüsselung (pro Byte, gleicher Keystream): Ciphertext XOR Keystream = Klartext

Vergleich von ChaCha20 mit anderen Chiffren

Obwohl ChaCha20 heute weit verbreitet ist, ist es nicht der einzige eingesetzte Verschlüsselungsalgorithmus. Andere Chiffren wie AES und Rivest–Shamir–Adleman (RSA) sind ebenfalls gängig, funktionieren aber auf unterschiedliche Weise und eignen sich für unterschiedliche Aufgaben. Ein Vergleich zeigt, wo ChaCha20 einzuordnen ist und warum bestimmte Protokolle es den Alternativen vorziehen.

ChaCha20 vs. AES

ChaCha20 und AES sind beide symmetrische Verschlüsselungsalgorithmen, das heißt, derselbe Schlüssel wird für Ver- und Entschlüsselung verwendet. Um verschiedene kryptografische Verfahren besser zu verstehen, einschließlich der Unterschiede zwischen Verschlüsselung und Hashing, können Sie diese Erklärung zu Hashing vs. Verschlüsselung.

Der Hauptunterschied zwischen ChaCha20 und AES liegt darin, wie sie Daten verarbeiten. AES ist eine Blockchiffre und verschlüsselt Daten in Blöcken fester Größe, während ChaCha20 eine Stromchiffre ist, die einen kontinuierlichen Schlüsselstrom erzeugt, der mit den Daten kombiniert wird.

AES profitiert auf modernen Prozessoren häufig von Hardwarebeschleunigung und ist in diesen Umgebungen daher extrem schnell. ChaCha20 hingegen ist so konzipiert, dass es auch ohne spezielle Hardwareunterstützung durchgängig gute Leistung erbringt und sich daher besonders für Mobilgeräte und stromsparende Systeme eignet. Deshalb ExpressVPN verwendet für sein Lightway-Protokoll sowohl AES-256 als auch ChaCha20 und wechselt automatisch zu der Variante, die am besten zu Ihrem Gerät passt (Sie können auch manuell eine der beiden auswählen).

Ein weiterer praktischer Unterschied liegt in der Implementierung. AES kann bei der sicheren Implementierung komplexer sein, da es bei unvorsichtiger Umsetzung anfällig für Timing-Angriffe sein kann. ChaCha20 verwendet einfache ARX-Operationen, die von Natur aus in konstanter Zeit ablaufen und so dieses Risiko verringern.

Beide Chiffren gelten bei korrekter Implementierung als sicher, und moderne Protokolle wie TLS 1.3 unterstützen beide. Die Wahl zwischen ihnen hängt von der Hardware des Geräts und den Leistungsanforderungen ab, nicht von Sicherheitsbedenken.

Funktion ChaCha20 AES
Chiffretyp Stromchiffre Blockchiffre
Hardwarebeschleunigung Schnell auf allen Geräten Am besten mit AES‑NI (dedizierte Hardwareanweisungen)
Einfache Implementierung Einfachere, zeitkonstante Operationen Komplexer, erfordert sorgfältige Programmierung
Geschwindigkeit ohne AES‑NI (dedizierte Hardwareanweisungen) Sehr schnell Langsamer

ChaCha20 vs. RSA

ChaCha20 und RSA sind keine direkten Konkurrenten: Sie erfüllen unterschiedliche Funktionen in der sicheren Kommunikation.

RSA ist ein asymmetrischer Verschlüsselungsalgorithmus, das heißt, er verwendet ein Schlüsselpaar: einen öffentlichen und einen privaten. Typischerweise wird er zu Beginn einer sicheren Verbindung eingesetzt, um Verschlüsselungsschlüssel auszutauschen oder Identitäten zu überprüfen. In TLS ist der symmetrische Algorithmus oft AES, wobei der Schlüsselaustausch durch RSA gesichert wird.

Da RSA komplexere Mathematik umfasst und mit größeren Schlüsselgrößen arbeitet, ist es langsamer und weniger effizient für die kontinuierliche Datenverschlüsselung.

ChaCha20 hingegen ist eine symmetrische Stromchiffre. Sie verwendet einen einzigen gemeinsamen Schlüssel für Ver- und Entschlüsselung und ist daher schneller und besser für die laufende Datenübertragung geeignet.

In der Praxis kombinieren viele sichere Protokolle beide Ansätze: RSA (oder einen anderen asymmetrischen Algorithmus) für den initialen Handshake und ChaCha20 oder eine andere symmetrische Chiffre für den Rest der Sitzung.

Vorteile von ChaCha20

ChaCha20 ist nicht nur wegen seiner Sicherheit beliebt, sondern auch, weil es sich in realen Situationen bewährt. Es ist auf allen Arten von Geräten schnell, selbst auf Handys und Kleingeräten mit geringerer Leistung. Sein unkompliziertes Design hilft, häufige Fehler zu vermeiden, die die Verschlüsselung schwächen können.

Geschwindigkeit und Leistung auf Mobilgeräten und stromsparenden Geräten

ChaCha20 ist darauf ausgelegt, auf jeder Art von Hardware effizient zu arbeiten, nicht nur auf High-End-Prozessoren. Auf Geräten ohne AES-Hardwarebeschleunigung, etwa vielen Smartphones, Tablets oder IoT-Geräten, kann es spürbar schneller laufen.

Einfachheit und Resistenz gegen Timing-Angriffe

ChaCha20 basiert auf einfachen ARX-Operationen. Diese laufen in konstanter Zeit, das heißt, die Ausführungsgeschwindigkeit ändert sich nicht abhängig von den verarbeiteten Daten: Alle Operationen benötigen exakt dieselbe Zeit.

Dieses Design erleichtert eine sichere Implementierung und schützt vor Timing-Angriffen, die versuchen, Informationen zu gewinnen, indem sie messen, wie lange Verschlüsselungsschritte dauern.

Welche bekannten Einschränkungen hat ChaCha20?

ChaCha20 wird seit Jahren untersucht, und es wurden keine praxisrelevanten Brüche der vollständigen 20-Runden-Version veröffentlicht. Insgesamt ist es die am gründlichsten getestete Alternative zu AES, die es heute gibt. Es hat jedoch einige klare Grenzen, die Entwickler im Blick behalten sollten. Eine Nutzung außerhalb dieser Grenzen kann den Schutz schwächen.

  • Die Wiederverwendung von Nonces ist ein ernstes Risiko: Die Verwendung derselben Nonce mit demselben Schlüssel bricht die Vertraulichkeit sofort. Jedes Nonce-Schlüssel-Paar muss eindeutig sein.
  • Keine integrierte Authentifizierung: ChaCha20 verschlüsselt nur Daten. Um zu prüfen, dass Daten nicht verändert wurden, sollte es zusammen mit Poly1305 verwendet werden.
  • Limit für verschlüsselte Daten pro Schlüssel/Nonce: ChaCha20 kann mit demselben Schlüssel und derselben Nonce bis zu 2³² Blöcke à 64 Byte (etwa 256 GB) verarbeiten. Wird dieses Limit überschritten, kommt es zur Wiederverwendung des Schlüsselstroms und die Sicherheit der Verschlüsselung wird vollständig untergraben.

ChaCha20-Poly1305 erklärt

ChaCha20‑Poly1305 ist eine Kombination zweier kryptografischer Komponenten, die gemeinsam Daten schützen:

  • ChaCha20 verschlüsselt Informationen mit einem gemeinsamen geheimen Schlüssel und verwandelt lesbaren Text in etwas, das für jeden ohne den Schlüssel wie Zufallsdaten aussieht. Es erkennt jedoch keine Manipulationen.
  • Poly1305 erzeugt einen Message Authentication Code (MAC), mit dem der Empfänger bestätigen kann, dass die Daten nicht verändert wurden und von der richtigen Quelle stammen.

Zusammen bilden sie die sogenannte Authenticated Encryption with Additional Data (AEAD). Das bedeutet, dass der Verschlüsselungsprozess nicht nur den Inhalt der Nachricht verbirgt, sondern auch deren Integrität prüft.

Poly1305 ist nicht die einzige Option, aber die häufigste Wahl, wenn ChaCha20 in modernen Protokollen eingesetzt wird. Das liegt daran, dass ChaCha20‑Poly1305 von der IETF (RFC 8439) standardisiert wurde und in TLS, SSH, WireGuard und anderen Protokollen weit verbreitet ist; es ist damit der de facto Standard.

ChaCha20 im Jahr 2025: Wo es in modernen Systemen eingesetzt wird

ChaCha20 hat sich in vielen sicherheitsorientierten Anwendungen als Standardwahl etabliert. In der Internetsicherheit wird es in TLS-Verbindungen eingesetzt, oft zusammen mit Poly1305, um HTTPS-Traffic zu schützen, insbesondere auf Geräten ohne Hardware-Unterstützung für AES. Große Browser wie Chrome und Firefox sowie Webserver wie nginx und Apache unterstützen diese Cipher Suite.

ChaCha20 used in modern systems

Es wird außerdem häufig in virtuellen privaten Netzwerken (VPNs) eingesetzt. Das WireGuard-VPN-Protokoll, legt beispielsweise ChaCha20‑Poly1305 als Standard fest, um Daten zu sichern und gleichzeitig eine hohe Leistung auf Mobil- und Embedded-Geräten zu gewährleisten. Unterstützung ist zudem in gängigen Betriebssystemen integriert, darunter Linux, Android, iOS und Windows.

Zusammenfassung

ChaCha20 ist eine moderne, softwarefreundliche Stromchiffre, die von Daniel J. Bernstein als schnelle, sichere Alternative zu AES entwickelt wurde, insbesondere für Mobilgeräte und energiesparende Geräte ohne Hardwarebeschleunigung. Sie verschlüsselt Daten mithilfe eines 256-Bit-Schlüssels, einer eindeutigen 96-Bit-Nonce und eines Blockzählers, um einen pseudozufälligen Schlüsselstrom zu erzeugen, der per XOR mit dem Klartext kombiniert wird. Das ARX-Design (Addition‑Rotation‑XOR) ist einfach, effizient und von Natur aus resistent gegen Timing-Angriffe. ChaCha20 ist symmetrisch (derselbe Schlüssel für Ver- und Entschlüsselung) und unterscheidet sich von Blockchiffren wie AES sowie von asymmetrischen Algorithmen wie RSA, die in der Regel nur für den Schlüsselaustausch oder die Authentifizierung verwendet werden. Obwohl ChaCha20 als sehr sicher gilt und in TLS, VPNs und auf großen Plattformen weit verbreitet ist, muss es mit strikter Nonce-Eindeutigkeit und einer Datenobergrenze pro Schlüssel-/Nonce-Paar eingesetzt werden; eine integrierte Authentifizierung bietet es nicht – daher wird es üblicherweise mit Poly1305 in der standardisierten ChaCha20‑Poly1305-AEAD-Konstruktion kombiniert, um sowohl Vertraulichkeit als auch Integrität zu gewährleisten.

FAQ: Häufige Fragen zu ChaCha20

Nutzt Google ChaCha20?

Ja. Google hat ChaCha20 mit Poly1305 im Jahr 2014 als Teil seiner Transport Layer Security (TLS) / Secure Sockets Layer (SSL) Protokolle übernommen. Ziel war es, Leistung und Sicherheit für Mobilgeräte und Server zu verbessern, denen eine Hardwarebeschleunigung für den Advanced Encryption Standard (AES) fehlt, sodass sichere Verbindungen in diesen Umgebungen schneller und effizienter werden.

Ist ChaCha20 quantensicher?

Ja. Symmetrische Chiffren wie ChaCha20 gelten allgemein als quantensicher, sofern sie ausreichend lange Schlüssel verwenden (z. B. 256 Bit).

Kann ChaCha20 zur Dateiverschlüsselung verwendet werden?

Ja. ChaCha20 kann in Tools zur Dateiverschlüsselung eingesetzt werden, um sensible Daten auf Geräten zu schützen. Seine Geschwindigkeit und Effizienz machen es sowohl für große Dateien als auch für Geräte mit begrenzter Rechenleistung geeignet.

Kann ChaCha20 geknackt werden?

Es gibt keine veröffentlichten realen Angriffe, die die vollständige 20-Runden-ChaCha20-Chiffre brechen. Sicherheitsexperten untersuchen sie weiterhin, und bei korrekter Verwendung innerhalb ihrer Grenzen gilt sie als sicher für moderne Verschlüsselungsanforderungen.