ChaCha20-Poly1305
generalDéfinition
ChaCha20-Poly1305 est un algorithme de chiffrement authentifié (AEAD) combinant le chiffrement par flux ChaCha20 et l'authentification Poly1305, conçu par Daniel J. Bernstein. Adopté dans TLS 1.3 et le protocole Signal comme alternative à AES-GCM, il offre des performances supérieures sur les plateformes sans accélération hardware AES-NI (appareils mobiles, systèmes embarqués) tout en maintenant un niveau de sécurité équivalent. ChaCha20 est un chiffrement par flux basé sur une fonction de mélange ARX (Addition-Rotation-XOR) appliquée 20 fois (d'où le suffixe "20"). Il génère un keystream pseudo-aléatoire à partir d'une clé de 256 bits et d'un nonce de 96 bits, puis effectue un XOR avec le texte clair. Contrairement à AES (orienté hardware), ChaCha20 est efficace en logiciel pur — ce qui le rend particulièrement adapté aux processeurs ARM sans extensions crypto, aux microcontrôleurs IoT, et aux navigateurs sur appareils mobiles. Poly1305 est un code d'authentification de message (MAC) one-time basé sur l'arithmétique modulaire sur un champ fini. Il génère un tag d'authentification de 128 bits qui protège à la fois le texte chiffré et les données associées non chiffrées. Combiné à ChaCha20, il forme un système AEAD (Authenticated Encryption with Associated Data) comparable à AES-GCM en termes de propriétés de sécurité. La motivation principale pour ChaCha20-Poly1305 est la résistance aux timing attacks sur les implémentations logicielles d'AES. AES est vulnérable aux attaques par canal auxiliaire basées sur les tables de lookup (cache timing attacks) dans les implémentations sans support hardware. ChaCha20 est intrinsèquement constant-time dans toutes ses opérations (pas de tables de lookup), éliminant cette classe de vulnérabilité. TLS 1.3 inclut TLS_CHACHA20_POLY1305_SHA256 comme suite de chiffrement obligatoire (avec TLS_AES_128_GCM_SHA256 et TLS_AES_256_GCM_SHA384). Google, Cloudflare, et la plupart des CDN préfèrent ChaCha20-Poly1305 pour les connexions depuis des appareils mobiles Android et iOS, où il est 3 à 4 fois plus rapide qu'AES-GCM (sans AES-NI).
Performance comparative ChaCha20 vs AES-GCM
La comparaison de performance entre ChaCha20-Poly1305 et AES-GCM dépend fortement de la plateforme. Sur les processeurs x86-64 avec AES-NI : AES-128-GCM atteint 10-40 Go/s ; ChaCha20-Poly1305 atteint 4-8 Go/s — AES-GCM gagne. Sur les appareils mobiles ARM sans instructions crypto (anciens téléphones Android, microcontrôleurs) : ChaCha20-Poly1305 est 3-5x plus rapide qu'AES-128-GCM. Sur les processeurs ARM modernes avec extensions crypto (Apple M1/M2, Cortex-A72+) : performances comparables. C'est pourquoi TLS 1.3 et les protocoles modernes incluent les deux suites et laissent la négociation déterminer laquelle utiliser selon les capacités hardware de chaque client.
XChaCha20-Poly1305 — nonces étendus
XChaCha20-Poly1305 est une variante avec des nonces de 192 bits (vs 96 bits pour ChaCha20-Poly1305 standard). La grande taille du nonce permet de le générer aléatoirement sans risque de collision — avec un nonce de 192 bits, la probabilité de collision après 2^80 messages est négligeable, même sans compteur synchronisé. Cette propriété rend XChaCha20-Poly1305 particulièrement adapté aux protocoles où la synchronisation des nonces est difficile (chiffrement de fichiers, messages hors-ligne), et est recommandé par libsodium (crypto_secretbox_xchacha20poly1305) pour le chiffrement général. L'algorithme est défini dans le draft IETF RFC draft-irtf-cfrg-xchacha.
Adoption dans les protocoles modernes
ChaCha20-Poly1305 est largement adopté dans les protocoles et applications de sécurité modernes. WireGuard VPN : ChaCha20-Poly1305 est le seul algorithme de chiffrement utilisé (pas de négociation de suite), simplifiant l'implémentation et éliminant les vulnérabilités liées aux algorithmes faibles. Signal Protocol (Signal, WhatsApp, Telegram Secret Chats) : utilise ChaCha20 pour le chiffrement des messages. SSH : chacha20-poly1305@openssh.com est disponible comme algorithme de chiffrement dans OpenSSH. Age (le successeur recommandé de GPG pour le chiffrement de fichiers) : utilise ChaCha20-Poly1305. Libsodium (la bibliothèque crypto conseillée pour les développeurs) : XChaCha20-Poly1305 comme chiffrement principal pour les secrets.
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés. 2.1.7
Un projet cybersécurité ?
Expert dispo · Réponse 24h