CoderTools

Chiffrement Salsa20

Chiffrement par flot haute vitesse avec variante nonce étendu

Sécurité côté client

Salsa20 est un chiffre ARX sans tables de recherche, intrinsèquement à temps constant. La réutilisation de nonce est catastrophique. Utilisez XSalsa20 (nonce 192 bits) pour une génération de nonce aléatoire sécurisée.

Salsa20/20: 256 bits clé, nonce 64 bits, compteur 64 bits, 20 tours; eSTREAM Profile 1; 2⁷² octets max; aucune attaque plein-tour.

Valeur initiale du compteur de bloc (généralement 0 pour le chiffrement, même valeur pour le déchiffrement)

Options de format
🔒 100% Traitement localLes données que vous saisissez sont traitées entièrement dans votre navigateur et ne sont envoyées à aucun serveur.

À propos de Salsa20

Salsa20 est un chiffre de flux ARX conçu par Daniel J. Bernstein (2005). Il opère sur une matrice 4×4 de mots 32 bits (état total 512 bits) via addition (mod 2³²), rotation et XOR uniquement — sans S-box ni table de recherche. Le compteur de flux 64 bits permet un accès aléatoire à n'importe quelle position du flux de clé.

Salsa20 a été sélectionné pour eSTREAM Profile 1 (logiciel, 2008). XSalsa20 (Bernstein 2011) utilise HSalsa20 pour dériver une sous-clé de 256 bits depuis les 128 premiers bits d'un nonce 192 bits, permettant une génération aléatoire de nonce sans risque d'anniversaire. C'est la base du secretbox NaCl (XSalsa20-Poly1305).

Comparaison des algorithmes

Algorithme Tours Longueur du nonce Vitesse Meilleur usage
Salsa20/20 20 64 bits (8 bytes) Standard Chiffrement session à nonces séquentiels; flux haute performance; déploiements certifiés eSTREAM
Salsa20/12 12 64 bits (8 bytes) Rapide Haute performance avec marge de sécurité suffisante; recommandation Bernstein
Salsa20/8 8 64 bits (8 bytes) Le plus rapide Benchmarking et recherche uniquement
XSalsa20 20 192 bits (24 bytes) Standard Applications à génération aléatoire de nonce; compatibilité NaCl/libsodium secretbox

Comment fonctionne Salsa20

Salsa20 initialise une matrice 4×4 : 4 constantes (“expand 32-byte k”), 8×32 bits de la clé 256 bits, 2×32 bits compteur de flux, 2×32 bits nonce.

Le quart-tour sur (a,b,c,d): b⊕=(a+d)‹‹7; c⊕=(b+a)‹‹9; d⊕=(c+b)‹‹13; a⊕=(d+c)‹‹18. Un double tour = tour colonne + tour diagonal. Salsa20/20 = 10 doubles tours. Sortie = XOR de l'état transformé avec l'état initial.

Compteur 64 bits : 2⁶⁴ blocs × 64 octets = 2⁷² octets par (clé, nonce). Accès aléatoire à toute position. Parallélisation possible par blocs de 64 octets indépendants.

Variantes de tours

  • Salsa20/20 (20 tours): marge de sécurité maximale, eSTREAM nominé, aucune attaque plein-tour connue. Recommandé pour toutes les applications critiques.
  • Salsa20/12 (12 tours): ~35% plus rapide que /20, aucune attaque connue à 12 tours, recommandation de performance Bernstein, eSTREAM portfolio primaire.
  • Salsa20/8 (8 tours): le plus rapide, attaques réduites connues (Aumasson 2008, 2²⁴⁹). Non recommandé pour les usages sécurisés. Benchmarking uniquement.

Caractéristiques principales

  • Conception ARX : aucune S-box ni table. Temps d'exécution indépendant des données. Immunité intrinsèque aux attaques par canal auxiliaire de cache.
  • Grand flux de clé : 2⁷² octets par (clé, nonce) via compteur 64 bits. Accès aléatoire à toute position sans retraitement.
  • Nonce 64 bits (base Salsa20) : gestion stricte requise. Après 2³² messages même clé, probabilité de collision non négligeable. Utiliser XSalsa20 (192 bits) pour les clés longue durée.
  • XSalsa20 (nonce 192 bits, 2011) : HSalsa20 dérive une sous-clé permettant une génération aléatoire de nonce. Standard secretbox NaCl.
  • eSTREAM Profile 1 (logiciel, 2008): évaluation publique 4 ans. Sans attaque sur 12 ou 20 tours.

Considérations de sécurité

  • Réutilisation de nonce catastrophique : révèle le XOR des plaintexts. Nonces uniques obligatoires. XSalsa20 à nonce 192 bits aléatoire élimine le risque d'anniversaire.
  • Limite anniversaire nonce court : nonce 64 bits → ~2³² messages avant collision ~50%. Utiliser XSalsa20 (192 bits).
  • Attaques sur tours réduits : aucune sur /20 ou /12. Salsa20/8 : distingueurs connus (Aumasson 2008). Seul /20 pour les usages critiques.
  • Pas d'authentification : utiliser XSalsa20-Poly1305 ou ChaCha20-Poly1305 pour l'AEAD.

Utilisation réelle

  • NaCl secretbox (XSalsa20-Poly1305) : primitive AEAD d'origine de NaCl, nonce 192 bits + authentication Poly1305 ; largement déployée via libsodium.
  • eSTREAM Profile 1 (2008) : Salsa20/12 sélectionné comme chiffre logiciel principal lors de la compétition ECRYPT 2004-2008.
  • Influence sur ChaCha20 : Bernstein a conçu ChaCha20 (2008) comme variante de Salsa20 avec diffusion améliorée par tour.
  • Systèmes legacy : nombreux outils VPN, chiffrement de fichiers, messageries libsodium utilisaient XSalsa20-Poly1305 avant RFC 7539/8439. Encore supporté.

Références

Menu Rapide

Aucun outil récent