web-dev-qa-db-fra.com

Quelle politique de mot de passe est la plus sécurisée: un mot de passe de longueur 9 contre deux mots de passe de longueur 8 chacun?

Quoi de plus sûr, d'avoir un mot de passe de longueur 9 (salé et haché) ou d'avoir deux mots de passe différents, chacun de longueur 8 (salé et haché en utilisant deux sels différents)?

19
Carlos

Comme l'a noté John Deters, le 2x8 est presque certainement pire - mais les raisons expliquent pourquoi.

Il y a eu quelques problèmes avec les hachages LANMAN (le cas classique de la rupture d'un mot de passe en deux, a mal tourné):

  • Étant donné que les mots de passe ont tendance à être générés par l'homme et quelque peu courts, si un seul mot de passe n'était qu'un peu plus long que la première moitié (disons, 8 caractères), alors la fissuration de la seconde moitié prendrait de façon spectaculaire moins temps - et pourrait même révéler ce que la première moitié était susceptible d'être

  • LANMAN était tellement sacrément rapide (pour que l'attaquant tente, en opérations de hachage par seconde)

  • LANMAN a coupé les mots de passe en deux à une longueur malheureuse (7), ce qui était assez susceptible d'épuisement complet (et même plus sur les GPU modernes)

Cependant, votre question est un peu différente de l'affaire LANMAN:

  • Il ne dit pas que les mots de passe 2x8 sont en fait un seul mot de passe divisé en deux (ils pourraient être générés indépendamment et aléatoires)
  • Il déclare explicitement que les deux mots de passe sont de longueur 8 (plutôt que, disons, l'un de longueur 8 et l'autre de longueur 1, le fameux pire cas LANMAN)
  • À moins que vos sels soient trivialement petits, la construction de tables Rainbow serait irréalisable - ce qui est le but du salage (contrairement aux hachages LANMAN, qui étaient entièrement non salés)

C'est donc une question intéressante - à laquelle on répond en grande partie en examinant les mathématiques associées.

Faisons quelques hypothèses:

  • Les approches 9x1 et 8x2 sont salées et hachées en utilisant les mêmes longueurs de sel et les mêmes algorithmes
  • Pire cas pour l'attaquant - les mots de passe sont générés aléatoirement à partir du jeu de caractères imprimable ASCII (95 caractères), avec des sels raisonnablement longs. (La question serait moins intéressante si les mots de passe étaient générés par l'homme) , car en pratique, ils tomberaient généralement dans des attaques faciles bien avant que l'attaquant n'ait à recourir à la force brute)

  • Le matériel et les vitesses modernes sont équitables

  • L'algorithme de hachage peut ou non être compatible avec le parallélisme

Compte tenu de tout ce qui précède, je m'attends à peu près:

  • Le hachage 1x9 serait épuisé à 100% en 95 ^ 9 (6,302 × 10 ^ 17) opérations de hachage (qui pourraient être bien ou mal parallélisées).
  • Les hachages 2x8 seraient conjointement épuisés à 100% en (95 ^ 8) x2 (1.326 × 10 ^ 16) opérations de hachage (et peu importe l'algorithme, pourraient facilement être parallélisés naïvement simplement en craquant chaque hachage sur un système différent - mais peut souvent être parallélisé très efficacement sur un seul système également, selon l'algorithme).

En d'autres termes:

  • Ce 9ème caractère ajoute 95 fois le travail pour épuiser, et pourrait être difficile à paralléliser
  • Deux mots de passe à 8 caractères ne fait que doubler la quantité de travail nécessaire, et peut être mis en parallèle de manière triviale

Une autre façon de penser est que l'ajout d'un caractère de plus crée grossièrement le même travail que d'avoir à casser 95 mots de passe à huit caractères ! (Si ce n'est pas intuitif, commencez par des cas simples comparant des cas plus petits comme 1x1 vs 1x2, jusqu'à ce que vous le compreniez).

Donc, toutes choses étant égales par ailleurs, 1x9 devrait presque toujours être meilleur que 2x8 .

Et vraiment, ce n'est pas seulement une simple illustration de la puissance de la parallélisation, cela devrait aussi montrer clairement pourquoi autoriser des longueurs de mot de passe plus longues est si crucial. Chacun un caractère supplémentaire dans le modèle ci-dessus ajoute 95 fois de travail à l'espace clé global. Donc, ajouter deux caractères ajoute 95 ^ 2 - ou 9025 fois - le travail. La force brute devient rapidement irréalisable, même pour des hachages très rapides et non salés.

Cela ferait une excellente question de devoirs. ;)

48
Royce Williams

À partir du point de vue mathématique ... (pour simplifier le calcul, je suppose que les mots de passe numériques)

Situation A: 2 parties mot de passe à 8 chiffres, 'l'attaque bruteforce sur la première partie nécessite max 10 ^ 8 hachages, même pour la partie. Total de max 2 * 10 ^ 8 hachages requis "

Situation B: 1 partie mot de passe à 9 chiffres, 'l'attaque bruteforce nécessite max 10 ^ 9 hachages'

Les mathématiques disent que c'est B est meilleur que A

En quelques mots

ajout d'une augmentation du mot de passe force brute de multiplication de nombre de pièces (dans ce scénario est 2x)

l'ajout de chiffres augmente force brute de puissance de nombre de chiffres (dans ce scénario est x10 ^ 1)

8
WaltZie

Le fractionnement du mot de passe est presque certainement pire. Il permet de créer une table Rainbow à huit caractères. Cela implique que tous les mots de passe du système seront composés de 8 caractères. (C'est exactement ainsi que les mots de passe NT LANMAN ont été brisés.) Dans votre cas, cela nécessiterait simplement deux tables Rainbow.

Le système de mot de passe à neuf caractères n'a pas de faille visible, ce qui implique que si vous entrez un mot de passe correct à 14 caractères, il sera stocké en toute sécurité comme un hachage unique.

5
John Deters

Aucune réponse significative n'est possible sans savoir quel est votre scénario de menace. Contre quoi essayez-vous de vous protéger? Êtes-vous préoccupé par la force brute ou le cracking de hachage? Dans le premier cas, nous devons connaître votre procédure de connexion (par exemple, dois-je saisir les mots de passe de manière séquentielle ou parallèle?). De plus, si votre procédure de connexion ne me bloque pas après des milliers ou des millions de tentatives de connexion infructueuses, elle est interrompue. Ce n'est pas une question de force de mot de passe.

Qu'en est-il des utilisateurs qui écrivent des choses? Surf à l'épaule? Hameçonnage? Quel est le modèle derrière les mots de passe?

Il existe des utilisations légitimes de deux mots de passe, par exemple un mot de passe d'accès en lecture et un mot de passe d'activation de modification distinct. Je doute que vous ayez cela à l'esprit en raison de votre alternative de mot de passe à 9 lettres, simplement en jetant cela pour montrer que la réalité est plus compliquée qu'une question académique sur la force du mot de passe basée uniquement sur la longueur.

4
Tom

Les systèmes de mots de passe impliquent des compromis entre la sécurité contre l'accès illégitime et la résistance aux attaques par déni de service. Un avantage potentiel des systèmes à mot de passe partagé est que les deux moitiés du système peuvent appliquer des compromis différents. Par exemple, la résilience contre les attaques par déni de service peut nécessiter que la fonction de hachage du premier semestre soit suffisamment rapide pour suivre les tentatives d'accès indésirables, mais cela ne serait pas si nécessaire pour la fonction du second semestre, car seul un attaquant qui avait cassé le mot de passe du premier semestre serait en mesure de tenter l'accès avec le second.

Si Fred Jones était averti à chaque fois que quelqu'un tentait un accès avec une première information d'identification incorrecte, un attaquant pourrait facilement inonder M. Jones de tellement de notifications qu'elles deviendraient inutiles, que l'attaquant ait ou non une réelle probabilité d'accès. Il serait cependant beaucoup plus utile d'aviser M. Jones si quelqu'un saisit le premier mot de passe correct mais ne parvient pas à saisir un deuxième mot de passe correct. À moins que M. Jones ne soit la personne qui tente d'accéder au compte, une telle notification servirait d'avertissement très opportun et utile que le mot de passe principal a été violé, et les deux mots de passe devraient être modifiés dès que possible.

2
supercat

Indépendamment des détails du hachage ou des mécanismes de craquage plausibles, le fait est que l'effort nécessaire pour casser deux mots de passe n - bits n'est pas de 2n bits. C'est n + 1 bits.

Supposons donc que vos mots de passe à huit caractères, P1 et P2, ont chacun, disons, une force équivalente à 30 bits. (Cela n'a pas vraiment d'importance, j'essaie juste de choisir un nombre pour être concret. Il faut donc 30 bits d'effort [voir note] pour casser chacun. Pour casser les deux, cela ne prend pas 60 bits. Au lieu de cela, il faut 31 quelques efforts.

Supposons maintenant que vous preniez P1 et que vous ajoutiez simplement un chiffre qui est uniformément choisi (vous lancez un D10) et que vous le colliez à la fin. Ensuite, votre P1 augmenté prendra environ 33,3 bits d'effort pour se fissurer. C'est plus de quatre fois plus de travail que d'aller à la fois P1 et P2.

Si vous choisissez une seule lettre ou chiffre minuscule (donc 36 possibilités) au hasard pour l'ajouter à la fin de P1, alors ce nouveau mot de passe est plus de 5 bits plus fort, et il faudra donc 16 fois plus de suppositions pour le déchiffrer que lui volonté de casser à la fois P1 et P2.

Des coffres de sécurité plus élevés?

Je travaille pour 1Password, un gestionnaire de mots de passe. Et nous recevons des demandes pour avoir des coffres dans les coffres. Il s'agit d'un mot de passe principal pour déverrouiller généralement 1 mot de passe, puis d'un deuxième mot de passe pour déverrouiller des données de sécurité plus élevées. Nous avons rejeté ces demandes pour les raisons que j'ai (et d'autres ici) indiquées.

Le résultat décrit ci-dessus est contre-intuitif est contre-intuitif. Les gens percevront en utilisant à la fois P1 et P2 pour être plus sûr qu'une simple augmentation légèrement plus longue de P1. Nous considérons également que le choix du mot de passe principal par une personne est le point le plus faible de la sécurité de son mot de passe (autre que l'exécution sur une machine compromise), et nous ne voulons donc pas introduire des choses qui pourraient encourager les gens à utiliser des mots de passe principaux plus faibles qu'ils ne le feraient autrement. . Nous aimerions également que les gens obtiennent le plus de sécurité pour l'effort, et faire et se souvenir d'un petit ajout à un mot de passe principal est moins d'effort que de créer et de mémoriser un autre mot de passe.


Remarques:

"bits d'effort": n bits d'effort signifie en gros qu'il faut en moyenne 2 ^ (n - 1) suppositions pour trouver le mot de passe correct.

2
Jeffrey Goldberg