ChaCha20
Qu'est-ce que ChaCha20 ?
ChaCha20Chiffrement de flot moderne conçu par Daniel J. Bernstein, utilisant une clé de 256 bits et un nonce de 96 bits, largement déployé avec Poly1305 sous la forme AEAD ChaCha20-Poly1305.
ChaCha20 est un chiffrement de flot à 20 tours conçu par Daniel J. Bernstein en 2008 comme perfectionnement de sa conception Salsa20. Il produit un flux de clé à partir d'une clé de 256 bits, d'un nonce de 96 bits et d'un compteur de bloc de 32 bits en n'utilisant que des opérations add-rotate-xor (ARX) sur des mots de 32 bits — un « quart de tour » mélangeant quatre mots d'état à la fois. Comme il ne nécessite aucune table de correspondance, il est rapide et naturellement à temps constant sur les processeurs dépourvus d'accélération matérielle AES, raison pour laquelle Google l'a déployé pour la première fois en 2014 pour protéger le trafic d'Android et de Chrome. Combiné au MAC Poly1305, le schéma AEAD ChaCha20-Poly1305 est normalisé dans le RFC 8439 (qui a rendu obsolète le RFC 7539) et constitue, avec AES-GCM, l'une des deux suites cryptographiques obligatoires de TLS 1.3. Il est également au cœur de QUIC, WireGuard, OpenSSH, du protocole Signal et du générateur d'aléa du noyau Linux.
L'écueil opérationnel critique est la réutilisation du nonce : chiffrer deux messages avec la même clé et le même nonce expose le XOR de leurs textes clairs et révèle la clé Poly1305 à usage unique, brisant à la fois la confidentialité et l'authenticité. Le nonce de 96 bits est confortable pour un compteur propre à chaque connexion, mais risqué pour une génération aléatoire à grande échelle ; c'est pourquoi XChaCha20 (draft-irtf-cfrg-xchacha) étend le nonce à 192 bits via une dérivation de sous-clé HChaCha20, rendant sûrs les nonces aléatoires. Après plus d'une décennie de cryptanalyse, aucune attaque ne brise le chiffrement complet à 20 tours.
flowchart LR K[Clé de 256 bits] --> S[Initialiser l'état : constantes, clé, compteur, nonce] N[Nonce de 96 bits] --> S CTR[Compteur de bloc] --> S S --> R[20 tours de quarts de tour ARX] R --> KS[Bloc de flux de clé] PT[Texte clair] --> X((XOR)) KS --> X X --> CT[Chiffré] CT --> P[MAC Poly1305] P --> TAG[Balise d'authentification]
● Exemples
- 01
TLS 1.3 et QUIC utilisent TLS_CHACHA20_POLY1305_SHA256 sur les appareils mobiles.
- 02
WireGuard chiffre l'ensemble de ses paquets de données avec ChaCha20-Poly1305.
● Questions fréquentes
Qu'est-ce que ChaCha20 ?
Chiffrement de flot moderne conçu par Daniel J. Bernstein, utilisant une clé de 256 bits et un nonce de 96 bits, largement déployé avec Poly1305 sous la forme AEAD ChaCha20-Poly1305. Cette notion relève de la catégorie Cryptographie en cybersécurité.
Que signifie ChaCha20 ?
Chiffrement de flot moderne conçu par Daniel J. Bernstein, utilisant une clé de 256 bits et un nonce de 96 bits, largement déployé avec Poly1305 sous la forme AEAD ChaCha20-Poly1305.
Comment se défendre contre ChaCha20 ?
Les défenses contre ChaCha20 combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.