Inglorious Astar

Dessine moi un mot de passe

Comment être fier de son mot de passe

Public cible :
Grand public
-
Temps de lecture :
15
min

Cet article fait suite à la première partie traitant des erreurs à éviter.
Voyons maintenant ce qu'il est souhaitable de mettre en place pour sécuriser sa vie numérique.

Échauffement

La compréhension de cet article sera facilitée si vous maîtrisez les notions d de mot de passe et de "sel" (salt). Si ce n'est pas le cas, je vous invite à lire ceci.

Avant tout, expliquons le coeur du problème: le triangle d'incompatibilité

Triangle d'incompatibilité
  • Si vous arrivez à construire un mot de passe complexe et imprédictible, il y a peu de chances que vous arriviez à le mémoriser et vous risquez donc de le noter quelque part où il peut fuiter
  • "billevesée" est simple à mémoriser. Personne n'aurait parié que vous l'utilisiez, pourtant un pirate qui attaque par dictionnaire le trouvera assez rapidement (en moins d'une journée)
  • Pour être mémorable et complexe, le mot de passe utilisera une racine prononçable (ici David) et ça c'est prédictible

Et donc comment faire ?

Pourrir la vie des pirates

Ce n’est pas glorieux comme solution, mais vous pouvez échapper à nombre d’attaques de masse sur les mots de passe en utilisant des caractères non ASCII.
Pour rappel, voici les caractères ASCII :

0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"# $%&'()*+,-./:;<=>?@[\]^_`{|}~

La plupart des pirates itèrent sur cet ensemble de caractères. Si votre mot de passe contient des choses comme €çùå€çþýûîô¶Âøʱæ𹩮߬ (je vous laisse explorer la richesse de alt gr) croyez moi que ça va moins rigoler au pays de Barbe Noire.

Inconvénient : si vous êtes dans un autre pays et que vous devez taper votre mot de passe sur un clavier étranger, vous pouvez être bloqué.

Un mot de passe pour les gouverner tous et dans les ténèbres les lier

S’il n’y avait qu’une leçon à retenir ce serait celle-ci:

Utilisez un gestionnaire de mot de passe !
(aussi appelé coffre-fort numérique, vault, ...)

Il s’agit d’un programme qui enregistre tous vos mots de passe dans une liste. Pour accéder à cette liste, il faut un “super” mot de passe que l’on appelle le mot de passe maître.
Vous vous retrouvez alors avec un seul sésame qui déverrouille tous les autres.

L’énorme intérêt est que vous n’avez plus qu’à vous souvenir d’un seul mot de passe.
L’inconvénient c’est qu’il doit être solide de chez solide (voir le titre suivant).

Nous prendrons ici l’exemple de Bitwarden, l’un des plus perfectionnés et avec l’avantage d’être totalement open source.
Il se présente sous la forme d’une extension dans le navigateur mais aussi d’une application mobile, d’un client en ligne de commande, d’un programme à installer, ... vous avez le choix.
Vous pouvez utiliser le SaaS que propose Bitwarden ou installer votre propre instance en une commande docker de moins de 300 caractères pour être totalement maître de vos données.

Le comportement d'un gestionnaire de mot de passe est le suivant: lorsqu’il détectera que vous vous connectez à un site, il vous proposera d’enregistrer le mot de passe que vous venez de renseigner. Vous n'avez donc pas à vous en souvenir.

bitwarden a détecté que vous vous connectez sur un site

La prochaine fois que vous vous rendrez sur ce site, il vous suffira de donner votre mot de passe maître et le gestionnaire remplira automatiquement pour vous les champs login et mot de passe avec ce qu’il avait enregistré.

Cela fonctionne même sur mobile :

Step 1
Step 2
Step 3

Fini donc avec la plaie du mot de passe oublié :

Le password a changé. Je le vois dans l’obs, je le ressens dans twitter, je le sens dans l'airbnb. Beaucoup de ce qui existait jadis est perdu, car aucun de ceux qui vivent aujourd’hui ne s’en souviennent.

Étape encore plus cruciale, lorsque vous vous inscrivez sur un nouveau site, les gestionnaires vous proposent une fonction de génération de mot de passe.
En effet, vu que ce n’est pas à vous de les mémoriser, autant utiliser des mots de passe complètement horribles pour les pirates. Allez-y gaiement, générez des mots de passe totalement aléatoires, de 20 caractères avec des caractères spéciaux.

Pass generated

L’avantage est qu’avec ce degré de sécurité, vous pouvez quasiment vous affranchir de la règle qui dit de modifier vos mots de passe régulièrement.

En effet, si le site où vous êtes inscrit se fait voler sa base d’empreintes de mots de passe, les pirates peuvent lancer des attaques “offline” à plusieurs milliards d’essais par seconde au lieu de plusieurs milliers. Mais à ce niveau de force de votre mot de passe, qu'importe, ils sont à quelques univers d’arriver à leur fin. Vous avoir profilé ne leur sera d’aucune utilité puisque le gestionnaire l’a généré aléatoirement.

Imaginons un cas moins favorable où le site stockait les mots de passe en clair. Effectivement le pirate peut accéder frauduleusement à vos données sur ce site, mais comme vous ne réutilisez ce mot de passe nul part ailleurs (car le gestionnaire en génère un unique par site), le pirate ne peut pas faire le tour du propriétaire de votre vie numérique.

Il pourrait y avoir une faiblesse si l’attaquant peut connaître la date précise où vous vous êtes inscrit sur le site qu’il vise (parfois on peut lire “Membre inscrit le 21/08/2016 à 17:02”) et que votre gestionnaire de mot de passe utilise de l’aléa basé sur l’horloge (ce que ne fait pas Bitwarden heureusement de ce que j'ai vu dans le code source).

J'ai utilisé l'expression "quasiment s'affranchir de cette règle" car si les pirates obtiennent l'accès à un compte, même si ça ne menace pas le reste de votre vie numérique, ils peuvent toujours vous espionner sur ce compte-là.
Donc changer les mots de passe régulièrement fera sauter leur accès frauduleux.

Des gestionnaires de mots de passe permettent de changer automatiquement les mots de passe sur les sites les plus courants (facebook, twitter, etc.) à intervalle régulier (pas Bitwarden malheureusement).
D'autres (dont Bitwarden) peuvent vous avertir lorsqu'un de vos mots de passe a fuité dans la nature suite à un piratage de site.

Utiliser des passe-phrases

Bien, maintenant que l'on a plus qu'un seul mot de passe maître, il faut s'assurer qu'il soit hors de portée des pirates.

Quelques conseils pour le créer :

  • Ne le notez nul part (il n’y en a qu’un seul à mémoriser, normalement votre cerveau en est capable)
  • Faites en sorte qu’il soit vraiment long, 15 caractères minimum, lâchez-vous
  • Évitez qu’il ne soit construit qu’à partir d’une seule racine (vous ne serez jamais assez original), mettez en au moins 3 ou 4
  • Veillez à ce qu’il n’y ait pas un rapport évident avec vous ou avec le contexte où il est utilisé
  • Évitez qu'un pirate le retrouve en 2 heures.

Pour ce dernier point, nous allons explorer le principe des passe-phrases.
Une passe-phrase est une suite de mots accolés comme JambonSurLaTable, CoursVoleEtMeVenge, SangokuHotelHypnose, etc.
Mais dans une bonne passe-phrase les mots choisis n'ont pas de rapport entre eux. Sinon l'entropie diminue drastiquement.
En effet, si vous choisissez une vraie phrase, les règles de syntaxe du français éliminent du travail pour l'attaquant:

  • Une phrase française commencera souvent par "Le, Les, Des, Ma, Je, etc.", le pirate peut donc miser statistiquement la dessus.
  • Le mot "Je" ne sera quasiment jamais suivi de "extrêmement", de "fadaise", etc. mais plutôt d'un verbe conjugué, ce qui réduit le nombre de mots à tester

L'ANSSI proposait notamment de construire des passe-phrase d'après le premier caractère de chaque mot d'une phrase:
Je suis très content car il fait beau aujourd'hui -> jstccifbah
Ce n'est pas spécialement une bonne idée dans la mesure où, comme nous l'avons dit, l'entropie n'est pas suffisamment importante à cause de la syntaxe française. Mais, de surcroît, nous n'utiliserons probablement que des phrases "connues", du style des citations inspirantes (vous savez, ce fléau qui ravage Facebook) :

Lincoln meme

Le principe de Kerckhoffs nous dirait de postuler que le pirate sait que nous avons suivi cette méthode. Or, en testant des citations connues, le pirate aura de bonnes chances de percer de nombreuses passe-phrases.

De la même manière, évitez à tout prix d'utiliser le nom du site dans votre passe-phrase. pas de FacebookLetMeIn ou MonPasswordTwitter.

Si les mots sont suffisamment "aléatoires" entre eux, c'est très robuste aujourd'hui, c'est même de loin la meilleure solution.
Mais ce même principe de Kerckhoffs nous dit de postuler que le pirate sait que nous avons utilisé 3 ou 4 mots collés. Si dans le futur tout le monde se met à utiliser des passe-phrases, ce sera d'autant plus crédible.
Dès lors la robustesse de notre passe-phrase prend comme valeur C le nombre de mots disponibles et L devient 3 ou 4 (les mots deviennent notre alphabet et le nombre de mot devient la longueur du mot de passe).

Si nous choisissons 4 mots courants (un dictionnaire français usuel contient environ 32 000 mots), la complexité de notre mot de passe est de 32 0004 soit 1 048 576 000 000 000 000 (environ 4 mois à la vitesse de 100 milliards d'essais par seconde). Ce n'est pas satisfaisant.

Obtenir un mot de passe à l'abri de cette attaque par dictionnaire nécessite donc d'augmenter la taille du dictionnaire que doit utiliser l'adversaire (puisque augmenter le nombre de mots deviendrait difficile pour notre mémoire).
Si vous utilisez des noms propres ou des mots étrangers, le dictionnaire français ne sera plus suffisant pour craquer votre passe-phrase. Obliger l'adversaire à employer un dictionnaire d'au moins 100 000 mots lui demande déjà d'attendre 3 millions d'années (au lieu de 4 mois) pour trouver votre passe-phrase.
Donc n'hésitez pas à incorporer de l'exotisme dans vos choix. SaucissonPierreDuelFragrance est moins robuste que PlayaGuignolRugirSkywalker.

Une autre solution, peu élégante, consiste à incorporer quelques dérivés dans les mots: insérer des chiffres à la place ou en plus des lettres, rajouter un caractère de ponctuation par-ci par-là, etc.
Bref tout ce que j'avais dit qui était prédictible et donc pas bien... et bien dans ce cas-ci c'est moins pathétique. En effet, si, pour chaque mot, le pirate doit tester 10 variantes en l33t et/ou 5 variantes avec des caractères spéciaux, on fait passer un dictionnaire de 32 000 mots à facilement plus de 200 000. Ce qui est bien au delà de ses capacités.

Une protection très utile également est celle qui consiste à ce que votre compte soit verrouillé temporairement si quelqu'un effectue trop de tentatives infructueuses de connexion. Ainsi votre mot de passe maître ne peut pas facilement être attaqué à distance. Mais c'est une fonction qui dépend rarement de vous.

En conclusion, utiliser une passe-phrase composée de 3 ou 4 mots n'ayant aucun rapport entre eux est la meilleure solution, de très très loin, aujourd'hui et pour les années qui viennent (sauf révolution technologique).
Quand tout le monde utilisera des passe-phrases, il sera temps de se reposer la question.

Distinguer les usages

Vous pouvez raisonnablement utiliser deux mots de passe différents en tout pour obtenir un compromis acceptable entre sécurité et simplicité.

Un premier pour le compte utilisateur normal (celui avec lequel vous ouvrez votre session) et votre compte email en ligne. L'accès à votre compte email permet généralement de compromettre 90% de votre vie numérique puisque le pirate peut utiliser la fonction d'oubli du mot de passe sur les sites où vous êtes inscrits (à l'exception des banques en ligne et quelques sites administratifs). Il est donc très sensible, mais il pourrait être compromis si GMail, Yahoo ou Hotmail se fait pirater. Donc on ne va pas utiliser ce mot de passe pour les accès les plus critiques non plus.

Un second mot de passe pour votre gestionnaire de mot de passe (le mot de passe maître) et pour votre session administrateur, si vous en avez une. Ce mot de passe là n'est donc enregistré nulle part sur Internet (personne ne peut vous le voler en piratant le site de dominos pizza).

Si vous avez un système d'exploitation qui chiffre le disque, et je vous le recommande fortement, le mot de passe de l'utilisateur en sera aussi souvent la clé (sur Windows c'est comme ça). Si vous avez le choix de mettre le mot de passe que vous voulez, utilisez plutôt le second.

En milieu professionnel, le mot de passe de l'utilisateur, et du compte administrateur, sont aussi stockés, sous forme d'empreinte, sur le contrôleur du domaine. S'il se fait pirater, tout vos mots de passe sont compromis. Mais bon si un contrôleur de domaine est compromis, de toute façon, tout est déjà compromis. Et c'est le boulot des administrateurs de s'assurer que ce serveur est protégé, vous en tant qu'utilisateur ce n'est pas de votre responsabilité.

A nos amis développeurs

Si vous vous êtes égarés sur cet article entre deux commitstrip, vous êtes peu être restés sur votre faim.
Quand on parle de mots de passe, il y a ce qu'on peut faire nous en tant qu'utilisateurs mais il y a surtout ce que peuvent faire les développeurs des sites Web sur lesquels nous n'avons pas de prise.

Ami développeur, si tu cherches des idées pour pouvoir mépriser tes collègues sur leur gestion des mots de passe, la bible est évidemment le cheat sheet de l'OWASP.
Je serai étonné que tu n'y découvres pas au moins une ou deux recommandations que tu n'appliques pas encore.

La règle la plus importante est évidemment "Design password storage assuming eventual compromise".

Cela passe notamment par l'utilisation de sels pour éviter les cas un peu scandaleux ou les mots de passe identiques sont stockés par des empreintes identiques :

XKCD

Mais aussi de choses plus fines comme l'utilisation d'empreintes Scrypt pour rendre le calcul d'une empreinte assez coûteux pour gêner les pirates, etc.

En un mot

Un bon mot de passe c'est :

  • long
  • imprédictible (dans le sens où personne d'autre dans le monde n'a le même que vous. Et dans le sens où vous connaître n'aide pas à le deviner)

C'est tout ! Ensuite vous vous débrouillez comme vous voulez, tant que vous n'expliquez pas à tout le monde comment vous l'avez construit (ce n'est plus très imprédictible sinon)

David SORIA
-
2019-04-22

Nos autres articles