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