Chiffrement Salsa20
Chiffrement par flot haute vitesse avec variante nonce étendu
Sécurité côté client
Toutes les opérations de chiffrement et déchiffrement sont effectuées localement dans votre navigateur. Aucune donnée n'est jamais envoyée à un serveur.
Valeur initiale du compteur de bloc (généralement 0 pour le chiffrement, même valeur pour le déchiffrement)
À propos de Salsa20
Salsa20 est un chiffrement par flot conçu par Daniel J. Bernstein en 2005. Il utilise une clé de 256 bits et un nonce de 64 bits pour générer un flux de clé qui est XORé avec le texte clair pour produire le texte chiffré. Le chiffrement est conçu pour des performances élevées dans les implémentations logicielles.
Salsa20 a été soumis au projet eSTREAM et sélectionné comme finaliste dans le profil logiciel. Il constitue la base de la famille de chiffrements ChaCha.
Comparaison des algorithmes
| Algorithme | Tours | Longueur du nonce | Vitesse | Meilleur usage |
|---|---|---|---|---|
| Salsa20/20 | 20 | 64 bits (8 bytes) | Standard | Chiffrement général, haute sécurité |
| Salsa20/12 | 12 | 64 bits (8 bytes) | Rapide | Applications critiques en performance |
| Salsa20/8 | 8 | 64 bits (8 bytes) | Le plus rapide | Scénarios de vitesse maximale |
| XSalsa20 | 20 | 192 bits (24 bytes) | Standard | Nonce aléatoire, NaCl/libsodium |
Comment fonctionne Salsa20
Salsa20 opère sur une matrice 4×4 de mots de 32 bits (512 bits au total). L'état initial se compose de la clé (256 bits), du nonce (64 bits), du compteur (64 bits) et de quatre mots constants formant la chaîne 'expand 32-byte k'.
La fonction principale applique 20 tours de l'opération quarterround, qui n'utilise que des opérations d'addition-rotation-XOR (ARX). Cela rend Salsa20 efficace en logiciel et résistant aux attaques de timing.
XSalsa20 étend le nonce à 192 bits en utilisant HSalsa20, une variante qui dérive une sous-clé des 128 premiers bits du nonce, laissant 64 bits pour le nonce réel. Cela permet une génération de nonce aléatoire sécurisée.
Variantes de tours
- Salsa20/20 (20 tours) - La variante standard offrant une marge de sécurité complète. Recommandé pour la plupart des applications.
- Salsa20/12 (12 tours) - Sélection du portfolio eSTREAM. Offre un bon équilibre entre vitesse et sécurité.
- Salsa20/8 (8 tours) - Variante la plus rapide. Pas d'attaques pratiques connues, mais marge de sécurité réduite.
Caractéristiques principales
- Haute performance : Optimisé pour le logiciel, atteignant 3-4 cycles par octet sur les CPU modernes
- Conception simple : N'utilise que des opérations ARX, facile à implémenter sans tables de recherche
- Temps constant : Résistant aux attaques par canal latéral de timing de cache
- Grand compteur : Le compteur 64 bits permet de chiffrer jusqu'à 2^70 octets par paire clé-nonce
- Nonce étendu : Le nonce de 192 bits de XSalsa20 permet la génération de nonce aléatoire
Considérations de sécurité
- Ne réutilisez jamais un nonce avec la même clé - cela compromet totalement la sécurité
- Salsa20 fournit uniquement le chiffrement, pas l'authentification - combinez avec Poly1305 pour AEAD
- Pour les nonces aléatoires, utilisez XSalsa20 pour minimiser la probabilité de collision
- Utilisez un KDF approprié (HKDF, Argon2) pour dériver les clés des mots de passe
Utilisation réelle
- NaCl/libsodium : XSalsa20-Poly1305 est la construction AEAD par défaut
- Outils de chiffrement : De nombreux utilitaires de chiffrement de fichiers utilisent les variantes Salsa20
- Gestionnaires de mots de passe : Certains utilisent Salsa20 pour chiffrer les identifiants stockés
- Moteurs de jeu : Utilisé pour le chiffrement rapide dans les jeux en réseau
Références
- D.J. Bernstein - Spécification Salsa20
- Projet eSTREAM - Portfolio de chiffrement par flot
- Wikipédia - Salsa20
- NaCl - Bibliothèque de réseau et de cryptographie
FAQ
Quelle est la différence entre Salsa20 et ChaCha20 ?
ChaCha20 est une modification de Salsa20 avec une meilleure diffusion par tour. ChaCha20 offre une meilleure sécurité par tour, c'est pourquoi il est devenu le standard IETF. Pour les nouveaux projets, ChaCha20 est généralement préféré.
Quelle variante de tours dois-je utiliser ?
Utilisez Salsa20/20 pour une sécurité maximale. Salsa20/12 offre un bon équilibre entre vitesse et sécurité. N'utilisez Salsa20/8 que lorsque la performance est absolument critique et que votre modèle de menace permet une marge de sécurité réduite.
Quand dois-je utiliser XSalsa20 ?
Utilisez XSalsa20 lorsque vous devez générer des nonces aléatoires. Son espace de nonce de 192 bits rend les collisions pratiquement impossibles avec une génération aléatoire. Le nonce de 64 bits du Salsa20 standard nécessite une gestion soigneuse du compteur.
Salsa20 est-il sûr sans authentification ?
Salsa20 seul fournit uniquement la confidentialité, pas l'intégrité. Un attaquant peut modifier le texte chiffré sans détection. Combinez toujours avec Poly1305 ou un autre MAC pour un chiffrement authentifié.
Puis-je utiliser cet outil en production ?
Cet outil est à des fins éducatives et de développement. Bien que l'implémentation suive la spécification, les systèmes de production devraient utiliser des bibliothèques cryptographiques bien auditées comme libsodium, OpenSSL ou les API fournies par la plateforme.
Outils Connexes
Chiffrement ChaCha20
Chiffrement en flux moderne avec ChaCha20, ChaCha20-Poly1305 AEAD et variantes XChaCha20
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)