Et si on responsabilisait tout le monde sur les mots de passe ?

Et si on responsabilisait tout le monde sur les mots de passe ?
Photo by Mackenzie Marco / Unsplash

Je vois souvent passer des communications indiquant qu'il faut faire des mots de passe avec beaucoup de caractères, car cela les sécurise, avec de jolis graphes qui expliquent qu'il ne faut que quelques secondes pour casser un mot de passe à 8 caractères.

C'est à la fois vrai et faux.

Aujourd'hui, je vais vous partager mon avis sur ce sujet.

Avoir un mot de passe fort est important...

...mais ce n'est pas la seule chose importante

Il est évident qu'il est indispensable d'avoir un mot de passe fort pour sécuriser ses différents accès.

Par mot de passe fort, j'entends :

  • Minimum 12 caractères
  • Mélange de majuscules et minuscule
  • Présence de chiffres et caractères spéciaux
  • Unique pour chaque site

J'ajouterais aussi qu'il est important que ce mot de passe ne reprenne pas quelques informations "personnelles", telle que :

  • Nom des animaux de compagnie
  • Date de naissance
  • Prénom des enfants, conjoint etc.

Pourquoi? Car cela permet de vous protéger des attaques par dictionnaire.

En effet, l'un des modèles d'attaque courant consiste à se renseigner un minimum sur sa cible, avec les réseaux sociaux par exemple, pour construire un dictionnaire, permettant de créer des combinaisons de mot de passe possibles.

A chaque site son mot de passe

Plus important encore que la complexité du mot de passe, son unicité est un critère primordial.

Pourquoi ? Tout simplement parce que des sites se font pirater tous les jours et toutes les entreprises sont ciblées.

L'intérêt est donc en cas de compromission d'un site de réduire énormément le blast radius et éviter que l'ensemble de vos comptes soit compromis en un coup.

A ce titre, je vous invite fortement à vous inscrire sur HaveIBeenPwned.com afin de voir si votre adresse mail s'est retrouvée dans un leak.

Exploiter autant que possible l'authentification à facteur multiple

L'authentification à facteur multiple, ou MFA (Multiple Factor Authentication), permet de complexifier une attaque en demandant une information supplémentaire à l'utilisateur pour l'identifier.

Cela peut être, sans être exhaustif :

  • Une clé physique, comme les célèbres YubiKeys
  • Un code unique, avec des applications comme Authy, ou un générateur physique
  • Un code envoyé par mail, SMS, appel téléphonique, etc.

Responsabilité du développement

Limiter la communication à indiquer qu'il faut créer un mot de passe sécurisé est insuffisant.

Il est aussi indispensable de mettre en place de bonne pratiques de développement, petit tour d'horizon.

Exponential backoff

Derrière ce terme barbare se cache l'un des concept qu'on retrouve souvent dans les webservices.

L'idée ici est qu'a chaque mot de passe erronné, on interdit à l'utilisateur de se connecter pendant un certain laps de temps, de plus en plus grand.

C'est ce que font la plupart des systèmes Linux par exemple.

Cela permet de réduire grandement la facilité avec laquelle on va pouvoir "brute force" un compte, c'est à dire tenter de casser le mot de passe en essayant beaucoup de combinaisons.

Ainsi, même avec un mot de passe plus faible, les possibilités restent réduites.

Toutefois, pour que ce modèle soit efficace, il est important de prendre en compte les points suivants :

  • Toutes les attaques ne ciblent pas forcément un seul compte, certains attaquant vont cibler une liste de compte et tourner entre les comptes pour attaquer et être moins visible, sur ce point, on filtre souvent en exploitant les adresses IP, en interdisant les tentatives d'affilées depuis la même adresse.
  • Empêcher les tentatives d'affillée sur le même compte, même depuis plusieurs IP. Cela permet par exemple de se protéger contre les attaques effectuées par des botnets.

Ces protections vont être pertinentes avec des modèles d'attaques courants.

De plus, il faut aussi se méfier des attaques slow rate. Ces attaques vont utiliser les mêmes modèles que précédemment, mais avec une fréquence faible, pour essayer de passer sous les radars. D'où l'importance de bien surveiller les tentatives d'accès!

On peut aussi aller plus loin en implémentant en plus une solution antibot, comme j'en ai parlé par le passé :

La difficulté de la lutte antibot sur le web
Les robots, appelés plus couramment bots, pullulent aujourd’hui sur Internet. Il représente une part du trafic Internet global non négligeable. Aujourd’hui, je vous propose de découvrir le monde des bots de l’Internet. Des bots… mais pour quoi faire ?La première question que l’on pourrait se poser

Ne pas donner trop d'informations en cas d'erreur

Je l'ai déjà dit : l'information, c'est le pouvoir.

Même si un utilisateur légitime sera heureux de savoir s'il s'est trompé sur son login, son mot de passe, si son compte est verrouillé etc., cela reste une informations pertinente pour un attaquant, lui permettant de savoir comment orienter son attaque.

L'un des exemples est d'utiliser les formulaires de login pour faire de l'énumération d'adresse mail, quand le formulaire réponds gentiment "je ne connais pas ton adresse mail".

Ainsi, quelque soit le problème d'authentification, il est conseillé de toujours répondre le même message, le plus générique possible.

Ajouter du sel à la recette

La sécurisation des mots de passes passe aussi par leur stockage.

En cas de compromission d'une base de donnée, le but est de complexifier autant que possible le boulot du hacker.

Pour cela, la technique la plus commune (et simple) reste le basique, mais efficace salt + hash.

Cette technique consiste à ajouter un chaine de caractères en supplément du mot de passe, si possible unique pour chaque utiliteur.

Cela permet d'avoir des hash moins facilement reversible (par dictionnaire).

Auth0 a publié un bon article sur le sujet, que je vous invite à lire si vous voulez en savoir plus.

Adding Salt to Hashing: A Better Way to Store Passwords
A salt is added to the hashing process to force their uniqueness, increase their complexity without increasing user requirements, and to ...

Pour finir

Les points que je cite ici ne sont pas exhaustifs, mais consiste pour moi dans le socle solide qui permet de sécuriser un peu plus vos comptes.

La meilleure manière de générer un mot de passe unique et sécurisé pour chaque site reste l'utilisation d'un password manager, comme keepass, bitwarden, etc.

Pour ma part, j'exploite bitwarden, qui me permet de générer et stocker des mots de passe forts et uniques, comme vous pouvez le voir ci dessous.

N'hésitez pas à rajouter en commentaires les points qui vous semblent indispensables.