Serpent (cryptographie)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Serpent (homonymie).
Serpent
Fonction linéaire destinée à augmenter l'effet avalanche
Fonction linéaire destinée à augmenter l'effet avalanche
Résumé
Concepteur(s) Ross Anderson, Eli Biham et Lars Knudsen
Première publication 1997
Dérivé de Inconnu
Chiffrement(s) basé(s) sur cet algorithme Inconnu
Caractéristiques
Taille(s) du bloc 128 bits
Longueur(s) de la clé multiple de 8 bits (donc 128, 192, 256 selon le standard AES)
Structure réseau de substitution-permutation
Nombre de tours 32
Meilleure cryptanalyse
Eli Biham et al. sur 11 tours (cryptanalyse différentielle-linéaire)

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 Anderson, 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 termes 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.

Une controverse existe, selon laquelle Serpent n'aurait pas été choisi comme AES, car casser ses clés aurait été beaucoup trop complexe pour les services de renseignement civils et militaires. De plus, même dans une version simplifiée il reste robuste. Par exemple Rijndael est très souvent implémenté dans TLS en version simplifiée sur 14 de ses 16 tours pour des raisons de rapidité, mais aussi d'analyses de données. Alors que Serpent doit être abaissé à au moins 9 tours pour fournir un niveau identique d'exploitation.

Serpent est souvent considéré comme l'un des système 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[modifier | modifier le code]

Schneier, Kelsey et al. ont publié une attaque boomerang contre un Serpent-256 avec 9 tours. L'attaque nécessite 2110 textes clairs et a une complexité en temps de 2252. 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 2159 et 2125 textes clairs choisis. Le record précédent était détenu par une cryptanalyse linéaire également menée par l'équipe de Biham.

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]