Directives

Stockage des mots de passe

Si votre application authentifie des utilisateurs, il est fort probable qu'elle doive également gérer des mots de passe.

La gestion des mots de passe des utilisateurs est une responsabilité majeure, et les traiter de manière appropriée l'est encore plus.

Il est difficile d'imaginer pire scénario qu'une application attaquée dont les mots de passe des utilisateurs se retrouvent exposés sur Internet à la vue de tous. Rien que d'y penser, nous en frissonnons. Alors, comment stocker les mots de passe en toute sécurité et selon les meilleures pratiques ? Examinons quelques méthodes.

Chiffrement ou hachage

À première vue, le chiffrement peut sembler être une solution décente pour le stockage sécurisé des mots de passe. Cependant, s'y fier aveuglément peut s'avérer problématique.

Le chiffrement est intrinsèquement une fonction bidirectionnelle, ce qui signifie naturellement qu'un mot de passe peut être chiffré, mais aussi déchiffré. C'est parfaitement logique, n'est-ce pas ? Sinon, comment pourriez-vous vérifier si le mot de passe saisi par un utilisateur correspond à celui stocké dans la base de données ?

Par conséquent, la possibilité de déchiffrer des mots de passe constitue une vulnérabilité importante. Si quelqu'un compromet un serveur et obtient le texte chiffré, il y a de fortes chances qu'il puisse également mettre la main sur les clés nécessaires pour déchiffrer ces mots de passe.

Le hachage, en revanche, est bien mieux adapté aux mots de passe en raison de sa nature unidirectionnelle. Une fois qu'une donnée est hachée, il n'existe aucune fonction permettant de transformer directement le résultat en texte brut original. Cette propriété rend les fonctions de hachage particulièrement adaptées à la protection des mots de passe.

Tous les hachages ne se valent pas

Une fois que vous avez opté pour le hachage des mots de passe, il ne suffit pas d'appliquer une fonction de hachage et de considérer le travail comme terminé.

Il existe de nombreux types de hachages, dont la plupart ne sont pas adaptés au stockage des mots de passe, compte tenu des avancées technologiques de la dernière décennie.

Comme mentionné précédemment, les hachages ne peuvent pas être inversés car il s'agit de fonctions unidirectionnelles. Bien que cela soit techniquement vrai, le hachage est également déterministe, ce qui signifie qu'il est vulnérable aux attaques par force brute. Avec suffisamment de temps et de ressources, un attaquant peut potentiellement retrouver le texte brut original.

C'est pourquoi nous divisons les fonctions de hachage en deux catégories :

  • Hachages cryptographiques
  • Hachages de mots de passe
Feature Cryptographic hash Password hash
Speed Very fast Intentionally slow
Work factor can be adjusted No Yes

Une caractéristique clé des hachages de mots de passe est qu'ils possèdent un « facteur de travail » (sous forme d'entier unique ou de paramètres multiples) qui définit l'effort nécessaire pour calculer le hachage.

À mesure que les processeurs et les cartes graphiques gagnent en puissance, il devient plus facile de mener des attaques par force brute massives sur du matériel grand public, ce qui signifie qu'un hachage peut devenir de moins en moins sécurisé avec le temps.

Le « facteur de travail » permet de garantir que les hachages sont stockés conformément aux standards actuels. À mesure que le matériel devient plus rapide, vous augmentez ce facteur pour garantir que le hachage nécessite toujours autant de temps et d'efforts pour être déchiffré. Prenons l'exemple d'un temps de calcul de 100 ms sur le matériel actuel.

Cela signifie qu'en pratique, le facteur de travail devra probablement être augmenté tous les 2 ou 3 ans.

Cryptographic hash Password hash
MD5 bcrypt
SHA-1 scrypt
SHA-2 PBKDF2
SHA-3 Argon2

‍

Slogan

Le codage sécurisé en pratique

Explorez nos directives de développement sécurisé pour comprendre et atténuer les vulnérabilités logicielles telles que l'OWASP Top 10, et plongez dans des missions de formation guidées pour vous exercer sur des simulations d'applications réelles.

Autres directives
Réserver une démo