Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Mots de passe, empreintes et sel

Après cette leçon: Je peux expliquer pourquoi un site garde l'empreinte d'un mot de passe plutôt que le mot de passe.

Leçon de 45 min4 commandesLab d’élévation de privilèges Linux : un binaire setuid, une règle sudo, une tâche cron

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

MotCe que ça veut dire
Fonction de hachageun calcul qui transforme un texte en une courte suite fixe
Empreintele résultat du hachage, qu'on ne peut pas défaire
Selun texte au hasard ajouté au mot de passe avant le calcul
Force bruteessayer tous les mots de passe possibles
Dictionnaireune 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

Commande
echo -n "azerty" | sha256sum | cut -c1-16

Affiché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

Commande
echo -n "azertz" | sha256sum | cut -c1-16

Affiché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

Texte16 premiers caractères de l'empreinte
azertyf2d81a260dea8a10
azertz7dd6e0b180a8a39b

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

Commande
echo -n "k9x2azerty" | sha256sum | cut -c1-16

Affiché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 passePossibilitésDurée à un million par seconde
6 chiffres1 000 0001 seconde
8 chiffres100 000 000environ 2 minutes
6 lettres minuscules308 915 776environ 5 minutes
8 lettres minuscules208 827 064 576environ 2 jours et demi

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Vois les droits des fichiers de comptes

Commande
stat -c '%a %U' /etc/passwd /etc/shadow

Affiché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.

À propos de ce labo et de sa source: Lab d’élévation de privilèges Linux : un binaire setuid, une règle sudo, une tâche cron

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.