Aller au contenu

Robustesse d'un mot de passe

Un article de Wikipédia, l'encyclopédie libre.
Génération d'un nouveau mot de passe aléatoire dans le gestionnaire de mots de passe gratuit KeePass.

La robustesse d'un mot de passe est la mesure de la capacité d'un mot de passe à résister à son cassage, que ce soit par des moyens permettant de le deviner ou par une attaque par force brute.

On mesure la robustesse d'un mot de passe en estimant le nombre de tentatives nécessaires à un attaquant pour le casser.

La robustesse d'un mot de passe est une fonction :

  • de sa longueur (un mot de passe de 10 caractères est plus robuste qu'un mot de passe de 6 caractères, les attaques par force brute commençant par tester les mots de passe les plus courts) ;
  • de sa complexité, c'est-à-dire du nombre de symboles différents utilisés pour construire le mot de passe (à longueur égale, un mot de passe contenant des chiffres ainsi que des lettres sera plus robuste qu'un mot de passe contenant seulement des chiffres) ;
  • de son caractère aléatoire (le mot de passe 428195 est légèrement plus robuste que le mot de passe 123456, qui est un mot de passe très populaire[1]).

Si l'utilisation de mots de passe forts (ou d'une politique de mots de passe contraignante) réduit le risque d'une brèche de sécurité en augmentant le temps nécessaire au cassage de mot de passe par un attaquant, elle ne dispense cependant pas de la mise en place de mesures de sécurité additionnelles[2].

La fondation OWASP souligne, après analyse des bases de données utilisateur fuitées lors d'attaques récentes, que les mots de passe les plus utilisés à ce jour sont les très simples 123456, password, et qwerty[3].

L'entropie comme mesure de la robustesse d'un mot de passe

[modifier | modifier le code]

Dans l'industrie informatique, la robustesse d'un mot de passe est exprimée en termes d'entropie de Shannon, mesurée en bits. Il s'agit d'un concept de la théorie de l'information. Au lieu de mesurer la robustesse par le nombre de combinaisons de caractères qu'il faut tester pour trouver le mot de passe avec certitude, on utilise le logarithme en base 2 de ce nombre. Cette mesure est appelée l'entropie du mot de passe. Un mot de passe avec une entropie de 42 bits calculée de la sorte serait aussi robuste qu'une chaîne de 42 bits choisie au hasard.

En d'autres termes, un mot de passe de 42 bits de robustesse ne serait brisé de façon certaine qu'après 242 (4 398 046 511 104) tentatives lors d'une attaque par force brute. L'ajout d'un bit d'entropie à un mot de passe double le nombre de tentatives requises, ce qui rend la tâche de l'attaquant deux fois plus difficile. En réalité, en moyenne, un attaquant devra essayer la moitié des mots de passe possibles avant de trouver le bon[4].

Entropie des mots de passe aléatoires

[modifier | modifier le code]

Un mot de passe aléatoire est une chaîne de symboles d'une longueur spécifiée, tirée d'un ensemble de symboles et produite par un processus de sélection aléatoire dans lequel chaque symbole a la même probabilité d'être sélectionné. Les symboles peuvent être des caractères individuels d'un jeu de caractères (par exemple, le jeu de caractères ASCII), des syllabes conçues pour former des mots de passe prononçables ou même des mots d'une liste de mots (formant ainsi une phrase secrète).

La robustesse des mots de passe aléatoires dépend de l'entropie réelle du générateur de nombres aléatoires sous-jacent. Malheureusement, souvent, les générateurs de nombres aléatoires ne sont pas vraiment aléatoires, mais pseudo aléatoires. Certains générateurs de mots de passe utilisent des générateurs de nombres aléatoires trouvés dans des bibliothèques de programmation offrant une entropie limitée. Heureusement, la plupart des systèmes d'exploitation modernes proposent aussi des générateurs de nombres aléatoires puissants sur le plan cryptographique et adaptés à la génération de mots de passe robustes.

Pour les mots de passe générés par un processus qui sélectionne de manière aléatoire une chaîne de symboles de longueur « L », à partir d'un ensemble de « N » symboles, le nombre de mots de passe possibles est le nombre de symboles N élevé à la puissance L ().

Augmenter L ou N renforcera le mot de passe généré en augmentant son entropie. La force d'un mot de passe aléatoire, telle que mesurée par l'entropie de Shannon, est simplement le logarithme binaire ou log2 du nombre de mots de passe possibles, en supposant que chaque symbole du mot de passe est produit indépendamment. Ainsi, l'entropie H d'un mot de passe aléatoire est donnée par la formule

où « N » est le nombre de symboles possibles et « L » est le nombre de symboles du mot de passe. « H » est mesuré en bits[4],[5].

Entropie par symbole

[modifier | modifier le code]

Selon la formule précédente, l'entropie augmente avec la longueur du mot de passe et chaque addition d'un symbole augmente l'entropie d'une valeur constante qui dépend du nombre de symboles dans l'ensemble de symboles duquel le symbole est tiré.

Le tableau suivant indique l'augmentation de l'entropie obtenue en allongeant un mot de passe d'un symbole pour différents ensembles de symboles.

Entropie par symbole pour différents ensembles de symboles
Ensemble de symboles Nombre de
symboles « N »
Entropie par
symbole « H »
Chiffres arabes (0–9) (e.g. PIN) 10 3,322 bits
Nombres hexadécimaux (0–9, A–F) (e.g. clés WEP) 16 4,000 bits
Alphabet latin insensible à la casse (a–z or A–Z) 26 4,700 bits
Caractères alphanumériques insensibles à la casse (a–z ou A–Z, 0–9) 36 5,170 bits
Alphabet latin sensible à la casse (a–z, A–Z) 52 5,700 bits
Caractères alphanumériques sensibles à la casse (a–z, A–Z, 0–9) 62 5,954 bits
Caractères imprimables ASCII sauf l'espace 94 6,555 bits
Caractères imprimables ASCII 95 6,570 bits
Caractères imprimables ASCII étendus 218 7,768 bits
Nombre binaire de 8 bits (0–255 or 8 bits or 1 byte) 256 8,000 bits
Liste de mots de Diceware 7776 12,925 bits par mot

Longueur d'un mot de passe pour atteindre une certaine entropie

[modifier | modifier le code]

En augmentant la longueur d'un mot de passe, on augmente son entropie.

La longueur L nécessaire pour atteindre une robustesse H, avec un mot de passe tiré au hasard parmi un ensemble de N symboles se calcule de la façon suivante :

, arrondi au nombre entier suivant, soit .

Le tableau suivant utilise cette formule pour afficher les longueurs requises de mots de passe pour obtenir divers niveau d'entropie pour des jeux de symboles courants. Notez que l'entropie désirée sera obtenue seulement si les mots de passe sont générés de façon parfaitement aléatoire.

La longueur "L" d'un mot de passe généré de manière parfaitement aléatoire nécessaire pour obtenir une entropie "H" pour les jeux de symboles contenant les symboles "N".
Entropie "H" désirée Chiffres arabes Chiffres hexadécimaux Alphabet latin insensible à la casse Caractères alphanumériques insensibles à la casse Alphabet latin sensible à la casse Caractères alphanumériques sensibles à la casse Caractères imprimables ASCII Caractères imprimables ASCII étendus Liste de mots de Diceware
8 bits
(1 byte)
3 2 2 2 2 2 2 2 1 mot
32 bits (4 bytes) 10 8 7 7 6 6 5 5 3 mots
40 bits (5 bytes) 13 10 9 8 8 7 7 6 4 mots
64 bits (8 bytes) 20 16 14 13 12 11 10 9 5 mots
80 bits (10 bytes) 25 20 18 16 15 14 13 11 7 mots
96 bits (12 bytes) 29 24 21 19 17 17 15 13 8 mots
128 bits (16 bytes) 39 32 28 25 23 22 20 17 10 mots
160 bits (20 bytes) 49 40 35 31 29 27 25 21 13 mots
192 bits (24 bytes) 58 48 41 38 34 33 30 25 15 mots
224 bits (28 bytes) 68 56 48 44 40 38 35 29 18 mots
256 bits (32 bytes) 78 64 55 50 45 43 39 33 20 mots

Recommandations pour la robustesse des mots de passe

[modifier | modifier le code]

Les humains sont notoirement inefficaces à générer des mots de passe robustes parce qu'ils ont tendance à générer des mots de passe faciles à retenir plutôt que des mots de passe contenant des caractères choisis aléatoirement. Selon une étude portant sur un demi-million d'utilisateurs, l'entropie moyenne des mots de passe a été estimée à 40,54 bits[6].

Ainsi, dans une analyse de plus de 3 millions de mots de passe de huit caractères, la lettre « e » a été utilisée plus de 1,5 million de fois, alors que la lettre « f » n'a été utilisée que 250 000 fois. Une distribution uniforme aurait utilisé chaque caractère environ 900 000 fois. Le nombre le plus couramment utilisé est « 1 », tandis que les lettres les plus courantes sont a, e, o et r[7].

Les utilisateurs utilisent rarement pleinement les grands jeux de caractères pour former des mots de passe. Par exemple, les résultats de piratage obtenus à partir d'un système d'hameçonnage sur MySpace en 2006 ont révélé 34 000 mots de passe, dont seulement 8,3% utilisaient des majuscules, des chiffres et des symboles[8].

Pour éviter les faiblesses mentionnées dans les paragraphes précédents et d'autres faiblesses semblables, les partisans de la sécurité des systèmes logiciels proposent les recommandations semblables[9],[10],[11],[12],[13] :

  • utiliser une longueur de mot de passe minimale de 8 caractères, si autorisé ;
  • inclure des caractères alphabétiques minuscules et majuscules, des chiffres et des symboles, si autorisé ;
  • générer des mots de passe au hasard lorsque cela est possible ;
  • ne pas utiliser le même mot de passe plusieurs fois (par exemple, sur plusieurs comptes d'utilisateurs et / ou systèmes logiciels) ;
  • éviter les répétitions de caractères, les motifs de clavier, les mots du dictionnaire, les séquences de lettres ou de chiffres, les noms d'utilisateur, les prénoms et les noms de famille, les liens romantiques (actuels ou passés) et les informations biographiques (numéros d'identification, noms d'ancêtres ou dates, par exemple) ;
  • ne pas utiliser d'informations qui sont ou pourraient devenir publiquement associées à l'utilisateur ou au compte ;
  • ne pas utiliser d'informations dont les collègues et / ou les connaissances de l'utilisateur pourraient savoir qu'elles sont associées à l'utilisateur ;
  • ne pas utiliser de mots de passe constitués d'une combinaison des composants faibles susmentionnés.

Certaines directives conseillent de ne pas écrire les mots de passe, tandis que d’autres, reconnaissant l'impossibilité pour l'utilisateur de mémoriser un grand nombre de mots de passe robustes différents, encouragent l’écriture de mots de passe tant que les listes de mots de passe écrites sont conservées dans un endroit sûr [14].

L'utilisation de certains caractères spéciaux parmi les 94 caractères imprimables ASCII peut poser problème à des utilisateurs souhaitant se connecter (depuis l'étranger par exemple) via un clavier doté d'une disposition différente, certaines IHM requérant des combinaisons complexes de touches pour avoir accès à l'ensemble des symboles ASCII.

Gestionnaires de mots de passe

[modifier | modifier le code]

Un compromis raisonnable pour l'utilisateur qui doit gérer un grand nombre de mots de passe robustes consiste à les enregistrer dans un gestionnaire de mots de passe, qui comprend des applications autonomes, des modules d'extension de navigateur Web ou un gestionnaire intégré au système d'exploitation. Un gestionnaire de mots de passe permet à l'utilisateur d'utiliser des centaines de mots de passe différents et de ne devoir mémoriser qu'un seul mot de passe, celui qui ouvre la base de données de mots de passe chiffrée. Ce mécanisme réduit la fatigue de mot de passe qui pousse les utilisateurs à de mauvaises pratiques de sécurité (choix d'un mot de passe partagé entre plusieurs applications, doté d'une faible entropie, sensible à l'ingénierie sociale, etc.).

Le mot de passe du gestionnaire de mots de passe doit être fort, bien protégé et non enregistré en clair. La plupart des gestionnaires de mots de passe peuvent créer automatiquement des mots de passe robustes à l'aide d'un générateur de mot de passe aléatoire cryptographiquement sécurisé, ainsi que calculer l'entropie du mot de passe généré. Un bon gestionnaire de mots de passe (par exemple KeePass, recommandé par l'ANSSI) fournira une résistance contre les attaques telles que les enregistreurs de frappe, les enregistreurs de presse-papiers et diverses autres techniques d'espionnage de la mémoire.

Références

[modifier | modifier le code]
  1. (en) « Cyber Security Tip ST04-002 », Choosing and Protecting Passwords, US-CERT (consulté le ).
  2. « Why User Names and Passwords Are Not Enough | SecurityWeek.Com », sur www.securityweek.com (consulté le )
  3. (en) « WSTG - Latest | OWASP », sur owasp.org (consulté le )
  4. a et b « SP 800-63 – Electronic Authentication Guideline » [PDF], NIST (version du sur Internet Archive)
  5. Schneier, B: Applied Cryptography, 2e, page 233 ff. John Wiley and Sons.
  6. Dinei Florencio et Cormac Herley, « A Large-Scale Study of Web Password Habits », Proceeds of the International World Wide Web Conference Committee,‎ (lire en ligne [archive du ])
  7. (en) Mark Burnett, Perfect Passwords : Selection, Protection, Authentication, Syngress Publishing, , 181 p. (ISBN 1-59749-041-5), p. 181
  8. Bruce Schneier, « MySpace Passwords aren't so Dumb », Wired Magazine,‎ (lire en ligne [archive du ], consulté le )
  9. Microsoft Corporation, Strong passwords: How to create and use them « https://web.archive.org/web/20080101132156/http://www.microsoft.com/protect/yourself/password/create.mspx »(Archive.orgWikiwixArchive.isGoogleQue faire ?),
  10. Bruce Schneier, Choosing Secure Passwords « https://web.archive.org/web/20080223002450/http://www.schneier.com/blog/archives/2007/01/choosing_secure.html »(Archive.orgWikiwixArchive.isGoogleQue faire ?),
  11. Google, Inc., How safe is your password? « https://web.archive.org/web/20080222225549/https://www.google.com/accounts/PasswordHelp »(Archive.orgWikiwixArchive.isGoogleQue faire ?),
  12. University of Maryland, Choosing a Good Password « https://web.archive.org/web/20140614022254/http://www.cs.umd.edu/faq/Passwords.shtml »(Archive.orgWikiwixArchive.isGoogleQue faire ?),
  13. Teri Bidwell, Hack Proofing Your Identity in the Information Age, Syngress Publishing, (ISBN 1-931836-51-5)
  14. « Write Down Your Password - Schneier on Security », sur www.schneier.com (version du sur Internet Archive)

Articles connexes

[modifier | modifier le code]