web-dev-qa-db-fra.com

Devrais-je imposer une longueur maximale aux mots de passe?

Je peux comprendre qu’imposer une longueur minimale aux mots de passe a beaucoup de sens (pour sauver les utilisateurs d’eux-mêmes), mais ma banque exige que les mots de passe comportent entre 6 et 8 caractères, et j’ai commencé à me demander. ...

  • Cela ne faciliterait-il pas les attaques par force brute? (Mauvais)
  • Cela implique-t-il que mon mot de passe est stocké non crypté? (Mauvais)

Si quelqu'un avec (avec un peu de chance) de bons professionnels de la sécurité informatique travaillant pour eux impose une longueur de mot de passe maximale, devrais-je envisager de faire la même chose? Quels sont les avantages/inconvénients de cela?

147
nickf

Les mots de passe sont hachés à 32, 40, 128, quelle que soit leur longueur. La seule raison d'une longueur minimale est d'éviter les mots de passe faciles à deviner. Il n'y a pas de but pour une longueur maximale.

L'obligatoire XKCD expliquer pourquoi vous ne rendez pas service à votre utilisateur si vous imposez une longueur maximale:

The obligatory XKCD

181
epochwolf

Une longueur maximale spécifiée dans un champ de mot de passe doit être lue comme un AVERTISSEMENT DE SÉCURITÉ: Tout utilisateur sensible et soucieux de sa sécurité doit supposer le pire et s’attendre à ce que ce site stocke votre mot de passe littéralement (c.-à-d. Qu'il n'est pas haché, comme expliqué par epochwolf).

En cela, c’est le cas: (a) évitez si possible d’utiliser ce site comme un fléau [ils connaissent évidemment le secret de la sécurité] (b) si vous devez utiliser le site, assurez-vous que votre mot de passe est unique - contrairement à tout autre mot de passe utilisé ailleurs. .

Si vous développez un site qui accepte les mots de passe, NE PAS mettre une limite de mots de passe idiots, à moins que vous ne vouliez être taraudé avec le même pinceau.

[En interne, bien entendu, votre code peut ne traiter que les premiers octets de 256/1028/2k/4k (quels que soient) comme "significatifs" pour éviter de taper sur des mots de passe gigantesques.]

71
tardate

Permettre une longueur de mot de passe totalement illimitée présente un inconvénient majeur si vous acceptez le mot de passe de sources non fiables.

L'expéditeur peut essayer de vous donner un mot de passe si long qu'il en résulte un déni de service pour d'autres personnes. Par exemple, si le mot de passe est 1 Go de données et que vous passez tout votre temps, acceptez-le jusqu'à épuisement de la mémoire. Supposons maintenant que cette personne vous envoie ce mot de passe autant de fois que vous êtes prêt à l'accepter. Si vous ne faites pas attention aux autres paramètres impliqués, cela pourrait conduire à une attaque par déni de service.

Définir la limite supérieure à quelque chose comme 256 caractères semble trop généreux par rapport aux normes actuelles.

50
Jason Dagit

Premièrement, ne supposez pas que les banques emploient de bons professionnels de la sécurité informatique. Beaucoup ne le font pas .

Cela dit, la longueur maximale du mot de passe ne vaut rien. Les utilisateurs doivent souvent créer un nouveau mot de passe (arguments sur la valeur de l’utilisation de mots de passe différents sur chaque site, sauf pour le moment), ce qui augmente la probabilité qu’ils les écrivent. Cela augmente également considérablement la vulnérabilité aux attaques, quel que soit le vecteur, de la force brute à l’ingénierie sociale.

21
Sparr

La limite de longueur maximale du mot de passe est maintenant découragée par l'aide-mémoire d'authentification OWASP

https://www.owasp.org/index.php/Authentication_Cheat_Sheet

Citant tout le paragraphe:

Des mots de passe plus longs fournissent une plus grande combinaison de caractères et par conséquent rendent plus difficile la tâche de l'attaquant.

La longueur minimale des mots de passe doit être imposée par l'application. Les mots de passe de moins de 10 caractères sont considérés comme faibles ([1]). Bien que l'application de la longueur minimale puisse poser des problèmes de mémorisation des mots de passe chez certains utilisateurs, les applications doivent les encourager à définir des phrases secrètes (phrases ou combinaisons de mots) pouvant être beaucoup plus longues que les mots de passe habituels, mais plus faciles à retenir.

La longueur maximale du mot de passe ne doit pas être trop basse, cela empêcherait les utilisateurs de créer des phrases secrètes. La longueur maximale typique est de 128 caractères. Les phrases secrètes de moins de 20 caractères sont généralement considérées comme faibles si elles ne sont composées que de caractères latins minuscules. Chaque personnage compte !!

Assurez-vous que chaque caractère saisi par l'utilisateur est bien inclus dans le mot de passe. Nous avons vu des systèmes tronquer le mot de passe à une longueur inférieure à celle fournie par l'utilisateur (par exemple, tronqué à 15 caractères lorsqu'ils en ont entré 20). Ceci est généralement géré en définissant la longueur de TOUS les champs de saisie du mot de passe sur une longueur identique à celle du mot de passe de longueur maximale. Ceci est particulièrement important si la longueur maximale de votre mot de passe est courte, par exemple 20 à 30 caractères.

12
kravietz

Une des raisons que je peux imaginer pour imposer une longueur de mot de passe maximale est que l'interface frontale doit s'interfacer avec de nombreux systèmes back-end hérités, l'un d'eux imposant lui-même une longueur de mot de passe maximale.

Un autre processus de réflexion pourrait être que si un utilisateur est obligé de choisir un mot de passe court, il est plus susceptible d'inventer un charabia aléatoire qu'un slogan ou un pseudonyme facile à deviner (par ses amis/sa famille). Cette approche n’est bien sûr efficace que si l’interface impose le mélange de chiffres et de lettres et rejette les mots de passe comportant des mots du dictionnaire, y compris des mots écrits en langage parlé.

9
mbac32768

Une raison potentiellement valable d'imposer une longueur de mot de passe maximale est que le processus de hachage (dû à l'utilisation d'une fonction de hachage lente telle que bcrypt) prend trop de temps; quelque chose qui pourrait être abusé afin d'exécuter une attaque DOS contre le serveur.

Là encore, les serveurs doivent être configurés pour supprimer automatiquement les gestionnaires de demandes qui prennent trop de temps. Donc, je doute que cela pose beaucoup de problèmes.

4
AardvarkSoup

Je pense que vous avez très raison sur les deux points. S'ils stockent les mots de passe hachés, comme ils le devraient, la longueur du mot de passe n'a aucune incidence sur leur schéma de base de données. Avoir une longueur de mot de passe ouverte jette dans une variable supplémentaire qu'un attaquant brutal-force doit prendre en compte.

Il est difficile de trouver une excuse pour limiter la longueur du mot de passe, en plus du mauvais design.

4
Lucas Oman

Le seul avantage que je peux voir avec une longueur de mot de passe maximale serait d'éliminer le risque d'attaque par débordement de mémoire tampon causée par un mot de passe excessivement long, mais il existe de bien meilleurs moyens de gérer cette situation.

3
DrStalker

Si vous acceptez un mot de passe de taille arbitraire, on suppose qu'il est tronqué pour une longueur de rideau pour des raisons de performances, avant que le mot de passe ne soit haché. Le problème avec la troncature est qu'au fur et à mesure que les performances de votre serveur augmentent, vous ne pouvez pas facilement augmenter la longueur avant la troncature car son hachage serait clairement différent. Bien sûr, vous pourriez avoir une période de transition où les deux longueurs sont hachées et vérifiées, mais cela utilise plus de ressources.

1
User

Ignorer les personnes qui disent de ne pas valider les mots de passe longs. Owasp dit littéralement que 128 caractères devraient suffire. Juste pour donner assez d’espace de respiration, vous pouvez en donner un peu plus, par exemple 300, 250, 500 si vous en avez envie.

https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Password_Length

Longueur du mot de passe Les mots de passe plus longs fournissent une plus grande combinaison de caractères et, par conséquent, rendent plus difficile la tâche de l'attaquant.

...

La longueur maximale du mot de passe ne doit pas être trop basse, cela empêcherait les utilisateurs de créer des phrases secrètes. La longueur maximale typique est de 128 caractères . Les phrases secrètes de moins de 20 caractères sont généralement considérées comme faibles si elles ne sont composées que de caractères latins minuscules.

1
CommonSenseCode

Ma banque le fait aussi. Il permettait n'importe quel mot de passe, et j'avais un 20 caractères. Un jour, je l'ai changée, et voilà qu'elle m'en a donné un maximum de 8 et que j'avais coupé des caractères non alphanumériques qui étaient dans mon ancien mot de passe. Cela n'avait aucun sens pour moi.

Tous les systèmes dorsaux de la banque fonctionnaient auparavant lorsque j’utilisais mon mot de passe de 20 caractères avec des caractères non alphanumériques. Par conséquent, la prise en charge traditionnelle ne pouvait en être la cause. Et même si c'était le cas, ils devraient tout de même vous autoriser à utiliser des mots de passe arbitraires, puis créer un hachage qui répond aux exigences des systèmes existants. Mieux encore, ils devraient réparer les systèmes existants.

Une solution de carte à puce ne me conviendrait pas. J'ai déjà trop de cartes telles qu'elles sont ... Je n'ai pas besoin d'un autre gadget.

1
Vincent McNabb

Le stockage est bon marché, pourquoi limiter la longueur du mot de passe. Même si vous chiffrez le mot de passe plutôt que de le hacher, une chaîne de 64 caractères ne nécessitera pas beaucoup plus qu'une chaîne de 6 caractères à chiffrer.

Il est probable que le système de la banque se superpose à un système plus ancien, de sorte qu’ils n’ont pu laisser qu’un certain espace pour le mot de passe.

1
LizB

Devrait-il y avoir une longueur maximale? C’est un sujet curieux en informatique car les mots de passe longs sont généralement plus difficiles à retenir, et donc plus susceptibles d’être écrits (un gros non-non pour des raisons évidentes). Les mots de passe plus longs tendent également à être davantage oubliés, ce qui ne pose pas nécessairement un risque pour la sécurité, mais peut entraîner des problèmes administratifs, une perte de productivité, etc. Les administrateurs qui estiment que ces problèmes sont pressants imposeront probablement une longueur maximale aux mots de passe.

Je crois personnellement sur ce problème spécifique, à chaque utilisateur le leur. Si vous pensez pouvoir vous souvenir d'un mot de passe de 40 caractères, profitez-en d'autant plus!

Cela dit, les mots de passe deviennent rapidement un mode de sécurité obsolète, l’authentification par carte intelligente et par certificat s’avère très difficile, voire impossible, comme le dit le problème, et seule une clé publique doit être stockée sur le serveur avec le code privé. clé sur votre carte/ordinateur en tout temps.

0
tekiegreg

Les mots de passe plus longs, ou expressions de passe, sont plus difficiles à déchiffrer en raison de leur longueur et plus faciles à retenir que ceux nécessitant un mot de passe complexe.

Il vaut probablement mieux opter pour une longueur minimale assez longue (10+), en limitant la longueur inutile.

0
benPearce

Une des raisons pour lesquelles les mots de passe ne peuvent pas être hachés est l'algorithme d'authentification utilisé. Par exemple, certains algorithmes de résumé nécessitent une version en texte clair du mot de passe sur le serveur, car le mécanisme d'authentification implique à la fois le client et le serveur effectuant les mêmes opérations sur le mot de passe saisi (ce qui ne produit généralement pas le même mot de passe). la même sortie à chaque fois que le mot de passe est combiné à une "nonce" générée aléatoirement, partagée entre les deux machines).

Ceci peut souvent être renforcé car le résumé peut être en partie calculé dans certains cas, mais pas toujours. Un meilleur itinéraire consiste à stocker le mot de passe avec un cryptage réversible. Cela signifie donc que les sources de l'application doivent être protégées car elles contiennent la clé de cryptage.

L'authentification Digst est là pour permettre l'authentification sur des canaux autrement non chiffrés. Si vous utilisez SSL ou un autre cryptage de canal complet, vous n'avez pas besoin d'utiliser les mécanismes d'authentification Digest, ce qui signifie que les mots de passe peuvent être stockés hachés (les mots de passe pouvant être envoyés en texte clair via le réseau en toute sécurité (pour une valeur donnée de safe).

0
Chris J

Essayez de ne pas imposer de limitation sauf si nécessaire. Soyez averti: cela pourrait et sera nécessaire dans beaucoup de cas différents. L'une des raisons est le traitement des systèmes existants. Assurez-vous de bien tester le cas des mots de passe très longs (votre système peut-il gérer des mots de passe longs de 10 Mo?). Vous pouvez rencontrer des problèmes de déni de service (DoS), car les fonctions de désactivation de clé (KDF) que vous utiliserez (généralement PBKDF2, bcrypt, scrypt) prendront beaucoup de temps et de ressources. Exemple concret: http://arstechnica.com/security/2013/09/long-passwords-are-good-but-too-much-length-can-be-bad-for-security/ =

0
Marek Puchalski

Les systèmes hérités (déjà mentionnés) ou les interfaces externes des systèmes du fournisseur peuvent nécessiter une limite de 8 caractères. Il pourrait également s'agir d'une tentative malavisée de sauver les utilisateurs d'eux-mêmes. Le limiter de cette manière entraînera trop de mots de passe pssw0rd1, pssw0rd2, etc. dans le système.

0
Chuck