Clicky

Pourquoi votre mot de passe est mauvais

Lorsque vous voulez vous connecter sur un site web, dans un écrasante majorité des cas, on vous demande un couple identifiant / mot de passe. Cependant, régulièrement, on voit passer des articles, des commentaires, qui critiquent ce système. Et ce n’est pas franchement rassurant.

Afin de comprendre le pourquoi de ces articles, il est donc nécessaire de comprendre comment fonctionne le système du mot de passe. C’est justement ce que nous allons voir dans cet article, dans les grandes lignes. Nous verrons ensuite pourquoi, si c’est un très bon système en théorie, il se révèle mauvais en pratique.

Mot de passe

Un mot de passe, ce n’est pas si sécurisé qu’il n’y paraît

Eh oui, la théorie et la pratique ne se rejoignent pas toujours, d’autant plus lorsque nous prenons en compte la composante humaine.

Comment fonctionne un système utilisant un mot de passe ?

Du côté de l’utilisateur, un système de mot de passe est plutôt simple à utiliser. Lors de l’inscription, il suffit en effet de renseigner un mot de passe qui devra être indiqué chaque fois que l’on veut se connecter.

Du côté du développeur, ce n’est franchement pas beaucoup plus compliqué, et tout se passe dans la base de données qui liste tous les utilisateurs. À côté de chaque utilisateur est ainsi stocké le mot de passe indiqué lors de l’inscription. Lorsque l’utilisateur cherche à se connecter, on compare le mot de passe entré avec celui enregistré dans la base de données et, s’ils correspondent, c’est bon.

Votre mot de passe aux yeux de tous

On en parle nous-mêmes parfois : il arrive que des pirates parviennent à mettre la main sur la base de données de certains sites web. Avec le système simpliste que nous venons de voir, il obtient directement les mots de passe des utilisateurs. Et ça, c’est pas cool. D’ailleurs, même si on oublie les pirates, un simple administrateur du site en question connaît votre mot de passe avec un tel système…

C’est pourquoi, dans la pratique, ce n’est pas votre mot de passe qui est stocké dans la base de données (sauf sur les sites web développés avec les pieds que vous devez absolument fuir).

Votre mot de passe aussi a son empreinte

La problématique est alors la suivante : on veut stocker quelque chose qui représente le mot de passe, pour qu’on puisse continuer à identifier l’utilisateur et lui seul, mais sans pour autant pouvoir retrouver le mot de passe. Délicat, n’est-ce pas ?

C’est ici que des maths un peu (très peu) poussées apparaissent. On évitera de parler en détail des algorithmes qui de toute façon sont nombreux, mais l’idée générale est la suivante : on prend le mot de passe, et on le transforme pour obtenir une chaîne de caractères, appelée empreinte, qui n’a à la fin rien à voir avec l’originale.

Un exemple ? Vous partez d’une chaîne de caractères quelconque (votre mot de passe), comme « chaton trop mignon », et vous obtenez un résultat du style « 84ce4d2b9147616396e9ebef2eb27628 ». C’est cette chaîne qui est stockée dans la base de données.

Lorsque vous cherchez à vous connecter par la suite, on applique la même opération au mot de passe que vous entrez, et on compare les résultats. Comme on ne peut obtenir qu’une seule empreinte à partir d’un même mot de passe, on est sûr que c’est le bon mot de passe.

Mais on ne peut pas retrouver le mot de passe original pour autant. En effet, il est mathématiquement impossible de faire le chemin arrière, pour une raison simple : à une empreinte donnée peuvent correspondre plusieurs chaînes de caractères initiales. Lorsque deux textes initiaux donnent la même empreinte, on appelle cela une collision.

Une empreinte pas si unique

C’est plutôt simple à comprendre en fait : on prend tous les caractères possibles et imaginables (toutes les lettres, accents, etc.), et on transforme cette suite de caractères en un mot d’une longueur prédéfinie (32 ou 40 par exemple), et ne pouvant contenir qu’un nombre fini de caractères différents (les chiffres de 0 à 9 et les lettres minuscules de a à f souvent). Il est impossible de faire une application qui puisse être inversée dans un tel cas.

Ensuite, tout est une question de probabilités. Si en théorie à partir de l’empreinte de départ il suffirait de générer une collision pour faire croire au système que le mot de passe est le bon, dans la pratique, il est difficile de générer de telles collisions (pour les meilleurs algorithmes).

Un système robuste… en théorie

Théoriquement, il est tout à fait possible de retrouver le mot de passe initial qui correspond à une empreinte donnée : il suffit de tester tous les mots de passe possibles et imaginables. D’autres méthodes plus optimisées comme les tables arc-en-ciel existent mais, basiquement, c’est l’idée.

Mais revenons à la pratique si vous le voulez bien. Imaginez que vous vouliez cracker un mot de passe de quatre lettres (de a à z, en minuscules). Vous les listez tous : « aaaa », « aaab », … , « zzzz » et vous calculez les empreintes pour comparer avec celle que vous avez. Si l’empreinte correspond, c’est gagné, vous avez le mot de passe (ou une collision, ce qui revient au même).

Pour ce simple exemple, cela nous donne pas moins de 264 = 456976 possibilités. Ça commence déjà à chiffrer, et on parle seulement de chaînes très courtes et simples. Complexifiez en augmentant le nombre de caractères, et surtout le nombre de ceux que vous autorisez (majuscules, chiffres, spéciaux), et vous vous retrouvez facilement à devoir attendre plusieurs millions d’années avant de tomber sur le bon mot de passe.

Plusieurs millions d’années, c’est long. Du coup, si vous, en tant qu’utilisateur, vous choisissez un mot de passe complexe, avec un bon nombre de caractères et surtout des caractères différents, faisant varier minuscules, majuscules, chiffres et caractères spéciaux, alors vous avez peu de chances que quelqu’un puisse le deviner ou le craquer.

Mais la pratique est toute autre

Seulement voila, vous êtes humains. Le nom de votre chien ou la date de naissance de votre fille est plus facile à mémoriser qu’une chaîne aléatoire comme « efzg654e^|#‘de », c’est un fait. Alors vous choisissez un mot de passe simple. Et vous êtes une cible facile.

Peut-être pas vous personnellement, mais votre voisin par exemple. En tout cas, une chose est sûre : beaucoup de personnes sont concernées par cet état de fait. Et c’est en cela que le système du mot de passe est mauvais en pratique : en obligeant l’utilisateur à retenir quelque chose, on a rendu le système vulnérable.

Car les failles sont nombreuses. Un mot de passe trop simpliste est simple à deviner pour quelqu’un qui vous connaît, mais aussi pour quelqu’un qui teste toutes les chaînes possibles. Quant au fait d’utiliser un même mot de passe sur plusieurs sites, inutile de dire que c’est une mauvaise idée : tous les sites ne sont pas égaux en terme de sécurité et, si l’on devine votre mot de passe sur l’un de ceux-là, vous êtes dans de beaux draps. Surtout si votre mot de passe PayPal ou autre chose du genre n’est lui-même pas unique.

Par ailleurs, même en oubliant la composante humaine, nos algorithmes de calculs d’empreintes ne sont pas parfaits. Le fait qu’ils ne soient pas réversibles est une force car on ne peut pas retrouver facilement le mot de passe à partir de l’empreinte. Mais c’est aussi une faiblesse : on peut créer des collisions.

Ainsi, le système MD5 par exemple est connu comme n’étant plus fiable, pour la simple et bonne raison que nous savons depuis quelques années qu’il est « facile » de créer des collisions. Un site utilisant MD5 n’est ainsi pas beaucoup plus sécurisé qu’un site stockant les mots de passe en clair. Et cet algorithme est encore très largement répandu.

Que faire ?

Tout espoir n’est pas perdu, et il n’est pas nécessaire de vivre dans une grotte pour être en sécurité. Choisir un mot de passe robuste, long, utilisant beaucoup de caractères différents, et surtout unique pour chaque service est la première chose à faire. Utilisez la technologie : votre navigateur peut stocker les mots de passe à la place de votre cerveau, utilisez-le !

Ensuite, n’hésitez pas à abuser des sécurités supplémentaires, comme la double authentification par exemple : en plus du mot de passe, on vous envoie un code unique par SMS (par exemple), et vous devez le recopier. C’est déjà une excellente sécurité en soi.

Image : Psyomjesus

Mots-clés sécuritéweb