Ce que sont les bits d'entropie, et pourquoi on ne vous donne pas un pourcentage

Publié le par David Carrero

Un pourcentage de robustesse, c’est une opinion avec deux décimales.

Quand un site vous annonce que votre mot de passe est « sûr à 92 % », la question qui saute aux yeux est : 92 % de quoi ? Où est le 100 % ? Il n’existe pas. Personne n’a jamais publié le mot de passe parfait auquel comparer tous les autres. Ce nombre sort d’une règle de trois improvisée un mardi après-midi — tant de points pour la majuscule, tant pour le symbole — et son seul vrai travail, c’est d’afficher la petite barre verte pour que vous passiez à la suite.

Les bits, eux, signifient toujours exactement la même chose. Et ils signifient quelque chose dont vous pouvez vous servir.

Un bit, c’est une question par oui ou par non

Toute l’idée tient en une phrase : chaque bit double le nombre d’essais qu’il faut à quelqu’un qui ne sait rien de vous.

Un bit, ce sont deux possibilités. Deux bits, quatre. Trois, huit. Dix bits font 1 024, et vingt bits un peu plus d’un million. Le compte ne monte pas, il double, et c’est le doublement qui fait tomber l’intuition dans le ravin.

C’est pour ça que la phrase « 40 bits, c’est deux fois mieux que 20 » est fausse d’une façon presque comique. Entre 20 et 40 bits, il y a vingt doublements, soit un facteur 2²⁰ : 40 bits, ce n’est pas le double de 20, c’est un million de fois plus. Et 60 bits, ce n’est pas le triple de 20 : c’est un million de fois plus que 40. Notre tête lit cette échelle comme un mètre de menuisier, et ce n’en est pas un. C’est une échelle comme celle des tremblements de terre ou celle des décibels, où un petit pas dans le nombre est un bond monstrueux dans la réalité.

Voilà tout l’avantage du bit sur le pourcentage. Le pourcentage vous donne une impression. Le bit vous donne une quantité de travail.

D’où vient le mot

Le mot entropie appliqué à l’information vient d’un article de 1948 : A Mathematical Theory of Communication, de Claude Shannon.

Autant le dire précisément, parce que c’est souvent mal cité : Shannon ne pensait pas aux mots de passe. Il n’existait pas de mots de passe informatiques qui vaillent la peine d’être mentionnés. Il travaillait aux Bell Labs sur un problème très différent — quelle quantité d’information transporte réellement un message, et jusqu’où peut-on le compresser avant de le casser — et il lui fallait mesurer quelque chose de fuyant : l’incertitude de celui qui est à l’autre bout.

Sa trouvaille, dite à la hache, c’est que l’information et la surprise sont une seule et même chose. Un message que vous connaissiez déjà ne vous apprend rien. Un message impossible à anticiper vous apprend énormément. L’entropie mesure la quantité de surprise contenue dans la source qui produit les messages, et elle se mesure en bits.

Que ça serve aux mots de passe est presque un heureux accident. Un mot de passe, c’est exactement ça : un message qui doit être impossible à anticiper.

Le cadenas à molettes

Voici la seule formule de l’article, et je promets qu’elle est offerte :

H = L × log₂(N)

Oubliez le logarithme un instant et pensez à un de ces antivols de vélo à molettes. Vous avez deux façons de compliquer la vie de qui veut l’ouvrir :

  • Mettre plus de molettes. C’est la longueur (L) : combien de caractères compte votre mot de passe.
  • Mettre plus de symboles sur chaque molette. C’est l’alphabet (N) : si chaque molette ne porte que les dix chiffres, ou les 26 lettres, ou lettres, chiffres et signes.

Le logarithme ne fait qu’une chose : traduire « combien de symboles porte une molette » en « combien de bits apporte cette molette ». Une molette de 26 lettres apporte environ 4,7 bits. Une molette avec les 95 caractères imprimables du clavier en apporte environ 6,6.

Et c’est là qu’est la blague. Regardez bien où se trouve chaque chose dans la formule. L’alphabet est à l’intérieur du logarithme, écrasé ; la longueur est dehors, en train de multiplier.

Quasiment quadrupler les symboles de chaque molette — de 26 lettres à 95 caractères — vous achète moins de deux bits par molette. Ajouter une molette de plus vous achète un log₂(N) entier, encore, et encore, et encore. C’est pour ça que douze lettres minuscules et rien d’autre (environ 56 bits) battent huit caractères avec majuscules, chiffres et symboles, ceux que les formulaires réclament (environ 53). Le M0tdep@sse perd contre chevalcorrectpileagrafe, et de très loin.

Le NIST, dans son SP 800-63B, est arrivé au même endroit par un autre chemin : il a jeté par-dessus bord les règles de composition — une majuscule, un chiffre, un symbole — et n’a gardé que la longueur et la vérification du mot de passe contre des listes de fuites. Attention à ne pas lui faire dire ce qu’il ne dit pas : son argument n’est pas celui de la formule, mais que forcer les gens à caser un symbole ne les rend pas imprévisibles, ça les rend seulement prévisibles autrement. De fait, le document lui-même se méfie de l’idée d’estimer l’entropie d’un mot de passe choisi par une personne. Deux raisonnements différents, la même conclusion. La complexité obligatoire travaille dans le logarithme. La longueur travaille dehors.

Les petits caractères que presque personne ne lit

Il y a un piège, et c’est la partie honnête de toute l’histoire : l’entropie ne mesure pas votre mot de passe, elle mesure le procédé qui l’a fabriqué.

4$Kp!9zQ n’a pas ces 53 bits parce qu’il a l’air difficile. Il les a si — et seulement si — il est sorti d’un tirage véritablement au hasard parmi les 95 touches. Si c’est vous qui l’avez tapé en essayant d’avoir l’air aléatoire, la formule ne s’applique pas : vous n’êtes pas un tirage au sort. Vous mettez la majuscule en premier, le chiffre à la fin, et le symbole est un !. Celui qui vous attaque n’essaie pas les 95 options de chaque position : il essaie d’abord celles que font les humains.

D’où l’asymétrie inconfortable de la sécurité des mots de passe. L’entropie est un plafond, pas un plancher. Si c’est une machine qui la génère, le plafond est réel. Si c’est vous qui choisissez, la seule chose que vous savez, c’est que vous êtes en dessous — sans savoir de combien.

C’est pour ça qu’il y a deux outils et pas un. Le générateur tire réellement au sort, et c’est pour ça qu’il peut vous montrer les bits sans sourciller : il sait combien de molettes il a (L), il sait combien de symboles porte chacune (N) et il fait la multiplication devant vous. Si vous bougez le curseur et voyez le chiffre grimper, vous voyez la L pousser. Le vérificateur, lui, ne peut pas faire ça avec un mot de passe qui existe déjà : il n’a aucune idée de la façon dont il est né, alors il fait la seule chose sensée, c’est-à-dire le chercher dans des dictionnaires, des noms et des motifs de clavier, et supposer le pire.

Ce qu’il faut retenir

Trois phrases :

  • Un bit, c’est un doublement. Dix bits de plus, c’est mille fois plus de travail ; vingt bits de plus, un million.
  • La longueur multiplie, l’alphabet ajoute à peine. Ajouter un mot vaut plus qu’ajouter un point d’exclamation.
  • Les bits ne valent que si le hasard est vrai. Une machine peut les promettre. Vous, en tapant à la main, non.

Shannon cherchait combien de surprise tient dans un message. Soixante-dix et quelques années plus tard, il se trouve que c’était exactement la bonne question pour un mot de passe : pas s’il a l’air compliqué, mais combien de surprise il porte en lui pour quelqu’un qui ne vous connaît absolument pas.


Sources : C. E. Shannon, « A Mathematical Theory of Communication », Bell System Technical Journal, 1948 · NIST SP 800-63B, Digital Identity Guidelines (Authentication and Lifecycle Management) · le générateur de password.es, qui calcule H = L × log₂(N) et affiche L, N et les bits obtenus.

← Retour au blog