web-dev-qa-db-fra.com

Quelle est la meilleure longueur pour les mots de passe générés aléatoirement? (Sécurité vs compatibilité)

Il est généralement recommandé d'utiliser un mot de passe unique pour chaque service en ligne, un générateur de mot de passe aléatoire pour les créer et un gestionnaire de mots de passe pour les stocker.

J'ai commencé à remplacer tous mes mots de passe en ligne par cette technique, mais certains sites ont certaines règles concernant la longueur d'un mot de passe.

Malheureusement, parfois, un site Web ne sera pas programmé pour communiquer le nombre de caractères maximum autorisé et simplement supprimer le débordement s'il est copié dans le champ du mot de passe. Pour cette raison, j'ai déjà eu du mal à reprendre le contrôle d'un compte, car je ne savais pas combien de caractères étaient enregistrés comme mot de passe.

Existe-t-il un nombre spécifique de caractères qui fonctionneront probablement sur la plupart des sites/programmes backend et qui sont toujours considérés comme relativement sûrs pour les mots de passe générés de manière aléatoire, de sorte que je peux simplement utiliser un paramètre de longueur de générateur de mot de passe pour autant de sites que possible?

11
Prototype700

Si vos mots de passe sont n caractères tirés au hasard, avec une probabilité égale, à partir d'un ensemble de 95 caractères (ce qui représente à peu près tous les ASCII caractères imprimables moins l'espace), alors chacun caractère vous donne environ 6,6 bits d'entropie, donc la force d'un mot de passe aléatoire avec n caractères est 6,6 × n. Donc:

  • Un mot de passe à 10 caractères vous donne une force d'environ 66 bits;
  • Un mot de passe de 12 caractères vous donne une force d'environ 79 bits;
  • Un mot de passe de 14 caractères vous donne une force d'environ 92 bits;
  • Un mot de passe de 20 caractères vous donne une force d'environ 132 bits.

À mon avis, vous pouvez choisir judicieusement n'importe laquelle de ces longueurs en fonction de l'application. Par exemple, si vous utilisez un mot de passe 66 bits pour un service en ligne de faible valeur, votre mot de passe sera toujours plus puissant que presque tous ceux qui utilisent ce service. Mais si nous parlons d'un mot de passe utilisé pour dériver une clé de chiffrement sur un logiciel que vous exécutez sur votre propre matériel, vous devriez certainement envisager quelque chose de plus fort.


Pour ajouter quelques réflexions supplémentaires, il est utile d'envisager deux types d'attaque:

  1. Une attaque ciblant un site Web (ou autre service protégé par mot de passe) auquel vous vous êtes inscrit;
  2. Une attaque contre vous spécifiquement.

Dans le scénario # 1, le pirate de mot de passe va diviser sa puissance de calcul en cracking autant de mots de passe d'utilisateurs que possible, dans l'espoir de trouver le fruit le plus bas - les utilisateurs qui ont des mots de passe très faibles . Je crois qu'un mot de passe de 64 à 80 bits est suffisant pour défendre vos mots de passe contre de telles attaques.

Dans le scénario # 2, l'attaquant va consacrer toute sa puissance de calcul au cracking votre mot de passe spécifiquement. Dans ce cas, un adversaire puissant pourrait (ou peut-être pas!) Être capable de casser un mot de passe de 66 bits, et vous pourriez donc justifier d'aller jusqu'à 19-20 caractères (pour correspondre aux 128 -bit de la plupart des chiffres).

Et gardez toujours à l'esprit que si votre mot de passe est assez fort, cela signifie simplement que l'attaquant n ° 2 va sonder une faiblesse différente. Ne vous embêtez pas à rendre votre mot de passe fort fort si vous avez de gros trous ailleurs.

9
Luis Casillas

Je vais différer des autres réponses (jusqu'à présent) et suggérer que si vous générez un mot de passe aléatoire unique par site Web, vous n'avez pas du tout besoin d'un mot de passe très long.

Réfléchissons aux menaces sur les mots de passe. Nous examinerons uniquement le côté serveur (c'est-à-dire que nous ne prendrons pas en compte des éléments tels que les logiciels malveillants de journalisation des touches sur votre PC, car la longueur du mot de passe n'y aide pas beaucoup)

Ainsi, les attaques, pour lesquelles la longueur du mot de passe est pertinente, se répartissent en deux catégories. Force brute en ligne et force brute hors ligne.

Dans la force brute en ligne, l'attaquant tente de deviner votre mot de passe par rapport au site Web, il soumet donc une demande par tentative. En réalité, de nombreux sites se verrouillent après un certain nombre de demandes incorrectes, mais pour cela, supposons qu'ils ne le font pas

Supposons maintenant que l'attaquant peut faire 1000 suppositions par seconde. Si vous avez (par exemple) choisi un mot de passe aléatoire à 8 caractères en utilisant les caractères supérieur, inférieur et numérique, il existe 62 ^ 8 options. À ce rythme, nous parlons de la mort par la chaleur de l'univers avant de le deviner.

Maintenant, quelqu'un pourrait dire "et si l'attaquant obtient un botnet pour le deviner, il peut aller beaucoup plus vite!", Je vous suggère de faire à peu près n'importe quel site avant de le faire assez rapidement pour être pratique.

Ok permet de parler de force brute hors ligne car il est plus pertinent pour la longueur du mot de passe. Ici, l'attaquant a déjà une copie de votre hachage de mot de passe, il est donc probable qu'ils ont compromis la sécurité de ce site de manière assez approfondie. Ici, vous pouvez faire valoir que vous souhaitez que le mot de passe dure assez longtemps pour que le site remarque qu'il a été mis en réseau et vous demande de réinitialiser votre mot de passe.

Dire exactement combien de temps est assez délicat car cela dépend beaucoup de la façon dont le site stocke leurs mots de passe. S'ils utilisent MD5 non salé, c'est une différence énorme que s'ils utilisent bcrypt avec un facteur de travail élevé.

Cependant, une chose à considérer dans tout cela est l'impact. Quel est l'impact de ce mot de passe piraté. Eh bien, si vous avez utilisé une valeur aléatoire unique pour chaque site, l'impact sera probablement assez limité. vous souhaiteriez espérer que vos sites à haute valeur utilisent tous 2FA donc le mot de passe seul n'amène pas l'attaquant loin et les sites à faible valeur, eh bien ce sont les conséquences du compromis?

Toute cette analyse ne répond pas vraiment à votre question, mais en règle générale, je suggère que si vous utilisez même 10 à 12 caractères avec supérieur, inférieur et numérique et que les mots de passe sont vraiment aléatoires (c'est le bit important), vous sont a) susceptibles d'être corrects et b) peu susceptibles de rencontrer des problèmes avec des restrictions de site.

Par cet article sur le craquage de mot de passe un mot de passe numérique supérieur, inférieur de 10 caractères prendrait 83 jours pour qu'un "Super ordinateur ou botnet" se fissure. Ce que vous devez vous demander est, est-il probable qu'un attaquant investira ce coût pour casser un seul mot de passe alors qu'il a déjà compromis la sécurité du site cible pour obtenir le hachage ...

4
Rory McCune

D'après mon utilisation et mes tests ad-hoc personnels, j'ai trouvé 20 caractères aléatoires, en utilisant des chiffres supérieurs/inférieurs/plus quelques spéciaux soigneusement sélectionnés (@ # $ ._ sans les parenthèses), pour être un bon mélange:

  • Bonne longueur - moins susceptible d'être tronquée silencieusement (une fois que vous avez dépassé 20, plus de sites commencent à tronquer silencieusement - comme vous l'avez vu - ou bien ils les rejettent comme "trop ​​longs" - 20 étaient généralement trop grands pour cet objectif, mais le paysage a changé au cours des dernières années)
  • Très bonne taille de l'espace clé ((26 + 26 + 10 + 5) ^ 20 = 3,32x10 ^ 36) - certes exagéré même pour les voyageurs temporels des États-nations dans un avenir proche, mais destiné à couvrir presque tous les modèles de menace potentiels (y compris la prise en compte de la loi de Moore et des ressources au niveau de l'État-nation) pour à peu près tout le monde, sans être trop longs
  • Répond à la plupart des exigences de complexité naïves/héritées (y compris nécessitant au moins un caractère spécial)
  • Répond à de nombreuses exigences " non - complexité" (caractères interdits)

En d'autres termes, c'est une approche qui, je pense, conviendrait à la plupart des modèles de menace et des cas d'utilisation.

Je n'ai pas de données formelles pour soutenir cette affirmation autre que ma propre expérimentation avec mes propres connexions au fil des ans, mais c'est mon point de vue. Vous devrez peut-être bricoler la liste des offres spéciales au fil du temps, mais vous avez l'idée.

Modifiez pour ajouter un exemple de ligne de commande:

echo $(tr -d -c 'A-Za-z0-9@#$._' </dev/urandom | head -c 20)
2
Royce Williams

Malheureusement, il n'y a pas de normes pour les mots de passe autorisés, ni aucune similitude entre les sites Web. Les développeurs mettent en place les restrictions qu'ils imaginent susceptibles de contribuer à la sécurité, d'autres mettent en place des restrictions basées sur des règles externes (mais aussi complètement arbitraires). Cela signifie que si vous avez compris que les mots de passe de 14 caractères atteignent le point idéal, vous aurez toujours d'autres règles incompatibles à gérer: un certain nombre de majuscules, de minuscules, de chiffres ou de symboles, et vous aurez des jeux de caractères restreints qui ne sont pas compatibles les uns avec les autres. Certains sites n'autorisent que très peu de caractères spéciaux (ou aucun) dans l'espoir d'éviter les attaques par injection SQL; d'autres nécessitent des caractères spéciaux différents car ils pensent à tort qu'un jeu de caractères plus large améliore la sécurité.

Votre meilleur pari est de rendre votre générateur configurable et de voir chaque site comme une source indépendante de règles.

1
John Deters