Cryptology Academy · Lektion

ChaCha20-Poly1305 AEAD in TLS 1.3

Sehen Sie, wie ChaCha20 als AEAD-Chiffre in modernem TLS eingesetzt wird.

Lektion 4 von 413 Schritte

ChaCha20-Poly1305 AEAD in TLS 1.3 ist eine kostenlose Cryptology Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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 Cryptology Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cryptology Academy-Kurs umfasst insgesamt 4 Lektionen.

Willkommen

ChaCha20-Poly1305 kombiniert die Stromchiffre ChaCha20 mit dem Poly1305-MAC zu einer sicheren AEAD-Chiphersuite, die in TLS 1.3, WireGuard und mobilen Anwendungen verwendet wird.

Überblick über Poly1305-MAC

Poly1305 ist ein von Bernstein entworfener Einmal-MAC. Er authentifiziert eine Nachricht mithilfe einer Polynom-Auswertung über dem Primkörper 2^130-5. Einmalig bedeutet: Für jede Verwendung ist ein neuer 32-Byte-Schlüssel erforderlich.

Sicherheit von Poly1305

Poly1305 bietet 128-Bit-Sicherheit, sofern der Schlüssel niemals wiederverwendet wird. Der MAC-Schlüssel wird für jede Nachricht neu aus dem ChaCha20-Schlüsselstrom abgeleitet. Diese Kombination ist nachweislich sicher.

Aufbau von ChaCha20-Poly1305

1. Erzeugen Sie einen 64-Byte-Schlüsselstrom aus dem ChaCha20-Block 0 2. Die ersten 32 Byte sind der Poly1305-Schlüssel 3. Die verbleibenden 32 Byte werden verworfen 4. Verschlüsseln Sie den Klartext mit den ChaCha20-Blöcken 1, 2, 3, ... 5. Berechnen Sie den Poly1305-MAC über AAD + Chiffretext

Struktur nach RFC 8439

Ausgabeformat: Chiffretext || Tag (16 Byte) MAC-Eingabe: AAD || pad1 || Chiffretext || pad2 || len(AAD) || len(ciphertext) Auffüllen: mit Nullen bis zur Ausrichtung auf 16 Byte. Längen werden als Little-Endian-Ganzzahlen mit 64 Bit codiert.

TLS-1.3-Chiphersuites

Verbindliche Chiphersuites in TLS 1.3: - TLS_AES_256_GCM_SHA384 - TLS_AES_128_GCM_SHA256 - TLS_CHACHA20_POLY1305_SHA256 CHACHA20_POLY1305 wird für Clients ohne AES-Hardwarebeschleunigung bevorzugt.

WireGuard verwendet ChaCha20-Poly1305

WireGuard verwendet ausschließlich ChaCha20Poly1305 für die gesamte Tunnelverschlüsselung. Es gibt keine Aushandlung der Chiffre – nur einen gut analysierten Algorithmus. Diese Einfachheit reduziert die Angriffsfläche erheblich.

libsodium secretbox

crypto_secretbox_easy() von libsodium verwendet XSalsa20-Poly1305 (eine Variante mit erweiterter Nonce): ciphertext = crypto_secretbox_easy(message, nonce, key) High-Level-API: Sie funktioniert ohne weitere Parameterauswahl einfach korrekt.

Leistung auf Mobilgeräten

Android- und iOS-Geräten fehlt häufig AES-NI. Eine Analyse von Google aus dem Jahr 2014 zeigte, dass ChaCha20-Poly1305 auf ARM dreimal schneller als AES-GCM war. Deshalb schrieb Google den Einsatz in Android und Chrome vor.

Implementierung in Python

from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305 import os key = ChaCha20Poly1305.generate_key() nonce = os.urandom(12) aad = b'header_data' cipher = ChaCha20Poly1305(key) ct = cipher.encrypt(nonce, b'plaintext', aad) pt = cipher.decrypt(nonce, ct, aad)

Vergleich: AES-GCM und ChaCha20-Poly1305

AES-GCM: mit AES-NI schneller, 96-Bit-Nonce, Fälschung des GCM-Tags bei Wiederverwendung der Nonce. ChaCha20-Poly1305: ohne Hardware schneller, 96-Bit-Nonce, der Poly1305-Schlüssel wird für jede Nachricht neu erzeugt. Beide Verfahren sind ausgezeichnet. Verwenden Sie AES-GCM auf Servern und ChaCha20-Poly1305 auf Mobilgeräten.

Kurze Überprüfung

Wie wird bei ChaCha20-Poly1305 der Poly1305-Schlüssel erzeugt?

Zusammenfassung

ChaCha20-Poly1305 ist die für Mobilgeräte optimierte AEAD-Wahl. Als Nächstes untersuchen Sie den Diffie-Hellman-Schlüsselaustausch – also, wie zwei Parteien über einen unsicheren Kanal ein gemeinsames Geheimnis festlegen.
Kostenlos starten

Lerne Cryptology Academy mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
67
Lektionen
261

Häufig gestellte Fragen

Ist die Lektion „ChaCha20-Poly1305 AEAD in TLS 1.3“ kostenlos?

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

Was lerne ich in „ChaCha20-Poly1305 AEAD in TLS 1.3“?

Sehen Sie, wie ChaCha20 als AEAD-Chiffre in modernem TLS eingesetzt wird. Du übst Cryptology 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 Cryptology Academy zu starten?

Keine Vorkenntnisse erforderlich. Cryptology 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 4 von 4.

Wie lange dauert die Lektion „ChaCha20-Poly1305 AEAD in TLS 1.3“?

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 Cryptology Academy-Lektion Code schreiben und ausführen?

Ja. Jede Cryptology 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. Konzepte von Stromchiffren und PRNGs
  2. RC4: Aufbau, Schwächen und WEP-Angriffe
  3. Aufbau von Salsa20 und ChaCha20
  4. ChaCha20-Poly1305 AEAD in TLS 1.3
← Zurück zu Cryptology Academy