Zum Inhalt springen
ecdsa.com

ChaCha20-Poly1305

Das AEAD, das die Stromchiffre ChaCha20 mit dem Authentifikator Poly1305 kombiniert (RFC 8439): 256-Bit-Schlüssel, 96-Bit-Nonces und 128-Bit-Tags, schnell in Software ohne AES-Hardware.
Auch geschrieben alsChaCha20Poly1305XChaCha20-Poly1305RFC 8439

ChaCha20 nutzt nur Additionen, Rotationen und XORs und läuft daher auf jeder CPU in konstanter Zeit; Poly1305 ist ein Einmal-MAC, dessen Schlüssel pro Nachricht aus dem ersten Block der Chiffre stammt. RFC 8439 (Nachfolger von RFC 7539) verwendet einen 32-Bit-Blockzähler und begrenzt eine Nachricht damit auf 256 GiB. XChaCha20-Poly1305 verlängert die Nonce auf 192 Bit, sodass zufällige Nonces sicher sind; es ist in einem Internet-Draft beschrieben und unter anderem in libsodium implementiert.

Ein wiederholtes Paar aus Schlüssel und Nonce bricht die Vertraulichkeit und erlaubt einem Angreifer, Nachrichten zu fälschen – genau wie bei AES-GCM. Auf CPUs mit AES-Befehlen ist AES-GCM bei großen Datenmengen meist schneller (auf einem Kern eines Apple M4 Max: etwa 2,1 GB/s für ChaCha20-Poly1305 gegenüber 8,8 GB/s für AES-256-GCM mit OpenSSL 3.6.5), bei kleinen Nachrichten und auf Geräten ohne AES-Hardware liegt jedoch ChaCha20-Poly1305 vorn.

Es kommt vor als TLS_CHACHA20_POLY1305_SHA256 (0x1303) in TLS 1.3, als chacha20-poly1305@openssh.com in OpenSSH, als Verschlüsselungsverfahren für den Transport bei WireGuard, als Payload-Verschlüsselung von age und in Tokens vom Typ local in PASETO v2.

Standards und Quellen

Alle Begriffe