Un site peut-il lire ton mot de passe ?
Un mot de passe stocké en clair est une catastrophe le jour où la base de données fuit. Un site sérieux ne garde donc pas ton mot de passe : il garde son empreinte, calculée par une fonction de hachage.
Tu travailles dans ta propre machine de lab, jamais sur le compte de quelqu'un d'autre.
À la fin de cette leçon
Remarque
Je peux expliquer pourquoi un site garde l'empreinte d'un mot de passe plutôt que le mot de passe.
Mots clés
| Mot | Ce que ça veut dire |
|---|---|
| Fonction de hachage | un calcul qui transforme un texte en une courte suite fixe |
| Empreinte | le résultat du hachage, qu'on ne peut pas défaire |
| Sel | un texte au hasard ajouté au mot de passe avant le calcul |
| Force brute | essayer tous les mots de passe possibles |
| Dictionnaire | une liste de mots de passe courants à essayer d'abord |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
La règle de ce lab
Important
Tu travailles seulement dans ta propre machine privée, avec la permission de ton enseignant. Ne cherche jamais le mot de passe d'un vrai compte qui n'est pas à toi. On apprend comment les mots de passe sont volés pour mieux les protéger.
Qu'est-ce qu'une empreinte ?
Une fonction de hachage lit un texte et donne toujours une suite de la même longueur. Le même texte donne la même suite. Un seul caractère changé donne une suite entièrement différente.
Et surtout, on ne peut pas revenir de l'empreinte au texte. C'est un calcul à sens unique.
Calcule l'empreinte du texte azerty
echo -n "azerty" | sha256sum | cut -c1-16Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Change une seule lettre, et compare
echo -n "azertz" | sha256sum | cut -c1-16Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Exemple : deux textes presque pareils
| Texte | 16 premiers caractères de l'empreinte |
|---|---|
| azerty | f2d81a260dea8a10 |
| azertz | 7dd6e0b180a8a39b |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Comment un site vérifie-t-il ton mot de passe ?
À l'inscription, le site calcule l'empreinte de ton mot de passe et ne garde que celle-ci. À la connexion, il calcule l'empreinte de ce que tu tapes.
Si les deux empreintes sont égales, le mot de passe est bon. Le site n'a jamais besoin de le relire.
À quoi sert le sel ?
Sans sel, deux personnes qui ont le même mot de passe ont la même empreinte. Un attaquant peut donc préparer à l'avance une liste d'empreintes de mots de passe courants.
Le sel est un texte au hasard, différent pour chaque compte, ajouté avant le calcul. Il est gardé à côté de l'empreinte. Il n'est pas secret, mais il rend les listes préparées inutiles.
Ajoute un sel k9x2 devant azerty
echo -n "k9x2azerty" | sha256sum | cut -c1-16Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Une erreur fréquente
Attention
Beaucoup pensent qu'une empreinte est un code secret qu'on peut déchiffrer avec la bonne clé. Ce n'est pas du chiffrement. Il n'y a aucune clé : le calcul ne se défait pas. Un attaquant ne le défait pas non plus, il essaie des mots de passe jusqu'à retomber sur la même empreinte.
Combien d'essais pour trouver un mot de passe ?
Un attaquant qui a les empreintes essaie des mots de passe sur son propre ordinateur. Il commence par un dictionnaire de mots courants. Puis il essaie toutes les suites, c'est la force brute.
Chaque caractère de plus multiplie le travail. Le tableau compte les essais, avec un million d'essais par seconde pour l'exemple.
Exemple : durée d'une force brute
| Mot de passe | Possibilités | Durée à un million par seconde |
|---|---|---|
| 6 chiffres | 1 000 000 | 1 seconde |
| 8 chiffres | 100 000 000 | environ 2 minutes |
| 6 lettres minuscules | 308 915 776 | environ 5 minutes |
| 8 lettres minuscules | 208 827 064 576 | environ 2 jours et demi |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Vois les droits des fichiers de comptes
stat -c '%a %U' /etc/passwd /etc/shadowAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Pourquoi deux fichiers de comptes ?
Les chiffres sont les droits du fichier. 644 veut dire que tout le monde peut le lire. 640 veut dire que seul le système et son groupe le lisent. Le premier liste les comptes. Le second garde les empreintes.
Séparer les deux est une défense : lire la liste des comptes ne donne pas les empreintes.
Pour aller plus loin : un gestionnaire
Un mot de passe long, unique pour chaque site, est impossible à retenir à la main. Un gestionnaire de mots de passe le garde pour toi, derrière un seul mot de passe principal.
Pourquoi est-ce plus sûr que de réutiliser le même partout ? Réponds avec les mots empreinte et fuite.