Un site se fait voler ses données
Un site de sport garde les comptes de ses membres. Un jour, quelqu’un vole la liste de tous les mots de passe.
Si les mots de passe sont écrits en clair, les voleurs peuvent se connecter partout où les gens ont utilisé le même.
Dans cette leçon, tu vois comment un site garde un mot de passe sans le connaître, et comment tu protèges le tien.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Mot de passe | Un secret que tu es seul à connaître. Il prouve que tu es bien toi. | chat-Mimi-2024 |
| Empreinte | Un code calculé à partir d’un texte. On ne peut pas refaire le texte à partir de lui. On dit aussi hachage. | f2d81a260dea8a10... |
| Phrase de passe | Un mot de passe fait de plusieurs mots, long et facile à retenir. | mon chat dort sur le canape |
| Hameçonnage | Un faux message qui te pousse à donner ton mot de passe ou à cliquer sur un faux lien. | Un faux courriel de ta banque |
| Double authentification | Une seconde preuve en plus du mot de passe, comme un code reçu sur ton téléphone. | Un code à six chiffres |
| Gestionnaire de mots de passe | Un programme qui retient tous tes mots de passe, avec un seul secret à retenir. | Un coffre numérique |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Le site garde une empreinte
Un site sérieux n’écrit jamais ton mot de passe. Il garde son empreinte.
Une empreinte est un code calculé à partir d’un texte, comme une empreinte de doigt. Avec l’empreinte, on ne peut pas refaire le mot de passe.
Regarde l’empreinte de quelques mots.
À toi : calculer des empreintes
import hashlib
def empreinte(mot):
# encode transforme le texte en octets, ce que hashlib demande
return hashlib.sha256(mot.encode()).hexdigest()
for mot in ["azerty", "azerty", "azerty1", "Azerty"]:
print(mot, "->", empreinte(mot)[:16])
print("Longueur de l'empreinte entière :", len(empreinte("azerty")))
# Les mots azerty et Azerty ne diffèrent que d'une lettre. Compare leurs empreintes.
Ce que tu viens de voir
Le même mot donne toujours la même empreinte. Un mot un peu différent donne une empreinte toute différente.
L’empreinte a toujours la même longueur, quelle que soit la taille du mot.
Et surtout : on la calcule dans un sens, et on ne la défait pas.
Exemple travaillé : ce que garde le site
| Ce que tu tapes | Ce que le site calcule | Ce que le site compare |
|---|---|---|
| À l’inscription : chat-Mimi-2024 | Son empreinte | Il la range dans sa base |
| À la connexion : chat-Mimi-2024 | Son empreinte | Même empreinte : tu entres |
| À la connexion : chat-mimi-2024 | Une autre empreinte | Différente : tu es refusé |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
À toi : une connexion avec empreinte
import hashlib
def empreinte(mot):
return hashlib.sha256(mot.encode()).hexdigest()
# Le site ne garde QUE l'empreinte, jamais le mot de passe.
base = {"lina": empreinte("chat-Mimi-2024")}
def connexion(nom, mot):
return base[nom] == empreinte(mot)
print(connexion("lina", "chat-Mimi-2024"))
print(connexion("lina", "chat-mimi-2024"))
print(connexion("lina", "azerty"))
# Que voit quelqu'un qui vole la base ? Affiche base et regarde.
Contrôle rapide
À toi de jouer
Contrôle rapide
3 questionsTes réponses sont corrigées ici et ne sont pas conservées. Un compte garde tes résultats.
Un bon mot de passe
Un voleur peut essayer beaucoup de mots de passe très vite. Plus ton mot de passe est long, plus il a d’essais à faire.
Le tableau compte les possibilités. Le temps est un ordre de grandeur, pour un ordinateur qui fait un million d’essais par seconde. Les machines actuelles vont bien plus vite.
Retiens : la longueur compte plus que les symboles.