Calculer l'entropie (la force) d'un mot de passe

29 septembre 2016

Sommaire

Principe

L'entropie d'un mot de passe, qu'on appelle communément sa "force", découle du nombre de tentatives qu'il faudrait effectuer pour le trouver par une méthode dite brute-force, c'est-à-dire en essayant toutes les combinaisons possibles. L'entropie s'obtient en calculant le logarithme en base 2 de ce nombre de combinaisons.

Le nombre de combinaisons possibles dépend de l'étendue des symboles pouvant constituer le mot de passe (lettres, chiffres, symboles spéciaux, ...), et de sa longueur (le nombre de caractères qui composent le dit mot de passe).

L'entropie ainsi calculée s'exprime en bits.

Calcul

L'entropie d'un mot de passe s'obtient donc de la manière suivante : nbr de caractères qui le composent x log2(nbr de symboles possibles)

Décomposons :

L'entropie pour un seul caractère se calcule ainsi : log2(nombre de symboles possibles)

Par exemple, si le mot de passe peut être constitué des 26 lettres minuscules de l'alphabet : log2(26) <--- logarithme en base 2 de 26.

On obtient ~4,7 bits d'entropie par symbole.

Ensuite, on multiplie l'entropie d'un caractère par le nombre de caractères du mot de passe. Si ce dernier comprend 8 caractères : 8 x log2(26)

On obtient une entropie de ~37 bits pour un mot de passe composé de 8 caractères parmi les 26 lettres minuscules de notre alphabet. C'est très faible et peut être cracké relativement rapidement avec les vitesses actuelles de nos machines et de nos débits internet.

L'augmentation du nombre de symboles possibles permet d'augmenter l'entropie, mais la relation n'est pas proportionnelle. Par exemple, l'entropie d'un mot de passe de 8 caractères pris parmi les 52 lettres minuscules et majuscules de notre alphabet, n'est que de 45 bits ( log2(52) x 8 ).

Il faut donc veiller à augmenter le nombre de caractères constituant le mot de passe. Là, la relation est directement proportionnelle : deux fois plus de caractères = deux fois plus d'entropie.

Ainsi, un mot de passe de 12 caractères parmi les 26 lettres minuscules de notre alphabet atteint une entropie de 56 bits. Avec 16 caractères, on arrive à 75 bits d'entropie, ce qui commence à être respectable.

Les attaques de type dictionnaire

Pourtant cette définition de l'entropie n'est valable que pour estimer la "résistance" d'un mot de passe à une attaque de type brute-force, où toutes les combinaisons possibles sont essayées successivement. Dans le cas d'une attaque de type dictionnaire, le hacker ne tentera pas toutes les combinaisons possibles. Il se concentrera sur des mots existants, et particulièrement des listes de mots souvent rencontrés dans les mots de passe tels que : prénoms, noms de personnages de fictions célèbres, noms de ville, et autres mots couramment utilisés. En cas d'attaque de type dictionnaire, et si votre mot de passe est composé d'un ou plusieurs de ces mots existants, l'entropie de votre mot de passe va dramatiquement chuter.

Imaginons que votre mot de passe soit un mot du dictionnaire composé de 8 caractères ou plus. Mon Petit Robert de la langue française en version numérique retourne 46.292 mots comportant 8 caractères au moins. Cela signifie qu'il n'y a que 46.292 possibilités à tester, peu importe le nombre total de caractères composant le mot !

L'entropie du mot de passe sera alors de : log2(46292) =~ 15 bits... C'est à peine mieux qu'un code PIN numérique à 4 chiffres (13 bits d'entropie).

Imaginons que le mot de passe soit composé de deux mots de plus de 8 caractères : on n'obtiendrait alors que ~30 bits d'entropie, alors même que le mot de passe semble relativement long avec ses 16 caractères ou plus. Il se révèle en tous cas moins sûr que notre exemple plus haut composé de seulement 8 caractères, eux bien aléatoires.

Voilà pourquoi il est important d'utiliser des combinaisons de caractères ne répondant à aucune logique prévisible. Le caractère parfaitement aléatoire de votre mot de passe sera sa plus grande force !

Les techniques consistant à définir votre mot de passe à partir d'un mot existant mais en l'écrivant à l'envers ou avec une combinaison de majuscules et de minuscules aidera quelque peu... tout comme le fait d'ajouter un chiffre au début ou à la fin, mais cela ne rajoutera que peu d'entropie à la combinaison et croyez-bien que les attaques de type dictionnaire testent également ces possibilités sans prendre un temps significativement plus long.

Quelle entropie viser pour mes mots de passe ?

À l'heure actuelle, on considère que le strict minimum pour assurer un certain niveau de protection de votre mot de passe dans les applications courantes est qu'il atteigne 80 bits d'entropie. 100 bits pour des applications sensibles.

Plus d'information sur le site de l'Agence Nationale de la Sécurité des Systèmes d'Information.

Conclusion

Nous avons démontré que les critères les plus importants dans le choix d'un mot de passe sont :

  1. son caractère aléatoire (c'est de très loin le plus important)
  2. sa longueur
  3. la variété des symboles qui le constituent

Vous le comprenez désormais : la raison pour laquelle de nombreux site imposent l'utilisation d'au moins un chiffre ou de symboles spéciaux dans le choix du mot de passe, ce n'est donc pas tant pour ajouter à la diversité des symboles utilisés, mais surtout pour tenter d'empêcher l'utilisation de mots courants. Je le répète, les mots de passe comprenant des mots existants sont les pires ! Un bon mot de passe ne peut être qu'une combinaison parfaitement aléatoire, et doit être d'une longueur respectable.

Bonus : comment calculer le logarithme en base 2 sur une calculatrice simple ?

Si votre calculatrice ne vous permet de calculer que le logarithme en base 10, voici comment procéder :

log en base 10 du nombre souhaité / log en base 10 de 2

Soit dans notre exemple du début : log(26)/log(2) pour un caractère.