Aller au contenu

Pourquoi nos mots de passe sont presque indéchiffrables ?

Publié le 3 min de lecture
  • cybersecurite
  • developpement
  • django
  • mot de passe
  • mit
  • CTSS
Pourquoi nos mots de passe sont presque indéchiffrables ?

Aujourd’hui, entrer un mot de passe pour accéder à un ordinateur, une application ou un compte est devenu un geste banal. Pourtant, ce mécanisme est le résultat de plusieurs décennies d’évolution.

Et tout commence au MIT, en 1961.

La naissance du mot de passe

À cette époque, le MIT ne disposait que d’un seul ordinateur, partagé entre étudiants et chercheurs. Pour améliorer son utilisation, Fernando Corbató développe le CTSS (Compatible Time-Sharing System), l’un des premiers systèmes permettant à plusieurs personnes d’utiliser un même ordinateur de manière interactive.

Le système permet notamment à chaque utilisateur de disposer de ses propres fichiers.

Mais un problème apparaît rapidement : comment empêcher un utilisateur d'accéder aux fichiers des autres ?

La solution est simple : un compte associé à un mot de passe.

C’est l’une des premières formes de mot de passe informatique.

Mais il y avait un problème majeur : les mots de passe étaient stockés en clair dans un fichier. Une personne capable d’accéder à ce fichier pouvait donc récupérer tous les comptes.

C’est notamment ce qu’a fait Allan Scherr, un étudiant du MIT, dans ce qui est considéré comme l’un des premiers vols de mots de passe informatiques.

Du mot de passe au hachage

Quelques années plus tard, en 1970, Robert Morris, des Bell Labs, propose une approche beaucoup plus sûre : plutôt que de stocker le mot de passe directement, on stocke une empreinte cryptographique, appelée hash.

Le principe est simple :

mot de passe -> fonction de hachage -> empreinte

Lors de la connexion, le mot de passe fourni par l’utilisateur est à nouveau haché. Le système compare alors les deux empreintes.

Le mot de passe original n’a donc plus besoin d’être stocké.

Mais une nouvelle faiblesse apparaît : un même mot de passe produit toujours le même hash.

Des attaquants peuvent alors pré-calculer des millions de mots de passe et leurs empreintes dans des bases appelées rainbow tables.

Le rôle du salage

Pour contrer cette attaque, on ajoute au mot de passe une valeur aléatoire et unique appelée sel (salt) avant le hachage.

mot de passe + sel -> hachage -> empreinte

Ainsi, deux utilisateurs ayant exactement le même mot de passe peuvent obtenir deux empreintes complètement différentes.

Le salage rend les attaques par tables précalculées beaucoup plus difficiles.

Et dans Django ?

Dans Django, ce mécanisme est géré automatiquement. Par défaut, Django utilise PBKDF2 avec SHA-256, avec un certain nombre d’itérations et un sel unique.

Une valeur stockée en base peut ainsi ressembler à :

<algorithme>$<iterations>$<salt>$<hash>

Lors de la connexion, Django récupère ces informations, applique le même processus au mot de passe fourni et vérifie que les empreintes correspondent.

Une simple chaîne de caractères ?

Finalement, un mot de passe est bien plus qu’une chaîne de caractères.

Derrière un simple bouton « Se connecter », on retrouve une histoire faite de partage de ressources, de curiosité, de failles de sécurité, de cryptographie et d’algorithmes.

Et surtout, une idée essentielle : la sécurité informatique évolue souvent parce que quelqu’un trouve une nouvelle manière de contourner ce qui existait auparavant.