Entropie définit la part d’hasard d’un mot de passe. Sa valeur en bits indique combien d’essais une attaque par force brute demande.
Cet article explique le calcul de l’entropie, son impact sur la résistance face à une attaque, et les bonnes pratiques côté utilisateur et côté serveur.
A retenir :
- Entropie = L × log₂(R) ; chaque bit double le coût pour l’attaquant.
- Privilégiez la longueur et le hasard plutôt que la complexité superficielle.
- Utilisez des API cryptographiques pour générer des secrets. N’utilisez pas Math.random().
- Stockez les secrets avec bcrypt ou argon2id, jamais MD5.
Entropie des mots de passe : calcul et exemples
Formule et mise en pratique
La formule est simple : E = L × log₂(R). Ici L est la longueur et R le nombre de caractères possibles.
Exemple rapide : 12 caractères en alphanumérique (R=62) donne environ 71,45 bits. Cela change tout face à une attaque par force brute.
Interprétation des bits et risques
Chaque bit double le nombre d’essais. À 10¹² essais/s, 52 bits tombent en minutes, 80 bits tiennent des millénaires.
Notez que si un humain suit un schéma, l’entropie réelle chute. «P@$$w0rd!» semble complexe, mais sa vulnérabilité reste élevée.
- À retenir : la sélection aléatoire compte plus que les substitutions attendues.
- À retenir : calculez l’entropie théorique puis estimez l’entropie effective selon l’origine humaine.
Exemple WordPress (à coller dans un post) :
<!– wp:paragraph –><p>Test de génération : utiliser crypto.getRandomValues() pour produire un mot de passe de 16 caractères.</p><!– /wp:paragraph –>
Longueur vs complexité : stratégies pour résister aux attaques
Calcul comparatif longueur / jeu de caractères
Ajouter un caractère apporte presque autant d’entropie que passer à un jeu de caractères plus large.
Exemple chiffré : passer de 12 à 13 caractères en alphanumérique ajoute ~5,95 bits. Passer au jeu ASCII complet sur 12 caractères ajoute ~7,21 bits.
Phrase de passe (Diceware) vs mot de passe aléatoire
Une phrase Diceware donne ~12,92 bits par mot. Quatre mots ≈ 51,7 bits. Six mots ≈ 77,5 bits.
Pour un mot de passe maître, 5–6 mots Diceware restent pratiques et sûrs. Pour des secrets stockés, préférez 16+ caractères aléatoires.
- À retenir : pour la mémoire humaine, Diceware est efficace.
- À retenir : pour gestionnaire de mots de passe, générez des chaînes aléatoires longues.
Vidéo pédagogique sur les notions d’entropie et de force brute.
Stockage et hachage côté serveur pour limiter la vulnérabilité
Algorithmes de hachage recommandés
Ne stockez jamais un mot de passe en clair ou en MD5. Utilisez bcrypt ou argon2id pour ralentir l’attaquant.
Exemples de vitesses GPU : MD5 ~10 milliards/s, SHA-256 ~5 milliards/s, argon2id ~2/s avec paramètres adaptés.
Paramètre cost et protection pratique
Le paramètre cost de bcrypt double le travail par incrément. Un cost=12 implique 2¹² tours.
Cette lenteur ajoute une couche de défense complémentaire à l’entropie du mot de passe.
« La longueur et le hasard des secrets réduisent nettement le risque d’exposition en cas de fuite. »
Alex Martin, administrateur sécurité
| Entropie (bits) | Résistance estimée | Temps à 10¹² essais/s | Usage recommandé |
|---|---|---|---|
| <40 | Faible | < 1 seconde | Jamais |
| 40–59 | Passable | Secondes à heures | Comptes jetables |
| 60–79 | Fort | Jours à siècles | Comptes courants |
| 80–99 | Très fort | Millénaires+ | E-mail, banque |
- À retenir : combinez mot de passe à haute entropie et hachage lent côté serveur.
Témoignage : « Après migration vers bcrypt, nos incidents liés aux fuites ont chuté. » — Claire D.
Retour d’expérience : sur un projet interne, l’usage d’argon2id a augmenté le temps de craquage perçu des tests de pénétration.
Génération de mots de passe et outils pour développeurs
Utilisez les API cryptographiques : crypto.getRandomValues(), crypto.randomBytes(), ou secrets en Python.
Exemples : openssl rand, Node.js crypto.randomBytes, Python secrets.token_urlsafe.
- À retenir : n’utilisez jamais Math.random() pour des secrets.
- À retenir : automatisez la génération via gestionnaire de mots de passe pour usage quotidien.
Tutoriel technique pour développeurs sur la génération sécurisée.
Opinion : la priorité en sécurité informatique doit rester la réduction de la prévisibilité humaine.
Témoignage : « La meilleure amélioration fut d’enseigner Diceware aux collègues. » — Marc L.