
Le stockage sécurisé des mots de passe revient sans cesse dans les débats sur la cybersécurité. Mais quelles méthodes tiennent vraiment la route face aux techniques de piratage modernes ? Éclaircissons les principes clés du stockage sécurisé, hachage, sel, poivre, itérations, pour comprendre leur rôle contre la récupération de mots de passe. Enfin, jetons un œil à une fonction de hachage éprouvée pour un stockage fiable.
Mots de passe en texte brut
Imaginez un pirate qui met la main sur la base de données d’un site et en extrait le contenu suivant :
| Login | Mot de passe |
| admin | azerty |
| toto | matrix |
| billy | yep59f$4txwrr |
| tata | matrix |
| titi | freepass |
| attaquant | Mot de passe TESPWND |
Dans ce scénario, l’attaquant dispose immédiatement des mots de passe de tous les utilisateurs, sans effort. Même Billy, avec son mot de passe complexe, n’a aucune protection. Stocker les mots de passe en texte clair est une négligence grave. Aucun administrateur, qu’il gère la base ou le site, ne devrait jamais avoir accès aux mots de passe en clair des utilisateurs.
Mots de passe cryptés
Il arrive aussi que les mots de passe soient enregistrés après un chiffrement réversible (rot13, masquage, etc.). Problème : ce type d’algorithme peut être inversé. La CNIL recommande d’ailleurs que chaque mot de passe soit transformé par une fonction cryptographique non réversible. Si le pirate comprend la logique du cryptage, il n’a qu’à la retourner pour retrouver tous les mots de passe, aussi facilement que s’ils étaient en clair. La complexité de l’algorithme ne ralentit qu’un temps : c’est une illusion de sécurité.
Fonction de hachage obsolète
On retrouve aussi le cas des fonctions de hachage dépassées, comme md5 ou sha1. LinkedIn en a fait les frais : après la fuite des hachages sha1 en 2012, 90 % des mots de passe avaient été retrouvés en trois jours. Voici un exemple de base de données utilisant ce genre de méthode :
| Mot de | passe |
| administrateur | ab4f63f9ac65152575886860dde480a1 |
| à | 21b72c0b7adc5c7b4a50ffcb90d92dd6 |
| billy | 47ad898a379c3dad10b4812eba843601 |
| tata | 21b72c0b7adc5c7b4a50ffcb90d92dd6 |
| titi | 5b9a8069d33fe 9812dc8310ebff0a315 |
Quelques constats s’imposent à la lecture de cette table :
-
- Les mots de passe (sauf celui de Billy) figurent parmi les plus courants, ils apparaissent dans des listes publiques comme « 10-million-password-list-top-1000.txt ».
- Les fonctions de hachage n’intègrent aucune aléa : deux utilisateurs avec le même mot de passe, comme toto et tata, partagent le même hachage.
Une simple requête en ligne sur le hachage d’un administrateur peut suffire à retrouver le mot de passe.
Seul Billy, avec un mot de passe complexe, résiste à la récupération automatique. Pour les autres, une recherche rapide ou une attaque un peu plus élaborée suffit.
Force brute
La force brute, c’est l’art d’essayer toutes les combinaisons possibles, une à une. Comme tourner chaque code sur un cadenas jusqu’à tomber sur le bon.
Dictionnaire
Une attaque par dictionnaire consiste à tester les mots d’une liste, qu’il s’agisse d’un dictionnaire de langue, d’un palmarès des mots de passe utilisés ou d’une compilation adaptée à un contexte précis.
- Un dictionnaire de langue ;
- Un classement des mots de passe les plus fréquents ;
- Une liste taillée pour le contexte (noms, dates, habitudes…)
Par exemple, si l’on sait que le propriétaire d’un cadenas s’appelle « Tutu », qu’il aime le nombre 42 et qu’il est né le 26 novembre 2001, on va tester toutes les combinaisons plausibles à partir de ces indices. Cette méthode, bien qu’on la nomme parfois « force brute », repose en fait sur la logique humaine.
Table arc-en-ciel
Les tables arc-en-ciel (ou Rainbow tables) sont des bases de données de hachages pré-calculés. Elles permettent de retrouver rapidement un mot de passe à partir de son hachage, moyennant un compromis entre stockage et rapidité. Beaucoup de ces tables sont accessibles en ligne.
Benchmark pour récupérer les mots de passe Md5
Un test a été mené avec la base rockyou, qui contient plus de 14 millions de mots de passe uniques. Même sur une machine virtuelle, peu puissante, les résultats parlent d’eux-mêmes :
Tous les mots de passe, à l’exception de celui de Billy absent de la liste, ont été retrouvés en 11 secondes. Une démonstration saisissante de la vulnérabilité des méthodes de hachage rapide et obsolète.
Fonction de hachage inappropriée
Face à ces échecs, on pourrait penser qu’il suffit d’adopter des fonctions récentes comme sha256 ou sha512. Mais leur usage principal est ailleurs : signature électronique, vérification d’intégrité, indexation… Leur vitesse de calcul fait leur faiblesse pour le stockage de mots de passe. Un pirate peut les tester à une cadence folle.
(sha512) : 11a25e88658143a853d280bf77f81ff391347aaba2db54a3aab0149b265276de419880762a473fc496388bcf70566d7cfd 0346c34 add40652f8f7b669caf9ec0
| Mot de | passe |
| administrateur | df6b9fb15cfdbb7527be5a8a6e39f39e572c8ddb943fbc79a943438e9d3d85ebfc2ccf9e0eccd9346026c0b6876e0e0e01556fe56f135582c05fbdbb505d46755a |
| à 11to | a25e88658143 a853d280 bf77f81ff391347aaba2db54a3aab0149b265276de419880762a473fc496388bcf70566d7cfd0346c34 add40652f8f7b669caf9ec0 |
| billy | fe9cb9b07725fd1cc3906232405119fedf9a020436630d3c1e0f632f73909e6ed9e731c149ac22743bbe9541881f35ceebf1d2782d469eb3b42968461f35ceebf1d2782d469eb3b42968466 9d55a7a4 |
| tata | |
| titi | f767036acd951f5ddaf4eed5291c677db060055806dbcae69ca35d95847559dc8abce5011fd2b50833e760eca2d84d6daf1f078200f42b4fc10b58bad3761c88 |
Ici encore, tous les mots de passe sauf celui de Billy sont tombés en 16 secondes. La rapidité de hashcat à défier les algorithmes de hachage généralistes impose de réfléchir à d’autres solutions.
Amélioration de SHA512
Avant de jeter définitivement SHA512, voyons comment on pourrait en tirer meilleur parti, afin de saisir l’intérêt de vraies fonctions dédiées.
Utilisation d’un sel
Le sel est une valeur aléatoire, propre à chaque utilisateur, ajoutée au mot de passe avant hachage. Deux utilisateurs avec le même mot de passe auront alors des hachages différents. Utiliser un sel présente plusieurs avantages :
- Un hachage salé ne se retrouve pas d’un simple copier-coller dans un moteur de recherche, à condition que le sel soit suffisamment long et aléatoire.
- Les tables arc-en-ciel deviennent inopérantes face aux hashs salés.
- Quand deux utilisateurs partagent un mot de passe, le hachage unique empêche un logiciel de craquage de généraliser sa trouvaille à tous les comptes. Sans sel, casser le mot de passe de toto suffit pour celui de tata ; avec, il faut repartir de zéro pour chaque.
Benchmark avec du sel
sel165bc06b69fa2bfcd893bfde86358394406c87c7f7abba891cd10ed9fac887c54d52ed14310ad 675078033e9bca80084d345fb2836933e55c60f734982430e2b
| Utilisateur | Salt | Hash sha512 avec |
| admin | bgdd6d6^zgvkmhkf @W3RqT | 7509d123bce1aa92331861cf8fd738a58205045123f0e25f0862477cb19d3ee0757cd99865c30b123ad1e7f1be1e3a3a60590cb994994991031f5c36683c8446e |
| à | HZBD^ @gL * wVoEXO6YJ7HVB | 6b28830776de6de6ad7ef1dd8c221e0d53fec4532c 623075d0216d937ab82ab284a56a461ce5d4ec77d1783665a262a6a1eb98627b1f6260da55dbb782d7cb75bc4 |
| billy wdjvvvvvvvv4 billy wdjvvvvvvvvvvv4 billy wdjvvvvvvvvvvvvvvvv4 billy wdjvvvvvvvvvvvvvvvvvv4 billy wdjvvvvvvvvvvvvvvv4 | dwt4fbd @U ^ | 2847b2605f6a1cd88399e6c9784c0e583799be9485cb128fe5f541f436559067ec32de33e9b3fa2c15eec294cf262fd7aab2395dd64d6d6d6d6d6d6d640b94d6d6d6b4b4fe6fd |
| tata | qenwm9nxqj8m @m2 ^f7kH9* |
EMGW9M6GW* & V6rg%MZ #f8eded6c815c7522ab6197aa319d3ff4cddc2c7eeffa0f91c1291603f807a47f320324ddc2c7eeffa0f91c1291603f807a47f320324dd32ce2fed1fb3cbfe19524fc5d9c105093f755d76a949efb212fb942c8542
Avec cette méthode, Hashcat a mis 33 secondes pour casser les mots de passe. Aucun hachage n’était indexé en ligne.
Utilisation de Pepper
Le poivre diffère du sel : il reste identique pour tous les utilisateurs, mais n’apparaît jamais dans la base de données. On le stocke dans le code source, un fichier de configuration ou une variable d’environnement. Un attaquant qui n’a accès qu’à la base devra aussi trouver ce poivre pour espérer casser les hashs.
Augmentation du nombre d’itérations
Autre mesure : faire plusieurs passages de hachage. Par exemple, avec sha512, on peut hacher le mot de passe, puis le résultat, et ainsi de suite autant de fois que nécessaire. Pour l’utilisateur, la connexion prend un millième de seconde de plus. Mais pour un pirate qui doit tester des millions de mots de passe, ce sont des heures ou des jours qui s’ajoutent.
Fusionner les 3 méthodes
En combinant sel, poivre et itérations, on obtient une méthode de stockage beaucoup plus résistante qu’un simple hachage. La fonction ressemble à ceci :
Fonction calculation_hash (mot de passe, sel, poivre, itération) :
Entrées : le mot de passe de l’utilisateur, un sel unique généré aléatoirement, le poivre commun, le nombre d’itérations souhaité.
Sortie : le hachage final.
On commence par hacher (sha512) la combinaison sel + mot de passe + poivre. Ensuite, on répète le hachage autant de fois que prévu. Pour valider un mot de passe à la connexion, il suffit de refaire ce même calcul avec la saisie de l’utilisateur et de comparer le résultat au hachage stocké.
Utilisation de fonctions spécifiques
Autant ne pas réinventer la roue : il existe des fonctions conçues pour résister aux attaques ciblant les mots de passe. Argon2, scrypt, PBKDF2, bcrypt… Ces standards ont fait leurs preuves et apportent des bénéfices concrets :
-
- Calcul volontairement lent ;
- Consommation de mémoire accrue (un point faible pour les GPU des attaquants) ;
- Paramétrage du nombre d’itérations, ce qui permet d’adapter la résistance à la puissance de calcul disponible.
Bcrypt
Bcrypt, conçu par Niels Provos et David Mazières, s’appuie sur l’algorithme Blowfish. Depuis 1999, il a prouvé sa robustesse et s’intègre facilement dans la plupart des langages. Un autre avantage : le nombre d’itérations est stocké dans le hachage final, ce qui rend la fonction adaptative et lui permet de rester efficace malgré les progrès matériels.
Un hachage bcrypt se présente généralement sous la forme :
$2 Y $11 $ Sxaxz Yioy60 HBNYMEOJ 9.ULSCXWUFMHBVLATX au 729 TGUSW.5 AG4C
- Algorithme : version du standard ($2$, $2a$, $2x$, $2y$, $2b$).
- Coût : nombre d’itérations (en puissance de 2, ici 11 signifie 2048 boucles).
- Sel : intégré directement dans le hachage.
- Mot de passe haché
La possibilité de faire évoluer le nombre d’itérations garantit à bcrypt une longévité face à la montée en puissance des attaques. Un test : pour casser tous les mots de passe de la liste rockyou, Hashcat aurait besoin de 23 jours.
À noter : les mots de passe faibles comme azerty ou matrix, très répandus, peuvent tout de même être trouvés en quelques heures si le logiciel tourne sans relâche.
Conclusion
Les fonctions de hachage spécialisées protègent bien mieux vos mots de passe et évitent les pièges classiques. Au passage, le stockage des mots de passe n’est pas seulement une affaire de technique : des règles juridiques strictes encadrent ces pratiques.
Un dernier constat s’impose : azerty et matrix, trop répandus, tombent toujours, alors que yep59f$4txwrr reste introuvable. Sa force ? Il n’apparaît dans aucune base publique. Le casser exigerait de tester toutes les combinaisons sur 13 caractères, une tâche titanesque. Ce constat rappelle une réalité : la robustesse d’un gestionnaire de mots de passe ou d’un système d’authentification dépend d’abord de la politique imposée aux utilisateurs. Une politique faible, et la porte reste entrouverte.






