title: Whirlpool (algorithme)
text: # Whirlpool (algorithme)
  
  Whirlpool est une fonction de hachage cryptographique conçue par Vincent Rijmen et Paulo Barreto pour le projet NESSIE. Elle a été nommée d'après la galaxie M51. La fonction utilise une architecture de type Miyaguchi-Preneel connue pour sa résistance à la cryptanalyse, cette structure produit des empreintes de 512 bits qui à l'heure actuelle sont assez rares (citons toutefois SHA-512).
  
  En interne, l'algorithme travaille sur 512 bits grâce à une fonction similaire à celle de l'algorithme de chiffrement symétrique AES (auquel Vincent Rijmen a également participé et qui à l'origine s'appelle Rijndael). L'utilisation d'une version modifiée du bloc de chiffrement de AES (appelée W) garantit un système robuste et fiable.
  
  ## Fonctionnement
  
  La fonction W dérivée de Rijndael travaille sur des blocs de 512 bits. C'est le double du maximum autorisé pour Rijndael. Le nombre de tours est également différent. Dans Whirlpool, 10 tours sont effectués et pour chaque tour, une clé est générée en utilisant les clés précédentes et en les faisant passer à travers la fonction W. Cette fonction W renferme des S-Box comme dans DES, ces tables peuvent être facilement calculées.
  
  L'ensemble est optimisé pour des registres de 64 bits ce qui rend la fonction de hachage plutôt lente sur les processeurs 32 bits. Toutefois, Whirlpool a été conçu pour être aisément parallélisé. L'arrivée progressive des processeurs 64 bits devrait lui assurer une utilisation de plus en plus large.
  
  ## Sécurité
  
  Des empreintes de 512 bits sont très robustes (64 octets) du point de vue cryptographique. Une attaque des anniversaires nécessiterait au moins $2^{256}$ opérations, un nombre très grand. Sur la page de Paulo Barreto, on peut lire les quelques buts que les auteurs s'étaient fixés. En particulier, l'algorithme a été conçu pour résister à la cryptanalyse de type linéaire ou différentielle. En résumé, en changeant des bits à l'entrée, le résultat à la sortie est chaotique et il n'y a pas de relation de cause à effet. C'est un effet désiré dans quasiment toutes les fonctions de hachage. Cela signifie aussi que Whirlpool se comporte comme un excellent générateur de nombres pseudo-aléatoires.
  
  ## Utilisation
  
  Whirlpool a été accepté dans la norme ISO/CEI 10118-3 et son utilisation est complètement libre, aucun brevet ne limite son emploi. Son utilisation est encore marginale mais de plus en plus de bibliothèques incorporent des routines supportant Whirlpool. On peut toutefois mettre un bémol au sujet de la taille de l'empreinte générée. En effet, une longueur de 512 bits est encore inhabituelle et n'est pas forcément pratique dans certaines applications si la mémoire et la consommation doivent être limitées (applications embarquées, matériel aux capacités restreintes, etc.). Si de telles contraintes se présentent, on se tournera plutôt vers SHA-256 mais pas vers MD5 ou SHA-1 dont la sécurité n'est pas à 100 % efficace.
  
  ## Lien externe
  
  * Page de Paulo Barreto
  