Quand les contrôles de mot de passe deviennent une faille de sécurité

Publié le Catégorisé comme User research

La plupart des tests utilisateurs que j’ai l’occasion de mener passent à un moment ou un autre par l’étape cruciale de la création du mot de passe. C’est si commun sur Internet que l’on pourrait croire que c’est complètement anodin… C’est loin d’être le cas ! L’expérience est souvent douloureuse, et si ça peut leur simplifier la vie, les utilisateurs n’hésitent pas bien longtemps avant de contourner les contraintes de sécurité…

L’utilisateur face aux contrôles

Pour sécuriser une connexion, on implémente de plus ou moins nombreuses règles de contrôle. Par exemple on trouve généralement : des caractères imposés, longueur minimum et maximum, double saisie du mot de passe, et bien d’autres. Mais, que se passe-t-il lorsque l’utilisateur se trouve face à ces contrôles ? Voici quelques extraits que j’ai relevés au cours de tests utilisateurs sur différents projets menés en 2015 et 2016 :

« Ah, je vois que je dois le taper deux fois alors je vais mettre un truc pas trop long et pas trop compliqué. »

« En fait je peux pas relire ce que je tape alors il faut que je mette quelque chose de simple. »

« Bon ça fait déjà deux fois qu’il veut pas mon mot de passe parce que c’est trop court, donc je vais devoir mettre un truc bidon. »

« Je peux pas mettre mes mots de passe habituels donc je vais me le noter sur une feuille sinon je vais l’oublier. »

« Là je peux pas coller le mot de passe que j’ai généré, donc bon, c’est pas grave je vais mettre un autre que je mets tout le temps. »

« Bon ben il m’a bloqué pour 24 heures là donc je vais devoir recréer un compte du coup. »

Tests utilisateurs menés chez Ochelys, 2015 – 2016

Alors… on l’a bien sécurisée notre application ou pas ?

Pour l’utilisateur, le contrôle n’est qu’un obstacle à passer le plus rapidement possible

Oui, l’authentification n’est qu’une contrainte dans le parcours de l’utilisateur ! C’est le système qui a besoin de vérifier qui est là. L’utilisateur, lui, sait très bien qui il est, et il aimerait bien que le système le comprenne rapidement. La plupart des contraintes conduisent donc l’utilisateur à opter pour des contournements souvent bien moins sécurisés.

Si vous imposez 25 caractères, avec lettres, chiffres, majuscules, minuscules, sans copier/coller : vous avez gagné, le mot de passe sera écrit sur un post-it posé sur le bureau.

Ceci est d’autant plus dommageable que le critère le plus important en termes de sécurité est simplement (link: https://xkcd.com/936/ text: la longueur du mot de passe).

La pire arrive de l’idée fausse que plus un utilisateur est contraint plus il optera pour des bonnes pratiques. Non, plus un utilisateur est contraint… plus il contournera les règles.

Quelques bonnes pratiques ?

En résumé, voilà quelques bonnes pratiques qui me semblent poser un cadre moins douloureux pour authentifier un utilisateur, et donc finalement, plus sécurisé :

  • Autoriser les copier-coller
  • Permettre à l’utilisateur de vérifier sa saisie
  • Imposer peu de règles (privilégier la longueur minimum)
  • Annoncer les règles immédiatement (longueur, caractères, …)
  • Donner une limite de nombre de caractères très haute
  • Afficher un indicateur de niveau de sécurité
  • Ne pas demander une double saisie
  • Opter pour un anti-brute force très progressif (1min., 3.min, 5min)

Ressources

Le projet (link: http://seethroughtrees.github.io/react-ux-password-field/) propose un composant react qui implémente la plupart de ces règles, intéressant à tester 🙂