Je me demande s'il serait plus clair de déclarer une exigence à l'échelle de l'entreprise en ce qui concerne l'entropie théorique des mots de passe, plutôt que l'habituel "au moins une grande lettre, et une petite dernière, et un caractère spécial ..."
Ainsi, si nous ciblons un niveau d'entropie raisonnable dont les humains doivent se souvenir, disons 60 bits
, puis calculons l'entropie.
Cela peut être calculé dynamiquement et localement et donnez des commentaires aux utilisateurs si nécessaire.
N'est-ce pas une meilleure façon, indépendante de la langue / région, de définir une politique de mot de passe?
Le problème fondamental est que l'entropie ne peut être estimée qu'à partir du mot de passe lui-même, et cette estimation peut être très erronée. L'entropie est déterminée par la méthode de génération de mot de passe. Vous ne pouvez pas mesurer l'entropie de la méthode à partir d'un seul mot de passe.
Regardons un exemple pratique. Je trouve qu'il est plus facile de mémoriser des mots de passe très longs générés à partir d'un petit espace de mot de passe, donc je vais utiliser uniquement des chiffres et le rendre très long. Votre algorithme regarde mon mot de passe, voit qu'il ne contient que des chiffres (c'est-à-dire que la taille du jeu de caractères est de 10) et qu'il comporte 20 caractères. Cela lui donne une entropie de:
log2 (10 ^ 20) = 66.4
Il réussit votre test! Mais arrêtons-nous et regardons le mot de passe:
01234567890123456789
Hmmm ... il s'avère que l'entropie réelle est jolie beaucoup de zéro.
Je pourrais être beaucoup plus technique mais dans ce cas, je pense qu'il vaut mieux garder la réponse simple. Je pense que cet exemple devrait fournir une réponse suffisante à votre question.
Les tests pour toute politique sont les suivants:
- les gens le savent
- les gens la comprennent
- les gens savent s'ils s'y conforment
- les gens savent comment s'y conformer
Votre approche est d'environ 2 sur 4 sur cette échelle pour l'utilisateur moyen.
La meilleure option est d'exiger des mots de passe générés aléatoirement. C'est facile à comprendre, facile à implémenter et facile à fournir des processus et des outils pour («il suffit d'utiliser ce gestionnaire de mots de passe»).
Avec votre approche, vous essayez essentiellement d'amener les gens à devenir leur propre générateur aléatoire. Cela entraînera de nombreux essais et erreurs lorsque les gens essaieront de déterminer quel mot de passe passera le test. Cela entraînera de la frustration et de la confusion.
Mais cela suppose que vous écrivez une politique pour l'utilisateur moyen et que votre calcul d'entropie est valide (ce qui semble hors du sujet de votre question en ce moment, et j'ai de sérieuses réserves à ce sujet).
Une chose clé à comprendre lors de la sélection d'une politique de mot de passe (ou d'un mot de passe) est que l'entropie n'est pas une propriété du mot de passe. C'est une propriété de la méthode utilisée pour le générer. Plus généralement, il s'agit d'une propriété des distributions de probabilités qui nous indique à peu près la quantité d'informations supplémentaires dont vous auriez besoin pour identifier de manière unique un élément tiré de cette distribution si vous connaissez la distribution. Je vais un peu plus en détail dans une réponse précédente si vous êtes intéressé, mais pour les mots de passe, cela signifie grosso modo que s'il y a 2 ^ n mots de passe que vous pourrait avoir généré, vous avez une entropie de n.
Si les utilisateurs génèrent leurs propres mots de passe, vous ne pouvez pas savoir quelle méthode ils ont utilisée. Vous ne pouvez définir que des politiques qui rendent plus probable que les utilisateurs sélectionnent une méthode qui a une entropie élevée. Ce faisant, vous devez garder à l'esprit que les utilisateurs trouveront généralement le moyen le plus paresseux de se conformer à une politique, c'est pourquoi exiger qu'un mot de passe doit contenir des lettres majuscules et des chiffres revient à exiger que la première lettre soit en majuscule et que il y a un seul chiffre à la fin.
La meilleure politique de mot de passe que j'ai vue est celle de Stanford, ce qui rend les exigences relatives aux caractères spéciaux moins onéreuses plus le mot de passe est long, pour encourager l'utilisation de longues phrases de passe au lieu de Password1 $
. Si le mot de passe contient moins de 12 caractères, il requiert tous les types de caractères. Cette restriction est assouplie à mesure que la longueur augmente, et une fois que le mot de passe contient au moins 20 caractères, il n'y a aucune restriction supplémentaire. (Il n'y a pas non plus de limite supérieure pour la longueur du mot de passe. Rien n'est plus ennuyeux qu'une politique de mot de passe qui m'oblige à utiliser des mots de passe courts au nom de la sécurité.) Il suggère ensuite de sélectionner au hasard 4 mots comme moyen d'obtenir des mots de passe aussi longs, qui est une méthode de génération de mot de passe avec une entropie élevée.
Dans le cadre de cette politique, la bonne approche est également la plus paresseuse, ce qui signifie que les utilisateurs peuvent réellement le faire.
Je l'ai fait une fois avec quelques centaines d'utilisateurs.
J'ai estimé l'entropie en fonction de la taille approximative de l'alphabet qu'ils utilisaient, où les mots courants du dictionnaire (tirés d'un dictionnaire anglais) comptaient pour un "lettre" chacun, et les mots inconnus ont été divisés en alpha inférieur, alpha supérieur, nombres, symboles, espaces blancs, etc. Il y avait quelques autres modèles communs qu'il identifierait dont je n'entrerai pas dans les détails car ce n'est pas pertinent.
Si l'entropie calculée était trop faible, le mot de passe était rejeté et l'utilisateur recevait des conseils pour l'améliorer. Il y avait certainement place à amélioration mais cela fonctionnait très bien pour filtrer les mots de passe clairement faibles.
Le problème était que les utilisateurs détestaient cela car il était difficile à comprendre (en particulier, il était difficile pour eux de faire un mot de passe faible assez fort pour être utilisé sans le rendre vraiment long).
Au lieu de cela, ces jours-ci, je recommanderais d'appliquer seulement une longueur minimale , mais de vérifier les mots de passe des utilisateurs par rapport à un base de données des mots de passe connus (par exemple, https://haveibeenpwned.com/Passwords) et avertir l'utilisateur si son mot de passe est trouvé.
C'est tentant de bloquer les mots de passe dont vous savez qu'ils sont mauvais, mais si un utilisateur n'écoute pas un avertissement, c'est parce qu'il ne se soucie pas du compte de toute façon. Si vous forcez ces utilisateurs à choisir un mot de passe plus difficile, ils risquent de le compromettre d'une autre manière (par exemple en l'écrivant sur un post-it sur leur moniteur).
Enfin, s'il vous plaît considérez si vous avez même besoin de mots de passe. Nous sommes loin de l'époque où chaque service Web a son propre identifiant. Il existe un grand nombre de services d'authentification unique auxquels vous pouvez intégrer pour décharger la gestion des connexions et faciliter les choses pour vos utilisateurs (tout en offrant une MFA, etc.), et pour les choses plus sécurisées, l'utilisation de certificats est une meilleure sécurité. de toute façon (le support du navigateur pour MTLS est plutôt bon maintenant!)
plutôt que l'habituel "au moins une grande lettre, et une petite dernière, et un caractère spécial ..."
Toute politique contenant ces exigences en 2020 est enfreinte et doit être révoqué. (*)
Les principales choses que les utilisateurs réguliers doivent savoir sur les mots de passe sont:
- il doit être long (10 à 12 caractères recommandés)
- il ne doit pas être devinable (pas "mot de passe" ou "1234567890" ou votre nom, anniversaire, etc.)
au niveau informatique, vous devrait avoir une liste noire (les 1000 mots de passe les plus courants ou autres).
(*) les règles de complexité sont incorrectes . Dans presque tous les cas, ils rendent les mots de passe plus faciles à compromettre. Ne les utilisez pas. Sérieusement, non. Ce ne sont plus les années 80.