Les bons mots de passe…

jtr-crossword-10-donation_design Donner des conseils en matière de mot de passe, c'est délicat. Ça implique en général de croire un minimum dans le système de protection par mot de passe. Et comme toute la sécurité en général, le mot de passe est un compromis, et comme tout compromis, il est donc faillible. Je crois personnellement de moins en moins au principe du mot de passe pour protéger des informations vraiment vitales. Sans doute suis-je encouragé dans cette impression par des démonstrations récentes de casse de mots de passe complexes-mais-humainement-utilisables.
Je ne prendrai qu'un exemple : des mots de passe aussi complexes en apparence que "momof3g8kids" ou "qeadzcwrsfxv1331" peuvent être cassés en quelques heures.
En fait, dès l'instant où vous enregistrez un mot de passe sur un site web vous n'avez aucune maitrise (ni information en général) sur la qualité du stockage de ce mot de passe. Souvent, mais pas toujours, le mot de passe est chiffré, ou hashé. Mais rien ne vous garantit que cette protection est suffisante. Compte tenu de la puissance des machines et logiciels actuels, je doute sincèrement qu'elle le soit.
La probabilité pour qu'on casse votre mot de passe par des tentatives d'authentification successives sur votre compte hotmail est extrêmement faible. Par contre, celle qu'un pirate vole la base de mot de passe du forum d'équitation auquel vous êtes inscrit n'est pas négligeable (piratage d'un serveur de jeu en ligne de RockYou : plus de 32 millions de mots de passe aspirés - stockés en clair...).
Une fois la base de mots de passe dérobée, le pirate n'a plus qu'à s'y attaquer, si ils ne sont pas directement stockés en clair bien sûr. Quelques heures après en général, il aura cassé un échantillon non négligeable de mots de passe, dont chacun est associé à des données intéressantes telles que login, adresse email, etc.
À partir de là, le pirate va pouvoir tester ces mots de passe / login / emails pour se connecter à des sites comme facebook, gmail, hotmail, apple store, etc.
En 2010 je conseillais d'utiliser des mots de passe par type de risques, ce qui évitait d'en avoir un différent pour chaque site tout en cloisonnant un peu les choses. Depuis, je suis un peu plus désabusé. Avoir une grosse poignée de bons mots de passe ne semble plus suffisant. Je me garderai aussi à présent de donner quelque conseil que ce soit tant le problème a pris une ampleur hors de tout contrôle (PRISM, etc.).

Voici ce que je fais depuis quelques temps, vous n'êtes pas obligé de faire pareil :

- une adresse email différente pour chaque site sur le quel je m'inscris
- un mot de passe différent à chaque fois
- un mot de passe long, aléatoire et donc impossible à retenir

Le tout est stocké dans une application locale de type keychain. Ce trousseau n'est pas sauvegardé dans le cloud (mais il est tout de même sauvegardé, hein). Le trousseau est protégé par un mot de passe fiable que j'ai dans la tête et qui n'est pas utilisé ailleurs.

Mes mots de passe ressemblent à ça désormais :

xwMxTgX7g@*Gd&BW31dlc`ME<
j?UI?@CQe`=p5D(-w<q{FUOWb
&X52&/*.U4Otm/rH?oT-VhTIn
$kUT5_XP\ncw9cYM_\8NHbIm*
...

Des chaînes aléatoires de 25 caractères, choisis parmi 93 lettres, chiffres et symboles. Autant dire qu'avec ça, j'ai bon espoir que mon mot de passe se trouve dans les derniers à être craqués lors d'une attaque. En prime comme je n'utilise chacun que pour un site unique, la valeur ajoutée de la casse de ce mot de passe est très faible.

Si vous êtes sur BSD (Mac OS X, FreeBSD…) vous pouvez utiliser la commande jot pour créer autant de mots de passe que vous souhaitez :

jot -r -c 200 33 126 | rs -g0 0 25

-r : random
-c 200 : 200 caractères
33 126 : du "!" au "~" dans la table ASCII (man ascii)
rs -g0 0 25 : re-formate en ligne de 25 caractères

Avec ça, je vais bien tenir 2 ou 3 ans avant de devoir allonger les chaînes…

À lire aussi :

3 comments

  1. Salut Pat :)

    Merci pour cet article. Est-ce que la longueur de la chaîne n'est finalement pas le moyen le plus sûr d'être difficile à craquer ? Par exemple "1supermot2passequemagrandmereellememepourraitretenirfacilementsielleavaitunordinateur" ? :)

  2. Salut Romain ;)

    La longueur est bien sûr un élément capital, mais pas seulement. Il faut réellement mettre un maximum d'aléa. L'exemple que tu proposes est mauvais finalement, car l'entropie est extrêmement faible : que des mots du dictionnaire, une phrase grammaticalement correcte, des substitutions lettre/chiffre triviales.
    Il faut savoir qu'actuellement les techniques de casse de mots de passe deviennent de plus en plus intelligentes. On n'est plus dans de la force brute vulgaire, mais on est dans des algo qui travaillent sur les associations de mots, sur la concaténation de phrases… Ils enchainent les tests en commençant par les combinaisons les plus probables et en terminant avec les combinaisons les moins probables.
    À partir de là, un mot de passe grammaticalement correct est sensiblement moins bon qu'un mot de passe de même longueur grammaticalement incorrect, juste à cause du fait que l'enchaînement des mots ou des déclinaisons de mots est prévisible dans une grammaire correcte.

    Et si tu te dis que la grammaire française est étrangère à la grande majorité des pirates, sache juste que les listes de mots et phrases utilisés par les logiciels de casse incluent tout ou partie de Wikipedia dans plusieurs langues. Même des listes bien plus courtes contiennent des termes et phrases en japonais, chinois et russe.

    Les gens de Google ont raison, le mot de passe est mort. Le gros souci, c'est que personne ne sait par quoi le remplacer…

  3. Je me disais surtout que la majorité des gens ont du mal à faire une phrase grammaticalement correcte... mais je ne suis pas sûr que ce soit rassurant :) Merci pour cette mise au point.

    J'ai pensé un temps à faire ce que tu as mis en place, mais la flemme a eu raison de moi. J'ai simplement une adresse bidon pour toutes mes interactions web, et une floppée de mots de passe interchangeables.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>