Mots de passe et hachage#
Stockage des mots de passe#
Lorsque vous créez un compte sur un site web, votre mot de passe ne devrait jamais être stocké en clair dans la base de données. À la place, on stocke un hash (empreinte) du mot de passe, obtenu à l'aide d'une fonction de hachage.
Une fonction de hachage prend une entrée de taille quelconque et produit une sortie de taille fixe, appelée empreinte ou hash. Elle possède les propriétés suivantes :
Déterministe : la même entrée produit toujours le même hash
Irréversible : il est impossible de retrouver l'entrée à partir du hash
Sensible : un changement minime dans l'entrée change complètement le hash
Unique : il est extrêmement improbable que deux entrées différentes produisent le même hash
Exemple avec SHA-256#
SHA-256 est l'une des fonctions de hachage les plus utilisées. Elle produit une empreinte de 256 bits (64 caractères hexadécimaux).
Entrée |
Hash SHA-256 |
|---|---|
|
|
|
|
|
|
Remarquez qu'un simple changement de majuscule ou l'ajout d'un caractère produit un hash complètement différent.
Vérification d'un mot de passe#
Quand vous vous connectez :
Vous entrez votre mot de passe
Le serveur calcule le hash de ce que vous avez entré
Il compare ce hash avec celui stocké dans la base de données
Si les deux hash sont identiques, le mot de passe est correct
Le serveur n'a jamais besoin de connaître votre mot de passe en clair.
Outil : Calculer un hash SHA-256#
Utilisez l'outil ci-dessous pour calculer le hash SHA-256 de n'importe quel texte.
Attaque par force brute#
Si un attaquant vole la base de données d'un site web, il obtient les hash des mots de passe. Comme le hachage est irréversible, il ne peut pas directement retrouver les mots de passe. Cependant, il peut essayer de deviner le mot de passe en testant toutes les combinaisons possibles et en comparant le hash obtenu avec celui volé.
Cette méthode s'appelle une attaque par force brute. Elle consiste à tester systématiquement toutes les combinaisons possibles jusqu'à trouver celle qui produit le bon hash.
Nombre de combinaisons#
Le nombre de combinaisons dépend de la longueur du mot de passe et du jeu de caractères utilisé :
Jeu de caractères |
Taille |
4 caractères |
6 caractères |
8 caractères |
|---|---|---|---|---|
Chiffres (0-9) |
10 |
10'000 |
1'000'000 |
100'000'000 |
Minuscules (a-z) |
26 |
456'976 |
308'915'776 |
208'827'064'576 |
Lettres (a-z, A-Z) |
52 |
7'311'616 |
19'770'609'664 |
~53 billions |
Lettres + chiffres |
62 |
14'776'336 |
56'800'235'584 |
~218 billions |
Plus le mot de passe est long et utilise un jeu de caractères varié, plus l'attaque par force brute est difficile.
Exercices#
Exercice 1#
Dans le tableau ci-dessous se trouvent des mots de passe hachés qui ont été volés. Retrouvez-les en les attaquant par force brute à l'aide de l'outil ci-dessous.
Pour chaque hash, le jeu de caractères utilisé ainsi que sa longueur vous sont donnés. Configurez l'attaque en conséquence.
Hash SHA-256 |
Contraintes |
|---|---|
|
4 lettres minuscules |
|
4 lettres |
|
5 lettres minuscules |
|
5 lettres |
|
5 lettres + chiffres |
Outil : Attaque par force brute#
Notez les mots de passe retrouvés ainsi que le temps requis pour chaque attaque. Que constatez-vous ?
Exercice 2#
En fonction de vos résultats de l'exercice précédent, quelles caractéristiques donneriez-vous à votre mot de passe pour qu'il reste sécurisé face à une attaque par force brute, même en cas de vol de la base de données ? Donnez 2 caractéristiques.
Solution
Longueur : un mot de passe long augmente exponentiellement le nombre de combinaisons à tester.
Variété de caractères : utiliser des minuscules, majuscules, chiffres et caractères spéciaux multiplie le nombre de combinaisons possibles.
Attaque par dictionnaire#
L'attaque par force brute est efficace contre les mots de passe courts, mais devient vite impossible pour les mots de passe longs. Cependant, beaucoup de gens utilisent des mots courants comme mot de passe (password, soleil, football...).
Une attaque par dictionnaire consiste à tester une liste de mots courants (un « dictionnaire ») plutôt que toutes les combinaisons possibles. Cette approche est beaucoup plus rapide car elle ne teste que quelques milliers ou millions de mots, au lieu de milliards de combinaisons.
Exercice 3#
Dans le tableau ci-dessous se trouvent des mots de passe hachés qui ont été volés. Retrouvez-les en les attaquant par dictionnaire à l'aide de l'outil ci-dessous.
Hash SHA-256 |
|---|
|
|
|
Outil : Attaque par dictionnaire#
Notez les mots de passe retrouvés.
Exercice 4#
L'attaque par dictionnaire impose une nouvelle contrainte sur vos mots de passe pour que ceux-ci soient sécurisés. Quelle est cette caractéristique ?
Solution
Le mot de passe ne doit pas être un mot courant ou une combinaison prévisible. Il faut éviter les mots du dictionnaire, les prénoms, les noms de lieux, les dates, etc. Un bon mot de passe est aléatoire ou utilise une phrase de passe composée de plusieurs mots sans lien logique.
Votre mot de passe est-il sécurisé ?#
Exercice 5#
Utilisez l'outil de hachage SHA-256 en haut de cette page pour calculer le hash d'un de vos mots de passe
Essayez de l'attaquer par dictionnaire avec l'outil ci-dessus
Votre mot de passe a-t-il été retrouvé ? Si oui, il est temps de le changer !
Important
Ne partagez jamais votre mot de passe avec qui que ce soit, même sous forme de hash. Cet exercice est à faire discrètement et à titre personnel.