Aller au contenu principal

Votre premier geste de sécurité

Créer un mot de passe fort et unique, avec le terminal Linux.

remarque

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 :

  1. 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.
  2. Lancez le fichier téléchargé (python-3.x.x-amd64.exe).
  3. É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".
Ne jamais oublier la case "Add python.exe to PATH"

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.

  1. 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

Bonne pratique - Ne jamais écrire un mot de passe réel dans un document partagé

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.

attention

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 :

LongueurNombre de combinaisons possibles (26 lettres)
4 caractères456 976
8 caractères208 827 064 576
12 caractères95 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.

info

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==
info

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.

attention

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).

astuce

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.


Test de mémorisation/compréhension​


Pourquoi un mot de passe court (4 à 6 caractères) est-il dangereux, d'un point de vue purement mathématique ?


Que fait la commande openssl rand -base64 16 exécutée dans un terminal Linux ?


Pourquoi ne faut-il jamais réutiliser le même mot de passe sur plusieurs sites différents ?


Qu'est-ce qu'une phrase de passe (passphrase), par rapport à un mot de passe classique ?


Quel lien existe-t-il avec l'affaire Free vue en cours cette semaine, à propos de l'authentification ?


À quoi sert concrètement un gestionnaire de mots de passe ?


En minuscules uniquement (26 caractères possibles par position), combien existe-t-il de mots de passe possibles de longueur 8, par rapport à la longueur 4 ?


Lequel de ces mots de passe est le plus risqué à utiliser, d'après les mauvaises pratiques les plus classiques ?