Le point d’entrée sur un site Web ou dans une application, avant même la page d’accueil (home/index), est la page de connexion, dans laquelle l’utilisateur est invité à saisir son identifiant (login) et son mot de passe (password). Je ne vais pas m’attarder sur l’identifiant mais sur le mot de passe à travers quelques remarques et/ou mots d’humeur.
Pour commencer, je dirais qu’il y a deux cotés dans cette affaire. D’un coté, il y a l’utilisateur qui tape son mot de passe. Pour faire simple, nous dirons qu’il le choisi lui-même. De l’autre coté, il y a une société et ses développeurs qui fabriquent le logiciel ou le site Web et qui décident des méthodes d’authentification.
Note : Dans la suite, je parlerais très peu de SSO, OpenId, Oauth, SAML, etc. Il y aurait pourtant beaucoup à en dire, par exemple pour préciser qu’un mot de passe unique, protégé par Google, sur son Web mail (GMail) et permettant un accès en OpenId Connect sur tous les autres sites sans jamais avoir à saisir un mot de passe, même lors de l’inscription, c’est le top, mais passons…
Du coté des utilisateurs…
Parlons donc d’abord des utilisateurs, qui ont souvent de mauvaises habitudes, comme :
- utiliser un mot de passe bidon tel que « abc123″ ou « bonjour » ;
- utiliser le même mot de passe sur tous les sites ;
- Choisir un mot de passe trop court tel que « 1234 » lorsque c’est permis ;
- Choisir un mot de passe trop simple, à base de lettres en minuscules par exemple, bien que ce point mérite quelques précisions ;
- Et c’est sans parler des passwords notés sur des Post-it, eux-même collés sur les écrans…
Mot de passe bidon…
Les statistiques montrent qu’un grand nombre d’utilisateurs choisissent des mots de passe archi mauvais. Au palmarès de ceux-ci, on retrouve des passwords tels que « abcd1234″ ou « Bonjour » ou encore « password ». Vous qui me lisez, vous vous dîtes que je raconte des bêtises, mais c’est bel et bien la vérité. Aie, ça fait mal. Autant dire qu’un pirate n’aura pas beaucoup de mal à trouver votre mot de passe « secret »… Même ma fille de trois ans peut le trouver, vu que ce sont les seuls mots qu’elle sait écrire. Et je dis ça sans rigoler.
Dans le genre un peu plus dur, mais tout aussi facile à pirater pour quelqu’un qui s’y connait un tant soit peu, il y a tous les mots de passe composés de « vrais » mots comme votre prénom ou celui de votre femme, ou encore comme votre parfum de glace ou votre fleur préférée. Et ne croyez pas qu’accoler votre date de naissance y changera quoi que ce soit…
Tous les sites avec le même password
Ah la la, quelle erreur de débutant… Il suffit de trouver le mot de passe sur le site le moins protégé pour avoir accès à l’ensemble de vos applications. Comment le pirate peut-il savoir si vous utilisez le même password partout ? Et bien, il ne le peut pas. En revanche, il sait que tout le monde le fait. Du coup, il n’a qu’à essayer pour vérifier, ce qui ne lui prendre que quelques secondes. Et si ça marche sur un, il y a des chances que ça marche aussi sur les autres. C’est humain ; on fait tous ça…
Ce que je vous conseille, c’est d’avoir au moins un mot de passe super sécurisé et de l’utiliser sur votre site principal. Un site principal, ça peut être :
- votre webmail (comme Gmail) ;
- un outil dédié aux passwords (il en existe plusieurs).
Pourquoi votre boite aux lettre doit-elle être protégée, plus que votre compte en banque par exemple ? Tout simplement parce que votre email contient très certainement l’ensemble des mots de passe qui auraient été envoyés dans le passé, par email. Et que même si vous les avaient effacé, les sites disposent souvent d’une fonction « mot de passe perdu » qui vous enverra un nouveau mot de passe par email justement. Donc si vous n’avez qu’un seul site à vraiment protéger, c’est votre boite aux lettres.
Petit et pas costaud…
En général, les sites web ne vous imposent pas beaucoup de contrainte sur la taille du mot de passe. Au pire, on vous dit d’utiliser au moins quatre lettres. Un des mauvais mots de passe qu’on peut choisir est alors « abcd ». Il est d’ailleurs très utilisé si on en croit les statistiques. Heureusement, la plupart d’entre nous utilisons six ou huit digit, comme « abc123″ ou « abcd1234″.
Faisons simple, il y a 26 lettres en minuscule et en majuscule, une dizaine de chiffres et quelques signes de ponctuation. Ça vous offre un choix, pour chaque digit, parmi environ 70 caractères. Sur seulement quatre digit, autant dire qu’un pirate rigole bien fort. En passant à huit, il aura un peu plus de mal en utilisant la force brute, même en utilisant des techniques statistiques. Sur dix ou douze digits, ça commence à être vraiment chaud. Sur vingt digit, si vous n’avez pas choisi un truc trop bidon, disons que c’est hyper sécurisé. Evidemment, vous n’avez pas forcément envie de taper et de retenir des mots de passe de vingts caractères, sauf pour votre password principal. Disons que dix ou douze feront bonne mesure la plupart du temps.
Ce qu’il faut retenir, c’est que plus le mot de passe est long et plus il sera difficile à casser. Utilisez une phrase mnémotechnique pour vous aider à retenir un mot de passe complexe. Par exemple « Je me suis marié par un jour de pluie durant l’été » donnera « Jmsmpujdpdé ». C’est un classique…
Pas seulement des minuscules…
Comme je l’ai expliqué juste au dessus, vous avez généralement le choix parmi 70 caractères pour composer votre mot de passe. Or, toujours d’après les statistiques, la plupart des gens se limitent aux minuscules et aux chiffres, soit 36 possibilités. On perd un facteur 2 : énorme en informatique. Et je parle en puissance ici, pas en simple multiplicateur. Et encore la plupart des gens ignorent un certain nombre de lettres comme « U » ou « H ». Là je n’ai pas les compétences en psychologie pour l’expliquer.
Utilisez donc des majuscules et des caractères spéciaux, mais sans vous forcer. Je reviendrai sur ce point dans la partie dédiée aux développeurs.
D’un point de vue sécurité, hormis les trucs bidons, ce qui compte c’est 1) la taille, en nombre de digits, puis 2) la largeur, cà d le choix dans les caractères. Donc la taille compte plus que la largeur mais tout de même, ça joue beaucoup.
Dessiner c’est gagné…
Enfin, j’ose à peine abordé le cas du Post-it collé sur son écran avec le password noté en gras, juste à coté du nom du site concerné. Ça n’existe pas ? Vous croyez ?… Je peux vous affirmer que si, et même dans des services informatiques dédiés à la sécurité. Ah bon, il n’est pas sur l’écran mais dans le tiroir… Oui ça fait bien trois secondes de différence. Ah mais le tiroir est fermé à clé. Enfin la même clé qui sert à tous les tiroirs de l’open space. Ah ok c’est un clé différente. Oui mais si on tire un peu fort, ça s’ouvre… Ah mais le mot de passe est noté à l’envers… Ok ça fera un peu rigoler le pirate et il sera peut être moins méchant
Nan, sans blague, vraiment, arrêtez ce genre d’ânerie. On vous le dit tout le temps.
Du coté des développeurs…
A mon sens, même si les développeurs ne peuvent pas tout contrôler, ils sont bien responsables d’un grand nombre d’erreurs classiques.
Sur la taille…
Oui chers développeurs, pourquoi acceptez-vous des mots de passe de seulement quatre digits ? Vous cherchez juste les coups ? C’est comme de faire de la publicité pour une faille de sécurité. Chers pirates, c’est porte ouverte aujourd’hui… Ah oui, c’est parce que le code pin du téléphone portable ou de la carte bleue est de quatre chiffres. Hummm, et ben, bon courage alors. Ou alors c’est parce qu’il faut s’adapter à une politique sécurité laxiste de la société… Là c’est moi qui vous plaint, pour l’avoir également subit.
Des fois vous demandez entre quatre et huit digits. Waoouuu, vous permettez huit digits. Quels générosité… Il faut économiser les ressources en base de données, c’est vrai que l’espace disque coûte si cher en 2013… Arrêtez par pitié. D’abord, ça devrait être six ou huit au minimum. Et j’ai presque honte de proposer six… Si vous voulez une limite haute, pour des raison de typage, fixez-la à vingt par exemple : 70^20 ça commence à être du sérieux…
Sur le choix des caractères…
Oh non, arrêtez d’imposer des tirets ou des majuscules ou des chiffres, surtout pour une taille imposée. Vous ne comprenez pas que vous diminuez d’autant le nombre de combinaisons possibles et que ça gonfle (le mot est mesuré) les utilisateurs. Quand vous imposez une majuscule, je pari qu’elle se retrouve en première position. Quand au tiret, il débarque à la fin ?…
Et puis pendant qu’on y est, implémentez une fonction qui indique le niveau de sécurité du mot de passe choisi, par exemple en détectant les patterns issus des dictionnaires…
Sur le mot de passe perdu…
Combien de fois je vois des sites qui proposent de vous renvoyez des mots de passe oubliés ?… Oh la la, quelle faille de sécurité énorme. La bonne façon de le faire, quand un utilisateur choisi un mot de passe, c’est de le stocker de manière cryptée avec un algorithme non bijectif. Par exemple, quand l’utilisateur choisi « abcd1234″ (oui c’est bidon mais c’est pour illistrer), ça doit stocker « zhd5l;4èssu3: » dans la base de données. Et le système ne doit surtout pas être en mesure de décoder la version cryptée. Au moment de la connexion, on vérifie si les versions cryptées du mot de passe saisi et du mot de passe enregistré concordent. On ne doit jamais essayer de comparer les version décryptées. Pourquoi ? Si un pirate s’empare de votre base, il se ferait un plaisir d’utiliser un algorithme de décodage (même complexe) de manière mécanique.
Note : Un bon algorithme de cryptage doit être publique et basé sur la force brute. Un algorithme secret, c’est bon pour la poubelle.
Si vous êtes capable de renvoyer son mot de passe à l’utilisateur, c’est que vous utilisez un algorithme de cryptage bijectif, ce qui ne sert à rien. Et là je suppose que vous cryptez les données, ce qui n’est même pas toujours le cas. Un bon site doit régénérer un mot de passe à la demande et l’envoyer par courrier. Il doit demander à l’utilisateur de l’utiliser une fois et une seule et le changer immédiatement. Et bien entendu, le mot de passe généré doit avoir une période de validité. S’il n’est pas utiliser sous 48 heures (par exemple), il doit être invalidé, et l’utilisateur prévenu.
Avoir un algo bijectif, c’est comme stocker le mot de passe en clair. Bon disons juste que ça arrêtera les débutants…
Google c’est plus fort que toi…
Je ne voulais pas en parler, mais c’est trop important pour le zapper. Les mecs de Google, Facebook, Twitter, Paypal, etc. sont des bons. Ils ont des équipes sécurité formées. Ces sociétés proposent toutes des services de type SSO, à base d’OpenId ou d’autres protocoles sympas. Utilisez ces services par pitié. Vous y gagnerez en sécurité. Vos utilisateurs seront contents de ne pas avoir à re-saisir toutes leurs données. Et, personnellement, en tant qu’utilisateur, j’ai bien plus confiance en Google que dans tel ou tel site Web de e-commerce. Pourquoi ? Tout simplement parce que j’en connais les équipes et que je ne peux pas garantir que ce sont toujours des bons (moi y compris) ou qu’ils ont les moyens nécessaires pour bien faire…
Rien ne vaut un bon soft pour créer et retenir ses mots de passe. Moi j’utilise 1Password, et j’en suis très content.
Un autre truc : avec Google, il est primordial de mettre en place la double authentification (avec un code reçu par SMS). Ca évite les mauvaises surprises si l’on perd son mot de passe.
En effet ce soft est vraiment bien. Pour ma part, dans une moindre mesure, j’utilise aussi une fonction de Firefox qui s’appelle « password principal » je crois.
Pour la remarque sur Google et le SMS, c’est un point très important. Chez Google, ils appellent ça le « has » de l’anglais « posséder ». Le principe est d’envoyer une double information sur un terminal que seul le destinataire peut posséder. Le téléphone portable est un bon exemple.