{"id":11,"date":"2026-06-10T09:13:18","date_gmt":"2026-06-10T09:13:18","guid":{"rendered":"https:\/\/shattered.io\/fr\/2026\/06\/10\/fonctions-de-hachage\/"},"modified":"2026-06-10T09:13:18","modified_gmt":"2026-06-10T09:13:18","slug":"fonctions-de-hachage","status":"publish","type":"post","link":"https:\/\/shattered.io\/fr\/cryptography\/fonctions-de-hachage\/","title":{"rendered":"Les fonctions de hachage cryptographiques : principes et usages"},"content":{"rendered":"<h2 id=\"une-empreinte-numerique-pour-chaque-donnee\">Une empreinte num\u00e9rique pour chaque donn\u00e9e<\/h2>\n<p>Une fonction de hachage cryptographique transforme une donn\u00e9e de taille quelconque en une cha\u00eene de caract\u00e8res de longueur fixe, appel\u00e9e empreinte ou condens\u00e9. Cette empreinte agit comme une signature num\u00e9rique de l&#8217;information : un identifiant compact qui change radicalement \u00e0 la moindre modification du contenu d&#8217;origine. Les fonctions de hachage sont l&#8217;un des outils les plus discrets et les plus omnipr\u00e9sents de la s\u00e9curit\u00e9 informatique. Elles interviennent d\u00e8s qu&#8217;il s&#8217;agit de v\u00e9rifier qu&#8217;une donn\u00e9e est authentique et intacte.<\/p>\n<p>Cet article pr\u00e9sente les propri\u00e9t\u00e9s fondamentales qui d\u00e9finissent une bonne fonction de hachage cryptographique, ce qui la distingue d&#8217;une fonction de hachage ordinaire, et les grands domaines o\u00f9 elle s&#8217;av\u00e8re indispensable.<\/p>\n<h2 id=\"les-proprietes-fondamentales\">Les propri\u00e9t\u00e9s fondamentales<\/h2>\n<p>Toutes les fonctions de hachage ne se valent pas. Pour qu&#8217;une fonction m\u00e9rite la qualification de cryptographique, elle doit r\u00e9unir plusieurs propri\u00e9t\u00e9s strictes. Chacune r\u00e9pond \u00e0 un besoin de s\u00e9curit\u00e9 pr\u00e9cis.<\/p>\n<h3 id=\"determinisme\">D\u00e9terminisme<\/h3>\n<p>Une fonction de hachage est d\u00e9terministe : une entr\u00e9e donn\u00e9e produit toujours la m\u00eame empreinte. Si vous hachez le m\u00eame fichier deux fois, sur deux ordinateurs diff\u00e9rents et \u00e0 des ann\u00e9es d&#8217;intervalle, vous obtenez le m\u00eame r\u00e9sultat. Sans cette propri\u00e9t\u00e9, il serait impossible de comparer une empreinte recalcul\u00e9e \u00e0 une empreinte de r\u00e9f\u00e9rence.<\/p>\n<h3 id=\"rapidite-de-calcul\">Rapidit\u00e9 de calcul<\/h3>\n<p>Le calcul d&#8217;une empreinte doit \u00eatre rapide. Hacher un fichier, m\u00eame volumineux, ne prend qu&#8217;une fraction de seconde sur un ordinateur moderne. Cette efficacit\u00e9 rend le hachage utilisable \u00e0 grande \u00e9chelle, par exemple pour v\u00e9rifier l&#8217;int\u00e9grit\u00e9 de milliers de fichiers ou pour soutenir des protocoles r\u00e9seau qui hachent en continu.<\/p>\n<h3 id=\"resistance-a-la-preimage\">R\u00e9sistance \u00e0 la pr\u00e9image<\/h3>\n<p>\u00c0 partir d&#8217;une empreinte seule, il doit \u00eatre pratiquement impossible de retrouver l&#8217;entr\u00e9e qui l&#8217;a produite. On appelle cela la r\u00e9sistance \u00e0 la pr\u00e9image. La fonction se calcule facilement dans un sens, mais l&#8217;inverser exigerait d&#8217;explorer un espace de possibilit\u00e9s si vaste qu&#8217;aucune machine ne peut le parcourir en un temps utile. C&#8217;est cette propri\u00e9t\u00e9 qui permet, par exemple, de stocker l&#8217;empreinte d&#8217;un mot de passe plut\u00f4t que le mot de passe lui-m\u00eame.<\/p>\n<h3 id=\"resistance-a-la-seconde-preimage\">R\u00e9sistance \u00e0 la seconde pr\u00e9image<\/h3>\n<p>\u00c9tant donn\u00e9 une entr\u00e9e pr\u00e9cise et son empreinte, il doit \u00eatre infaisable de trouver une seconde entr\u00e9e diff\u00e9rente produisant la m\u00eame empreinte. Cette propri\u00e9t\u00e9, appel\u00e9e r\u00e9sistance \u00e0 la seconde pr\u00e9image, prot\u00e8ge un document sp\u00e9cifique : personne ne doit pouvoir fabriquer un autre fichier qui se ferait passer pour lui aux yeux d&#8217;un syst\u00e8me de v\u00e9rification.<\/p>\n<h3 id=\"resistance-aux-collisions\">R\u00e9sistance aux collisions<\/h3>\n<p>Il doit \u00eatre infaisable de trouver deux entr\u00e9es quelconques, choisies librement, qui partagent la m\u00eame empreinte. C&#8217;est la r\u00e9sistance aux collisions. Elle est plus exigeante que la r\u00e9sistance \u00e0 la seconde pr\u00e9image, car l&#8217;attaquant n&#8217;a pas de cible impos\u00e9e : il lui suffit de trouver n&#8217;importe quelle paire en collision. C&#8217;est pr\u00e9cis\u00e9ment cette propri\u00e9t\u00e9 qui a \u00e9t\u00e9 mise en d\u00e9faut pour SHA-1 en 2017, lorsque deux fichiers PDF distincts ont \u00e9t\u00e9 forg\u00e9s avec la m\u00eame empreinte SHA-1.<\/p>\n<h3 id=\"effet-davalanche\">Effet d&#8217;avalanche<\/h3>\n<p>Une bonne fonction de hachage pr\u00e9sente un effet d&#8217;avalanche : modifier un seul bit de l&#8217;entr\u00e9e bouleverse enti\u00e8rement l&#8217;empreinte. Le r\u00e9sultat n&#8217;a alors plus aucune ressemblance avec l&#8217;empreinte initiale, et rien ne permet de deviner l&#8217;ampleur ou la nature de la modification \u00e0 partir du changement observ\u00e9. Cette sensibilit\u00e9 extr\u00eame est ce qui rend le hachage si efficace pour d\u00e9tecter la moindre alt\u00e9ration.<\/p>\n<h2 id=\"la-difference-avec-les-fonctions-de-hachage-non-cryptographiques\">La diff\u00e9rence avec les fonctions de hachage non cryptographiques<\/h2>\n<p>Le mot hachage recouvre deux familles bien distinctes qu&#8217;il ne faut pas confondre.<\/p>\n<p>Les fonctions de hachage non cryptographiques, comme celles employ\u00e9es dans les tables de hachage des langages de programmation, ont pour seul objectif de r\u00e9partir efficacement des donn\u00e9es et d&#8217;acc\u00e9l\u00e9rer les recherches. Elles sont con\u00e7ues pour \u00eatre rapides et pour distribuer correctement les valeurs, mais pas pour r\u00e9sister \u00e0 un adversaire. Trouver deux entr\u00e9es partageant la m\u00eame valeur y est souvent facile, et ce n&#8217;est pas un probl\u00e8me, car la s\u00e9curit\u00e9 n&#8217;est pas leur but. Ces fonctions optimisent la performance, pas la r\u00e9sistance aux attaques.<\/p>\n<p>Les fonctions de hachage cryptographiques, \u00e0 l&#8217;inverse, sont con\u00e7ues pour r\u00e9sister \u00e0 un adversaire actif qui cherche d\u00e9lib\u00e9r\u00e9ment \u00e0 provoquer des collisions ou \u00e0 inverser le calcul. Elles offrent les garanties d\u00e9crites plus haut, au prix d&#8217;une conception plus exigeante. Utiliser une fonction non cryptographique l\u00e0 o\u00f9 la s\u00e9curit\u00e9 est en jeu serait une erreur grave : la rapidit\u00e9 ne remplace jamais la r\u00e9sistance aux attaques.<\/p>\n<p>La r\u00e8gle est simple : d\u00e8s qu&#8217;un enjeu de s\u00e9curit\u00e9 ou d&#8217;int\u00e9grit\u00e9 existe, seule une fonction cryptographique convient.<\/p>\n<h2 id=\"les-grands-cas-dusage\">Les grands cas d&#8217;usage<\/h2>\n<p>Les fonctions de hachage cryptographiques soutiennent un \u00e9ventail d&#8217;applications dans lesquelles la confiance num\u00e9rique est en jeu.<\/p>\n<h3 id=\"stockage-des-mots-de-passe-avec-sel\">Stockage des mots de passe avec sel<\/h3>\n<p>Un syst\u00e8me bien con\u00e7u ne conserve jamais les mots de passe en clair. Il stocke leur empreinte, de sorte qu&#8217;une fuite de la base de donn\u00e9es ne r\u00e9v\u00e8le pas directement les mots de passe. Pour renforcer cette protection, on ajoute \u00e0 chaque mot de passe une valeur al\u00e9atoire appel\u00e9e sel avant de le hacher. Le sel garantit que deux utilisateurs ayant choisi le m\u00eame mot de passe obtiennent des empreintes diff\u00e9rentes, et il d\u00e9joue les attaques fond\u00e9es sur des tables pr\u00e9calcul\u00e9es. En pratique, on emploie pour les mots de passe des fonctions sp\u00e9cialement con\u00e7ues pour \u00eatre lentes et co\u00fbteuses \u00e0 calculer, ce qui ralentit fortement les tentatives par force brute.<\/p>\n<h3 id=\"verification-dintegrite\">V\u00e9rification d&#8217;int\u00e9grit\u00e9<\/h3>\n<p>Lorsqu&#8217;un fichier est publi\u00e9 accompagn\u00e9 de son empreinte, n&#8217;importe qui peut v\u00e9rifier qu&#8217;il n&#8217;a pas \u00e9t\u00e9 modifi\u00e9. Il suffit de recalculer l&#8217;empreinte du fichier re\u00e7u et de la comparer \u00e0 la valeur annonc\u00e9e. Une correspondance confirme l&#8217;int\u00e9grit\u00e9 ; une divergence signale une corruption ou une alt\u00e9ration. Ce m\u00e9canisme prot\u00e8ge les t\u00e9l\u00e9chargements de logiciels, les sauvegardes et les transferts de donn\u00e9es.<\/p>\n<h3 id=\"signatures-numeriques\">Signatures num\u00e9riques<\/h3>\n<p>Les signatures num\u00e9riques reposent directement sur le hachage. Plut\u00f4t que de signer un message entier, on signe son empreinte, ce qui est plus efficace et tout aussi s\u00fbr tant que la fonction de hachage reste fiable. Cette d\u00e9pendance explique pourquoi une collision compromet la s\u00e9curit\u00e9 des signatures : si deux documents partagent la m\u00eame empreinte, une signature valable pour l&#8217;un l&#8217;est aussi pour l&#8217;autre.<\/p>\n<h3 id=\"chaines-de-blocs\">Cha\u00eenes de blocs<\/h3>\n<p>Les technologies de cha\u00eene de blocs s&#8217;appuient massivement sur le hachage. Chaque bloc contient l&#8217;empreinte du bloc pr\u00e9c\u00e9dent, ce qui cr\u00e9e une cha\u00eene o\u00f9 toute modification d&#8217;un bloc ancien invaliderait tous les suivants. Cette construction rend l&#8217;historique pratiquement infalsifiable et constitue le fondement de l&#8217;int\u00e9grit\u00e9 de ces syst\u00e8mes.<\/p>\n<h2 id=\"choisir-et-utiliser-une-fonction-de-hachage\">Choisir et utiliser une fonction de hachage<\/h2>\n<p>Le choix de la fonction compte autant que son usage correct. Aujourd&#8217;hui, les recommandations s&#8217;orientent vers les membres de la famille SHA-2, notamment SHA-256, et vers SHA-3 comme alternative. Les algorithmes plus anciens comme SHA-1 ou MD5 sont \u00e0 proscrire d\u00e8s qu&#8217;une garantie de s\u00e9curit\u00e9 est requise, leurs faiblesses ayant \u00e9t\u00e9 d\u00e9montr\u00e9es en pratique.<\/p>\n<p>L&#8217;histoire de SHA-1 rappelle une v\u00e9rit\u00e9 durable : une fonction de hachage n&#8217;est s\u00fbre que jusqu&#8217;\u00e0 preuve du contraire. Suivre les recommandations des organismes de normalisation, anticiper les migrations et comprendre les propri\u00e9t\u00e9s r\u00e9ellement offertes par la fonction choisie sont les conditions d&#8217;un usage solide du hachage cryptographique.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Une empreinte num\u00e9rique pour chaque donn\u00e9e Une fonction de hachage cryptographique transforme une donn\u00e9e de taille quelconque en une cha\u00eene de caract\u00e8res de longueur fixe, appel\u00e9e empreinte ou condens\u00e9. Cette\u2026<\/p>\n","protected":false},"author":2,"featured_media":24,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-11","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cryptography"],"_links":{"self":[{"href":"https:\/\/shattered.io\/fr\/wp-json\/wp\/v2\/posts\/11","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shattered.io\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/shattered.io\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/shattered.io\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/shattered.io\/fr\/wp-json\/wp\/v2\/comments?post=11"}],"version-history":[{"count":0,"href":"https:\/\/shattered.io\/fr\/wp-json\/wp\/v2\/posts\/11\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/shattered.io\/fr\/wp-json\/wp\/v2\/media\/24"}],"wp:attachment":[{"href":"https:\/\/shattered.io\/fr\/wp-json\/wp\/v2\/media?parent=11"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/shattered.io\/fr\/wp-json\/wp\/v2\/categories?post=11"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/shattered.io\/fr\/wp-json\/wp\/v2\/tags?post=11"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}