David Madore's WebLog: Les malheurs des mots de passe

Index of all entries / Index de toutes les entréesXML (RSS 1.0) • Recent comments / Commentaires récents

Entry #2367 [older|newer] / Entrée #2367 [précédente|suivante]:

(lundi)

Les malheurs des mots de passe

Les mots de passe sont une calamité de l'informatique. Rectification : l'authentification des humains est une calamité de l'informatique, et les mots de passe sont la moins mauvaise solution connue — et cette solution est quand même pourrie. Les solutions plus technologiques au problème de l'authentification, par exemple avoir un gadget embarqué contenant les clés d'authentification, qu'on déverrouille par un PIN (et qui s'autodétruit ou demande un PUK si on entre quatre PIN incorrects) sont encore inutilisables en pratique, faute de standards, faute de support matériel généralisé, faute de protocoles de communication établis, etc., sans compter les difficultés pratiques accrues en cas de perte, d'oubli ou de casse du gadget. Les idées comme les empreintes digitales sont des conneries : une empreinte digitale n'a rien de secret (on la laisse traîner partout, justement, même sans le vouloir), peut se récupérer à partir d'une photo et se reproduire de manière à tromper les lecteurs, et elle ne peut pas être changée en cas de fuite, bref, ce n'est certainement pas un secret d'authentification, c'est au mieux un identifiant (login). On est donc coincés avec les mots de passe.

Or les mots de passe sont sujets à un nombre incroyable de contraintes contradictoires. Ils doivent être mémorisables par un humain et faciles à taper, et en même temps être essentiellement impossibles à trouver par essais successifs, donc contenir beaucoup de hasard (d'entropie). Ils ne doivent pas être partagés entre différents systèmes, ou en tout cas entre différents niveaux de sécurité, mais en même temps l'humain a une mémoire très limitée et ne peut pas en retenir plus qu'une poignée. Il doit y avoir moyen de les réinitialiser en cas de perte, mais en même temps cette procédure ne doit pas permettre des attaques. Etc. Toutes ces contraintes se contredisent les unes les autres, et il n'est pas surprenant que les gens fassent des choses mauvaises.

Une question, par exemple, est celle du choix entre l'utilisation d'un petit nombre de caractères un peu exotiques (ponctuation et autres ASCII non-alphabétiques) et un grand nombre de caractères moins exotiques (on a tendance à appeler ça une passphrase, par opposition à password dans ce cas). Un célèbre dessin d'xkcd recommande la passphrase (à partir de l'exemple de correct horse battery staple, très facile à mémoriser). Ce dessin oublie pourtant un paramètre majeur : la difficulté à taper. Ma passphrase PGP est constituée de 8 mots choisis parmi un dictionnaire d'environ 100000 mots, pour une entropie de 8×log₂(100000)>128 bits. Eh bien 8 mots aléatoires (donc pas courants du tout) à taper à l'aveugle, c'est extrêmement difficile, il m'est arrivé de devoir m'y reprendre à plus de trente fois avant d'y arriver ; même si j'essaie de taper lentement, lettre par lettre, je me retrouve souvent à ne plus savoir où j'en suis, à être coincé entre ma mémoire procédurale et ma tentative de faire les choses lentement. Bref, ce conseil est catastrophique, au moins pour moi : je ne comprends pas qu'il soit si souvent répété.

La frappe pose ses propres problèmes, même pour des mots de passe courts. Parfois on croit avoir un bon mot de passe et on se rend compte que le taper sur un smartphone est insupportablement pénible parce qu'il y a des caractères qu'il faut chercher à des endroits introuvables sur le clavier. Ou alors le mot de passe est très pénible à taper sur un clavier français, ou au contraire sur un clavier américain. Ou alors il comporte une succession entre un caractère shifté et un caractère non-shifté, et en tapant vite on relâche trop lentement la touche shift (j'ai eu plein de problèmes avec ça). Le problème de la vitesse de frappe est vraiment crucial : je dois taper des mots de passe parfois des dizaines et des dizaines de fois d'affilée pour faire des mises à jour sur plein de machines (je ne veux pas les rendre dépendantes d'une seule machine, ou accessibles depuis une seule clé d'authentification, pour ne pas avoir un point d'attaque unique).

Et que dire des caractères spéciaux ? Il est recommandé d'en mettre beaucoup dans un mot de passe court, mais plein de caractères peuvent poser problème. J'ai eu, ou j'ai eu vent de, toutes sortes de difficultés avec des caractères particuliers. L'espace, par exemple, que beaucoup de gens imaginent impossible dans un mot de passe. Ou encore, le caractère ~ (tilde) en début de mot de passe pose un problème pénible avec ssh, je laisse les geeks essayer de deviner lequel (indice : on tape souvent son mot de passe juste après la touche entrée). Et bien sûr, il est une mauvaise idée d'avoir des caractères non-ASCII dans un mot de passe. Que de contraintes contradictoires !

Je fais souvent aux gens qui ont des problèmes de mémoire la recommandation suivante pour les mots de passe importants : coupez votre mot de passe en deux : mémorisez-en une moitié que vous ne changerez pas, ou pas trop, et qui ne soit pas trop difficile à retenir, et écrivez l'autre moitié sur un morceau de papier dans votre portefeuille, laquelle moitié peut donc contenir des caractères vraiment exotiques, et aussi varier d'une machine à une autre ou d'un système d'authentification à un autre. Ce n'est pas idéal, mais il vaut mieux avoir un mot de passe comme implant^97w:C qu'une seule moitié de ce truc.

Indépendamment de l'idée d'écrire la moitié sur un papier, couper un mot de passe en deux peut être une idée raisonnable : par exemple, avoir un bout commun aux mots de passe de tous les systèmes importants, et un bout qui varie d'un système à l'autre, pour que la connaissance d'un mot de passe ne donne pas trivialement les autres (de nouveau, ce n'est pas parfait, parce que si c'est répandu ça simplifie les attaques — mais rien d'humainement faisable n'est parfait).

On peut aussi recycler les mots de passe : avoir plusieurs niveaux de sécurité, et à chaque fois qu'on change de mot de passe, l'introduire au niveau de sécurité le plus important, et reprendre le précédent de ce niveau-là pour le mettre au niveau un peu moins important, etc. (ou au moins, faire ça avec la partie qu'on retient vraiment, ou la partie commune à différents systèmes). Ça diminue l'effort de mémoire sans trop compromettre la sécurité.

Les mots de passe sans importance, il vaut mieux les confier au navigateur ou les écrire dans un simple fichier protégé contre la lecture, et ne pas chercher à les retenir. Je ne sais combien de sites Web marchands m'obligent à avoir un mot de passe pour un compte chez eux, je déteste ça, je génère un truc aléatoire avec pwgen et je le stocke dans un simple fichier texte. Je me fous pas mal que quelqu'un puisse accéder à mon compte Amazon, ou même mon compte Facebook (je précise que je ne stocke aucun numéro de carte de crédit sur Amazon, il faut être fou pour ça : j'utilise des numéros de carte de crédit à usage unique, et le mot de passe utilisé pour ça ne sert que pour ça et n'est inscrit que dans ma mémoire ; si je l'oublie, ma banque m'en enverra un nouveau par recommandé). Ceci étant, mon PC est accessible en permanence si j'ai besoin de retrouver un mot de passe « faible » : je ne sais pas ce que je ferais si ce n'était pas le cas et que j'avais besoin d'en lire un.

Il existe des gestionnaires de mots de passe qui stockent ces machins pour vous en les chiffrant (déjà, les navigateurs Web ont ça, mais il en existe aussi comme applications séparées) : encore faut-il avoir une bonne clé, donc une bonne passphrase, pour chiffrer les mots de passe eux-mêmes. Et il faut un système qui rende les mots de passe accessibles tout le temps. Ça peut marcher pour certains, mais quand il s'agit de mots de passe qui doivent marcher tout le temps, même quand la machine est dans un mode de secours, il peut y avoir problème.

Bref, que de contraintes impossibles à réconcilier.

La raison qui m'amène à raconter tout ça, c'est qu'aujourd'hui j'ai été obligé de changer de mot de passe : je n'arrivais pas à accéder à un service Web interne de mon école, il a été suggéré que c'était peut-être à cause d'un caractère exotique dans mon mot de passe, j'ai donc essayé de le changer pour tester (en fait, ce n'était pas le problème) ; mais quand j'ai voulu remettre l'ancien, pas moyen : il ne passait pas un des tests à la con pour les mots de passe faibles (je dis à la con, parce que je suis absolument certain que ce mot de passe était très bon selon toute mesure raisonnable de force des mots de passe). Je n'ai donc pas le droit de revenir à mon ancien mot de passe.

Est-ce grave ? Je n'en mourrai pas, mais c'est pénible. Parce que pour des raisons de cohérence (et pour ne pas devoir retenir des choses inutiles en plus), j'ai dû, du coup, changer mon mot de passe sur quinze ordinateurs ou systèmes différents. Dont des portables que j'ai dû retrouver dans mon foutoir chez moi : rien que ça m'a fait perdre de bonnes heures. Les nouveaux mots de passe que j'ai mis sont moins commode à taper (ne serait-ce que parce qu'il est plus long que l'ancien) : ça va me faire perdre plein de temps en plus à chaque fois que je serai sur le clavier tactile pourri de mon smartphone. Et même s'ils étaient aussi bons, d'ici que je m'y habitue, je vais aussi perdre énormément de temps à me tromper. Et ce n'est pas tout : le mot de passe sur les ordinateurs de mon école servait aussi d'authentification wifi (ce qui est d'ailleurs un grave problème de séparation des niveaux de sécurité[#]), par exemple sur le système Eduroam — tout ça est donc aussi à re-rentrer, et le plus souvent on ne peut pas juste re-rentrer le mot de passe, il faut aussi re-rentrer tout un tas de paramètres barbares avec des noms comme identité d'itinérance et, pour commencer, trouver à quel endroit il faut entrer ces choses-là.

Je suis donc assez furieux, et je me défoule en rantant sur mon blog.

[#] Voici le problème : je veux que mon téléphone mobile puisse se connecter au réseau Wifi quand je suis dans mon école. D'un autre côté, je ne veux pas entrer dans mon téléphone mobile, qui est relativement facilement volable, le mot de passe qui permet de lire mes mails (professionnels). D'où contradiction, si c'est le même mot de passe qui permet de lire mes mails et de me connecter au Wifi. Ou alors il faudrait chiffrer mon téléphone : mais dans ce cas, il demandera un PIN à chaque fois que je voudrai m'en servir, ce qui d'une part est excessivement pénible (encore, si j'avais des choses à protéger, ce serait une chose, mais je fais justement attention à ne rien stocker de vraiment confidentiel sur mon téléphone, précisément pour ne pas avoir à le chiffrer : ce serait idiot d'avoir à le faire uniquement pour le mot de passe du Wifi de mon école !), et d'autre part cela voudrait dire que des tiers ne pourraient pas s'en servir pour contacter mes proches s'il m'arrive un accident, et je trouve ça inacceptable. Que de tracas !

↑Entry #2367 [older|newer] / ↑Entrée #2367 [précédente|suivante]

Recent entries / Entrées récentesIndex of all entries / Index de toutes les entrées