268
modifications
m (→Présentation de SHA-1 : fix) |
m (→Vers des fonctions plus robustes : Ortho, ajustement.) |
||
Que faut-il pour faire une fonction cryptographique ? Reprenons pour cela l'exemple de Java. L'empreinte générée tient sur seulement 32 bits, le nombre de condensés disponibles se réduit ainsi à environ 4 milliards (2<sup>32</sup>). Cette espace n'est pas utilisé efficacement dans le cas des chaînes de caractères. On assiste de ce fait à un regroupement des condensés dans certains intervalles alors qu'une bonne fonction cryptographique est censée répartir au maximum les résultats dans l'espace disponible.
Pour illustrer cette vulnérabilité, prenons l'exemple d'un attaquant qui intercepte une empreinte calculée avec la fonction de hachage Java. Un espion lui assure que cette empreinte ne concerne qu'un mot de quelques lettres qui ne contient que des majuscules. Le pirate sait que la plus grande empreinte sera obtenue avec une suite de "Z". Avec "ZZZ", l'empreinte Java sera de 89370, on ne peut pas faire plus grand avec trois majuscules. Avec "ZZZZ", le condensé se monte à environ 2
En termes plus techniques, cette recherche d'une entrée possible à partir de l'empreinte est une ''attaque sur la première préimage''. Une ''attaque sur la seconde préimage'' consiste quant à elle, à forger des données qui donnent la même empreinte qu'un autre message. Finalement, la troisième attaque se résume à rechercher des collisions quelconques.
|