La gestion des mots de passe

Tout d’abord une petite alerte sur les sites n’utilisant pas encore le HTTPS sur leur page de connexion, bien que les données soient transmises (POST) vers une URL sécurisée (comme Facebook, Twitter, etc.). Nous savons tous que c’est une très mauvaise pratique, déconseillée par l’OWASP car ne protégeant pas des attaques de l’homme du milieu. D’ailleurs récemment un FAI Tunisien ne se gênait pas pour intercepter les logins/mots de passe de ses abonnés. C’est toujours révoltant de voir que certains grands de l’internet ne font pas tout ce qui est en leur pouvoir pour protéger les données de leurs utilisateurs, sachant que le surcoût n’est pas énorme en terme de charge processeur (surtout Facebook ou le préjudice peut être énorme).

A part ça j’aimerais revenir sur la gestion des mots de passe qui reste une problématique actuelle dont la limite se fait de plus en plus sentir. Les mots de passes sont aujourd’hui quasiment le seul et unique moyen d’authentification vis à vis des sites Internet contenant toujours de plus en plus d’informations sensibles. Je ne vais pas citer toutes les techniques nécessaires au choix d’un bon mot de passe tellement la littérature abonde sur le sujet mais en clair il faut choisir un mot de passe qui fait plus de 8 caractères (j’irai jusqu’à 10), qui ne signifie pas quelque chose (non présent dans un dictionnaire de n’importe quelle langue), qui contient des lettres (majuscules et minuscules), des chiffres et des caractères spéciaux…

Malgré tout cela il reste encore quelque chose qui a son importance, c’est qu’il est déconseillé d’utiliser le même mot de passe plusieurs fois. En effet il suffirait que ce mot de passe soit « affiché » en clair une seule fois pour que vos comptes soient vulnérables sur tous les autres sites web ayant comme jeton d’authentification le mot de passe en question. Pour qu’il soit vu en clair des attaques sont facilement réalisables, comme du sniffing sur des communications non chiffrées, du phishing, des attaques de l’homme du milieu ou encore un stockage de mot de passe non sécurisé.

C’est la que tout se complexifie, en effet je me vois mal retenir plus d’une centaine de mots de passe différents. Personnellement j’utilisais une première solution qui consistait déjà à classifier les sites nécessitant une authentification selon le niveau de risque (par exemple un forum est un risque mineur, un site ou je possède des droits d’administration possède un niveau plus élevé, et le site qui possède mes coordonnées postales et bancaires atteint le plus haut niveau). Je n’utilise jamais un mot de passe du niveau 1 pour le niveau 2 et ainsi de suite. Cette première solution bien que limitant le nombre de mot de passe à retenir possède un gros risque car dès que le mot de passe d’un niveau est découvert quasiment tout le niveau est condamné, il faut rechanger le mot de passe pour tout le niveau. Normalement les sites de niveau plus élevés possèdent un minimum de sécurité, il ne faut pas se faire avoir par un attaque de type phishing ou se faire infecter par un malware qui viendrait installer un keylogger. Conscient des faiblesses de cette stratégie, j’ai commencé à utiliser des moyens mnémotechniques pour ne pas utiliser plusieurs fois le même mot de passe au sein d’un même niveau, juste des mots de passe qui se ressemblent et plus difficile à deviner qu’un simple copier-coller. Mais cette stratégie n’est bien évidemment pas encore tout à fait au point.

Il existe aussi un moyen qui est de générer un mot de passe aléatoire à chaque création de compte, c’est sûrement une des stratégies les plus efficace lorsqu’un mot de passe pour une raison ou une autre se retrouve en possession d’une autre personne. Pour stocker les mots de passe on peut utiliser les mécanismes des navigateurs comme Firefox et Opera qui permettent la création d’un mot de passe maître permettant de chiffrer le stockage des mots de passe. Il est déconseillé d’utiliser le stockage de mot de passe si le stockage n’est pas chiffré, il suffit alors à un attaquant d’avoir accès au disque dur et tous les mots de passe seraient dévoilés, le travail de l’attaquant n’en serait que facilité.

Comme je me suis mis à utiliser de plus en plus Chrome pour la navigation sur le net, réservant Firefox à une utilisation plus exclusive de pentesting (et Firefox dans sa version 3 est moins efficace au niveau du traitement javascript), je n’avais plus accès à cette fonctionnalité de master password. J’ai donc cherché un peu et j’ai découvert LastPass permettant de synchroniser les mots de passe entre différentes machines et différents navigateurs. Je vois déjà les puristes crier au scandale… je n’avais effectivement jamais utilisé de mécanisme de synchronisation de mot de passe, car cela peut poser des problèmes de confidentialité (stockage : ou et comment ? n’y a t-il pas de master key permettant de déchiffrer tous les mots de passe de tous les utilisateurs ?). Il faudrait en effet faire des analyses plus poussées de ces logiciels permettant la synchronisation de mot de passe pour valider le comportement de l’application et vérifier qu’il n’y a aucune fuite de données possible. Normalement pour LastPass tout est chiffré avec un mot de passe donc rien ne passe en clair sur internet et le fournisseur de service ne stocke que des mots de passes chiffrés. Cela peut être une solution intéressante pour permettre de générer des mots de passe aléatoires et de les retenir via un logiciel tiers attaché au navigateur.

Autre bémol, la mobilité aujourd’hui ne nous permet pas de choisir que des mots de passe aléatoires. Nous avons besoin de retenir certains mot de passe pour les saisir sur notre iPhone ou Android préféré. LastPass permet de faire une synchronisation sur les smartphones mais de manière payante ce qui n’est pas très satisfaisant.

Le SSO peut être une autre solution, mais on n’est confronté au risque que si le mot de passe est divulgué une fois que tous nos comptes ne soient perdus. Pourtant c’est une pratique assez courante, sur certains sites on peut s’authentifier avec notre compte Facebook. Ici encore, je ne pense pas que toutes les études ont été menées sur les avantages et inconvénients de ces solutions. De nombreuses initiatives ont été menées sur le SSO mais aucune n’a vraiment été démocratisée.

Dernière solution qui peut être intéressante, c’est un mécanisme d’authentification forte basée sur un dongle USB ou une carte à puce. Depuis pas mal d’années ces solutions existent mais ont du mal à arriver vers l’utilisateur final. On peut imaginer un provider d’authentification tiers fournissant aussi le service SSO nous permettant de s’authentifier vers n’importe quel site grâce à un dongle USB branché sur une machine. Bien sûr il faudrait un petit code pin pour protéger le dongle USB du vol. Ces solutions sont malheureusement coûteuses en matériel et procédures pour que cela soit mis en place du jour au lendemain. Ce que l’on peut imaginer c’est l’utilisation d’une carte d’identité électronique nous permettant de nous authentifier personnellement comme avec la carte d’identité actuelle, mais aussi de pouvoir l’utiliser pour nous authentifier sur Internet. Il faudrait pour cela oublier l’utilisation de pseudos, mais pour des services critiques cela n’a pas trop d’importance.

Bref le sujet est complexe et je ne l’ai pas vraiment pas approfondi dans ce billet. Nous remarquons que même si différentes solutions existent rien n’est vraiment rassurant pour l’utilisateur de base. Il faudrait certainement passer à autre chose, le mot de passe actuel est certainement obsolète mais c’est peut-être trop coûteux de changer aujourd’hui… Et vous comment gérez-vous vos mots de passe ?