Chiffrement ChaCha20
Chiffrement par flux moderne avec authentification optionnelle
Sécurité côté client
Toutes les opérations de chiffrement/déchiffrement sont effectuées localement dans votre navigateur. Aucune donnée n'est envoyée à un serveur.
Valeur initiale du compteur (défaut : 0)
À propos de ChaCha20
ChaCha20 est un chiffrement par flux moderne conçu par Daniel J. Bernstein en 2008, dérivé du chiffrement Salsa20. Il utilise une clé de 256 bits et opère sur des blocs de 512 bits, générant un flux de clés XORé avec le texte clair pour le chiffrement. Ce chiffrement est reconnu pour sa vitesse, sa sécurité et sa résistance aux attaques temporelles.
Ce chiffrement est connu pour sa vitesse, sa sécurité et sa résistance aux attaques temporelles, ce qui en fait un excellent choix pour les implémentations logicielles.
Comparaison des algorithmes
| Algorithme | Authentification | Longueur de clé | Taille du nonce | Cas d'utilisation |
|---|---|---|---|---|
| ChaCha20 | Chiffrement par flux | 256 bits | 96 bits (12 bytes) | Chiffrement brut, protocoles personnalisés |
| ChaCha20-Poly1305 | AEAD | 256 bits | 96 bits (12 bytes) | TLS 1.3, QUIC, messagerie sécurisée |
| XChaCha20 | Chiffrement par flux | 256 bits | 192 bits (24 bytes) | Scénarios de nonce aléatoire |
| XChaCha20-Poly1305 | AEAD | 256 bits | 192 bits (24 bytes) | La plupart des applications (recommandé) |
Fonctionnement de ChaCha20
ChaCha20 fonctionne en 20 tours, appliquant des fonctions quart de tour à une matrice 4×4 de mots de 32 bits. L'état initial comprend :
Chaque tour permute l'état en utilisant additions, XOR et rotations, offrant une excellente diffusion tout en restant rapide en logiciel.
AEAD : Chiffrement authentifié
ChaCha20-Poly1305 est une construction AEAD standardisée dans RFC 8439. Elle combine ChaCha20 pour le chiffrement avec le MAC Poly1305 pour l'authentification. Cela garantit confidentialité et intégrité - toute altération du texte chiffré ou de l'AAD sera détectée lors du déchiffrement. Le tag d'authentification 128 bits est ajouté au texte chiffré.
Cela garantit à la fois la confidentialité et l'intégrité - toute altération du texte chiffré ou de l'AAD sera détectée lors du déchiffrement. Le tag d'authentification de 128 bits est calculé sur le texte chiffré et l'AAD.
Caractéristiques principales
- Haute performance : Optimisé pour les implémentations logicielles, 3× plus rapide qu'AES sans accélération matérielle
- Temps constant : Résistant aux attaques de timing cache, contrairement aux implémentations AES basées sur des tables
- Conception simple : Utilise uniquement des opérations ARX (addition, rotation, XOR), facile à implémenter correctement
- Large adoption : Utilisé dans TLS 1.3, OpenSSH, WireGuard, Signal Protocol et plus
- Nonce étendu : La variante XChaCha20 permet la génération sécurisée de nonce aléatoire sans risque de collision
Considérations de sécurité
- Ne jamais réutiliser un nonce avec la même clé - cela compromet totalement la sécurité
- Utiliser les variantes AEAD (Poly1305) pour la plupart des applications afin de détecter les altérations
- Pour les nonces aléatoires, utiliser XChaCha20 (192 bits) pour minimiser la probabilité de collision
- Utiliser un KDF approprié (HKDF, Argon2) pour dériver les clés des mots de passe
Utilisation réelle
- TLS 1.3 : Suite de chiffrement par défaut (TLS_CHACHA20_POLY1305_SHA256)
- WireGuard VPN : Protocole de chiffrement principal
- Signal Protocol : Messagerie chiffrée de bout en bout
- Cloudflare : Préféré à AES-GCM pour les clients mobiles
- Noyau Linux : CSPRNG (/dev/urandom)
Références
- RFC 7539 - ChaCha20 et Poly1305 pour les protocoles IETF
- RFC 8439 - ChaCha20 et Poly1305 pour les protocoles IETF (mise à jour)
- Wikipédia - ChaCha20-Poly1305
- Article original ChaCha par D.J. Bernstein
FAQ
Quelle est la différence entre ChaCha20 et AES ?
Les deux sont des chiffrements symétriques sécurisés. ChaCha20 est 3× plus rapide en logiciel sans accélération matérielle et résistant aux attaques temporelles. AES est plus rapide avec support matériel (AES-NI). ChaCha20 est préféré pour les appareils mobiles et embarqués.
Pourquoi utiliser XChaCha20 au lieu de ChaCha20 ?
Le nonce 192 bits de XChaCha20 permet la génération sécurisée de nonce aléatoire. Avec un nonce 96 bits, une gestion prudente est nécessaire pour éviter les collisions. XChaCha20 est recommandé quand vous ne pouvez pas garantir des nonces séquentiels uniques.
À quoi sert le paramètre compteur ?
Le compteur permet de chiffrer des messages de plus de 64 octets en incrémentant pour chaque bloc. Pour les modes AEAD, il commence à 1 (le bloc 0 génère la clé Poly1305). Habituellement, vous pouvez laisser la valeur par défaut (0).
Puis-je chiffrer des fichiers avec cet outil ?
Cet outil fonctionne entièrement dans votre navigateur et convient pour chiffrer du texte et de petites données. Pour les gros fichiers, utilisez des outils natifs comme openssl ou des applications basées sur libsodium.
Cet outil est-il sûr pour une utilisation en production ?
Cet outil est à des fins éducatives et de développement. Bien que l'implémentation suive les spécifications standards, les systèmes de production devraient utiliser des bibliothèques cryptographiques bien auditées comme libsodium, OpenSSL ou les API de la plateforme.
Outils Connexes
Cryptage/Décryptage AES
Crypter et décrypter du texte en toute sécurité à l'aide de l'algorithme AES
Famille RC (RC4/RC5/RC6)
Chiffrements en flux et par blocs de la famille RC incluant RC4, RC4-Drop, RC5 et RC6 (finaliste AES)
Chiffrement/Déchiffrement Blowfish
Chiffrement par blocs symétrique rapide conçu par Bruce Schneier, avec longueur de clé variable (32-448 bits)