web-dev-qa-db-fra.com

La force du mot de passe est-elle exclusivement une fonction de la taille du jeu de caractères multiplié par mot de passe de longueur-caractères?

Mon équipe est responsable de la création et de la gestion de nombreux mots de passe (centaines), que nous faisons presque exclusivement par programme (toutes les générations sont suffisamment aléatoires). Nous exploitons une variété d'outils pour automatiser différents aspects de notre infrastructure, y compris mais non limité à Ansibles, Docker, Jenkins et Terraform. Ces outils ont tous leurs propres particularités quant à la manière dont ils consomment et exposent des chaînes dans divers contextes, dont les coquilles de POSIX ou les environnements d'exécution ressemblant à une coque sont notés spécifiquement. Nous appelons fréquemment ces outils d'une autre, passons au contexte entre alors à diverses fins.

Le problème: il est frustrant de manière frustrante de consacrer beaucoup de temps à enquêter sur des bugs mystérieux, seulement pour savoir que la cause fondamentale était la corruption de (ou non-analysé correctement) un mot de passe à un moment donné dans la chaîne de contexte qui passe, souvent (Mais pas toujours) dans un contexte de sélection de coquille POSIX, en raison de la présence de caractères spéciaux dans le mot de passe.

La question: étant donné une exigence de complexité de mot de passe qui est exprimée en longueur de mot de passe pour un ensemble de caractères donné, existe-t-il une différence dans une perspective de sécurité dans la réalisation de la même complexité en construisant un mot de passe de plus grande longueur, à partir d'un ensemble réduit?

Pour mettre cela concrètement: si nous avons généré des mots de passe "suffisamment puissants" de longueur x à partir des 95 caractères imprimables ASCII, et nous réduisons le jeu de caractères sur les 62 minuscules, majuscules et numériques = ASCII caractères, il y aura une perte de sécurité de mot de passe que ce soit en construisant des mots de passe de longueur y, où 62 ^ y> = 95 ^ x?

Edit: Veuillez lire ceci comme une question technique sur la définition de la complexité du mot de passe. Pour nos besoins, veuillez supposer que la génération de mot de passe est vraiment aléatoire. La définition de "suffisamment forte" est en dehors du champ d'application de cette question; Le principe est qu'il est acceptable.

3
thump

Mise à jour : Oups, je n'ai pas réellement répondu à la question posée. Au lieu de cela, j'ai répondu uniquement sur le titre. Donc, voici un deuxième coup.

En se concentrant sur

si nous avons généré des mots de passe "suffisamment forts" de longueur x à partir du 95 imprimable ASCII caractères, et nous réduisons le jeu de caractères sur les 62 minuscules, majuscule et numeric ASCII caractères, il y aura une perte de sécurité de mot de passe que ce soit en construisant des mots de passe de longueur y, où 62 ^ y> = 95 ^ x?

Non, il n'y aura aucune perte de force. En supposant que vous sélectionnez à partir du personnage, vous sélectionnez uniformément (ou assez proche de manière uniforme), les magnitudes de 62 ^ y et 95 ^ x sont exactement ce que vous devez regarder.

Pourquoi c'est même une question

Beaucoup de gens, y compris certains dans la communauté de sécurité, sont venus à la croyance erronée que des caractères spéciaux rendent les mots de passe plus forts simplement en étant des caractères spéciaux. Si vous entendez au fil des décennies, vous devez ajouter des caractères spéciaux à un mot de passe pour créer un bon mot de passe, il est naturel de supposer qu'il y a quelque chose de spécial à ce sujet.

Mais de retour quand c'était un bon conseil, c'était un bon conseil pour différentes raisons. Il a changé les habitudes des gens dans la création de mots de passe générés par l'homme. C'était une astuce psychologique à conduire vers une distribution plus flatteuse du choix du mot de passe humain. En tant que tel, le bénéfice réel de ces exigences n'était pas clair à la fois aux utilisateurs et aux personnes qui définissent les exigences. Et afin que les gens ont conclu que des caractères spéciaux rendent automatiquement les mots de passe plus forts.

Mais lorsque nous avons généré des mots de passe par des systèmes qui produisent une distribution uniforme pour commencer (donc non pas humain créé), le calcul est simple et 62 ^ y> = 95 ^ x est tout ce dont vous avez besoin pour considérer.


Réponse originale (qui n'était pas à la question posée)

La force du mot de passe est une fonction du système qui l'a généré. Permettez-moi de citer - quelque chose que j'ai écrit il y a neuf ans sur la question.

La force d'un système de création de mot de passe n'est pas du nombre de lettres, de chiffres et de symboles qui vous retrouvent, mais combien de façons pourriez-vous obtenir un résultat différent en utilisant le même système. [...]

Je ne peux pas trop insister sur le point que nous devons examiner le système au lieu d'une seule sortie du système. Laissez-moi illustrer cela avec un exemple ridicule. Les mots de passe F9GndpVkfB44VdvwfUgTxGH7A8t et rE67AjbDCUotaju9H49sMFgYszA Chaque ressemble à des mots de passe extrêmement puissants. Basé sur leurs longueurs et l'utilisation des majuscules et des minuscules et des chiffres, tout système de test de force de mot de passe dirait qu'il s'agit de mots de passe extrêmement puissants. Mais supposons que le système par lequel ils ont été générés étaient les suivants: retourner une pièce de monnaie. Si cela vient des têtes, utilisez F9GndpVkfB44VdvwfUgTxGH7A8t, et si cela vient des queues, utilisez rE67AjbDCUotaju9H49sMFgYszA.

Ce système ne produit que deux résultats. Et même si les mots de passe ont l'air forts, les mots de passe générés par ce système sont extrêmement faibles. Bien sûr, personne ne recommanderait un système qui n'a produit que deux résultats, mais les gens recommandent des systèmes qui produisent un nombre de résultats beaucoup plus limité que celui que l'on pourrait penser en inspectant un résultat individuel du système. C'est parce que les humains sont beaucoup plus prévisibles que ce que nous aimons croire.

C'est un exemple extrême et artificiel, mais j'espère que cela contribue à faire le point. Les propriétés statistiques de l'ensemble des mots de passe possibles Un système peut générer est où provient la force (ou la faiblesse).

0
Jeffrey Goldberg

Vous avez déjà quelques bonnes réponses à votre question actuelle, je vais répondre à la question que vous n'avez pas demandé et vous donner la bonne réponse:

Vous avez besoin d'un gestionnaire de secrets!

Maintenant, j'ai peut-être un peu mal compris que vous avez mal compris, mais vous parlez de passer dans le contexte d'un système à un autre, et cela ressemble au moment où vous faites ce "contexte" peut inclure des mots de passe, causant des problèmes lorsque différents systèmes doivent échapper à des caractères spéciaux de différentes manières. . Bien sûr, vous pouvez supprimer des caractères spéciaux et augmenter la longueur pour maintenir l'entropie, mais en fonction de votre question, je suppose que les étapes suivantes vous aideront beaucoup plus à long terme:

  1. Employer un gestionnaire de secrets pour stocker tous ces "mots de passe"
  2. Mettez à jour vos systèmes de construction pour obtenir directement les "mots de passe" du service secrets. Vous devriez très rarement à passer des secrets d'un service à un autre.
  3. Assurez-vous que tous les services ne peuvent accéder que les secrets dont il a besoin en réalité depuis le serveur Secrets.
  4. Arrêtez d'utiliser des mots de passe pour les appels de serveur à serveur!

Cela aidera considérablement avec vos problèmes immédiats et améliorera également votre posture de sécurité. Il s'agit donc d'un de ces cas où la "droite" d'une perspective de sécurité est également la chose "facile" (à long terme). Fais-moi confiance, même si vous devriez évidemment être un travail nécessaire pour que cela se produise, il sera beaucoup plus facile de gérer tout cela avec un responsable secret. Cela vous permettra également de faire pivoter plus facilement vos secrets si nécessaire et les gardera hors de mille pages de configuration différentes.

En outre, pourquoi appelez-vous ces "mots de passe"? Je n'appelles pas normalement des secrets que vous utilisez pour vous authentifier dans un contexte serveur à serveur "mots de passe". Ce n'est nécessairement qu'une question de nommage non plus. Les identifiants d'accès au serveur à serveur ont généralement des options pour des éléments tels que la rotation, l'expiration (si nécessaire), les autorisations et elles sont (souvent) de base64 codées de manière à pouvoir facilement se déplacer entre les systèmes sans ces sortes de problèmes. En conséquence, je suppose que vous pouvez avoir un problème plus fondamental de se cacher en arrière-plan ici.

0
Conor Mancone