héroe bg sin separador
Directivas

Stockage des mots de passe

Si votre application authentifie les utilisateurs, il y a de fortes chances qu'elle traite également des mots de passe.

La gestion des mots de passe des utilisateurs est très importante et leur gestion appropriée l'est encore plus.

Il est difficile d'imaginer un scénario pire que celui d'une application attaquée et de la fuite des mots de passe des utilisateurs sur Internet à la vue de tous. Personnellement, nous frémissons à cette idée. Alors, comment stocker les mots de passe en toute sécurité et conformément aux meilleures pratiques ? Jetons un coup d'œil à quelques méthodes.

Chiffrement ou hachage

À première vue, on pourrait penser que le cryptage semble être une solution décente pour le stockage sécurisé des mots de passe, mais s'y fier totalement peut être quelque peu problématique.

Le chiffrement est intrinsèquement une fonction bidirectionnelle, ce qui signifie bien entendu que, tout comme un mot de passe peut être crypté, il peut également être déchiffré. C'est parfaitement logique, non ? Sinon, comment pouvez-vous vérifier si le mot de passe d'un utilisateur correspond à ce qui est stocké dans la base de données ?

Ainsi, la capacité de déchiffrer les mots de passe est également une responsabilité assez importante. Si quelqu'un compromet un serveur et obtient le texte chiffré d'un mot de passe, il y a de fortes chances qu'il soit également en mesure d'obtenir la clé nécessaire pour déchiffrer ces mots de passe.

Le hachage, en revanche, convient bien mieux aux mots de passe en raison de sa nature unidirectionnelle. Une fois que vous avez haché quelque chose, aucune fonction ne permet de reconvertir directement le texte chiffré en texte brut d'origine. Grâce à cette propriété, les hachages sont particulièrement adaptés à la protection des mots de passe.

Tous les hachages ne sont pas créés de la même manière

Une fois que vous avez décidé de hacher les mots de passe à des fins de stockage, il ne suffit pas d'appliquer une fonction de hachage et de l'annuler.

Les hachages sont de toutes formes et tailles, et la plupart d'entre eux ne sont pas exactement adaptés au stockage de mots de passe, compte tenu de tous les progrès de la technologie informatique au cours de la dernière décennie.

Comme mentionné précédemment, les hachages ne peuvent pas être inversés car il s'agit d'une fonction unidirectionnelle. Bien que cela soit techniquement vrai, le hachage est également déterministe, ce qui signifie qu'il est également sensible à des tactiques de force brute qui peuvent permettre à un attaquant de potentiellement inverser un hachage vers le texte brut d'origine avec suffisamment de temps et de ressources.

Pour cette raison, nous avons divisé les fonctions de hachage en deux catégories :

  • Hachages cryptographiques
  • Hachages de mots de passe
Característica Hash criptográfico Contraseña hash
Velocidad Muy rápido Intencionadamente lento
Factor de trabajo ajustable No

L'une des principales caractéristiques des hachages de mots de passe est qu'ils comportent un « facteur de travail » (soit par un seul entier, soit par plusieurs paramètres) qui définit l'effort nécessaire pour calculer le hachage.

Au fur et à mesure que les processeurs et les GPU se sont accélérés au fil des ans, il est devenu plus facile d'effectuer des attaques massives par force brute contre les hachages du matériel grand public, ce qui implique qu'un hachage peut devenir de moins en moins sécurisé avec le temps.

Le « facteur travail » est utilisé pour garantir que les hachages sont stockés de manière à suivre les tendances du secteur. À mesure que le matériel s'accélère, vous augmentez le facteur de travail de l'algorithme afin de garantir que le hachage prenne plus de temps et d'efforts à déchiffrer. Disons, à titre d'exemple, 100 ms sur du matériel contemporain.

Cela signifie que le facteur travail dans la pratique devra peut-être augmenter tous les 2 à 3 ans.

Hash criptográfico Contraseña hash
MD5 bcrypt
SHA-1 scrypt
SHA-2 PBKDF2
SHA-3 Argón2