Un algorithme de hachage est une recette mathématique qui transforme n'importe quelle donnée, un mot, une photo, un film entier ou un mot de passe, en une courte suite de caractères de longueur fixe appelée empreinte numérique, ou hash. Cette empreinte joue le rôle d'une signature : la même donnée donne toujours la même empreinte, mais la moindre modification, ne serait-ce qu'une virgule, en produit une totalement différente. Invisible pour le grand public, le hachage travaille pourtant en permanence dans les coulisses du numérique : il protège les mots de passe enregistrés par les sites web, permet de vérifier qu'un fichier téléchargé n'a pas été altéré, sert de socle aux signatures électroniques et fait tourner les cryptomonnaies comme le Bitcoin, où chaque bloc de transactions est scellé par une empreinte. Des noms comme MD5, SHA-1, SHA-256 ou SHA-3 désignent autant de générations de ces fonctions, plus ou moins robustes face aux attaques. Ce guide explique simplement ce qu'est un algorithme de hachage, comment il fonctionne, quelles qualités on attend de lui, à quoi il sert concrètement et pourquoi certains anciens algorithmes sont aujourd'hui considérés comme dépassés.

Qu'est-ce qu'un algorithme de hachage ? Définition simple

En informatique, un algorithme de hachage (on parle aussi de fonction de hachage) prend en entrée un message de taille quelconque et calcule en sortie un résumé de taille constante, appelé condensé, empreinte ou digest en anglais. Avec SHA-256, par exemple, l'empreinte mesure toujours 256 bits, que l'on écrit généralement sous la forme de 64 caractères hexadécimaux (les chiffres de 0 à 9 et les lettres de a à f). Peu importe que l'on hache une seule lettre ou un fichier de plusieurs gigaoctets : le résultat garde exactement la même longueur. Le verbe « hacher » est bien choisi, car l'algorithme découpe les données en blocs, les mélange, les combine et les broie à travers une série d'opérations logiques jusqu'à obtenir une bouillie numérique impossible à démêler. Cette transformation est dite à sens unique : calculer l'empreinte est rapide, mais retrouver le message d'origine à partir d'elle est pratiquement impossible. On retrouve ce principe dans de nombreux domaines, de la cybersécurité aux registres partagés comme la blockchain privée, où chaque bloc contient l'empreinte du précédent afin que toute falsification de l'historique saute immédiatement aux yeux.

Hachage et chiffrement : deux notions à ne pas confondre

On confond souvent le hachage avec le chiffrement, alors que leurs objectifs sont différents. Chiffrer un message, c'est le rendre illisible pour les curieux tout en permettant à son destinataire légitime de le déchiffrer grâce à une clé : l'opération est donc réversible par nature, puisque le but est de retrouver le texte original. Hacher un message, au contraire, ne fait intervenir aucune clé et ne prévoit aucun retour en arrière : l'empreinte ne contient pas le message, elle en constitue seulement un résumé caractéristique. C'est pourquoi on ne « déchiffre » jamais un hash ; on peut tout au plus essayer de deviner quelle donnée a pu le produire, en testant des milliards de candidats. Cette différence explique les usages de chacun : le chiffrement protège la confidentialité d'une conversation ou d'un disque dur, tandis que le hachage garantit l'intégrité d'une donnée et permet de la reconnaître sans la conserver. Les deux techniques travaillent d'ailleurs souvent ensemble, par exemple dans la signature électronique, où l'on hache d'abord un document avant de chiffrer son empreinte avec une clé privée, ou dans les connexions sécurisées HTTPS, qui combinent chiffrement des échanges et contrôles d'intégrité fondés sur des fonctions de hachage.

Illustration de l'algorithme de hachage, qui transforme des données en empreinte numérique de longueur fixe

Comment fonctionne un algorithme de hachage ?

Le fonctionnement d'un algorithme de hachage moderne peut se résumer en trois temps. D'abord, le message est complété (on parle de bourrage ou padding) pour que sa longueur devienne un multiple d'une taille de bloc précise, 512 bits dans le cas de SHA-256, et la longueur initiale du message est inscrite à la fin. Ensuite, ces blocs sont traités un par un par une fonction de compression qui mélange le contenu du bloc avec un état interne, une sorte de mémoire de travail initialisée avec des constantes fixées par la norme. À chaque tour, des décalages de bits, des additions et des opérations logiques simples (ET, OU exclusif, rotations) sont répétés des dizaines de fois afin que chaque bit d'entrée influence tous les bits de sortie. Enfin, une fois le dernier bloc avalé, l'état interne final est livré comme empreinte. Cette mécanique produit le fameux effet avalanche : changer une seule lettre de l'entrée modifie en moyenne la moitié des bits du résultat, si bien que les deux empreintes semblent sans aucun rapport. L'exemple ci-dessous, calculé avec SHA-256, le montre avec deux phrases qui ne diffèrent que par une majuscule. Le procédé est enfin déterministe : relancé mille fois sur la même phrase, il donnera mille fois la même empreinte.

Schéma animé de l'effet avalanche : deux phrases presque identiques passent dans SHA-256 et donnent deux empreintes totalement différentes L'effet avalanche avec SHA-256 Message 1Bonjour le monde Message 2Bonjour le Monde SHA-256 bourrage, tours de mélange Empreinte (64 caractères)4dc45b5ed3de202a…c24a08ed428e8ae0 Empreinte (64 caractères)224f26a05fdaf472…614587510f55a42f Une seule majuscule change : l'empreinte n'a plus rien de commun
Avec un algorithme de hachage comme SHA-256, deux messages presque identiques produisent des empreintes sans aucun point commun : c'est l'effet avalanche.

Quelles qualités doit avoir un bon algorithme de hachage ?

Tous les algorithmes de hachage ne se valent pas, et ceux qui servent à la sécurité, dits cryptographiques, doivent remplir un cahier des charges exigeant. La première qualité est la résistance à la pré-image : à partir d'une empreinte donnée, il doit être irréaliste de retrouver un message qui la produit. Vient ensuite la résistance à la seconde pré-image, qui interdit de fabriquer un autre message ayant la même empreinte qu'un document existant, ce qui permettrait par exemple de substituer un contrat falsifié à l'original. La troisième exigence est la résistance aux collisions : il doit être extrêmement difficile de trouver deux messages quelconques partageant la même empreinte. Mathématiquement, les collisions existent forcément, puisqu'une infinité de messages possibles se partagent un nombre fini d'empreintes, mais un bon algorithme les rend introuvables en pratique. S'y ajoutent l'effet avalanche, le déterminisme et une bonne rapidité de calcul, indispensable pour vérifier de gros fichiers. Paradoxalement, cette rapidité devient un défaut pour les mots de passe, car elle aide aussi les pirates à tester des milliards de combinaisons : on utilise alors des fonctions volontairement lentes et gourmandes en mémoire, conçues spécialement pour cet usage.

MD5, SHA-1, SHA-256, SHA-3 : les principaux algorithmes de hachage

L'histoire des algorithmes de hachage est celle d'une course permanente entre concepteurs et cryptanalystes. MD5, imaginé au début des années 1990 par le cryptologue Ronald Rivest, a longtemps été omniprésent, mais des chercheurs ont montré dès le milieu des années 2000 qu'il était possible d'y fabriquer des collisions, ce qui l'a disqualifié pour tout usage de sécurité. SHA-1, publié par l'agence américaine de normalisation NIST, a connu un sort comparable : affaibli par des travaux théoriques, il a été définitivement condamné en 2017 lorsqu'une équipe de chercheurs a publié deux fichiers PDF différents possédant la même empreinte. La famille SHA-2, dont fait partie SHA-256, a été publiée au début des années 2000 et reste aujourd'hui la référence la plus répandue, sans attaque pratique connue. Le NIST a par ailleurs organisé un concours international qui a abouti à SHA-3, fondé sur un principe interne différent appelé « éponge », afin de disposer d'une solution de rechange si SHA-2 venait à faiblir. Pour les mots de passe, enfin, on privilégie des algorithmes spécialisés comme bcrypt, scrypt ou Argon2. Le tableau suivant résume ces grandes familles.

Algorithme de hachageTaille de l'empreinteStatut actuelUsages typiques
MD5128 bitsCassé : collisions faciles à produireSomme de contrôle contre les erreurs accidentelles uniquement
SHA-1160 bitsObsolète : collision publiée en 2017Anciens systèmes, à remplacer
SHA-256 (famille SHA-2)256 bitsRecommandé, aucune attaque pratique connueCertificats, téléchargements, Bitcoin
SHA-3224 à 512 bitsRecommandé, conception différente de SHA-2Alternative de sécurité, nouveaux protocoles
BLAKE2 / BLAKE3VariableConsidérés comme sûrs et très rapidesLogiciels, vérification de gros fichiers
bcrypt, scrypt, Argon2VariableConçus pour être lentsStockage des mots de passe

À quoi sert un algorithme de hachage au quotidien ?

L'usage le plus familier de l'algorithme de hachage concerne les mots de passe. Un site sérieux n'enregistre jamais votre mot de passe en clair : au moment de l'inscription, il en calcule l'empreinte et ne conserve qu'elle, idéalement après y avoir ajouté un « sel », une petite valeur aléatoire propre à chaque compte qui empêche deux mots de passe identiques de produire la même empreinte. Lors de la connexion, le mot de passe saisi est haché à son tour, puis les deux empreintes sont comparées : si elles sont identiques, l'accès est accordé. Ainsi, même si la base de données est volée, les pirates ne récupèrent pas directement les mots de passe. Deuxième usage courant, la vérification d'intégrité : de nombreux éditeurs de logiciels publient l'empreinte SHA-256 de leurs fichiers d'installation, que l'utilisateur peut recalculer après téléchargement pour s'assurer qu'aucun octet n'a été corrompu ou modifié en route. Les sauvegardes, les logiciels de gestion de versions comme Git et les systèmes de stockage en ligne utilisent le même principe pour repérer les fichiers modifiés ou éviter de stocker deux fois le même contenu. Enfin, la signature électronique commence toujours par le hachage du document à signer.

Schéma animé de la vérification d'un mot de passe par hachage : le mot de passe saisi est haché puis son empreinte est comparée à celle stockée par le site Comment un site vérifie votre mot de passe • • • • • • • 1. Vous tapezvotre mot de passe Fonctionde hachage 2. Le site calculel'empreinte (+ sel) empreinte stockée 9f2c…e71a 3. Les empreintessont comparées Le mot de passe lui-même n'est jamais enregistré par le site
Lors d'une connexion, le site hache le mot de passe saisi et compare simplement cette empreinte à celle qu'il a conservée lors de l'inscription.

Le rôle du hachage dans la blockchain et le Bitcoin

Les cryptomonnaies ont donné au hachage une visibilité nouvelle. Dans une blockchain, chaque bloc de transactions contient l'empreinte du bloc précédent, ce qui forme une chaîne : modifier une ancienne transaction changerait l'empreinte de son bloc, donc celle de tous les blocs suivants, et la fraude serait immédiatement détectée par les autres participants du réseau. Le Bitcoin utilise en outre SHA-256 pour son mécanisme de preuve de travail, plus connu sous le nom de minage. Les mineurs cherchent, par essais successifs, une petite valeur appelée nonce qui, ajoutée au bloc, produit une empreinte commençant par un certain nombre de zéros. Comme il est impossible de prévoir le résultat d'un hachage, la seule méthode consiste à tester d'innombrables valeurs, ce qui demande une énorme puissance de calcul et une consommation d'électricité importante. Celui qui trouve la bonne valeur valide le bloc et reçoit une récompense, tandis que les autres peuvent vérifier sa solution en un seul calcul. Ce contraste entre une solution difficile à trouver et facile à contrôler illustre parfaitement la nature à sens unique de l'algorithme de hachage, et explique pourquoi falsifier l'historique d'une blockchain publique demanderait de refaire tout ce travail.

Quelles sont les limites d'un algorithme de hachage ?

Un algorithme de hachage n'est jamais sûr pour l'éternité. Les progrès de la cryptanalyse et l'augmentation de la puissance de calcul ont déjà fait tomber MD5 et SHA-1, et les spécialistes recommandent de migrer vers SHA-256 ou SHA-3 dans tous les usages sensibles. Même un algorithme solide ne protège pas un mot de passe trop simple : un pirate qui dérobe une base d'empreintes peut tenter des attaques par dictionnaire, en hachant des millions de mots de passe courants pour voir lesquels correspondent, ou utiliser des tables précalculées, d'où l'importance du sel et des fonctions lentes. L'arrivée éventuelle d'ordinateurs quantiques suscite aussi des questions : selon les connaissances actuelles, ils affaibliraient les fonctions de hachage sans les briser complètement, ce qui pousse surtout à privilégier des empreintes suffisamment longues. Enfin, tout repose sur une mise en œuvre correcte, car une erreur de programmation ou un mauvais choix d'algorithme peut ruiner les meilleures garanties théoriques. Le hachage n'est donc qu'une brique de la sécurité, qui gagne à être combinée avec d'autres protections comme des mots de passe longs et uniques, un gestionnaire de mots de passe et l'authentification à deux facteurs, qui rend un mot de passe volé insuffisant pour accéder à un compte.