Fonctions de hachage cryptographiques expliquées

Qu’est-ce qu’une fonction de hachage cryptographique ?
Une fonction de hachage cryptographique (cryptographic hash function) est une formule mathématique qui transforme une information (par exemple un texte, un fichier ou un mot de passe) en une courte “empreinte digitale” de longueur fixe. Une telle empreinte est appelée valeur de hachage.
Une valeur de hachage ressemble généralement à une longue suite de chiffres et de lettres. Par exemple, si vous passez le mot "Bonjour" dans la fonction de hachage SHA-256 (une fonction de hachage bien connue utilisée par Bitcoin), vous obtenez :
185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
Peu importe combien de fois ou sur quel ordinateur vous effectuez cette opération : tant que l’entrée est “Bonjour”, la valeur de hachage sera toujours exactement la même. Le hachage est donc lié à une information spécifique. Cela en fait un moyen fiable de vérifier si des données ont été modifiées.
À retenir
-
Les fonctions de hachage créent une empreinte numérique des données : la même entrée produit toujours le même hachage, mais de petites modifications génèrent un résultat totalement différent.
-
Les hachages sont irréversibles : à partir du hachage, il est impossible de reconstruire les données originales, ce qui les rend adaptés à la sécurité et aux blockchains.
-
Les applications sont nombreuses : stockage sécurisé des mots de passe, vérification d’intégrité, signatures numériques et transactions blockchain.
-
La sécurité varie selon l’algorithme : MD5 et SHA-1 sont compromis et considérés comme non sécurisés, tandis que SHA-2 et SHA-3 sont encore jugés sûrs.
-
Dans les blockchains, les hachages sont essentiels : ils relient les blocs entre eux, sécurisent les transactions et rendent possible le minage par Proof of Work.
Applications d’une fonction de hachage
Une valeur de hachage est souvent utilisée dans la sécurité numérique des données, des communications et des systèmes. On les retrouve notamment dans :
- Stockage des mots de passe : au lieu d’enregistrer les mots de passe en clair, un système conserve uniquement la valeur de hachage.
- Vérification d’intégrité : lors de téléchargements ou de mises à jour de logiciels, un hachage est fourni pour que les utilisateurs puissent vérifier que le fichier n’a pas été modifié.
- Signatures et certificats numériques : les fonctions de hachage garantissent qu’un document signé ne puisse pas être modifié à l’insu de l’utilisateur.
- Blockchains : chaque transaction et chaque bloc sont sécurisés par hachage, assurant l’immutabilité de la chaîne.
Propriétés d’une fonction de hachage
Les propriétés importantes d’une fonction de hachage sont :
-
Même entrée, même sortie
Si vous saisissez les mêmes données, vous obtiendrez toujours exactement le même hachage. Exemple : un mot de passe. Le système stocke uniquement la valeur de hachage de votre mot de passe. Lors d’une nouvelle connexion, le système vérifie si le nouveau hachage correspond à celui enregistré. Ce n’est qu’ainsi que l’accès est accordé. -
Irréversible
Un hachage ne peut pas être inversé pour retrouver l’entrée originale. Cela le rend particulièrement adapté à une blockchain. Chaque bloc de la blockchain contient une valeur de hachage unique (et parfois plusieurs) intégrant des transactions. Il contient également le hachage du bloc précédent. Si quelqu’un tente de manipuler une transaction, le hachage change immédiatement. Comme ce hachage est également présent dans le bloc suivant, toute la chaîne est modifiée. Cela est immédiatement détecté par les validateurs ou mineurs. Un attaquant devrait recalculer tous les blocs suivants, ce qui est pratiquement impossible. Cela rend toute manipulation impossible. -
Sensible aux petites modifications
Si vous modifiez une seule lettre ou même un seul bit, le hachage résultant sera complètement différent. Exemple : “Monde” a un hachage totalement différent de “Mondf”, même si les mots se ressemblent. -
Éviter les collisions
Une collision signifie que deux entrées différentes produisent le même hachage. C’est théoriquement possible, mais pratiquement impossible avec des fonctions de hachage sécurisées. Exemple : avec SHA-256, il faudrait des milliards d’années pour générer suffisamment de hachages afin d’en trouver deux identiques par hasard. Les variantes plus anciennes comme MD5 et SHA-1 sont vulnérables et ne sont donc plus utilisées.
Comment fonctionnent les fonctions de hachage ?
Le processus effectué par les fonctions de hachage est appelé hashing. Une fonction de hachage est l’algorithme qui effectue le calcul, tandis que le hashing est le processus consistant à appliquer cette fonction aux données.
Traitement de l’entrée
Les données (texte, fichier, mot de passe, etc.) sont divisées en blocs de taille fixe.
Exemple : “Bonjour” est divisé en blocs de, par exemple, 512 bits. Comme il est plus court, un remplissage supplémentaire (padding) est ajouté.
Transformations mathématiques
Chaque bloc subit des opérations telles que des décalages de bits, des permutations et des additions modulaires.
Exemple : “Bonjour” produit après SHA-256 le résultat suivant :
185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
Combinaison (compression ou sponge)
Les résultats sont combinés dans un état interne.
- Dans SHA-2 via une fonction de compression
- Dans SHA-3 via une construction sponge
Sortie
Après le calcul final, une valeur de hachage reste.
Exemple :
“Bonjour” → 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
“Bonjour !” → 334d74c95ed3ceec833219cd94ef7a8320b9c9d98c14b622d0535fbe7bb3f3a4
Qu’est-ce que l’effet Avalanche ?
L’effet avalanche garantit qu’il est impossible de déduire des relations entre deux hachages, car même de petites différences dans l’entrée entraînent une valeur de hachage totalement différente. Même si les entrées semblent très similaires, le résultat est une séquence complètement différente de chiffres et de lettres. Cela rend impossible toute déduction sur les données originales ou sur la similitude entre deux entrées.
Quelles fonctions de hachage existent ?
Au fil des années, plusieurs fonctions de hachage cryptographiques ont été développées ou améliorées. Parmi les plus connues, on trouve :
-
MD5
Développé dans les années 1990 comme successeur des algorithmes MD précédents. Cet algorithme produit un hachage de 128 bits et a été utilisé pendant des années pour la vérification de fichiers et les certificats numériques. Aujourd’hui, MD5 est considéré comme non sécurisé, car depuis 2004, des cas ont montré que deux entrées différentes pouvaient produire la même valeur de hachage. Cela s’appelle une collision. Pour cette raison, MD5 n’est plus utilisé pour la sécurité mais seulement pour des applications simples. -
SHA-1
SHA-1 a longtemps été la norme pour les signatures numériques et les certificats SSL. Il s’agit d’un algorithme produisant un hachage de 160 bits. En 2017, Google et le CWI Amsterdam ont démontré une collision : ils ont créé deux fichiers PDF différents avec exactement le même hachage SHA-1. Cela a prouvé qu’il était possible de falsifier un hachage en pratique. Depuis lors, SHA-1 est considéré comme cassé et non sécurisé. Les principaux navigateurs et autorités de certification ne le prennent plus en charge. -
SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
Le successeur de SHA-1 est SHA-2. Cet algorithme de hachage utilise des blocs de 512 ou 1024 bits et produit des sorties de 224, 256, 384 ou 512 bits. Un système SHA-2 bien connu est SHA-256, utilisé pour sécuriser la blockchain de Bitcoin. SHA-512 est plus efficace sur les systèmes 64 bits. Jusqu’à présent, aucune attaque réussie n’a remis en cause la sécurité de SHA-2, ce qui en fait l’une des fonctions de hachage cryptographiques les plus utilisées. -
SHA-3 (Keccak)
Développé en 2007 par Guido Bertoni, Joan Daemen, Michaël Peeters et Gilles Van Assche, l’algorithme Keccak a été adopté en 2015 par le NIST comme nouvelle norme de hachage sous le nom de SHA-3. Il a été introduit comme une alternative à SHA-2, au cas où des faiblesses seraient découvertes dans ce dernier à l’avenir. SHA-3 n’est pas encore largement utilisé dans la pratique, car SHA-2 reste sûr, largement pris en charge par le matériel et profondément intégré dans les protocoles tels que TLS et les certificats SSL.
Fonctions de hachage dans les cryptomonnaies et la blockchain
Les fonctions de hachage jouent un rôle crucial dans les blockchains. Le hashing est utilisé pour sécuriser les transactions, relier les blocs et constitue le cœur des blockchains qui valident les transactions via le minage. Les blockchains qui utilisent le Proof of Work mécanisme de consensus s’appuient sur la puissance de calcul des ordinateurs pour résoudre des puzzles de hachage.
Quelques exemples de projets populaires :
- Bitcoin → SHA-256 (pour le minage et le hachage des blocs).
- Litecoin → scrypt (plus rapide et moins sensible aux ASIC que SHA-256).
- Zcash → Equihash (intensif en mémoire, conçu pour un minage plus équitable).
- Dogecoin → scrypt (même algorithme que Litecoin, avec merge-mining).
- Ripple (XRP Ledger) → SHA-512/256 (une variante réduite de SHA-512).
- Algorand → SHA-512/256 (pour la génération de clés et les signatures numériques).
En résumé
Les fonctions de hachage cryptographiques constituent un élément indispensable du monde numérique. Elles offrent un moyen fiable de sécuriser les données, de garantir l’intégrité et de rendre possibles des systèmes complexes tels que les blockchains. Alors que les anciens algorithmes comme MD5 et SHA-1 ne sont plus sûrs en raison de vulnérabilités prouvées, les variantes modernes comme SHA-2 et SHA-3 restent robustes et essentielles pour les applications actuelles.
La force des fonctions de hachage réside dans leur simplicité et leur efficacité : des fonctions à sens unique qui transforment de petites différences d’entrée en résultats totalement différents, sans qu’il soit possible de retrouver les données originales. Elles sont ainsi non seulement cruciales pour la sécurité des mots de passe et les signatures numériques, mais aussi pour le fonctionnement des cryptomonnaies et d’internet en général.
Les fonctions de hachage continueront à jouer un rôle clé à l’avenir, tant dans les applications existantes que dans les nouvelles innovations dans les domaines de la blockchain, de la sécurité numérique et de la cryptographie.