FlowingDev

La force des mots de passe, expliquée : l'ingrédient secret de votre secret, c'est... les maths

Apprenez comment la force d'un mot de passe est mesurée grâce à l'entropie, un concept de la théorie de l'information qui quantifie l'imprévisibilité et estime le temps de cassage.

Essayer l'outil: Force du mot de passe

En une phrase

La force d'un mot de passe mesure la quantité de devinettes (ou « entropie ») qu'un attaquant doit faire pour casser votre secret, traduisant cet effort de calcul brut en une estimation de temps compréhensible par un humain.

Le problème que ça résout

Au commencement, il y avait des ordinateurs, et ils avaient des données, et tout allait bien. Mais d'autres gens ont voulu voir ces données, alors nous avons inventé le mot de passe. Au début, c'était simple. root, admin, guest. C'était moins une question de sécurité que de contrôle d'accès de base, comme une armoire à dossiers avec un verrou fragile.

Puis Internet est arrivé. Soudain, ces ordinateurs n'étaient plus dans une pièce fermée à clé ; ils étaient connectés à tous les autres ordinateurs de la planète. Le verrou fragile gardait maintenant la porte d'entrée de votre vie numérique, et les attaquants devenaient très doués pour le crocheter.

D'abord, il y a eu l'attaque par force brute : essayer toutes les combinaisons possibles. 'a', 'b', 'c', ... 'aa', 'ab', ... et ainsi de suite. Ça marche, mais c'est lent. Alors les attaquants sont devenus plus malins. Ils ont réalisé que les humains sont paresseux et prévisibles. Cela a conduit à l'attaque par dictionnaire : au lieu d'essayer axfsvj, pourquoi ne pas essayer password, soleil, ou 123456 ? C'était d'une efficacité dévastatrice.

Les administrateurs système ont riposté avec des politiques : « Votre mot de passe doit comporter 8 caractères, un chiffre et une lettre majuscule ! » Les utilisateurs, toujours aussi créatifs pour suivre les règles, ont répondu avec Password1, Password2, et le classique intemporel P@$$w0rd1. Les règles de complexité ont créé un faux sentiment de sécurité.

Nous avions besoin d'une meilleure façon de mesurer la qualité d'un mot de passe. Pas en cochant des cases pour les types de caractères, mais en mesurant son véritable caractère aléatoire et imprévisible. Nous avions besoin d'un moyen de quantifier ce qui est « difficile à deviner ». C'est là qu'intervient le concept de force de mot de passe, ancré dans le domaine mathématique de la théorie de l'information. Il fournit une mesure formelle — l'entropie — pour estimer combien de temps un mot de passe peut résister aux assauts d'un attaquant déterminé armé d'un supercalculateur.

Comment ça marche sous le capot

À la base, l'estimation de la force d'un mot de passe est un jeu de chiffres. Nous essayons de calculer la taille de la botte de foin dans laquelle un attaquant doit chercher pour trouver l'unique aiguille qu'est votre mot de passe.

### L'entropie : le nombre magique

L'unité de mesure de la force d'un mot de passe est l'entropie, mesurée en « bits ». En théorie de l'information, l'entropie est une mesure de l'incertitude ou du hasard. Pour les mots de passe, elle quantifie à quel point votre mot de passe est imprévisible.

La formule de base est d'une simplicité magnifique :

Entropie = log₂(Espace de recherche)

L'« Espace de recherche » est le nombre total de mots de passe possibles selon un certain ensemble de règles. Pour un mot de passe simple généré aléatoirement, l'espace de recherche est calculé comme suit :

Espace de recherche = N ^ L

Où :

  • N est le nombre de caractères possibles dans le jeu de caractères (l'ensemble des symboles que vous pouvez choisir).
  • L est la longueur du mot de passe.

Réinjectons cela dans la formule principale : Entropie = log₂(N ^ L), ce qui se simplifie en Entropie = L * log₂(N).

Quelques tailles courantes de jeux de caractères (N) :

  • Chiffres uniquement (0-9) : N = 10
  • Lettres minuscules anglaises (a-z) : N = 26
  • Lettres anglaises avec casse mixte (a-z, A-Z) : N = 52
  • Alphanumérique avec casse mixte (a-z, A-Z, 0-9) : N = 62
  • Symboles complets du clavier ASCII : N ≈ 95

Ainsi, pour un mot de passe de 8 caractères utilisant uniquement des lettres minuscules, l'entropie est 8 * log₂(26), soit environ 8 * 4.7 = 37.6 bits.

Que signifie réellement « 37.6 bits » ? Chaque bit d'entropie double l'espace de recherche. Donc, un mot de passe avec 38 bits d'entropie est deux fois plus difficile à casser qu'un mot de passe avec 37 bits. C'est cette croissance exponentielle qui explique pourquoi l'ajout d'un ou deux caractères aléatoires peut augmenter considérablement la force.

### De l'entropie au temps de cassage

Les bits sont parfaits pour les ordinateurs, mais les humains pensent en minutes, en années et en éternités. Pour obtenir une estimation du temps de cassage, nous avons besoin d'un ingrédient supplémentaire : la vitesse de devinette de l'attaquant.

Celle-ci est très variable. Une attaque en ligne (deviner contre un formulaire de connexion en direct) pourrait être limitée à 10 tentatives par seconde. Mais un scénario plus réaliste est une attaque hors ligne, où l'attaquant a volé une base de données de hashes de mots de passe. Avec les GPU modernes, ils peuvent effectuer des milliards, voire des billions de hashes par seconde.

Supposons qu'un attaquant puissant puisse faire 10 milliards (10¹⁰) de tentatives par seconde. Le nombre de tentatives nécessaires pour garantir de trouver le mot de passe est 2^Entropie. En moyenne, il le trouvera à mi-parcours, donc nous pouvons estimer le temps :

Temps de cassage = (2^Entropie / 2) / TentativesParSeconde

Voici à quelle vitesse les choses s'intensifient :

Entropie (bits) Tentatives totales Temps de cassage moyen @ 10¹⁰ H/s Niveau de sécurité
30 ~1 milliard < 0.1 secondes Trivial
40 ~1 billion ~1 minute Très Faible
50 ~1 quadrillion ~15 heures Faible
60 ~1 quintillion ~1,8 ans Correct
70 ~1 sextillion ~1 800 ans Fort
80 ~1 septillion > Âge de l'univers Très Fort

Ce tableau montre pourquoi même quelques bits d'entropie supplémentaires font une différence colossale.

### Au-delà de la force brute : le problème des motifs

La formule simple L * log₂(N) a une faille énorme : elle suppose que chaque caractère est choisi de manière parfaitement aléatoire. Les humains ne fonctionnent pas comme ça. Nous utilisons des mots, des dates et des substitutions prévisibles. P@$$w0rd1 n'est pas une séquence aléatoire de 9 caractères ASCII.

C'est là que les estimateurs de force de mot de passe modernes deviennent vraiment intelligents. Les meilleurs, comme la célèbre bibliothèque zxcvbn de Dropbox, ne se contentent pas de calculer une entropie naïve. Ils agissent comme un attaquant et essaient de trouver la manière la plus « économique » de construire votre mot de passe.

  1. Découpage : Ils décomposent le mot de passe en morceaux. Tr0ub4dor&3! devient Tr0ub4dor, &, 3, !.
  2. Reconnaissance de motifs : Ils analysent chaque morceau par rapport à plusieurs motifs :
    • Mots du dictionnaire : troubador est-il dans un dictionnaire anglais ? (Oui). Est-il courant ? (Oui).
    • Substitutions courantes : Tr0ub4dor ressemble-t-il à troubador avec o -> 0 et a -> 4 ? (Oui).
    • Motifs de clavier : Est-ce une séquence comme azerty ou qsdfg ?
    • Dates : Ressemble-t-il à 1999 ou 2024 ?
    • Caractères répétés : Est-ce quelque chose comme aaaaaa ?
  3. Analyse du coût : Ils calculent l'entropie de chaque morceau en fonction de son motif. Un mot courant du dictionnaire a une entropie bien plus faible qu'une chaîne aléatoire de même longueur. L'entropie de password n'est pas 8 * log₂(52) ; elle est plus proche de log₂(20000), car c'est une tentative parmi une liste de mots de passe courants.
  4. Sommation : Ils additionnent l'entropie des morceaux les plus « économiques » pour obtenir une estimation de force réaliste et éprouvée. C'est pourquoi correct-horse-battery-staple obtient un score beaucoup plus élevé que Tr0ub4dor&3, même si ce dernier a l'air plus complexe.

Histoires du monde réel

### La politique d'entreprise qui s'est retournée contre elle

Une entreprise tech de taille moyenne a déployé une nouvelle politique de mots de passe stricte : 10 caractères minimum, une majuscule, un chiffre, un symbole. L'objectif était de forcer l'utilisation de mots de passe à haute entropie. Ce qu'ils ont obtenu, c'est une masse d'employés créant des mots de passe comme Ete2024!, Automne2024!, et Hiver2025!. Un mesureur de force naïf leur aurait donné un score décent. Mais lorsqu'un attaquant a compromis un compte de bas niveau et a appris le motif, il n'a pas eu besoin de force brute. Il a juste écrit un script pour essayer chaque combinaison de saison et d'année, et a rapidement accédé à des dizaines de comptes.

Leçon : La complexité forcée engendre souvent des motifs prévisibles. Un bon mesureur de force devrait détecter et pénaliser ces schémas courants.

### La révélation du 'Correct Horse Battery Staple' de XKCD

Le webcomic XKCD a publié une planche devenue légendaire illustrant la force des mots de passe. Elle comparait Tr0ub4dor&3, un mot de passe « complexe » typique, avec correct horse battery staple, une phrase de passe composée de quatre mots courants mais aléatoires. Alors que Tr0ub4dor&3 est difficile à retenir pour un humain, son mélange de substitutions et de motifs lui confère une entropie calculable qu'un cracker déterminé pourrait déchiffrer en quelques jours. La phrase de passe de quatre mots, cependant, est facile à mémoriser pour un humain. En supposant un dictionnaire de 2048 mots courants, son entropie est de log₂(2048^4), soit 4 * 11 = 44 bits d'entropie significative. Pour la casser par force brute caractère par caractère, un attaquant est confronté à une chaîne de 28 caractères, une tâche impossible.

Leçon : La longueur est souvent une défense plus puissante et plus conviviale que la complexité basée sur les symboles. Les phrases de passe sont vos amies.

### Le mot de passe 'aléatoire' qui ne l'était pas

Un développeur a été chargé de créer un système qui générait des mots de passe initiaux aléatoires et sécurisés pour les nouveaux utilisateurs. Il a utilisé la fonction random() par défaut de son langage dans un script simple. Les mots de passe semblaient parfaits : j8sL2!kP. Ce que le développeur ne réalisait pas, c'est que la fonction random() standard était un Générateur de Nombres Pseudo-Aléatoires (PRNG) initialisé (seeded) avec l'heure du système. Un attaquant, après avoir obtenu un seul de ces mots de passe et son horodatage de création (via un e-mail, par exemple), a pu déterminer la graine (seed). Il a ensuite pu régénérer la séquence entière de mots de passe « aléatoires » pour chaque utilisateur créé à peu près au même moment.

Leçon : La source de l'aléa est extrêmement importante. Pour tout ce qui touche à la sécurité, utilisez toujours un générateur de nombres pseudo-aléatoires cryptographiquement sûr (CSPRNG), comme window.crypto.getRandomValues() dans un navigateur ou /dev/urandom sous Linux.

Erreurs et pièges courants

  • Confondre complexité et force. P@$$w0rd! semble complexe, mais c'est un mot de passe universellement reconnu comme mauvais. quatre mots aleatoires joints est simple en concept mais bien plus fort en pratique car il manque de motifs prévisibles et est beaucoup plus long.
  • Faire aveuglément confiance à la « barre verte ». De nombreux mesureurs de force sur le web sont dangereusement naïfs. Ils effectuent un simple calcul longueur * taille_jeu_caractères et ne vérifient pas les dictionnaires, les motifs ou les données de fuites publiques. une note « forte » d'un mauvais mesureur est un mensonge.
  • Ignorer le vecteur d'attaque hors ligne. Ne mesurez pas la force de votre mot de passe par rapport à un formulaire de connexion qui vous bloque après trois essais. Supposez que l'attaquant a votre mot de passe hashé et le pilonne avec une ferme de GPU dans sa cave. Concevez toujours pour le pire des cas.
  • Réutiliser ses mots de passe. Le mot de passe le plus brillant, avec 128 bits d'entropie, devient sans valeur dès qu'il est exposé dans la fuite de données d'un autre site web. Un attaquant ne le cassera pas ; il le cherchera simplement sur une liste et entrera sans effort.
  • Penser que court, c'est bien si c'est aléatoire. Un mot de passe de 8 caractères vraiment aléatoire utilisant tous les symboles du clavier a une entropie décente (~53 bits). Mais « décent » n'est plus ce que c'était. Étant donné la baisse du coût du calcul, il pourrait être cassé en quelques semaines ou mois. La longueur offre une marge de sécurité bien plus confortable.

Pourquoi c'est une priorité pour vous

Comprendre la force des mots de passe n'est pas réservé aux professionnels de la sécurité.

En tant que développeur, si vous construisez un système d'authentification, vous êtes en première ligne. Au lieu d'imposer des règles arbitraires (doit inclure un caractère de l'alphabet cyrillique parlé uniquement le mardi), vous devriez guider les utilisateurs vers ce qui fonctionne réellement : la longueur et l'imprévisibilité. Intégrer un estimateur de force intelligent peut fournir un retour en temps réel qui aide vraiment les utilisateurs, et connaître les principes vous permet de prendre de meilleures décisions d'architecture (comme choisir un algorithme de hachage lent et coûteux comme Argon2).

En tant qu'utilisateur, cette connaissance vous transforme d'un suiveur passif de règles en un défenseur actif de vos propres données. Elle vous donne l'intuition de créer des secrets qui sont à la fois mémorables pour vous et incroyablement difficiles pour eux. C'est le fondement théorique de toute votre posture de sécurité numérique.

Pour aller plus loin

  • NIST Special Publication 800-63B - Les directives officielles (et étonnamment lisibles) de l'Institut national des normes et de la technologie des États-Unis sur l'identité numérique, y compris les politiques de mot de passe.
  • Password strength on Wikipedia - Un aperçu complet des concepts, des formules et de l'historique. (en anglais)
  • Entropy (information theory) on Wikipedia - Pour une plongée en profondeur dans les fondements mathématiques de tout cela. (en anglais)
  • XKCD 936: Password Strength - La BD originale qui a changé la façon dont beaucoup de gens pensent à la création de mots de passe sécurisés et mémorables.
  • zxcvbn-ts GitHub Repository - L'implémentation TypeScript moderne du pionnier des estimateurs de force de mot de passe de Dropbox, zxcvbn. Parcourir sa logique est une masterclass en analyse de sécurité du monde réel.

Théorie bouclée. Place à la pratique — 100 % dans ton navigateur.

Essayer l'outil: Force du mot de passe