Votre premier geste de sécurité
Créer un mot de passe fort et unique, avec le terminal Linux.
Le mot de passe reste, dans l'immense majorité des cas, la toute première (et parfois la seule) protection d'un compte.
TP pour réfléchir et résoudre des problèmes
Votre défi pour aujourd'hui consiste à générer, comparer et évaluer des mots de passe, directement en ligne de commande
Étape 1 — Installer Python sous Windows
Les étapes suivantes ont besoin de Python. Si Python n'est pas encore installé sur votre machine Windows, installez-le avant d'aller plus loin :
- Rendez-vous sur python.org/downloads. Le site détecte normalement votre système et propose directement le bon installeur Windows : cliquez sur le bouton de téléchargement.
- Lancez le fichier téléchargé (
python-3.x.x-amd64.exe). - Étape la plus importante : en bas de la première fenêtre d'installation, cochez la case "Add python.exe to PATH", avant de cliquer sur "Install Now".
Sans cette case cochée, Windows ne saura pas où trouver Python en dehors de son dossier
d'installation : la commande python restera introuvable dans l'invite de commandes, quelle que
soit la suite de cette séance.
- Une fois l'installation terminée, ouvrez une invite de commandes (menu Démarrer, tapez
cmd, touche Entrée) ou PowerShell, et vérifiez l'installation :
python --version
Python 3.12.4
(le numéro exact de version peut varier selon la date de téléchargement, ce n'est pas un problème).
📌 Réponse attendue
Étape 2 — Générer trois mots de passe de longueurs différentes
Python sait générer, lui aussi, une suite de caractères réellement aléatoire, grâce à son module
secrets. Dans l'invite de commandes, exécutez la commande suivante trois fois, en changeant le
nombre d'octets demandés (remplacez 16 par 8, puis par 24) :
python -c "import secrets; print(secrets.token_urlsafe(16))"
Notez les trois résultats obtenus.
📌 Réponse attendue
Étape 3 — Calculer le nombre de combinaisons possibles
Toujours avec Python, calculez le nombre de combinaisons possibles pour un mot de passe de 8 caractères, composé uniquement de minuscules (26 possibilités par caractère) :
python -c "print(26**8)"
Refaites le calcul pour une longueur de 12 caractères.
📌 Réponse attendue
Étape 4 — Construire sa propre phrase de passe
Choisissez 4 mots qui n'ont aucun lien logique entre eux, ni avec vous (pas de centre d'intérêt, pas de référence personnelle), et assemblez-les en une seule phrase de passe, sans espace.
📌 Réponse attendue
Que ce soit dans ce TP, dans un fichier de notes de cours ou dans un dépôt Git, n'écrivez jamais un mot de passe que vous utilisez réellement. Utilisez toujours un exemple fictif pour illustrer une méthode, jamais vos propres identifiants.
📌 Une solution
Notions théoriques
Avec votre professeur de SLAM cette semaine, vous avez vu que la CNIL a sanctionné Free, entre autres, pour un manque de robustesse de ses dispositifs d'authentification. Avant de savoir sécuriser une infrastructure entière, prenons le temps de comprendre pourquoi le TP que vous venez de réaliser fonctionne vraiment.
Un mot de passe faible, une porte grande ouverte
La plupart des comptes piratés ne le sont pas grâce à une technique sophistiquée : un outil
automatisé essaie, en quelques secondes, des milliers de mots de passe parmi les plus courants
(azerty123, motdepasse, une date de naissance, un prénom suivi d'un chiffre...). Si le mot de
passe visé en fait partie, l'attaque réussit sans effort.
Un mot de passe n'est jamais trop anodin pour être attaqué. Même un compte qui semble sans intérêt (réseau social personnel, forum...) est une cible, ne serait-ce que parce que le même mot de passe y est souvent réutilisé ailleurs.
La force d'un mot de passe, en chiffres (pas en impression)
Un mot de passe composé uniquement de minuscules (26 lettres possibles) offre, selon sa longueur, un nombre de combinaisons très différent, exactement ce que vous avez calculé à l'étape 3 du TP :
| Longueur | Nombre de combinaisons possibles (26 lettres) |
|---|---|
| 4 caractères | 456 976 |
| 8 caractères | 208 827 064 576 |
| 12 caractères | 95 428 956 661 682 176 |
Entre 4 et 8 caractères, le nombre de combinaisons est multiplié par environ 450 000 : ce n'est pas deux fois plus difficile à deviner, c'est un changement d'échelle complet. Chaque caractère ajouté multiplie le nombre de combinaisons, il ne l'additionne pas.
En ajoutant des majuscules, des chiffres et des symboles (94 caractères possibles au lieu de 26), un mot de passe de 12 caractères atteint environ 476 000 milliards de milliards de combinaisons possibles. La longueur reste toutefois le facteur le plus efficace : un mot de passe long et simple bat souvent un mot de passe court et complexe.
Générer un mot de passe fort directement en ligne de commande
Plutôt que d'inventer un mot de passe soi-même (et de retomber, sans le vouloir, dans des habitudes
prévisibles), un ordinateur sait générer une suite réellement aléatoire. Vous l'avez fait avec Python
(module secrets) à l'étape 2 du TP. Sur un serveur Linux, le réflexe du sysadmin est souvent plutôt
la commande openssl rand :
openssl rand -base64 16
9l7wSrnhkgdgotS46m6hSg==
openssl rand génère des octets réellement aléatoires. L'option -base64 16 demande 16 octets
aléatoires, puis les encode en base64 (un format texte imprimable), exactement comme
secrets.token_urlsafe() le fait en Python. Ce sont deux outils différents pour un même principe :
ni l'un ni l'autre ne produit une suite mémorisable, et ce n'est pas fait pour l'être : c'est fait
pour être stocké dans un gestionnaire de mots de passe.
Un mot de passe fort, mais mémorisable : la phrase de passe
Pour un mot de passe que vous devez réellement retenir (par exemple celui qui ouvre votre gestionnaire de mots de passe lui-même), une phrase de passe (passphrase) est un bon compromis : plusieurs mots sans lien logique entre eux, mis bout à bout, comme celle que vous avez construite à l'étape 4 du TP.
correctbatterievelocipantoufle
Cette phrase est plus longue qu'un mot de passe classique (donc mathématiquement plus solide), tout en restant mémorisable, car elle s'appuie sur plusieurs mots plutôt que sur une suite de symboles arbitraires.
Une phrase de passe fonctionne uniquement si les mots choisis n'ont aucun lien logique entre eux ni avec vous (jamais une citation connue, jamais vos centres d'intérêt). Sinon, elle redevient devinable.
Ne jamais réutiliser le même mot de passe partout
Si un seul des sites où vous êtes inscrit est piraté (et cela arrive à des services que vous pensez fiables, comme vous l'avez vu avec Yahoo), et que vous réutilisez le même mot de passe ailleurs, tous vos autres comptes utilisant ce mot de passe sont immédiatement vulnérables. Cette technique d'attaque a un nom : le credential stuffing (le réemploi d'identifiants volés sur un site pour en tester l'accès sur beaucoup d'autres, de façon automatisée).
Un mot de passe réellement fort, mais réutilisé partout, n'offre donc aucune protection réelle : toute la sécurité d'un compte peut se retrouver en fait entre les mains d'un autre site.
Un gestionnaire de mots de passe : la vraie solution à long terme
Il est humainement impossible de retenir un mot de passe fort et différent pour chaque site. Un gestionnaire de mots de passe résout ce problème : il génère et retient, de façon chiffrée, un mot de passe unique par site, et vous n'avez plus qu'une seule phrase de passe à retenir (celle qui ouvre le gestionnaire lui-même).
Vous n'avez pas besoin d'installer un gestionnaire de mots de passe dès aujourd'hui : l'essentiel de cette séance est de comprendre pourquoi il en existe un, et de prendre l'habitude, dès maintenant, de générer des mots de passe forts en ligne de commande plutôt qu'à l'improviste.