0Pricing
Security+ Academy · Lektion

Authentifizierte Verschlüsselung: AES-GCM und ChaCha20-Poly1305

Verstehen Sie, wie AEAD-Chiffren Vertraulichkeit und Integrität gleichzeitig gewährleisten und warum die missbräuchliche Verwendung von Nonces in AES-GCM zu einer vollständigen Wiederherstellung des Schlüssels führen kann.

Authentifizierte Verschlüsselung: AES-GCM und ChaCha20-Poly1305 ist eine kostenlose Security+ Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Security+ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Security+ Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist authentifizierte Verschlüsselung?

Authenticated Encryption (AE) löst ein grundlegendes Problem: Herkömmliche Verschlüsselung bietet nur Vertraulichkeit – sie hält Daten geheim –, überprüft jedoch nicht, ob der Chiffretext manipuliert wurde. Ein Angreifer könnte Bits im Chiffretext verändern, woraufhin der Empfänger unbrauchbare Daten entschlüsseln würde, ohne die Manipulation zu bemerken. Authenticated Encryption with Associated Data (AEAD) ergänzt gleichzeitig eine Integritäts- und Authentizitätsgarantie und erzeugt sowohl verschlüsselten Chiffretext als auch einen Authentifizierungs-Tag, der jede Änderung erkennt.

AES-GCM: Counter Mode plus GMAC

AES-GCM (Galois/Counter Mode) kombiniert zwei Komponenten: AES-CTR (Counter Mode) zur Verschlüsselung und GMAC (Galois Message Authentication Code) zur Sicherstellung der Integrität. AES-CTR erzeugt einen Schlüsselstrom, indem ein Zählerwert verschlüsselt und per XOR mit dem Klartext verknüpft wird – dadurch lässt sich die Verschlüsselung parallelisieren, anders als beim CBC-Modus. GMAC berechnet einen Authentifizierungs-Tag über den Chiffretext und alle zugehörigen Daten. Der daraus entstehende Tag (128 Bit) wird zusammen mit dem Chiffretext übertragen; bereits eine Änderung eines einzigen Bits macht den Tag ungültig.

# AES-256-GCM encryption with openssl
openssl enc -aes-256-gcm -in plaintext.txt -out encrypted.bin \
  -K $(openssl rand -hex 32) \
  -iv $(openssl rand -hex 12)

Die Nonce: kritisch und empfindlich

AES-GCM erfordert eine Nonce (number used once), typischerweise mit 96 Bit (12 Byte). Die Nonce muss bei jedem einzelnen Verschlüsselungsvorgang mit demselben Schlüssel eindeutig sein – sie muss nicht geheim sein, darf sich aber niemals wiederholen. Die Wiederverwendung einer Nonce in AES-GCM ist katastrophal: Wenn zwei Nachrichten mit demselben Schlüssel und derselben Nonce verschlüsselt werden, kann ein Angreifer die Chiffrate per XOR verknüpfen und dadurch den Keystream entfernen, sodass er möglicherweise beide Klartexte wiederherstellen kann. Diese Schwachstelle wird manchmal als „Nonce-Missbrauch“ bezeichnet und hat bereits zu Angriffen zur Wiederherstellung von Schlüsseln in der Praxis geführt.

Ein Angriff durch Nonce-Missbrauch erklärt

Wenn AES-GCM-Nonces wiederverwendet werden, kann der Angreifer C1 XOR C2 = P1 XOR P2 berechnen (das XOR beider Klartexte), da für beide Nachrichten derselbe Keystream verwendet wurde. Außerdem ermöglicht die Wiederverwendung der Nonce die Wiederherstellung des Authentifizierungsschlüssels H. Dadurch kann der Angreifer gültige Authentifizierungs-Tags für beliebige Nachrichten fälschen – Vertraulichkeit und Integrität sind damit vollständig kompromittiert. Systeme wie die Sony PS3 waren von genau diesem Angriff betroffen. Schutz bieten zufällige Nonces (erzeugt mit einem CSPRNG) oder ein deterministischer Zähler, der niemals zurückgesetzt wird.

ChaCha20-Poly1305: Eine Alternative mit Stromchiffre

ChaCha20-Poly1305 ist die andere in TLS 1.3 vorgeschriebene AEAD-Chiffre. ChaCha20 ist eine von Daniel Bernstein entwickelte Stromchiffre, die mithilfe von Add- Rotate-XOR-Operationen (ARX) einen Keystream erzeugt – ohne Lookup-Tabellen, vollständig in konstanter Zeit und äußerst schnell auf CPUs ohne Hardwarebeschleunigung für AES. Poly1305 ist ein einmaliger MAC (Message Authentication Code), der den Authentifizierungs-Tag über dem Chiffrat berechnet. Zusammen bieten beide eine gleichwertige Sicherheit wie AES-GCM, sind auf Mobil- und IoT-Geräten jedoch deutlich schneller.

Warum ChaCha20-Poly1305 für Mobilgeräte?

Moderne Desktop- und Serverprozessoren mit x86- und ARM64-Architektur verfügen über AES-NI-Hardwarebefehle, die AES-GCM äußerst schnell machen. Viele Mobil- und IoT-Prozessoren unterstützen AES-NI jedoch nicht, wodurch softwarebasiertes AES-GCM vergleichsweise langsam ist. ChaCha20-Poly1305 wurde so konzipiert, dass es mithilfe einfacher arithmetischer Operationen in Software schnell ausgeführt werden kann. Dadurch erreichen Mobilgeräte auch ohne Hardwarebeschleunigung eine vergleichbare Leistung. Google fügte ChaCha20-Poly1305 TLS genau deshalb als Alternative für Android-Geräte hinzu; inzwischen ist es eine vollwertige Cipher-Suite in TLS 1.3.

Zugehörige Daten: Header schützen

Das „AD“ in AEAD steht für Associated Data – Klartextmetadaten, die authentifiziert, aber nicht verschlüsselt werden. So können Sie Daten authentifizieren, die lesbar bleiben müssen (etwa Paket-Header oder Felder mit dem Datensatztyp), und sie dennoch vor Manipulation schützen. In TLS 1.3 werden die Bytes des Datensatz-Headers als zugehörige Daten in die AEAD-Berechnung einbezogen. Wenn ein Angreifer den Header verändert (beispielsweise die Datensatzlänge), schlägt die Prüfung des Authentifizierungs-Tags fehl und die Verbindung wird beendet.

AEAD vs. Encrypt-Then-MAC

Bevor sich AEAD als Standard durchsetzte, empfahlen Kryptografen Encrypt-then-MAC (EtM): Zuerst wird der Klartext verschlüsselt, anschließend wird ein MAC über dem Chiffrat berechnet. Dieses Verfahren ist sicher, erfordert jedoch zwei getrennte Operationen mit zwei getrennten Schlüsseln. AEAD-Verfahren wie AES-GCM kombinieren beide Operationen mit einem einzigen Schlüssel, wodurch die Implementierung einfacher wird und eine ganze Klasse von Padding-Oracle-Angriffen entfällt, die bei MAC-then-Encrypt (MtE) auftraten – der in älteren TLS-Versionen verwendeten Reihenfolge (CBC + HMAC). TLS 1.3 vermeidet diese Probleme durch den Einsatz von AEAD vollständig.

AES-128-GCM vs. AES-256-GCM

Sowohl AES-128-GCM als auch AES-256-GCM sind von NIST zugelassen und gelten als sicher gegen klassische Computer. AES-128 bietet eine Sicherheit von 128 Bit bei etwas höherer Geschwindigkeit; AES-256 bietet eine Sicherheit von 256 Bit und damit größere Reserven gegenüber zukünftigen kryptoanalytischen und quantenbasierten Bedrohungen. Für die meisten heutigen Anwendungen ist AES-128-GCM ausreichend, für staatliche Systeme mit Geheimhaltungsstufe (NSA Suite B) ist jedoch AES-256 vorgeschrieben. TLS 1.3 bietet beide Varianten, und Server können sie entsprechend ihrer Sicherheitsrichtlinie priorisieren.

Prozess der Prüfung des Authentifizierungs-Tags

Beim Entschlüsseln eines AEAD-Chiffrats muss der Empfänger das Authentifizierungs-Tag vor dem Entschlüsseln prüfen. Der Ablauf ist wie folgt: Das erwartete Tag wird aus dem empfangenen Chiffrat, dem Schlüssel und der Nonce neu berechnet; anschließend wird es mithilfe einer Vergleichsfunktion mit konstanter Laufzeit mit dem empfangenen Tag verglichen; nur bei Übereinstimmung wird die Entschlüsselung fortgesetzt. Ein Vergleich mit konstanter Laufzeit ist entscheidend: Wenn der Vergleich beim ersten abweichenden Byte vorzeitig abbricht, kann ein Angreifer einen Timing-Seitenkanalangriff durchführen und gültige Tags Byte für Byte fälschen. Jede AEAD-Bibliothek, die einen Vergleich mit vorzeitigem Abbruch verwendet, ist anfällig.

AEAD-Anwendungen in der Praxis

AEAD-Algorithmen sind in der modernen IT-Sicherheit allgegenwärtig: TLS 1.3 verwendet AES-GCM und ChaCha20-Poly1305 für die Verschlüsselung aller Datensätze; WireGuard VPN verwendet ausschließlich ChaCha20-Poly1305; das Signal Protocol verwendet es zur Nachrichtenverschlüsselung; das QUIC protocol (die Grundlage von HTTP/3) verwendet AES-GCM. Wenn Sie eine Cipher-Suite wie TLS_AES_256_GCM_SHA384 sehen, bezieht sich SHA384 auf die HKDF-Hashfunktion zur Schlüsselableitung, nicht auf den Integritätsmechanismus – das GCM-Tag gewährleistet die Integrität.

Kurzer Test

Testen Sie Ihr Verständnis der CompTIA-Security+-Konzepte (SY0-701) aus dieser Lektion.

Zusammenfassung der Lektion

In dieser Lektion haben Sie gelernt: AEAD-Algorithmen gewährleisten gleichzeitig Vertraulichkeit und Integrität, indem ein Authentifizierungs-Tag jede Änderung am Chiffrat erkennt; die Wiederverwendung einer AES-GCM-Nonce ist katastrophal – sie ermöglicht die Wiederherstellung des Keystreams und die Fälschung des Authentifizierungsschlüssels –, daher muss jede Nonce pro Verschlüsselung eindeutig sein; und ChaCha20-Poly1305 ist eine leistungsfähige Alternative zu AES-GCM für Geräte ohne Hardwarebeschleunigung für AES. Als Nächstes befassen wir uns mit Schlüsselableitungsfunktionen zum Schutz von Passwörtern.

Häufig gestellte Fragen

Ist die Lektion „Authentifizierte Verschlüsselung: AES-GCM und ChaCha20-Poly1305“ kostenlos?

Ja — der vollständige Text von „Authentifizierte Verschlüsselung: AES-GCM und ChaCha20-Poly1305“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Security+ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Security+ Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Authentifizierte Verschlüsselung: AES-GCM und ChaCha20-Poly1305“?

Verstehen Sie, wie AEAD-Chiffren Vertraulichkeit und Integrität gleichzeitig gewährleisten und warum die missbräuchliche Verwendung von Nonces in AES-GCM zu einer vollständigen Wiederherstellung des… Du übst Security+ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Security+ Academy zu starten?

Keine Vorkenntnisse erforderlich. Security+ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Authentifizierte Verschlüsselung: AES-GCM und ChaCha20-Poly1305“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Security+ Academy-Lektion Code schreiben und ausführen?

Ja. Jede Security+ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. TLS-1.3-Handshake und 0-RTT-Wiederaufnahme
  2. Authentifizierte Verschlüsselung: AES-GCM und ChaCha20-Poly1305
  3. Schlüsselableitungsfunktionen: PBKDF2, bcrypt und Argon2
  4. Postquantenkryptografie: CRYSTALS-Kyber und Dilithium
← Zurück zu Security+ Academy