title: Développeurs, vous devriez avoir honte
url: https://n.survol.fr/n/developpeurs-vous-devriez-avoir-honte-regles-de-mots-de-passe
hash_url: f77e84e4666177057f83bf901b4c5b68

<p>Je rage à chaque fois que je saisis un mot de passe fort et que le site m’en­voie bouler parce que je n’ai pas de carac­tère autre qu’al­pha­nu­mé­rique.</p>



<p>Essayons quelque chose d’un peu plus smart pour évaluer la robus­tesse d’un mot de passe</p>



<blockquote class="wp-block-quote is-style-large"><p>Déve­lop­peurs, vous savez proba­ble­ment tout ça, mais conti­nuez à lire parce que la fin vous est adres­sée</p></blockquote>



<p>Si j’en crois Hacker­noon on peut calcu­ler envi­ron <a href="https://hackernoon.com/20-hours-18-and-11-million-passwords-cracked-c4513f61fdb1">800 millions de SHA256 par seconde sur un maté­riel qui coûte 0,82 € par heure</a> sur AWS. Ça fait 3,5 10^12 combi­nai­sons par euro.</p>



<p>Traduit autre­ment, voici le nombre de combi­nai­sons qu’on peut tester, et le même chiffre écrit en puis­sance de deux (arrondi à la déci­male infé­rieure) : </p>



<table class="wp-block-table"><tbody><tr><td>1 €</td><td>3,5 × 10^12</td><td>2^41,6</td></tr><tr><td>10 €</td><td>3,5 × 10^13</td><td>2^44,9</td></tr><tr><td>100 €</td><td>3,5 × 10^14</td><td>2^48,3</td></tr><tr><td>1 000 €</td><td>3,5 × 10^15</td><td>2^51,6</td></tr><tr><td>10 000 €</td><td>3,5 × 10^16</td><td>2^54,9</td></tr><tr><td>100 000 €</td><td>3,5 × 10^17</td><td>2^58,2</td></tr></tbody></table><p>Quand on vous parle ailleurs de bits d’en­tro­pie, ça corres­pond à ces puis­sances de 2. Avec 1 000 € on peut tester toutes les combi­nai­sons de SHA 256 d’une chaîne aléa­toire de 51 bits.</p>



<p>Ok, mais ça me dit quoi ? Une lettre c’est 26 combi­nai­sons, envi­ron 4,7 bits. Si vous ajou­tez les majus­cules vous doublez le nombre de combi­nai­sons et vous ajou­tez 1 bit. Si vous ajou­tez les chiffres et quelques carac­tères spéciaux on arrive à à peine plus de 6 bits.</p>



<p>Petit calcul, en utili­sant juste les 26 lettres de l’al­pha­bet, on peut tester toutes les combi­nai­sons de 8 carac­tères pour moins de 1 €. Vu qu’on aura de bonnes chances de tomber dessus avant d’avoir testé <em>toutes</em> les combi­nai­sons, autant dire que même avec 9 carac­tères, votre mot de passe ne vaut pas plus de 1 €.</p>



<p>Combien faut-il de carac­tères pour se trou­ver rela­ti­ve­ment à l’abri  (c’est à dire que la somme inves­tie ne peut pas tester plus de 1% des combi­nai­sons) ? Ça va dépendre de ce que vous y mettez comme types de carac­tères. J’ai fait les calculs pour vous :</p>



<table class="wp-block-table alignwide"><tbody><tr><td/><td>a-z</td><td>a-z<br/>A-Z</td><td>a-z<br/>A-Z <br/>0–9</td><td>a-z<br/>A-Z<br/>0–9<br/>+-%</td></tr><tr><td><strong>1 €</strong></td><td>11</td><td>9</td><td>9</td><td>8</td></tr><tr><td><strong>10 €</strong></td><td>11</td><td>10</td><td>9</td><td>9</td></tr><tr><td><strong>100 €</strong></td><td>12</td><td>10</td><td>10</td><td>10</td></tr><tr><td><strong>1 000 €</strong></td><td>13</td><td>11</td><td>10</td><td>10</td></tr><tr><td><strong>10 000 €</strong></td><td>14</td><td>11</td><td>11</td><td>11</td></tr><tr><td><strong>100 000 €</strong></td><td>14</td><td>12</td><td>11</td><td>11</td></tr></tbody></table><p>Et là magie : 8 carac­tères, même avec des chiffres, des majus­cules et des symboles, ça résiste tout juste à 1 €. Et encore, là c’est en partant du prin­cipe que vous choi­sis­sez réel­le­ment les carac­tères de façon aléa­toire, pas que vous ajou­tez juste un symbole à la fin ou que vous trans­for­mez un E en 3.</p>



<p>Vous voulez que votre mot de passe résiste à un voisin malveillant prêt à mettre plus de 10 € sur la table ? Prévoyez au moins 10 carac­tères.</p>



<p>Et là, seconde magie : Si vous mettez 10 carac­tères on se moque de savoir si vous y avez mis des chiffres ou symboles. La longueur a bien plus d’im­por­tance que l’éven­tail de carac­tères utilisé.</p>



<hr class="wp-block-separator"/><p>Main­te­nant que vous savez ça, tous les sites qui vous imposent au moins une majus­cule et un symbole mais qui vous laissent ne mettre que 8 carac­tères : Poubelle.</p>



<p>Je ne suis pas en train de vous apprendre à faire un mot de passe fort. Vous devriez utili­ser un gestion­naire de mots de passe et le géné­ra­teur auto­ma­tique qui y est inclus.</p>



<p>Je suis en train d’es­sayer de rendre honteux tous les déve­lop­peurs qui acceptent de mettre ces règles à la con sur les sites web dont ils ont la charge : Vous impo­sez des mots de passe qui sont à la fois imbi­tables et peu robustes.</p>



<hr class="wp-block-separator"/><p>Vous voulez faire mieux ? </p>



<p>Regar­dez dans quelle colonne est l’uti­li­sa­teur en fonc­tion des carac­tères qu’il a déjà tapé et donnez-lui un indi­ca­teur en fonc­tion de la longueur de son mot de passe.</p>



<ul><li>Mot de passe refusé s’il est sur « <a href="https://haveibeenpwned.com/">Have I Been Pwned?</a> »</li><li>Moins de 10 € ? mot de passe insuf­fi­sant, refusé</li><li>Moins de 100 € ? mot de passe faible, couleur rouge</li><li>Moins de 1 000 € ? mot de passe moyen, couleur orange</li><li>Mot de passe sûr, couleur verte, à partir de 10 000 €</li></ul><p>Si vous gérez un site central, par exemple un réseau social public, vous pouvez proba­ble­ment rele­ver tout ça d’un cran.</p>



<p>Si ça donne accès à des données sensibles, à des possi­bi­li­tés d’achat, à la boite e-mail ou à l’opé­ra­teur télé­pho­nique, mieux vaux rele­ver tout ça de deux crans.</p>



<p>Le tout prend proba­ble­ment moins de 10 lignes en javas­cript. C’est une honte que vous accep­tiez encore d’im­plé­men­ter des règles à la con « au moins une majus­cule, un chiffre et un symbole, voici les symboles auto­ri­sés […] ». </p>



<p>Déve­lop­peurs, vous devriez avoir honte.</p>
