Toolyard

Qu’est-ce qu’un hash ? MD5, SHA-1 et SHA-256 expliqués

Une empreinte pour les données

Une fonction de hachage prend n’importe quelle entrée (un mot, un document, une vidéo de 4 Go) et en fait une courte chaîne de longueur fixe, le hash, aussi appelé empreinte ou somme de contrôle. La même entrée donne toujours le même hash, et le moindre changement en donne un complètement différent :

EntréeHash SHA-256
hello2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
Hello185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
hello!ce06092fb948d9ffac7d1a376e404b26b7575bcc11ee05a4615fef4fec3a308b

Une majuscule ou un point d’exclamation change chaque caractère du résultat. Essayez dans le Générateur de hash.

Ce qui fait une bonne fonction de hachage

  • Déterministe : la même entrée donne le même hash sur tous les ordinateurs.
  • À sens unique : on ne peut pas remonter du hash à l’entrée.
  • Résistante aux collisions : il doit être pratiquement impossible de trouver deux entrées différentes avec le même hash.
  • Rapide à calculer pour les sommes de contrôle, ce qui est utile, et c’est aussi la raison pour laquelle les hash rapides ne conviennent pas aux mots de passe (voir plus bas).

Hacher n’est pas chiffrer

Le chiffrement fonctionne dans les deux sens : avec la clé, on récupère l’original. Un hash n’a pas de clé et ne peut pas être inversé. Il montre seulement si quelque chose correspond. Le Base64 est encore autre chose : un simple encodage que tout le monde peut décoder.

Les algorithmes courants

AlgorithmeLongueurStatut
MD5128 bits (32 caractères hex)Cassé depuis 2004 ; seulement pour les corruptions accidentelles
SHA-1160 bits (40 caractères hex)Cassé : la première vraie collision a été publiée en 2017
SHA-256256 bits (64 caractères hex)Sûr ; le choix standard aujourd’hui
SHA-512512 bits (128 caractères hex)Sûr ; souvent plus rapide que SHA-256 sur les ordinateurs 64 bits

Voici le mot hello dans chacun :

  • MD5 : 5d41402abc4b2a76b9719d911017c592
  • SHA-1 : aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
  • SHA-256 : 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

Ce que « cassé » veut dire pour MD5 et SHA-1

Avec MD5 et SHA-1, des chercheurs savent créer volontairement deux fichiers différents avec le même hash. Un attaquant pourrait ainsi remplacer un fichier inoffensif par un fichier malveillant avec la même somme de contrôle, ou falsifier un document signé. Aucun des deux n’est réversible, et une corruption accidentelle change toujours le hash : une somme de contrôle MD5 repère donc encore un téléchargement interrompu. Elle ne peut simplement pas prouver que personne n’a trafiqué le fichier.

SHA-256 et SHA-512 font partie de la famille SHA-2, publiée en 2001, et aucune attaque pratique contre eux n’est connue. SHA-3, normalisé en 2015, est une conception différente, prête en réserve.

Où les hash sont utilisés

  • Vérifier des téléchargements : les développeurs publient le SHA-256 de leurs fichiers ; si le vôtre correspond, le fichier est identique. Voir Vérifier une somme de contrôle.
  • Signatures numériques et certificats HTTPS : le document ou le certificat est haché, et c’est le hash qui est signé.
  • Git : chaque commit et chaque fichier est identifié par son hash. Git utilise depuis longtemps SHA-1 et prend désormais aussi en charge SHA-256.
  • Bitcoin et autres blockchains : les blocs sont chaînés avec SHA-256.
  • Trouver des fichiers en double : deux fichiers qui ont le même SHA-256 sont le même fichier.

Les hash et les mots de passe

Les sites ne devraient jamais stocker votre mot de passe, seulement un hash de celui-ci ; à la connexion, ils hachent ce que vous tapez et comparent. SHA-256 n’est pourtant pas le bon outil pour cela : il est si rapide qu’un attaquant disposant d’une base de données divulguée peut faire des milliards d’essais par seconde. Les mots de passe demandent un hachage lent avec sel, conçu pour cela, comme bcrypt, scrypt ou Argon2. Un sel est une valeur aléatoire ajoutée à chaque mot de passe avant le hachage, pour que deux personnes avec le même mot de passe aient des hash différents.

Essayer

Le Générateur de hash calcule en même temps MD5, SHA-1, SHA-256, SHA-384 et SHA-512 de n’importe quel texte ou fichier, dans votre navigateur, et les compare à une somme de contrôle publiée.

Outils de ce guide

Autres guides