Partie B1 · exercices 30 à 32

Bonus : mots de passe et hachage

Pourquoi un site ne garde pas ton mot de passe, et pourquoi la longueur compte

Pour se connecter, il faut un mot de passe. Un site sérieux ne le garde pas en clair : il en garde une empreinte. Cette partie, facultative, te montre pourquoi, et pourquoi la longueur d'un mot de passe compte plus que sa « difficulté ».

CoursL'empreinte d'un mot de passe

Une fonction de hachage transforme n'importe quel texte en une suite de caractères de longueur fixe, appelée empreinte (ou hash). Elle a deux propriétés :

À la connexion, le site calcule l'empreinte de ce que tu tapes et la compare à celle qu'il a gardée : il n'a pas besoin de connaître ton mot de passe.

hash.py
import hashlib

def empreinte(texte):
    return hashlib.sha256(texte.encode()).hexdigest()

print(empreinte("snt2nde"))
print(empreinte("snt2ndf"))

CoursCombien de mots de passe possibles ?

Un mot de passe de \(n\) caractères choisis parmi \(a\) symboles possibles donne \(a^n\) mots de passe différents. Pour 8 lettres minuscules : \(26^8 = 208\,827\,064\,576\) possibilités.

Hypothèse de travail

On suppose qu'un attaquant teste un milliard (\(10^9\)) de mots de passe par seconde. C'est une hypothèse de travail pour calculer des ordres de grandeur, pas une mesure.

ExercicesExercices

EX 30Je découvre 🌶️prise en main

Exercice 30 — Deux empreintes

  1. Exécute le programme hash.py. Les deux empreintes se ressemblent-elles, alors que les textes ne diffèrent que d'une lettre ?
  2. Quelle est la longueur de chaque empreinte (en caractères) ? Serait-elle différente pour un texte de 100 pages ?
  3. Un site stocke l'empreinte de ton mot de passe. Quelle information reste protégée si ses serveurs sont piratés ?
Indice

Compte les caractères avec len(empreinte("snt2nde")).

💾 NOM_Prenom_ex30.py

EX 31Je calcule 🌶️🌶️application

Exercice 31 — Le temps de casser

On suppose un milliard d'essais par seconde.

  1. Calcule le nombre de mots de passe possibles pour 6, 8, 10 puis 12 lettres minuscules (tu peux utiliser Python : 26 ** 8).
  2. Pour chacun, calcule la durée maximale pour tous les tester, en secondes, puis dans une unité adaptée (minutes, jours, années).
  3. Un mot de passe de 8 caractères peut utiliser des minuscules, des majuscules et des chiffres, soit 62 symboles : calcule \(62^8\) et la durée correspondante.
  4. Que préfères-tu, pour la sécurité : ajouter des types de caractères ou ajouter des caractères ? Justifie avec les résultats.
Indice

Nombre d'essais ÷ \(10^9\) donne le temps en secondes ; 1 jour = 86 400 secondes ; 1 an ≈ 31 536 000 secondes.

📝 réponses dans ton compte rendu, exercice 31

EX 32Je synthétise 🌶️🌶️🌶️plusieurs étapes

Exercice 32 — Des mots plutôt qu'un code

Un mot de passe peut être une phrase de passe : 4 mots tirés au hasard dans une liste de 2 000 mots.

  1. Combien de phrases de passe différentes sont possibles ? Compare avec \(26^8\).
  2. Pourquoi cette phrase est-elle plus facile à retenir qu'un mot de passe de 8 caractères aléatoires ?
  3. Pourquoi les mots doivent-ils être tirés au hasard et non choisis par toi ?
Indice

Chaque mot a 2 000 possibilités, il y a 4 mots : \(2\,000^4\).

📝 réponses dans ton compte rendu, exercice 32