# Robustesse d'un mot de passe

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).
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.
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.

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

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 2$^{42}$ (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.

### Entropie des mots de passe aléatoires

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 ($N^{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 log$_2$ 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
    $H=\log _{2}N^{L}=L\log _{2}N=L\times {\log N \over \log 2}$
où « N » est le nombre de symboles possibles et « L » est le nombre de symboles du mot de passe. « H » est mesuré en bits$^,$.

### Entropie par symbole

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 symbolesNombre de symboles « N »Entropie par symbole « H » Chiffres arabes (0–9) (e.g. PIN)103,322 bits Nombres hexadécimaux (0–9, A–F) (e.g. clés WEP)164,000 bits Alphabet latin insensible à la casse (a–z or A–Z)264,700 bits Caractères alphanumériques insensibles à la casse (a–z ou A–Z, 0–9)365,170 bits Alphabet latin sensible à la casse (a–z, A–Z)525,700 bits Caractères alphanumériques sensibles à la casse (a–z, A–Z, 0–9)625,954 bits Caractères imprimables ASCII sauf l'espace946,555 bits Caractères imprimables ASCII956,570 bits Caractères imprimables ASCII étendus2187,768 bits Nombre binaire de 8 bits (0–255 or 8 bits or 1 byte)2568,000 bits Liste de mots de Diceware777612,925 bits par mot

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

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 :
    $L={H \over \log _{2}N}$, arrondi au nombre entier suivant, soit ${\displaystyle L={\left\lceil {\frac {H}{\log _{2}N}}\right\rceil }}$.
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

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.
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.
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.
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$^,$$^,$$^,$$^,$ :
* 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.
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

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.