Aller au contenu
ecdsa.com

ChaCha20-Poly1305

L’AEAD qui associe l’algorithme de chiffrement par flot ChaCha20 à l’authentificateur Poly1305 (RFC 8439) : clés de 256 bits, nonces de 96 bits et tags de 128 bits, rapide en logiciel sans matériel AES.
Autres graphiesChaCha20Poly1305XChaCha20-Poly1305RFC 8439

ChaCha20 n’utilise que des additions, des rotations et des XOR, si bien qu’il s’exécute en temps constant sur n’importe quel processeur, et Poly1305 est un MAC à usage unique dont la clé, propre à chaque message, est tirée du premier bloc produit par l’algorithme de chiffrement. La RFC 8439 (qui a remplacé la RFC 7539) utilise un compteur de blocs de 32 bits, ce qui limite un message à 256 Gio. XChaCha20-Poly1305 étend le nonce à 192 bits pour que des nonces aléatoires soient sûrs ; il est décrit dans un Internet-Draft et implémenté notamment par libsodium.

Une paire clé-nonce répétée compromet la confidentialité et permet à un attaquant de falsifier des messages, exactement comme avec AES-GCM. Sur les processeurs dotés d’instructions AES, AES-GCM est généralement plus rapide pour les gros volumes de données (sur un cœur d’Apple M4 Max : environ 2,1 Go/s pour ChaCha20-Poly1305 contre 8,8 Go/s pour AES-256-GCM avec OpenSSL 3.6.5), mais ChaCha20-Poly1305 l’emporte sur les petits messages et sur les appareils sans matériel AES.

On le retrouve dans la suite TLS 1.3 TLS_CHACHA20_POLY1305_SHA256 (0x1303), dans chacha20-poly1305@openssh.com d’OpenSSH, dans le chiffrement de transport de WireGuard, dans le chiffrement de la charge utile d’age et dans les jetons locaux de PASETO v2.

Normes et références

Tous les termes