Qu'est-ce que Bcrypt et pourquoi l'utiliser ?
Bcrypt est un algorithme de hachage de mots de passe créé en 1999 par Niels Provos et David Mazieres. Contrairement aux fonctions de hachage rapides comme MD5 ou SHA-256, bcrypt est delibérément lent, rendant les attaques par force brute couteuses en calcul. Il généré et intégré automatiquement un sel aléatoire dans la sortie du hash, protégéant contre les attaques par tables arc-en-ciel precalculees. La chaine de hash resultante contient la version de l'algorithme, le facteur de coût, le sel et le hash dans un format portable unique.
Comprendre le facteur de coût
Le facteur de coût est un entier entre 4 et 31 qui contrôle le nombre de tours d'expansion de clé en puissance de 2. Un coût de 10 effectue 1024 tours, tandis qu'un coût de 12 effectue 4096 tours. A mesure que la puissance de calcul augmente, vous pouvez augmenter le facteur de coût pour maintenir la sécurité sans changer votre infrastructure de hachage. La Fondation OWASP recommandé un facteur de coût minimum de 10, 12 etant un bon équilibre entre sécurité et expérience utilisateur pour la plupart des applications web.
Format du hash Bcrypt explique
Une chaine de hash bcrypt ressemble a $2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy. Le premier segment ($2a$) identifié la version de bcrypt. Le deuxieme segment ($10$) est le facteur de coût. Les 22 caractères suivants sont le sel encode en basé64, et les 31 caractères restants sont le hash encode en basé64. Ce format autonome signifie que vous n'avez jamais besoin de stocker le sel séparément; il est intégré directement dans la chaine de hash.
Meilleures pratiques pour le hachage de mots de passe
Hachez toujours les mots de passe côté serveur dans les systèmes de production, jamais côté client. Utilisez un facteur de coût d'au moins 10, et faites des tests de performance sur votre serveur pour trouver le facteur de coût le plus élevé qui maintient le temps de connexion sous une seconde. Ne stockez jamais de mots de passe en clair, même temporairement. Lorsque les utilisateurs changent leur mot de passe, générez un hash complètement nouveau plutot que de mettre à jour l'existant. Envisagez de migrer vers Argon2id pour les nouveaux projets si votre plateforme le supporte, car il ajoute une resistance à la memoire.





