Quand vous créez un mot de passe sur un site web, il n'est pas stocké en clair dans la base de données. Quand vous téléchargez un logiciel, un code de vérification vous permet de confirmer qu'il n'a pas été altéré. Quand vous entendez parler de blockchain et de minage de cryptomonnaies, le hash est au cœur du mécanisme. Cette notion omniprésente en informatique est pourtant méconnue du grand public.
L'analogie de l'empreinte digitale
Un hash est comme une empreinte digitale numérique. De la même façon que votre empreinte digitale vous identifie de manière unique sans révéler votre ADN complet, un hash identifie un contenu numérique de manière unique sans révéler ce contenu.
Concrètement, une fonction de hachage prend une entrée de n'importe quelle taille (un mot, un fichier de 10 Go, un texte entier) et produit une sortie de taille fixe — le hash. Par exemple, avec l'algorithme SHA-256 :
Bonjour→3863ebc18eef346bba19f7dc34b4cf6da3e2be3a6b15e95adbcc541e3ee120e5Bonjour!→d26e1b0a3b5613cd3fd9acda3d11df7eee40fa786ce26d4b71a6b1fa2e3a047b
Un seul caractère de différence et le hash est complètement différent. C'est ce qu'on appelle l'effet « avalanche ».
Le saviez-vous ? Le hash du texte « Bonjour » fait toujours 64 caractères hexadécimaux (256 bits) en SHA-256. Le hash de l'intégralité de l'encyclopédie Wikipédia ferait aussi exactement 64 caractères. La taille de la sortie est constante, quelle que soit la taille de l'entrée.
Les propriétés fondamentales d'un hash
1. Déterministe
La même entrée produit toujours le même hash. Bonjour donnera toujours le même résultat avec le même algorithme, sur n'importe quelle machine, à n'importe quel moment.
2. Irréversible
Il est mathématiquement impossible de retrouver l'entrée à partir du hash. Vous pouvez calculer le hash de Bonjour, mais vous ne pouvez pas, à partir du hash, retrouver qu'il s'agissait de Bonjour. C'est une fonction à sens unique.
3. Résistant aux collisions
Il est pratiquement impossible de trouver deux entrées différentes qui produisent le même hash. Pour SHA-256, la probabilité d'une collision accidentelle est de l'ordre de 1 sur 2^128, un nombre si grand qu'il dépasse le nombre d'atomes dans l'univers observable.
4. Effet avalanche
Le moindre changement dans l'entrée produit un hash radicalement différent. Pas de ressemblance, pas de corrélation prévisible.
Attention Un hash n'est pas un chiffrement. Le chiffrement est réversible (avec la clé), le hachage ne l'est pas. Vous ne pouvez pas « déhacher » un hash. Les sites qui prétendent « décrypter » des hashs utilisent en réalité des tables précalculées (rainbow tables) qui ne fonctionnent que pour les entrées courantes.
Les algorithmes de hachage courants
| Algorithme | Longueur du hash | Usage actuel |
|---|---|---|
| MD5 | 32 caractères (128 bits) | Vérification de fichiers (déconseillé pour la sécurité) |
| SHA-1 | 40 caractères (160 bits) | Obsolète pour la sécurité |
| SHA-256 | 64 caractères (256 bits) | Standard actuel, blockchain Bitcoin |
| SHA-512 | 128 caractères (512 bits) | Haute sécurité |
| bcrypt | Variable | Hachage de mots de passe |
Les usages concrets du hachage
Stockage des mots de passe
Quand vous créez un compte sur un site web, votre mot de passe n'est (normalement) pas stocké en clair. Le site calcule son hash et stocke uniquement ce hash. Quand vous vous connectez, le site recalcule le hash de ce que vous tapez et le compare au hash stocké.
Avantage : même si la base de données est piratée, les mots de passe en clair ne sont pas exposés. L'attaquant obtient des hashs qu'il ne peut pas inverser (sauf par force brute ou dictionnaire).
Vérification d'intégrité de fichiers
Quand vous téléchargez un logiciel, le site fournit parfois un « checksum » (somme de contrôle) — un hash du fichier original. Après téléchargement, vous calculez le hash de votre fichier et le comparez. S'ils correspondent, le fichier est intact. Sinon, il a été modifié ou corrompu.
C'est crucial pour :
- Les mises à jour système
- Les logiciels de sécurité
- Les téléchargements volumineux (corruption réseau)
La blockchain et les cryptomonnaies
Bitcoin repose entièrement sur le hachage SHA-256. Chaque bloc contient le hash du bloc précédent, créant une chaîne irréversible. Le « minage » consiste à trouver un nombre qui, combiné aux données du bloc, produit un hash commençant par un certain nombre de zéros — un processus qui demande une puissance de calcul considérable.
Les signatures numériques
Les signatures numériques ne signent pas le document entier (ce serait trop lent). Elles signent le hash du document. Le destinataire recalcule le hash et vérifie que la signature correspond. Si un seul caractère du document a été modifié, le hash sera différent et la signature invalide.
Astuce Avant d'envoyer un fichier important (contrat, logiciel, archive), calculez son hash et envoyez-le séparément au destinataire. Il pourra vérifier que le fichier reçu est bien identique à celui que vous avez envoyé.
La déduplication de données
Les services de stockage cloud utilisent le hachage pour détecter les fichiers identiques. Si 1 000 utilisateurs ont le même fichier, le service le stocke une seule fois et utilise le hash comme identifiant unique.
Générer et vérifier un hash
Vous pouvez calculer le hash de n'importe quel texte ou fichier pour :
- Vérifier l'intégrité d'un téléchargement
- Comparer deux fichiers sans les ouvrir
- Comprendre le mécanisme par la pratique
Pour générer et vérifier des hashs : Générer et vérifier des hashs.
Le saviez-vous ? Git, le système de contrôle de version utilisé par pratiquement tous les développeurs, identifie chaque commit par son hash SHA-1. Quand vous voyez un identifiant comme a3f2b7c dans Git, c'est le début d'un hash du contenu du commit.
En résumé
Un hash est une empreinte numérique unique, de taille fixe, calculée à partir de n'importe quelle donnée. Irréversible et déterministe, il est au cœur de la sécurité informatique moderne : mots de passe, vérification de fichiers, blockchain, signatures numériques.
Comprendre le hachage, c'est comprendre l'un des piliers fondamentaux de la confiance numérique. Testez par vous-même : générez un hash et observez l'effet avalanche en changeant un seul caractère.