Encryption
L'encryption des mots de passe d'Open ENT utilise bcrypt, un algorithme de hachage spécifiquement conçu pour sécuriser les mots de passe.
Qu'est-ce que bcrypt ?
bcrypt est une fonction de hachage cryptographique basée sur l'algorithme Blowfish. Elle a été spécialement conçue pour être lente et coûteuse en termes de calcul, ce qui la rend résistante aux attaques par force brute et aux attaques par dictionnaire.
Contrairement à des algorithmes comme SHA-256 ou MD5, bcrypt intègre plusieurs mécanismes pour renforcer la sécurité :
- Un sel (salt) : Un sel est une valeur aléatoire ajoutée au mot de passe avant le hachage. Cela empêche les attaques par table arc-en-ciel (rainbow tables).
- Un facteur de coût (work factor) : Le coût contrôle la complexité du calcul. Plus le coût est élevé, plus il est difficile de craquer le hachage.
- Hachage lent : bcrypt est intentionnellement lent pour ralentir les attaques par force brute.
Pourquoi utiliser bcrypt ?
- Résistance aux attaques : Les méthodes traditionnelles comme MD5 ou SHA-1 sont trop rapides et peuvent être facilement cassées avec des outils modernes.
- Intégration du sel : bcrypt ajoute automatiquement un sel unique à chaque mot de passe, ce qui garantit que même deux utilisateurs ayant le même mot de passe auront des hachages différents.
- Flexibilité : Vous pouvez ajuster le "facteur de coût" pour rendre le hachage plus ou moins coûteux en fonction de la puissance de calcul disponible.
Structure d'un hachage bcrypt
Un hachage bcrypt typique ressemble à ceci :
$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
Voici comment décoder cette chaîne :
$2b$
: Indique la version de bcrypt utilisée (2b
est la version courante).10
: Représente le facteur de coût (ici,10
). Le coût est une puissance de 2, donc un coût de10
signifie que bcrypt effectuera ( 2^10 = 1024 ) itérations.N9qo8uLOickgx2ZMRZoMye
: Le sel (22 caractères encodés en Base64).IjZAgcfl7p92ldGxad68LJZdL17lhWy
: Le hachage final (31 caractères encodés en Base64).
Comment fonctionne bcrypt ?
Voici les étapes principales du processus :
-
Ajout du sel :
- Un sel unique est généré pour chaque mot de passe.
- Ce sel est combiné avec le mot de passe avant le hachage.
-
Définition du coût :
- Le développeur choisit un facteur de coût (par exemple,
10
,12
, etc.). Un coût plus élevé augmente la sécurité mais consomme plus de ressources.
- Le développeur choisit un facteur de coût (par exemple,
-
Hachage répété :
- Le mot de passe concaténé avec le sel est haché de manière répétée selon le coût défini.
-
Stockage du résultat :
- Le hachage final, le sel, et le coût sont stockés ensemble dans une chaîne unique (comme montré ci-dessus).