Fonction de hachage cryptographique

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Une fonction de hachage cryptographique (spécifiquement, SHA-1) en action. Notez que même de petits changements dans la donnée d'entrée (ici dans le mot over) changent radicalement le résultat de sortie par un phénomène appelé effet avalanche.

Une fonction de hachage cryptographique est une fonction de hachage qui est considérée comme pratiquement impossible à inverser, c'est-à-dire qu'il est pratiquement impossible de calculer ses données d'entrée à partir de ses valeurs de hachage. On appelle aussi ces fonctions, fonctions à sens unique, car elles se comportent comme si elles transformaient par calcul les valeurs dans une seule direction sans pouvoir les transformer par calcul dans la direction opposée.

En raison de leur ubiquité, ces fonctions à sens unique ont été appelées les chevaux de trait de la cryptographie moderne[1]. La donnée d'entrée de ces fonctions est souvent appelée le message ; la valeur de sortie est souvent appelée la valeur de hachage ou l’empreinte numérique (en anglais, message digest ou digest).

Une fonction de hachage cryptographique idéale possède les quatre propriétés suivantes :

  • il est possible de calculer rapidement la valeur de hachage pour tout message donné ;
  • il est impossible de reconstruire un message à partir de sa valeur de hachage ;
  • il est impossible de modifier un message sans changer sa valeur de hachage ;
  • il y a une très faible probabilité pour trouver deux messages différents ayant la même valeur de hachage.

Les fonctions de hachage cryptographiques ont de nombreuses applications en sécurité informatique, notamment dans les signatures numériques, les codes d'authentification de message et les autres formes d'authentification.

Les fonctions Secure Hash Algorithm du NIST sont des exemples de fonctions de hachage cryptographiques.

Propriétés[modifier | modifier le code]

La plupart des fonctions de hachage cryptographiques sont conçues pour prendre une chaîne de caractères de longueur quelconque en entrée et produire une valeur de hachage de longueur fixe en sortie.

Une fonction de hachage cryptographique doit être capable de résister à tous les types connus d'attaque cryptanalitique. Au minimum, elle doit avoir les propriétés suivantes :

  • résistance aux attaques d'image inverse (en anglais, preimage resistance ) : pour toute valeur de hachage h, il devrait être difficile de trouver un message m tel que h = hash (m) ; cette notion est liée à la notion de fonction à sens unique ; les fonctions qui n'ont pas cette propriété sont vulnérables aux attaques d'image inverse (en anglais, preimage attack (en) ;
  • résistance aux attaques de deuxième image inverse (en anglais, second preimage resistance ) : pour toute entrée m1, il devrait être difficile de trouver une entrée différente m2 telle que hash(m1) = hash(m2) ; ; les fonctions qui n'ont pas cette propriété sont vulnérables aux attaques de deuxième image inverse (en anglais, second-preimage attacks) ;
  • résistance aux collisions : il doit être difficile de trouver deux messages différents m1 et m2 tels que hachage (m1) = hachage (m2) ; une telle paire de messages est appelée une collision de hachage cryptographique ; pour obtenir cette propriété, il faut une valeur de hachage au moins deux fois plus longue que celle requise pour obtenir la résistance aux attaques d'image inverse ; si la clé n'est pas assez longue, une collision peut être trouvée par une attaque des anniversaires.

Ces propriétés impliquent qu'un adversaire malveillant ne peut pas remplacer ou modifier les données d'entrée sans changer son empreinte numérique. Ainsi, si deux chaînes ont la même empreinte numérique, on peut être très confiant qu'ils sont identiques.

Une fonction qui possède ces trois propriétés peut tout de même avoir des propriétés indésirables. Actuellement, des fonctions populaires de hachage cryptographique sont vulnérables à des attaques qui allongent la longueur du message : en effet, si hash(m) et la longueur de m sont connus, en choisissant un m' approprié, un attaquant peut calculer hachage(m||m') [où || désigne la concaténation][2]. Cette particularité peut être utilisée pour briser des algorithmes d'authentification fondés sur des fonctions de hachage. La code Keyed-Hash Message Authentication (HMAC) permet de corriger cette faiblesse.

On pourrait augmenter la sécurité des fonctions de hachage cryptographiques en exigeant des propriétés additionnelles pour ces fonctions. Par exemple,

  • il est impossible de trouver deux messages ayant des empreintes numériques semblables;
  • il est impossible de déduire quelque information que ce soit d'un message à partir de son empreinte numérique.

Les algorithmes de somme de contrôle (checksum), comme CRC32 et d'autres contrôles de redondance cyclique, sont conçus pour répondre à des exigences beaucoup plus faibles et sont généralement inadéquats comme fonctions de hachage cryptographique. Par exemple, un CRC a été utilisé pour vérifier l'intégrité des messages dans la norme de cryptage WEP, mais une attaque qui exploitait la linéarité de la somme de contrôle a été rapidement découverte.

Références[modifier | modifier le code]

  1. (en) Bruce Schneier, « Cryptanalysis of MD5 and SHA: Time for a New Standard », sur Computerworld (consulté le 15 octobre 2014).
  2. (en) « Flickr's API Signature Forgery Vulnerability », Thai Duong and Juliano Rizzo

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]