Niveau :      
Résumé : SHA1 ; MD5

Une fonction de hachage est une fonction surjective qui prends un certain nombre d'octets en entrée et qui rend un nombre fixe d'octets en sortie. Elles sont donc à sens uniques et plusieurs entrées peuvent donner le même résultat.

Ces fonctions peuvent servir à la détection d'erreurs involontaires ou à la détection de modifications volontaires. Dans le premier cas on cherche à avoir une fonction qui permettra de détecter des erreurs de transmission, de lecture ou de recopie (le dernier chiffre de votre numéro de sécurité sociale). Dans le deuxième cas, on cherche à empêcher une personne de lire ou de modifier elle-même le contenu des données et de les faire passer pour les données originales, c'est ce qu'on utilise pour signer un document ou stocker un mot de passe (vous saviez que vous aviez en réalité une infinité de mots de passe qui fonctionnent ?).

CRC

Dans la première catégorie, on trouve un grand nombre de codes de redondance cyclique. Ils consistent à calculer des polynômes sur les données en entrée. Il existe une méthode permettant de les calculer facilement et sous forme de flux, ce qui fait qu'ils sont très rapides et facile à implémenter dans le matériel.

Ils ne sont pas standardisés puisqu'ils dépendent de la définition du polynôme choisi ainsi que de la taille du résultat.

Par contre les CRC ne permettent pas de protéger les données contre des modifications volontaires puisqu'il est assez facile de calculer une série d'octets qui donnera un résultat donné.

MD5

MD5 a été inventé par Ronald Rivest, celui qui a fait entre autre rc4 et rc5. Cette fois l'algorithme a pour but d'empêcher de reconstruire une source de données différente produisant un résultat donné. Il est très répandu et sert probablement à stocker vos mots de passe. Malheureusement il est depuis quelque temps déjà considéré comme peu sûr, même s'il n'y avait pas eu d'attaque dessus. Il a d'ailleurs récemment fait la une puisqu'il a été possible de calculer des collisions avec un bête cluster de 200 PS3 pendant quelques jours, comme quoi c'est à le portée de tout le monde.

Il est donc fortement déconseillé de l'utiliser pour une application de sécurité durable.

SHA

SHA est une série de fonctions de hachage dont les algorithmes sont complètement différents les uns des autres. Elles peuvent être utilisées pour la sécurité tout comme MD5.

  • SHA-0 est dépassés depuis longtemps.
  • SHA-1 est la plus répandue après MD5, et conseillée si vous ne disposez pas de SHA-2. Bien qu'on ait des doutes sur sa sûreté, on n'a pas encore réussi à produire des collisions en un temps humainement mesurable.
  • SHA-2 est une fonction de hachage à taille variable. Si vous voyez des SHA-224, SHA-256, SHA-384 ou SHA-512, il s'agit toutes de SHA-2 avec la taille précisée en suffixe. C'est la méthode la plus sûre actuellement.
  • SHA-3 n'existe pas encore et fait l'objet d'un concours pour savoir quelle sera la solution d'avenir. (d'ailleurs monsieur sécurité Bruce Schneier en personne y participe)