ChaCha20 et Salsa20
Portail > Algorithmes
Salsa20 et son évolution ChaCha20 (Daniel J. Bernstein) sont des chiffrements par flot modernes, rapides en logiciel et conçus pour être constants en temps. ChaCha20 est aujourd'hui largement déployé (TLS, WireGuard, SSH).
Caractéristiques
| Paramètre | Valeur (ChaCha20) |
|---|---|
| Type | Chiffrement par flot |
| Taille de clé | 256 bits |
| Nonce | 96 bits (variante RFC 8439) ; 192 bits pour XChaCha20 |
| État | 512 bits (16 mots de 32 bits) |
| Tours | 20 |
Conception ARX
ChaCha20 repose sur des opérations ARX (Add-Rotate-XOR) : additions modulaires, rotations et XOR sur des mots de 32 bits, organisées en « quarts de tour ». Aucune table de substitution n'est utilisée — d'où une exécution naturellement en temps constant, résistante aux attaques par cache/timing sans matériel spécialisé.
Le cœur chiffre un état (constantes + clé + compteur + nonce) pour produire un bloc de keystream, XORé au clair :
chiffré = clair XOR ChaCha20(clé, nonce, compteur)
ChaCha20 améliore la diffusion par tour de Salsa20, d'où une meilleure marge de sécurité à coût égal.
Pourquoi ChaCha20
- Très rapide en logiciel, y compris sur mobile/embarqué sans AES-NI.
- Temps constant par conception → robustesse face aux canaux auxiliaires.
- Couplé à Poly1305, il forme un AEAD standard.
Nonce et XChaCha20
Comme tout chiffrement par flot, ChaCha20 exige un nonce unique par clé. Le nonce de 96 bits convient pour des compteurs maîtrisés ; XChaCha20, avec un nonce de 192 bits, permet de tirer le nonce aléatoirement sans risque réaliste de collision — utile dans les systèmes distribués.
Sécurité
Aucune attaque pratique connue contre ChaCha20 à 20 tours. Sa simplicité et son absence de tables en font un choix sûr, notamment là où AES sans accélération matérielle serait risqué (timing) ou lent.
Points clés à retenir
- Chiffrement par flot ARX, clé 256 bits, 20 tours ; ChaCha20 améliore Salsa20.
- Rapide en logiciel et constant en temps (pas de S-box) → bon sur mobile/embarqué.
- Nonce unique impératif ; XChaCha20 (192 bits) autorise un nonce aléatoire.
- Base de l'AEAD ChaCha20-Poly1305.
Voir aussi
| Cryptographie symétrique — Portail | |
|---|---|
| Fondamentaux | Principe · Bloc et flot · Modes opératoires · Padding · IV et nonces |
| Intégrité / auth. | MAC et HMAC · AEAD |
| Gestion des clés | Aléa / CSPRNG · KDF · Échange de clés · Stockage / rotation |
| Algorithmes | AES · ChaCha20/Salsa20 · DES / 3DES · Blowfish et Twofish · RC4 · Camellia, ARIA et SM4 · AES-GCM · ChaCha20-Poly1305 · Hachage |
| Applications | Données au repos · En transit / hybride |
| Sécurité avancée | Attaques · Conformité · Post-quantique |