L'état de la sécurité des mots de passe en 2025
Malgré l'émergence des passkeys et de la biométrie, les mots de passe restent le mécanisme d'authentification dominant sur le web. Les chiffres sont alarmants : selon les rapports de sécurité récents, plus de 80% des violations de données impliquent des mots de passe faibles ou réutilisés. En tant que développeurs, nous avons une double responsabilité : protéger nos propres comptes et sécuriser correctement les mots de passe de nos utilisateurs.
Générer des mots de passe véritablement sécurisés
Un mot de passe sécurisé doit être aléatoire, suffisamment long et unique pour chaque service. Les règles de complexité classiques (« une majuscule, un chiffre, un symbole ») sont moins efficaces qu'un mot de passe simplement plus long.
Longueur vs. Complexité : les maths de la force brute
La résistance d'un mot de passe se mesure en entropie (bits). Plus l'entropie est élevée, plus le mot de passe est difficile à craquer :
- 8 caractères, minuscules seules : 26⁸ ≈ 2×10¹¹ combinaisons — craqué en minutes par un GPU moderne
- 12 caractères, minuscules + chiffres : 36¹² ≈ 4.7×10¹⁸ — des mois avec du matériel spécialisé
- 16 caractères, tous types : 95¹⁶ ≈ 4.4×10³¹ — pratiquement impossible avec la technologie actuelle
- 20 caractères, phrase de passe : encore plus résistant et mémorisable
Notre générateur de mots de passe utilise
crypto.getRandomValues(), l'API cryptographique du navigateur, pour garantir un aléa véritable.
Stocker les mots de passe : le guide du développeur
Si vous développez une application qui gère des mots de passe utilisateurs, voici les règles absolues :
1. Ne JAMAIS stocker en clair
Cela paraît évident, mais des violations massives (comme celle d'Adobe en 2013 avec 153 millions de mots de passe) montrent que cette erreur persiste. Un mot de passe en clair dans une base de données est une catastrophe en attente.
2. Utiliser un algorithme de hachage adapté
Tous les algorithmes de hachage ne sont pas équivalents pour les mots de passe :
- Bcrypt (recommandé) : conçu spécifiquement pour les mots de passe. Son coût ajustable le rend résistant aux attaques par GPU. Facteur de coût recommandé : 12-14.
- Argon2id (meilleur, si disponible) : gagnant du Password Hashing Competition en 2015. Résistant aux attaques par GPU et FPGA grâce à sa consommation mémoire configurable.
- scrypt : alternative solide, utilisé notamment par certaines cryptomonnaies.
À proscrire absolument : MD5, SHA-1, SHA-256 seuls (sans salt ni itérations). Ces algorithmes sont conçus pour être rapides — exactement le contraire de ce qu'on veut pour hacher des mots de passe.
3. Le sel (salt) : indispensable
Un sel est une valeur aléatoire unique ajoutée à chaque mot de passe avant le hachage. Il empêche les attaques par rainbow tables et garantit que deux utilisateurs avec le même mot de passe ont des hash différents. Bcrypt et Argon2 gèrent le sel automatiquement.
// PHP - Hachage avec Bcrypt (recommandé)
$hash = password_hash($motDePasse, PASSWORD_BCRYPT, ['cost' => 12]);
// Vérification
if (password_verify($motDePasse, $hashStocke)) {
// Authentification réussie
}
// Node.js - Avec bcrypt
const bcrypt = require('bcrypt');
const hash = await bcrypt.hash(password, 12);
const match = await bcrypt.compare(password, storedHash);
Authentification multi-facteurs (MFA)
Le mot de passe seul ne suffit plus. L'authentification multi-facteurs ajoute une couche de sécurité en exigeant au moins deux types de preuves :
- TOTP (Time-based One-Time Password) : applications comme Google Authenticator, Authy. Génère un code toutes les 30 secondes. Bonne sécurité, simple à implémenter.
- Clés de sécurité physiques (FIDO2/WebAuthn) : YubiKey, Google Titan. Le standard le plus sûr — résistant au phishing par conception.
- SMS : mieux que rien, mais vulnérable au SIM swapping. À éviter pour les comptes critiques.
Gestionnaires de mots de passe : la seule solution viable
Avec des dizaines voire des centaines de comptes, retenir des mots de passe uniques et forts est humainement impossible. Les gestionnaires de mots de passe résolvent ce problème :
- Bitwarden : open source, gratuit, audité. Mon choix personnel pour les projets individuels.
- 1Password : excellente UX, intégrations entreprise, vault partagés pour les équipes.
- KeePassXC : local uniquement, open source, pour ceux qui veulent un contrôle total.
Le seul mot de passe à retenir est votre mot de passe maître. Faites-en une phrase de passe longue et mémorisable : Mon-Chat-Mange-3-Souris-Chaque-Mardi! est à la fois plus sûr et plus facile à retenir que k7#mP2$xQ9.
Recommandations pour les développeurs
- Imposez une longueur minimale de 12 caractères sans limite haute raisonnable (256 est un bon maximum).
- N'imposez pas de règles de complexité absurdes : le NIST déconseille désormais les exigences « 1 majuscule, 1 chiffre, 1 symbole » car elles mènent à des patterns prévisibles.
- Vérifiez les mots de passe compromis : utilisez l'API Have I Been Pwned (k-anonymity) pour rejeter les mots de passe déjà fuités.
- N'exigez pas de changement périodique : le NIST a abandonné cette recommandation. Les changements forcés produisent des mots de passe plus faibles.
- Proposez la MFA : rendez-la obligatoire pour les comptes avec des privilèges élevés.
- Hashez côté serveur avec Bcrypt ou Argon2id. Ne hachez jamais côté client uniquement.
Conclusion
La sécurité des mots de passe n'est pas un problème résolu — c'est un domaine en constante évolution. En tant que développeurs, nous devons rester informés des bonnes pratiques actuelles et les appliquer rigoureusement. Utilisez notre générateur de mots de passe pour créer des mots de passe cryptographiquement sûrs, et notre générateur de hash pour comprendre les différents algorithmes de hachage.