Qu'est-ce que Bcrypt et pourquoi l'utiliser ?
Bcrypt est un algorithme de hachage de mots de passe cree en 1999 par Niels Provos et David Mazieres. Contrairement aux fonctions de hachage rapides comme MD5 ou SHA-256, bcrypt est deliberement lent, rendant les attaques par force brute couteuses en calcul. Il genere et integre automatiquement un sel aleatoire dans la sortie du hash, protegeant contre les attaques par tables arc-en-ciel precalculees. La chaine de hash resultante contient la version de l'algorithme, le facteur de cout, le sel et le hash dans un format portable unique.
Comprendre le facteur de cout
Le facteur de cout est un entier entre 4 et 31 qui controle le nombre de tours d'expansion de cle en puissance de 2. Un cout de 10 effectue 1024 tours, tandis qu'un cout de 12 effectue 4096 tours. A mesure que la puissance de calcul augmente, vous pouvez augmenter le facteur de cout pour maintenir la securite sans changer votre infrastructure de hachage. La Fondation OWASP recommande un facteur de cout minimum de 10, 12 etant un bon equilibre entre securite et experience 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$) identifie la version de bcrypt. Le deuxieme segment ($10$) est le facteur de cout. Les 22 caracteres suivants sont le sel encode en base64, et les 31 caracteres restants sont le hash encode en base64. Ce format autonome signifie que vous n'avez jamais besoin de stocker le sel separement; il est integre directement dans la chaine de hash.
Meilleures pratiques pour le hachage de mots de passe
Hachez toujours les mots de passe cote serveur dans les systemes de production, jamais cote client. Utilisez un facteur de cout d'au moins 10, et faites des tests de performance sur votre serveur pour trouver le facteur de cout le plus eleve qui maintient le temps de connexion sous une seconde. Ne stockez jamais de mots de passe en clair, meme temporairement. Lorsque les utilisateurs changent leur mot de passe, generez un hash completement nouveau plutot que de mettre a jour l'existant. Envisagez de migrer vers Argon2id pour les nouveaux projets si votre plateforme le supporte, car il ajoute une resistance a la memoire.





