Question:
Dans quelle mesure est-il essentiel de garder la longueur de votre mot de passe secrète?
Crizly
2015-06-23 19:01:59 UTC
view on stackexchange narkive permalink

Le secret de la longueur de votre mot de passe est-il essentiel à la sécurité?

Est-ce que quelqu'un sachant que vous avez une longueur de mot de passe de 17, par exemple, rend le mot de passe beaucoup plus facile à utiliser par la force brute?

Dans un monde idéalisé, avec un jeu de caractères connu et sans dictionnaires ou autres méthodes complexes pour générer des mots de passe, ** ne pas connaître la longueur du mot de passe a le même coût pour l'attaquant qu'un caractère supplémentaire dans le jeu de caractères **.
Questions de taille. Plus il est court, moins vous avez envie d'en parler.
l'importance de garder la longueur secrète est inversement proportionnelle à la longueur.
La plupart des cordes d'une longueur allant jusqu'à 17 sont * exactement * de longueur 17 (le volume d'une n-boule est près de la surface)
@ColonelPanic Pour grand n
Dix réponses:
Mike Ounsworth
2015-06-23 19:24:52 UTC
view on stackexchange narkive permalink

Eh bien, commençons par les mathématiques: si nous supposons que votre mot de passe est composé de lettres minuscules, supérieures et de chiffres, vous avez le choix entre 62 caractères (pour simplifier les calculs, les mots de passe réels utilisent également des symboles). Un mot de passe de longueur 1 a 62 possibilités, un mot de passe de longueur 2 a 62 ^ 2 possibilités, ..., un mot de passe de longueur n a 62 ^ n possibilités.

Cela signifie que s'ils connaissent votre mot de passe a exactement 17 caractères, alors ils peuvent ignorer tous les mots de passe d'une longueur inférieure à 17, et il n'y a que 62 ^ 17 mots de passe à essayer.

Mais combien de mots de passe y a-t-il avec une longueur inférieure à 17, comparé à 62 ^ 17?

Eh bien, si nous additionnons 62 ^ n et divisons par 62 ^ 17, nous obtenons (somme de n = 1 à n = 16 sur 62 ^ n) / 62 ^ 17 = 0,016 ( lien vers le calcul), donc vérifier uniquement les mots de passe de longueur 17 n'est que 1,6% plus rapide que vérifier tous les mots de passe jusqu'à 17

Si nous avons un schéma de mot de passe qui autorise les 95 caractères ASCII imprimables , alors les économies de ne pas avoir à essayer des mots de passe inférieurs à 17 passent à 1.06 % ( lien vers le calcul).

Une bizarrerie mathématique intéressante à propos de ce rapport du nombre de mots de passe plus courts que n, sur le nombre de mots de passe de longueur n, est qu'il ne dépend pas vraiment de n. C'est parce que nous sommes déjà très proches de l'asymptote de 1/95 = 0,0105. Ainsi, un attaquant obtient le même gain de temps relatif, ou pourcentage grâce à cette astuce, quelle que soit la longueur de votre mot de passe; c'est toujours entre 1% et 2%. Bien que, bien sûr, le temps absolu que cela prend augmente de plusieurs ordres de grandeur avec chaque nouveau caractère que vous ajoutez.


Les mathématiques ci-dessus supposent un simple brute-forcer qui essaiera a, b, c , ..., aa, ab, ... Ce qui est un bon (ish) modèle pour craquer des mots de passe générés par ordinateur correctement aléatoires, mais c'est un modèle terrible pour deviner les mots de passe générés par l'homme.

Les vrais crackers de mots de passe sont basés sur un dictionnaire, essayant des mots (et des combinaisons de mots) du dictionnaire anglais, des listes de mots de passe divulgués, etc., donc ces calculs doivent être pris avec un grain de sel.

La connaissance de votre longueur a également pour effet de ne pas avoir à essayer de mots de passe plus longs que 17 , ce qui, pour les algorithmes de force brute qui essaient des combinaisons de mots du dictionnaire, pourrait en fait être une énorme économie.


Comme mentionné par @SteveSether, @xeon et @CountIblis, la divulgation de la longueur (ou de l'entropie) d'un mot de passe peut également déterminer si un attaquant tente même de déchiffrer votre mot de passe en les dissuadant des mots de passe forts et en les attirant plutôt vers des mots faibles. Donc, si vous savez que vous avez un mot de passe fort, divulguez-le! Cependant, la divulgation des longueurs (ou entropies) des mots de passe pour tous les utilisateurs d'un système a pour effet de rendre les mots de passe forts plus forts et les mots de passe faibles plus faibles.


Conclusion:

Dire à quelqu'un la longueur de votre mot de passe n'est pas la pire chose que vous puissiez faire, mais je ne le ferais toujours pas.

"Dire à quelqu'un la longueur de votre mot de passe n'est pas la pire chose que vous puissiez faire, mais je ne le ferais toujours pas." Il existe des cas d'utilisation où le stockage de ces informations est utile. (Mots de passe plus longs -> plus de temps entre les réinitialisations de mot de passe obligatoires.) Si une base de données est compromise, cela peut être divulgué. Une optimisation des fissures d'environ 2% n'est pas un inconvénient * significatif * par rapport à un système qui récompense des mots de passe plus longs. (Remarque: je stockerais en fait l'estimation d'entropie zxcvbn plutôt que la longueur, mais cela peut également être approximé.)
@ScottArciszewski Savoir qu'un système n'accepte que les mots de passe, par exemple * plus longs que 17 * donne en fait à l'attaquant BEAUCOUP MOINS qu'une accélération de 2% car le nombre de mots de passe inférieurs à 17 est minuscule par rapport à * 17 et plus *. Un autre point est que les bases de données devraient stocker des hachages salés des mots de passe, auquel cas aucune information de longueur n'est divulguée si la base de données est volée.
Je voulais dire: deux colonnes `password` est un hachage bcrypt / [password_lock] (https://github.com/paragonie/password_lock),` Strength` est une estimation d'entropie zxcvbn du mot de passe pour déterminer quand forcer l'utilisateur à faire une réinitialisation obligatoire du mot de passe (unilatéral 30 jours est ennuyeux, utilisons le conditionnement pavlovien pour récompenser les mots de passe plus forts).
@ScottArciszewski Fair. Vous gardez en effet deux "hachages" pour chaque mot de passe: le hachage bcrypt et l'entropie zxcvbn. Étant donné que zxcvbn est beaucoup plus rapide à calculer que bcrypt, un attaquant n'a qu'à effectuer les 100 000 (ou wtv) itérations salt-and-hash d'un mot de passe candidat si les scores de zxcvbn correspondent exactement. C'est un énorme avantage pour l'attaquant. Puisque zxcvbn est open source, je vous suggère de modifier légèrement l'algorithme afin qu'au moins les valeurs d'entropie dans votre base de données ne correspondent pas * exactement * à celles calculées par l'implémentation standard.
Cela s'appelle la sécurité par l'obscurité. Une meilleure idée serait de stocker `(int) log ($ entropy, 2)`.
@ScottArciszewski ... comment est-ce moins la sécurité par l'obscurité? Vous ne faites que changer la façon dont vous calculez la valeur stockée dans la colonne `entropy`. Maintenant, l'attaquant doit correspondre à `(int) log (zxcvbn ($ password), 2)`, qui est toujours plus rapide que `bcrypt ($ password)` ... à moins que quelque chose me manque.
@ScottArciszewski En y réfléchissant davantage, du point de vue de ce thread (c'est-à-dire en ignorant les autres facteurs), stocker le score zxcvbn à côté du hachage du mot de passe est en fait pire que de stocker la longueur car il y a beaucoup plus de chaînes qui ont la même longueur que les chaînes qui ont le même score zxcvbn à 3 décimales. Certes, `(int) log_2 ()` atténue beaucoup cela.
@ScottArciszewski Toute estimation de l'entropie d'un mot de passe ne donne à un attaquant qu'une liste d'utilisateurs candidats à cibler. c'est-à-dire "Attaquer le gars d'Andy avec le mot de passe à 6 caractères, mais pas Frank avec le mot de passe à 17 caractères".
@ScottArciszewski Non, il vous permet également de filtrer vos dictionnaires de force brute pour n'essayer que les mots de passe qui correspondent à la longueur / entropie donnée.
@ScottArciszewski Au lieu de stocker l'estimation d'entropie, je pense qu'il est bien préférable de stocker l'heure d'expiration calculée. De plus, un peu de randomisation comme suggéré par Mike garantira qu'un attaquant qui parvient à déterminer la durée de vie exacte autorisée d'un mot de passe ne comprendra pas l'estimation exacte de l'entropie.
@MikeOunsworth `mais je ne le ferais toujours pas` dans ce cas, je pense que votre mot de passe est exactement un caractère plus court qu'il ne devrait l'être. Ou en d'autres termes, la sécurité obtenue en augmentant la longueur de votre mot de passe d'un seul caractère l'emporte de loin sur la sécurité éventuelle perdue en indiquant à tout le monde la longueur du mot de passe. Personnellement, je n'ai aucun problème à dire au monde que j'utilise un mot de passe de 32 caractères et 130 bits d'entropie.
@MikeOunsworth Je ne vais pas dire que stocker (int) log ($ entropy, 2) est sûr, mais si zxcvbn ($ password) est un nombre à virgule flottante, alors stocker le premier est probablement plus sûr, car vous tronquez un beaucoup de précision. Cela réduit la quantité de données disponibles pour l'attaquant. C'est comme la différence entre dire «Voici le crc32 de mon mot de passe» et «Voici les 2 premiers chiffres du crc32 de mon mot de passe». Les deux peuvent être une mauvaise idée, mais la première est bien pire. D'un autre côté, peaufiner zxcvbn sans changer la précision serait une sécurité par l'obscurité.
@PatrickM Ajuster l'algorithme d'estimation pour contourner le problème serait en effet une sécurité par l'obscurité. Mais la variation n'a pas à être déterministe. Le simple fait d'ajouter un nombre aléatoire compris entre 0 et 1 suffirait pour éliminer la fuite et éviter la discontinuité associée à l'arrondissement.
En gardant à l'esprit que très peu d'espace de saisie de mot de passe est réellement utilisé lors de la création manuelle de mots de passe, il faut s'attendre à ce qu'un adversaire stratégique tente de craquer les mots de passe, quelle que soit leur longueur. L'accélération de 1,6% est un petit avantage précisément parce que l'espace d'entrée est * très grand *. Si l'espace d'entrée était très petit (il l'est), et bien connu de l'attaquant (nous ne savons pas si c'est le cas), alors les attaques pourraient être facilitées beaucoup plus que par seulement 1,6% (mais nous ne pouvons pas quantifier combien faute de données).
Vous devez supprimer "selon wolfram alpha". N'importe qui peut vérifier votre réclamation en quelques secondes avec une ligne de python, d'octave, de mathématique ou autre. C'est comme dire, "selon wolfram alpha, 1 + 1 = 2".
@RenéG Là, édité pour être moins offensant pour vous. Je laisse cependant des liens vers les calculs, car ce n'est pas un calcul évident pour les personnes sans connaissances en mathématiques. De plus, ce n'est pas un calcul que vous pouvez faire facilement dans la plupart des langages de programmation puisque 62 ^ 17 (ou 95 ^ 17) est BIEN plus que 2 ^ 32, et donc provoquera des débordements d'int.
Je ne voulais pas être un pédant :) Je n'ai pas voté contre, c'était juste mon opinion. De toute façon, cela n'a pas vraiment d'importance. Bien que pour être honnête, quelqu'un qui ne sait pas calculer cette somme ne devrait pas travailler avec des ordinateurs, de simples séries géométriques. L'arrière-plan est juste les mathématiques du lycée.
@ScottArciszewski n'a tout simplement pas de réinitialisation de mot de passe obligatoire, s'il vous plaît. Ils diminuent en fait la sécurité.
Je ne suis dans aucune de mes applications. Je parle ici strictement hypothétiquement.
"s'ils savent que votre mot de passe contient exactement 17 caractères, ils peuvent ignorer tous les mots de passe d'une longueur inférieure à 17". Ils peuvent également ignorer les mots de passe d'une longueur * supérieure à * 17. Je n'arrive pas à voir comment votre analyse considère cela. Qu'est-ce que je rate?
@MaskedMan L'attaque par force brute la plus simple essaierait les mots de passe par ordre de longueur croissante. Ainsi, les mots de passe de longueur 18 et plus ne seraient jamais essayés de toute façon, car l'attaquant trouverait le mot de passe en essayant ceux de longueur 17 et s'arrêterait une fois le mot de passe trouvé.
@MaskedMan Vous avez raison, étant donné le grand nombre de programmes de craquage de mots de passe, essayer de deviner dans quel ordre ils essaieront les mots de passe est une bataille perdue. Ce calcul était censé être un premier regard approximatif pour comprendre le problème, et non une réponse définitive. Comme je le note dans ma deuxième section, ce calcul est assez mauvais pour les attaques de dictionnaire, mais il est toujours solide pour déchiffrer un mot de passe complètement aléatoire comme `= Wm) Z;] A@5m * vRhD`
Tom Leek
2015-06-23 20:13:22 UTC
view on stackexchange narkive permalink

Hormis les calculs détaillés par @Mike, considérez aussi que la longueur du mot de passe fuit partout:

  • Lorsqu'il est tapé, un un spectateur sournois peut l'apprendre, soit en comptant le '*' à l'écran, soit en écoutant les frappes (dans ce dernier cas, il peut enregistrer le son avec son smartphone et le jouer comme son loisir).

  • Dans un scénario classique de "navigateur Web", le nom d'utilisateur et le mot de passe seront envoyés au serveur via un POST HTTPS. La couche SSL chiffrera les données, mais SSL ne masque pas la longueur des données, donc un observateur de réseau passif apprendra également la longueur du mot de passe.

  • L'interface côté utilisateur et le système récepteur traiteront le mot de passe avec des fonctions dont le temps d'exécution et les modèles d'accès à la mémoire dépendront de la longueur du mot de passe. Les attaquants qui peuvent effectuer des mesures de synchronisation pourront généralement déduire la longueur du mot de passe à partir de ces mesures.

Par conséquent, une approche sensée consiste à considérer la longueur du mot de passe comme des données publiques. Certains attaquants n'y auront pas accès (le genre d'attaquants qui vient de saisir une copie de la base de données du serveur); d'autres le sauront. Il est très difficile de savoir à quel point la longueur du mot de passe est secrète, et comme la sécurité consiste essentiellement à quantifier les choses, il est préférable de supposer que tous les attaquants peuvent savoir la longueur du mot de passe. Croire que vous pouvez le garder secret et estimer la sécurité sur la base de cette notion serait excessivement dangereux.

Même si la longueur ne fuit pas, un attaquant qui ne sait pas que le mot de passe de quelqu'un est exactement par ex. neuf caractères peuvent commencer par deviner tous les mots de passe plus courts possibles, car le nombre de mots de passe possibles de moins de neuf caractères est nettement inférieur au nombre de mots de passe de neuf caractères.
TLS et SSH utilisent souvent des chiffrements par blocs, ce qui signifie qu'un mot de passe plus long ne fera que le message chiffré sera plus long lorsqu'il déborde d'un bloc (par exemple, une limite de 8 octets). Cependant, si le mot de passe est saisi dans le cadre d'une session interactive (terminal sur SSH, ou VNC sur SSH, ...), un paquet sera envoyé pour chaque frappe, ce qui divulgue presque autant d'informations que l'audio de la clé de l'utilisateur. clics.
La mode moderne avec TLS consiste à utiliser des suites de chiffrement AES / GCM, où il n'y a pas de remplissage - la longueur du texte en clair peut ainsi être déduite avec la plus grande précision.
La quantité totale d'entropie fournie par la longueur du mot de passe n'est pas trop difficile à calculer, ou plutôt l'entropie MAXIMALE ... supposons que les mots de passe peuvent avoir n'importe quelle longueur entre 1 caractère et 32, alors il s'agit de 5 bits d'entropie au plus, avec de Bien sûr, un gros groupage vers le bas de la longueur minimale requise. Bien sûr, certaines banques vous limiteront à 12 caractères (minimum 6), donc c'est seulement 2,5 bits AU PLUS. Tout cela suppose bien sûr que la longueur est secrète, ce qui n'est pas ...
Je pense que dire à quiconque essayant de forcer brutalement votre mot de passe que vous avez un mot de passe de 17 caractères serait suffisant pour les décourager même de tenter de forcer votre mot de passe du tout, et de trouver une autre faille dans votre sécurité. Il y aurait donc un gain de temps considérable pour eux. ;)
@TomLeek il vous manque un point clé. Des données supplémentaires telles que les noms d'utilisateur, les jetons CSRF, les publicités, etc. modifieront la longueur du contenu. Il est inutile d'écouter un tel trafic dans de tels cas. En outre, certains sites calculent bcrypt du côté client lui-même (pas sûr), en faisant ainsi abstraction de la longueur des données de la demande.
@david: Oui, le temps de fuite entre les pressions sur les touches est une divulgation sérieuse, il y a beaucoup d'informations mutuelles là-bas.
Les noms d'utilisateur @prakharsingh95: ne sont probablement pas secrets au moment où quelqu'un essaie de déchiffrer votre mot de passe (mais, si le nom d'utilisateur est inconnu de l'attaquant, alors vous avez raison, il confondra les tentatives de déterminer la longueur du mot de passe à partir de la taille du https. post demande utilisée pour se connecter). Les jetons CSRF ont généralement une longueur fixe pour un site donné, et l'attaquant peut déterminer cette longueur simplement en utilisant le site, mais il y a sans aucun doute quelques exceptions. Les demandes https de l'utilisateur au serveur ne contiennent généralement pas de publicités.
@SteveJessop En effet. J'avais fait le point de la publicité dans la longueur générale du contenu HTTPS. Il semble que l'ajout d'un remplissage aléatoire dans le contenu POST du client empêchera ces attaques de canal latéral (ou le hachage du mot de passe côté client).
@prakharsingh95: Le point de Tom est qu'il y a trop de façons différentes de fuir. Même si vous pouviez brancher cette fuite parmi tant d'autres, cela ne vous permet toujours pas de vous fier au secret de la longueur du mot de passe. Pour HTTPS en général, bien sûr, mélanger un peu les longueurs pourrait jeter un peu de paille et éviter certaines de ses fuites d'informations plus simples. Par exemple, si vous avez un site Web servant 10 000 documents de toutes longueurs différentes, vous pouvez examiner sérieusement les implications d'un attaquant en déduisant lequel de ces documents chaque visiteur consulte.
Steve Sether
2015-06-23 20:40:37 UTC
view on stackexchange narkive permalink

La révélation de la longueur de votre mot de passe révèle quelque chose sur la force de votre mot de passe. Donc, en substance, vous donnez à quelqu'un un indice sur la difficulté à deviner.

Donc, si votre mot de passe est très long (17 caractères dans votre exemple), ce sont des informations largement inutiles. Si le mot de passe est court (6 caractères), il indique à un attaquant que vous pourriez valoir la peine d'être attaqué. Les attaquants s'attaquent aux cibles les plus faciles.

J'appellerais à peine les informations qui peuvent faire gagner beaucoup de temps aux attachés comme `` inutiles '' :)
Le corollaire serait: si possible, annoncez une longueur de mot de passe nettement supérieure à celle de votre vrai mot de passe. Si un attaquant l'ignore, aucun mal n'est fait. S'ils le croient, ils peuvent s'abstenir d'essayer de déchiffrer votre mot de passe (ou même d'essayer la mauvaise longueur de mot de passe).
Ou disons que c'est plus court, l'attaquant pensera qu'il est facile de craquer et passera quelques mois à générer de la chaleur, sans rien produire.
Ou mentir pour gaspiller mes efforts: j'ai un 18 long (quand vraiment il est 16 ..., ou vice versa)
Peter
2015-06-27 03:03:36 UTC
view on stackexchange narkive permalink

Je ne suis pas d'accord avec la réponse acceptée. Il est vrai que la longueur du mot de passe est presque inutile si tous les mots de passe sont créés aléatoirement par une machine. Cela ne vaut plus si les mots de passe sont créés par des humains de la manière habituelle : sur la base d'un ou plusieurs mots du dictionnaire, mélangez majuscules minuscules, remplacez certains caractères par des chiffres ou des caractères spéciaux, et ajoutez des préfixes et des suffixes (par exemple "! 1"), etc.

Regardons 2 scénarios, l'un est que nous avons 10'000 ' 000 mots de passe hachés et souhaitez trouver autant de mots de passe correspondants que possible pour ces hachages. L'autre est un hachage de mot de passe et nous voulons le déchiffrer. Dans les deux scénarios, la différence s'avère significative. Comme d'habitude, toutes les informations peuvent être utilisées de manière abusive lors d'une attaque, même si cela ne semble pas le cas à première vue .

Scénario 1: Cracker un grand nombre de 10'000'000 hachages de mots de passe avec des ressources limitées.

Nous pouvons simplement essayer des attaques par force brute sur tous les hachages de mots de passe sans aucun moyen de les distinguer si nous ne connaissons pas la longueur du mot de passe.

Si nous utiliser une attaque bruteforce exhaustive (qui est garantie de trouver le mot de passe) sachant que la longueur des mots de passe n'offrira qu'un gain très minime. Pourquoi? Bruteforcing tous les mots de passe à 7 chiffres prend environ 1 à 2% tant que brute forcer les mots de passe à 8 chiffres. La seule chose que nous gagnons en connaissant la longueur est que nous n'avons pas besoin de forcer brutalement les mots de passe à 7 chiffres (et plus petits) si nous savons déjà que le mot de passe a 8 chiffres. Sauf qu'une attaque bruteforce nécessite des ressources quasi infinies (puissance de calcul et / ou temps) et n'est donc pas quelque chose que nous pouvons ou allons faire.

Nous testons plutôt une série de mots de passe "probables" pour chaque longueur de mot de passe . Une façon de faire est une attaque par dictionnaire. Tester les mots de passe probables coûte plusieurs ordres de grandeur moins cher que d'utiliser la force brute exhaustive, mais cela présente un énorme inconvénient: une fois que nous avons essayé tous les mots de passe «probables» à 7 chiffres par rapport à un hachage de mot de passe, sans trouver le mot de passe correspondant, nous ne le savoir si le mot de passe correspondant à ce hachage de mot de passe est plus long que 7 chiffres. Donc, à moins que nous ne sachions avec certitude que le mot de passe ne dépasse pas 7 chiffres, nous devons encore tester ce hachage de mot de passe par rapport à tous les mots de passe à 8 chiffres "probables", mots de passe à 9 chiffres, mots de passe à 10 chiffres, etc. - et lors du test des mots de passe probables, tout comme bruteforce exhaustive, le coût du test de mots de passe plus longs augmente de façon exponentielle. Puisque nous savons maintenant que le mot de passe comporte 7 chiffres, nous n'avons pas à le tester par rapport à des mots de passe probables à 8, 9, 10, 11, 12 chiffres et même plus longs, ce qui économise une quantité de travail vraiment énorme.

Ça va mieux. Une fois que nous avons testé tous les mots de passe probables jusqu'à une longueur de, disons, 20 chiffres, nous pouvons maintenant dépenser nos ressources restantes sur une attaque par force brute sur ces hachages de mots de passe avec une petite longueur de mot de passe que notre recherche précédente de mots de passe "probables" n'a pas craqué . Supposons qu'il reste 2'000'000 hachages de mots de passe non piratés et que 100'000 d'entre eux ont des mots de passe de moins de 6 chiffres. Gardez à l'esprit que nous avons un budget limité. Les mots de passe à 6 chiffres sont peu coûteux à déchiffrer. Mais parce que nous savons que 100'000 sont à 6 chiffres ou moins, nous devons maintenant forcer brutalement 100'000 mots de passe à 6 chiffres afin de cracker 100'000, au lieu de forcer brutalement 2'000'000 mots de passe pour cracker 100'000 6 chiffres des mots de passe. Cela représente 5% du travail pour le même résultat!

Si nous examinons tous les avantages combinés, le gain exact que nous obtenons en connaissant la longueur des mots de passe dépend de la vitesse de notre méthode pour tester les mots de passe "probables", du taux de réussite respectif de notre méthode pour tester les mots de passe probables pour chaque mot de passe length, la distribution des longueurs de mots de passe dans la collection de hachage de mots de passe que nous voulons déchiffrer, et la quantité de ressources dont nous disposons (vitesse de calcul, temps). Mais en connaissant la longueur des mots de passe, nous pouvons facilement augmenter plusieurs fois le nombre de mots de passe que nous trouvons avec une quantité donnée de ressources - si les chiffres fonctionnent fortement en notre faveur, nous pouvons éventuellement réduire le coût en ressources pour cracker 30 % des mots de passe d'un ordre de grandeur ou plus.

Scénario 2: Cracker un seul mot de passe lors d'une attaque ciblée

Ne connaissant pas la longueur du mot de passe, nous besoin de répartir nos ressources entre le forçage brutal de toutes les clés avec une courte longueur et le test des mots de passe probables avec une longueur plus longue. En supposant que nous dépensons la moitié de nos ressources sur chacun, connaître la longueur du mot de passe nous permet de passer complètement sur l'une des 2 et donc de doubler nos ressources disponibles.

Nous obtenons également des informations supplémentaires qui peuvent être extrêmement précieuses dans un ciblé attaque:

  • Si le mot de passe est assez court pour le forcer brutalement, nous pouvons donner une limite supérieure sur le temps qu'il nous faut pour obtenir le mot de passe. Cela peut nous amener à tenter des attaques que nous n'aurions même pas envisagées autrement.

  • Nous pouvons également calculer la probabilité de déchiffrer le mot de passe. Si nous savons qu'il est peu probable que nous craquions le mot de passe, nous pouvons consacrer nos ressources à trouver d'autres moyens de compromettre le système.

  • Si nous avons 2 mots de passe différents du même utilisateur, nous pouvons voir s'il y a une chance qu'ils soient en fait le même mot de passe. S'ils ne varient que de 2 à 3 chiffres, nous pouvons supposer que le mot de passe le plus long pourrait être le même que le plus court, plus un préfixe ou un suffixe.

  • Si nous obtenons encore plus d'informations sur le mot de passe, cela peut entraîner un gain bien supérieur aux 2 pièces individuellement . Par exemple, si nous découvrons que le mot de passe est un seul mot du dictionnaire Oxford, vous avez toujours la possibilité de garder le mot de passe en sécurité si, par exemple, nous ne pouvons forcer brutalement qu'un mot de passe par minute. Mais si nous savons également que la longueur du mot de passe est de 17 chiffres, c'est fini.

Il semble que votre désaccord avec la réponse acceptée de Mike Ounsworth repose en grande partie sur ceci: il suppose que les mots de passe sont sélectionnés uniformément au hasard dans l'ensemble complet de chaînes, mais vous ne le faites pas, vous supposez qu'ils sont choisis par des personnes de la manièreles gens font.Cela aiderait votre cas, je pense, si vous mettez en évidence les différences dans les hypothèses.
Vladislavs Dovgalecs
2015-06-24 01:32:35 UTC
view on stackexchange narkive permalink

La révélation de la longueur du mot de passe a une influence. Si votre mot de passe est faible (mot de passe court), un attaquant peut se concentrer sur le piratage. Si le mot de passe est fort (mot de passe long), un attaquant peut explorer d'autres vecteurs d'attaque. Ainsi la connaissance de la longueur du mot de passe permet à un hacker de choisir une meilleure stratégie tout en gagnant du temps.

WoJ
2015-06-26 14:42:51 UTC
view on stackexchange narkive permalink

En plus des réponses qui donnent un bon aperçu de votre question, il y a encore une chose à prendre en compte: lors de votre évaluation des risques vous devez partir du principe que l'attaquant sait tout sur la méthodologie que vous utilisez pour créer votre mot de passe .

En d'autres termes, si votre mot de passe est composé de quatre mots anglais moyens collés ensemble, tous en minuscules ( à la xkcd) alors vous devez supposer (différemment que xkcd le fait, BTW) que l'attaquant obtiendra le dictionnaire pertinent et n'essaiera qu'une combinaison de quatre mots.

Vous avez maintenant un espace clé (nombre de possibilités) qui vous mettez le temps nécessaire pour vérifier ses éléments à [un nombre lié à des technologies et à des environnements spécifiques] essais / seconde - et cela vous donne le temps statistique que votre mot de passe survivra à une attaque.

Maintenant, vous décidez si c'est assez long, avec vos propres critères (cycle de vie du mot de passe, temps que les gens travaillent avec ce compte, âge de l'univers, ...)


Si nous prenons l'exemple de xkcd, ce serait

  • le vocabulaire moyen d'un anglophone est d'environ 12 000 mots. Faisons la moitié de cela (donc 6000)
  • cela fait 6000 ^ 4 = ~ 10 ^ 15 combinaisons
  • supposons 1000 test / s pour une attaque en ligne - c'est 10 ^ 12 secondes = 20 000 ans
  • une attaque hors ligne sera beaucoup plus efficace. Cela dépend de beaucoup de choses, le cracking GPU spécialisé peut attaquer un hachage de l'ordre de 10 ^ 9 tests / s, ce qui réduit le temps d'un tel mot de passe à 15 jours. Cela suppose, cependant, que le hachage n'a pas été correctement conçu ( le hachage d'un mot de passe devrait prendre beaucoup de temps)
Nous pouvons utiliser le dictionnaire [Diceware] (http://diceware.com) comme guide. Cela fait 6 ^ 5 = 7776 mots. log2 (7776) ~ 12,9 (bits). Diceware suppose que les mots sont générés de manière indépendante, aléatoire et uniformément distribuée (généralement à l'aide de dés physiques, d'où le nom).
Count Iblis
2015-06-23 23:54:26 UTC
view on stackexchange narkive permalink

Le fait de divulguer délibérément la longueur du mot de passe, à condition que vous n'utilisiez que des mots de passe très longs, comme le souligne Steve Sether dans sa réponse, rendra moins probable que les pirates tentent de le deviner. Ainsi, vous améliorez la sécurité en divulguant délibérément ces informations sur votre mot de passe.

Je suppose que c'est techniquement vrai, mais l'augmentation de la sécurité est si proche de zéro que je l'ignorerais normalement.
ou ils peuvent essayer de le pirater d'une manière différente. force brute pour tous les mots de passe <= 8, ingénierie sociale pour les mots de passe> 8.
gnasher729
2015-06-24 16:33:08 UTC
view on stackexchange narkive permalink

Un attaquant n'utilisera pas une attaque par force brute, essayant tous les mots de passe possibles, mais essayera d'abord des mots de passe plus probables. Un mot de passe de huit lettres totalement aléatoire peut être plus difficile à déchiffrer qu'un mot de passe de dix-sept lettres simple à deviner.

En conséquence, l'attaquant n'essaiera pas d'abord tous les mots de passe courts, mais essaiera des mots de passe de différentes longueurs tout au long de l'attaque. Donc, si vous avez un mot de passe de dix-huit lettres "hellohellohello123", vous n'êtes pas en sécurité; un mot de passe de huit lettres totalement aléatoire peut être plus sûr.

Le mot de passe dur de huit lettres est plus difficile à deviner car l'attaquant essaie également des choses comme "hellohellohello123" avant de vérifier les huit mots de passe. Si vous indiquez à l'attaquant la longueur du mot de passe, ce bit de correction disparaît. La perte est donc bien pire que celle de 1,26% mentionnée précédemment.

C'est vrai en général, mais les mots de passe de 8 longueurs sont si faciles à déchiffrer par force brute qu'ils ne sont pas un bon exemple ici. (3 jours si vous utilisez toutes sortes de caractères, 11 minutes si vous n'utilisez que du latin minuscule et des chiffres)
@Sarge En fonction de la fonction de hachage, de ses paramètres et des ressources de calcul disponibles pour le cracker, le forçage brutal d'un mot de passe à 8 chiffres peut durer de (presque) zéro à (presque) l'infini. Une déclaration générale selon laquelle il faut 3 jours pour déchiffrer un mot de passe à 8 chiffres ne peut pas être faite. Si quelqu'un utilise un hachage pour lequel un mot de passe à 8 chiffres peut être craqué en 11 minutes par un attaquant réaliste, il a clairement choisi le mauvais hachage.
@SargeBorsch: D'où tirez-vous cela? Par exemple, un iPhone prend environ 0,1 seconde pour vérifier un mot de passe, et il n'y a absolument aucun moyen de contourner cela. Même 8 chiffres mettent 3 mois à se fissurer.
L'iPhone n'est pas un exemple, ils ont un matériel faible et peuvent également avoir des limitations artificielles. Je l'ai obtenu de https://howsecureismypassword.net/
@gnasher729 Avez-vous déjà exécuté une application de force brute exécutée sur le GPU? Sur mon ancien GPU il y a 4 ans, il hachait 4 milliards de mots de passe par seconde. Un iPhone est lent, oui, mais 0,1 seconde semble exagéré, il est probablement plus proche de 0,1 ms.
@Peter l'utilisateur peut ne pas savoir quelle méthode de hachage est utilisée sur un serveur d'une autre société.
@Aidiakapi Un iPhone prend environ 80 ms de calculs pour tester un mot de passe (les modèles récents ajoutent des délais artificiels imposés par le matériel en cas de suppositions incorrectes répétées). Voir par exemple [Sécurité iOS, octobre 2012, par Apple] (https://www.apple.com/br/ipad/business/docs/iOS_Security_Oct12.pdf), page 9 dans le PDF.
@Michael Kjörling C'est uniquement pour sa propre sécurité. Vous pouvez simplement créer une application pour calculer les hachages pour les mots de passe de forçage brutal pour d'autres scénarios. Je suis également assez sûr que les iPhones modernes prennent en charge le GPGPU, ce qui permet à nouveau de forcer la brute basée sur le GPU, plusieurs ordres de grandeur plus rapides que les approches basées sur le processeur. Néanmoins, pour déchiffrer le mot de passe de l'iPhone lui-même, c'est en effet une sécurité intéressante.
Quora Feans
2015-06-27 23:28:31 UTC
view on stackexchange narkive permalink

Tout ce qui réduit l’entropie de votre mot de passe en réduit la force.

Il se peut que même lorsque vous divulguez la longueur du mot de passe, le pool de mots de passe possible restant soit encore assez grand.

En ce qui concerne un exemple concret, l'ensemble de tous les mots de passe de longueur 17 est sûrement assez fort contre presque toutes les attaques. Pourvu que vous n'ayez pas révélé d'autres détails tels que "Mon mot de passe de longueur 17 contient le nom de mon chat minou, que personne ne connaît."

La longueur 17 implique 2728435617536531697674356150506243258662745801423887919002145210389550859041884094492815788955085904188409449281578 caractères spéciaux). Je suis presque sûr que cela suffit, compte tenu de notre puissance de traitement actuelle. Le nombre ci-dessus est de l'ordre de grandeur d'un chiffre suivi de 98 0.

The Broken Ace
2015-06-28 04:11:35 UTC
view on stackexchange narkive permalink

Oui. C'est TRÈS crucial. Un programme appelé Crunch génère des listes de mots pour vous. Les plages telles que 1 à 17 caractères occuperont 15610 pétaoctets! Cependant, si un hacker sait que votre mot de passe est exactement de 17 caractères, cela prendra beaucoup moins. C'est pourquoi c'est crucial.

Exactement 17 caractères nécessitent la même quantité de données à stocker que tout ce qui comprend jusqu'à 17 caractères. Tout ce qui est de 1 à 16 caractères n'est qu'une erreur d'arrondi par rapport à la taille de 17.
Oh. Je ne savais pas ça.
C'est assez fou l'espace de recherche pour un mot de passe de 17 caractères. Pensez-y, si vous avez 17 caractères (sur 62 caractères possibles par espace), vous en avez 1 à 16 pour * chacun * des 62 caractères du 17e espace. Cela fait par définition tous les 1-16 caractères au plus 1 / 62e de l'espace de seulement 17.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...