L’utilisateur ou le mot de passe fournis est invalide
Oui mais euh… lequel ?
J’ai un compte sur plus d’une dizaine de services courants, peut être une ou plusieurs centaines si je compte les boutiques et forums en ligne sur lesquelles je vais peu.
Expérience utilisateur à jeter
Malheureusement, comme tout le monde, je n’ai pas pu ou voulu avoir le même identifiant utilisateur partout. Parfois je me trompe, parfois je ne suis même pas capable de savoir lequel est le bon. Bien entendu j’ai aussi pas mal de mots de passe.
Pas de doute, ce message d’erreur rend plus difficile de rentrer sur le compte. En tout cas c’est vrai pour l’utilisateur légitime. Ce qui aurait pu lui permettre de s’identifier en quelques minutes lui prendra un bon quart d’heure le temps de tester toute une combinaison d’identifiants utilisateur et la croiser avec autant de mots de passe.
L’identifiant utilisateur n’est pas une sécurité
La raison d’être de ce message est souvent un développeur qui a souhaité améliorer la sécurité. Le fondement est logique, si l’identifiant utilisateur est une inconnue, cela fait une entrée de plus à forcer ou deviner.
Mais en même temps, si en connaissant l’identifiant utilisateur il est possible de forcer le compte relativement simplement, vous avez un vrai problème, et ce problème ne vient pas de l’identifiant utilisateur. Vous venez d’ajouter de cacher le cadenas parce qu’il est trop simple à forcer quand on le trouve. Est-ce réellement la bonne approche ?
Trouver un identifiant utilisateur est simple
S’il s’agit de tester des identifiants communs à l’aide d’un dictionnaire et que nous parlons d’un service grand public, ne nous voilons par la face : Nous savons que « bob », « bob75 » et « greatbob » existent. Il n’est pas besoin de les tester. C’est même à cause de cette pré-existence extrêmement probable que vos utilisateurs ont des identifiants différents partout.
Si à l’inverse vous visez un utilisateur particulier, si vraiment l’ingénierie sociale n’est d’aucune aide à l’attaquant (ce qui serait étonnant), il lui restera à tester quelques variantes les plus probables dans votre robot. Ce qui est extrêmement pénible à faire pour un humain ne changera pas l’ordre de grandeur du problème pour le robot et ne rendra pas beaucoup plus ou beaucoup moins fiable votre système.
Pire, si vraiment il s’agit de découvrir l’existence d’un identifiant, et si vous tentiez une création de compte avec l’identifiant en question ? On ne vous dit pas si l’identifiant est disponible à ce moment là ? Était-ce bien la peine de complexifier l’expérience utilisateur d’un côté si l’information est disponible facilement ailleurs ?
Votre sécurité est ailleurs
Vous voulez augmenter la sécurité ? imposez un mécanisme de double authentification, un nombre d’essai maximum, une temporisation d’une dizaine de secondes, des mots de passe forts, ou même deux caractères de plus dans votre mot de passe. Voilà, votre sécurité est aussi bien voire mieux assurée qu’en cherchant à donner un message d’erreur peu explicite à l’utilisateur.
Si réellement l’identifiant utilisateur était un composant de sécurité, autant le mettre en champ « mot de passe » au lieu d’avoir un champ texte en clair. Mieux, on imposerait une longueur minimale et on interdirait les identifiants courants. En allant au bout de la démarche on pourrait même faire un seul champ « utilisateur et mot de passe » puisque l’identifiant utilisateur ne sert pas à grand chose d’autre.
Je ne sais pas si vous avez vu mais on retombe sur nos pas : pour améliorer la sécurité, ajoutez des caractères au mot de passe, ne prenez pas l’identifiant utilisateur pour un mot de passe.
L’identifiant utilisateur comme donnée de valeur
Vient un dernier problème qu’on m’a soumis : Parfois l’identifiant utilisateur peut lui même être une donnée de valeur.
Je trouve dans cette catégorie des extranet dont l’identifiant utilisateur est prédictible mais où l’appartenance de l’utilisateur au système donne une information importante. Ce peut par exemple être l’extranet d’un avocat pour savoir si une personne précise est cliente.
Ça ne concerne pas les services publics, ça ne concerne pas les services où les identifiants sont non prédictibles, ça ne concerne par les récoltes anonymes (où on ne vise pas un utilisateur précis) et ça ne concerne que les cas où l’identifiant utilisateur a une valeur en soi. C’est rare, plus probablement la solution serait de rendre l’identifiant anonyme ou non prédictible, mais ce sont des cas légitimes.
Par contre, pour votre boutique en ligne, pour votre forum, non, il n’y a aucune raison de gêner l’utilisateur à ce point, vraiment.
Laisser un commentaire