title: Serpent (cryptographie)
text: # Serpent (cryptographie)
  
  Serpent est un algorithme de chiffrement par bloc finaliste pour le concours AES. Il obtiendra finalement la 2e place (59 votes contre 86 votes pour Rijndael). Serpent a été conçu par Ross J. Anderson (en), Eli Biham et Lars Knudsen.
  
  Tout comme les autres candidats pour AES, Serpent a une taille de bloc de 128 bits et supporte des clés de 128, 192 ou 256 bits, mais également d'autres longueurs inférieures (multiple de 8 bits). L'algorithme comporte 32 tours d'un réseau de substitution-permutation opérant sur quatre mots de 32 bits. Chaque tour utilise 32 copies de la même S-Box de 16x16 éléments, il y a 8 S-Boxes en tout qui sont utilisées chacune tous les 8 tours. Leur contenu provient d'une opération déterministe simple sur les S-Boxes de DES (les auteurs levaient ainsi une partie des soupçons sur des faiblesses volontairement insérées). Après avoir opéré la substitution, une transformation linéaire (voir diagramme) modifie le bloc pour le tour suivant. Celle-ci a fait l'objet d'une analyse poussée pour vérifier sa robustesse et améliorer l'effet avalanche.
  
  Serpent a été conçu pour travailler en parallèle avec 32 tranches de 1 bit. Cela maximise le parallélisme, mais fait également appel à la cryptanalyse intensive dont DES a été l'objet.
  
  Serpent a été jugé plus prudent que Rijndael, le vainqueur de AES, en matière de sécurité. Les concepteurs sont partis du principe que 16 tours suffisaient à repousser les attaques conventionnelles, mais pour contrer la cryptanalyse à venir, ils ont opté pour 32 tours.
  
  Serpent est souvent considéré comme l’un des systèmes de chiffrement les plus sûrs actuellement disponibles.
  
  Il existe aussi une version peu répandue de Serpent, capable de travailler avec des clés de 512 bits.
  
  ## Cryptanalyse
  
  Schneier, Kelsey et al. ont publié une attaque boomerang contre un Serpent-256 avec 9 tours. L'attaque nécessite $2^{110}$ textes clairs et a une complexité en temps de $2^{252}.$ Cette attaque reste complètement théorique. La meilleure attaque contre Serpent est une attaque basée sur la cryptanalyse différentielle-linéaire par Eli Biham et al. Elle attaque 11 tours avec une complexité en temps d'environ $2^{159}$ et $2^{125}$ textes clairs choisis. Le record précédent était détenu par une cryptanalyse linéaire également menée par l'équipe de Biham.
  
  