Cryptographie/Fonctions de hachage
Principe
[modifier | modifier le wikicode]Une fonction de hachage permet d'obtenir un condensé à partir d'une série de données. Ce condensé a une taille fixe qui dépend de l'algorithme utilisé.
Pour obtenir ce condensé, une ou des fonctions à sens unique sont utilisées.
Les fonctions à sens unique
[modifier | modifier le wikicode]Une fonction à sens unique est une fonction dont il est impossible de retrouver, entièrement ou partiellement, la valeur de départ (les données) à partir d'un résultat (le condensé). Ces fonctions sont des fonctions non injectives. C'est-à-dire que pour tout élément de l’ensemble d'arrivée (ici la chaîne hachée) peuvent correspondre plusieurs éléments de l’ensemble de départ. Ainsi deux données initiales différentes peuvent donner, une fois hachées, un même condensé.
En pratique les risques de collision (même condensé à partir de données initiales différentes) sont très peu élevés et ceux-ci doivent être très difficiles (en pratique impossibles) à obtenir. Ainsi, à partir d'un condensé donné, on ne peut retrouver ni la chaîne initiale (il y a une multitude de chaînes possibles) ni une autre chaîne qui permettrait d'obtenir, après hachage, la même empreinte.
Utilité
[modifier | modifier le wikicode]En pratique, de telles fonctions de hachage (md5, sha1, etc.) offrent de nombreuses possibilités. Par exemple, elles peuvent permettre de vérifier l'intégrité d'un fichier. C’est le cas lors de certains téléchargements pour lesquels le fichier est accompagné de son empreinte (souvent md5). Ainsi, une fois que l'utilisateur a téléchargé le fichier, il peut, en calculant l'empreinte de sa version et en comparant avec celle fournie par le distributeur, vérifier que le fichier a été reçu en intégralité, que personne ne l'a corrompu, etc. car la moindre modification du fichier entraînera une modification de l'empreinte.
Une autre utilisation est la protection des mots de passe sur l'Internet. Un site proposant à ses utilisateurs de s'inscrire devra s'assurer de la protection des mots de passe, même si quelqu’un venait à avoir directement accès à la base de données. Aussi, en hachant les mots de passe, ceux-ci ne peuvent être retrouvés, et même un utilisateur malintentionné muni d'une empreinte de mot de passe valide ne pourra avoir accès au mot de passe lui-même. L'identification se fera ensuite par comparaison de l'empreinte du mot de passe issu de la base de données avec celle de celui entré par l'utilisateur (d'où l’intérêt d’avoir un faible risque de collision car dans le cas contraire, les chances que quelqu’un puisse s'identifier avec un mot de passe erroné quoique ayant la même empreinte que le bon seraient accrues).
Un exemple : MD5
[modifier | modifier le wikicode]Un autre algorithme : SHA-1
[modifier | modifier le wikicode]