Votre mot de passe

On ne va pas épiloguer pendant 150 ans, vous avez besoin :

  • De mots de passe très forts (à partir de 128 bits), un par site (sauf, éventuellement, les sites d’intérêt secondaire pour lesquels le fait qu’un tier accède à votre compte n’a pas d’importance) ;
  • De mots de passe que vous pouvez mémoriser très facilement [1] (sans avoir à les noter en clair dans le fameux motsdepasse.txt que vous avez sauvegardé sur le bureau de votre ordinateur).

Il va de soi que ces deux objectifs sont contradictoires, raison pour laquelle vous utilisez sans doute des mots de passe beaucoup trop faciles à casser par la force brute et/ou les stockez de façon peu ou pas sécurisée.

Parametrically Hashed Password

Raison pour laquelle nous vous proposons ci-dessous une méthode simple (PHP) qui vous permettra de créer des mots de passe de nature à décourager les hackers les plus opiniâtres et les mieux équipés tout en restant extrêmes simples à mémoriser.

Vous avez besoin de deux choses :

  • Primo, d’un entier naturel (strictement positif) que nous allons, faute de meilleure idée, appeler le biais. Ça peut être absolument n’importe quel entier (1, 42, votre date de naissance au format YYYYMMDD ou le code PIN de votre carte bancaire [2]…) : la seule contrainte c’est que vous devez pouvoir vous en souvenir très facilement. La bonne nouvelle, c’est que vous pouvez utiliser le même pour tous vos mots de passe ;
  • Deuxio, d’une chaine de caractères facile à mémoriser et à saisir qui doit simplement être différente pour chacun de vos comptes (i.e. une sorte de mot de passe très simple) que nous allons appeler la clé.

Par exemple, supposez (ce n’est pas le cas) que notre biais soit 42 et que, pour notre compte Twitter, nous ayons décidé d’utiliser la clé « @SciamVox » (qui est évidemment un très mauvais mot de passe). Entrez ça dans le formulaire ci-dessous et cliquez sur « Générer ».


Votre mot de passe est :
...

Notre mot de passe est donc « 2xiK(/6ky}!R9l;,o]A615x@IaB~fs-j » ; 32 caractères sélectionnés parmi un set de 90 caractères possibles, ça nous fait $90^{32}$ arrangements possibles (environ 200 bits) : good luck with that, hackers !

Explications

L’idée de base, c’est que votre compte peut être exposé à deux types d’attaques. La plus classique, c’est ce qui arrive quand la base de données de l’application/site auquel vous souhaitez vous connecter a été compromise : l’assaillant dispose de votre login et de l’emprunte (MD5, SHA-1..) de votre mot de passe et va utiliser la force brute pour le craquer.

Dans ce cas, il est sans doute raisonnable de considérer qu’aucun mot de passe n’est absolument inviolable et de résonner en termes de coût. Concrètement : vous avez besoin d’un mot de passe tellement monstrueux que votre assaillant aura tout intérêt à passer par d’autres méthodes [3] que les algorithmes existants pour le découvrir.

L’approche proposée ici, c’est une fonction de hachage (SHA-256) à ceci près que votre mot de passe n’est pas constitué de la séquence [a-f, A-F, 0-9] (soit 22 caractères possibles) mais de (i) toutes les lettres de l’alphabet latin moderne en minuscules (26), (ii) les mêmes en majuscules (26), (iii) les chiffres de 0 à 9 (10) et (iv) 28 « caractères spéciaux » — soit un total de 90 symboles différents.

Le résultat, même avec un simple mot ou même un seul symbole, c’est une chaine de 32 caractères qui a le goût, l’odeur et le saveur de l’aléa.

Reste qu’évidemment, la transformation de vos clés en mots de passe n’est pas aléatoire mais purement déterministe. C’est-à-dire qu’un assaillant (humain) qui, par hypothèse, saurait que vous avez utilisé cette approche et devinerait votre clé n’aurait aucun mal à découvrir votre mot de passe.

D’où le biais : sa fonction est simplement de mélanger le vecteur de caractères possibles de telle sorte que, même dans le cas susmentionné, il soit pratiquement impossible à quiconque de reproduire le même « hash » (sauf, évidemment, si vous rendez publique cette information).

Il va de soi que notre algorithme n’enregistre absolument rien (vous trouverez le code ci-dessous) et que, dans l’hypothèse ou cette affirmation ne suffit pas à vous rassurer, vous pouvez très facilement le copier sur une page HTML stockée en local (et, puisque nous y sommes, modifier quelques paramètres). La seule chose importante, c’est que vous devez pouvoir y accéder lorsque vous aurez besoin de retrouver votre mot de passe — le reste est accessoire.

Code

Voici le code :

---
[1] Vous devriez, en principe, utiliser une base de données sécurisée comme KeePass pour stocker vos mots de passe. Reste qu’un mot de passe stocké dans votre mémoire ne saurait être plus en sécurité ailleurs et qu’il existe de nombreuses circonstances dans lesquelles vous pourriez ne plus avoir accès à votre base.
[2] Utiliser le code PIN de votre carte bancaire est, de notre point de vue, une très bonne idée mais n’hésitez pas à innover.
[3] Et nous nous refusons à imaginer ce que pourraient être lesdites méthodes.

1 commentaire:

  1. Bonne idée. à note qu'il n'y a pas besoin d'avoir des signes compliqué, et que des mots dans le généré suffisent, mais il en faut plus , genre 1.5 bits par lettre... ca fait 80 caractères, mais plus facile à saisir... je pense à BIP39, mais adapté à chacun... Changez le dictionnaire selon vos go^ts linguistiques, votre métier, votre épouse...

    RépondreSupprimer

Votre mot de passe

On ne va pas épiloguer pendant 150 ans, vous avez besoin : De mots de passe très forts (à partir de 128 bits), un par site (sauf, éventuel...