194 votes

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

Je peux comprendre que l'imposition d'une longueur minimale pour les mots de passe est très sensée (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 signifie-t-il que mon mot de passe est stocké en clair ? (Mauvais)

Si quelqu'un qui emploie (espérons-le) de bons professionnels de la sécurité informatique impose une longueur maximale pour les mots de passe, dois-je envisager de faire de même ? Quels sont les avantages et les inconvénients de cette mesure ?

20 votes

Il est presque certain qu'il existe une politique du "trois coups et vous êtes éliminé", qui élimine la menace d'une attaque par force brute.

28 votes

Il n'y a aucune excuse à cela pour les systèmes non anciens, comme les sites web modernes.

7 votes

Je ne pense pas que la réponse soit purement informatique. La taille minimale (6) et une limite maximale de tentative est "probablement" pour éliminer les suppositions sauvages. Je pense que la taille maximale (8) est destinée à limiter le nombre d'appels (et par conséquent le coût) du support pour les "Oups, j'ai oublié mon code" ou "j'ai tapé le code trop vite" ou "j'ai mal tapé un caractère", etc. En plus du papier sur lequel vous écrivez le mot de passe si vous ne vous en souvenez pas

218voto

epochwolf Points 6329

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

L'obligation XKCD expliquant pourquoi vous rendez un mauvais service à votre utilisateur si vous imposez une longueur maximale :

The obligatory XKCD

7 votes

Une banque pourrait choisir de limiter le mot de passe parce que, sur les guichets automatiques, vous ne pouvez pas saisir plus de 8 caractères, par exemple.

13 votes

Au moins sur les distributeurs, si vous tentez une attaque par force brute, votre carte sera détruite. Ce à quoi je fais référence est le mot de passe pour se connecter en ligne uniquement.

2 votes

Les mots de passe et les PIN sont deux choses différentes. bon point, nickf.

83voto

tardate Points 6809

La longueur maximale spécifiée pour un champ de mot de passe doit être lue comme un code d'accès. AVERTISSEMENT DE SÉCURITÉ . Tout utilisateur raisonnable et soucieux de la sécurité doit envisager le pire et s'attendre à ce que ce site stocke votre mot de passe littéralement (c'est-à-dire sans le hacher, comme l'explique epochwolf).

Dans ce cas, c'est le cas :

  1. Évitez d'utiliser ce site comme la peste si possible. Ils ne connaissent manifestement rien à la sécurité.
  2. Si vous devez vraiment utiliser le site, veillez à ce que votre mot de passe soit unique - différent de tout autre mot de passe que vous utilisez ailleurs.

Si vous développez un site qui accepte les mots de passe, ne pas mettez une limite de mot de passe stupide, à moins que vous ne vouliez être mis dans le même sac.

(En interne, bien sûr, votre code peut ne traiter que les premiers 256/1024/2k/4k/(peu importe) octets comme "significatifs", afin d'éviter le traitement de mots de passe gigantesques).

21 votes

J'envoie également à ces sites un courrier électronique standard, dans lequel je mentionne qu'ils m'ont forcé à utiliser un mot de passe plus court et moins sûr, que je réutilise également sur tous les sites web qui imposent des limites aussi stupides. Cela leur fait savoir que c'est un problème et peut aussi donner à un simple codeur un moyen de pression à montrer à ses supérieurs : la preuve que les utilisateurs ont une mauvaise opinion du site web à cause de cela.

4 votes

Je ne suis pas sûr que vous deviez supposer qu'un maximum de mots de passe signifie qu'ils stockent des mots de passe en texte clair. Parfois, ils tronquent l'entrée, et passent simplement les x premiers caractères dans le hashing(). (La façon de vérifier est de définir un mot de passe au-delà de la limite, puis d'essayer de se connecter avec une variation des caractères du mot de passe au-delà de la longueur maximale).

6 votes

@benc Bien sûr, c'est possible, mais le fait est qu'en tant qu'utilisateur, vous n'avez aucun moyen de savoir si c'est ce qu'ils font. Une longueur maximale (surtout si elle est courte) est un signal d'alarme et je pense qu'il est préférable d'envisager le pire (ou de contacter le fournisseur pour qu'il confirme).

77voto

Jason Dagit Points 5998

Le fait de 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 pourrait essayer de vous donner un mot de passe si long qu'il entraînerait un déni de service pour d'autres personnes. Par exemple, si le mot de passe représente 1 Go de données et que vous passez tout votre temps à l'accepter jusqu'à ce que vous n'ayez plus de 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 DoS.

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

43 votes

Vous pouvez toujours envoyer 1 Go de données avec une limite maximale. Le logiciel qui effectue la limitation est presque toujours derrière le serveur web.

11 votes

Vous pouvez toujours laisser tomber tous les caractères sauf les 256 premiers avant de faire quelque chose d'intensif en termes de calcul. L'exécution d'un hachage de sha sur 1 Go de données va nécessiter beaucoup plus long que le même hachage sur 256 caractères.

1 votes

Qu'en est-il du hachage côté client ? Pour un client web, faites-lui SHA-256 son mot de passe en javascript et envoyez-le ensuite.

23voto

Sparr Points 5796

Tout d'abord, ne supposez pas que les banques ont de bons professionnels de la sécurité informatique qui travaillent pour elles. Beaucoup ne le font pas. .

Cela dit, la longueur maximale des mots de passe ne sert à rien. Elle oblige souvent les utilisateurs à créer un nouveau mot de passe (les arguments sur l'intérêt d'utiliser des mots de passe différents sur chaque site étant mis de côté pour le moment), ce qui augmente la probabilité qu'ils les écrivent tout simplement. Cela augmente aussi considérablement la vulnérabilité aux attaques, par n'importe quel vecteur, de la force brute à l'ingénierie sociale.

0 votes

D'accord ! Regardez la série de défaillances des accès en ligne des banques britanniques ces dernières années...

6 votes

J'utilise déjà un mot de passe différent sur chaque site web grâce à un système qui me permet de me souvenir de tous, mais ils sont tous assez longs. Les seuls sites web dont j'écris les mots de passe sur des notes autocollantes sont ceux qui imposent des limitations de longueur maximale débiles et me forcent ainsi à m'éloigner de mon mot de passe préféré, mais unique...

0 votes

@romkyns Je suppose que votre système n'utilise pas de symboles ? J'ai déjà eu un tel système qui produisait des mots de passe courts et difficiles à forcer, mais j'ai dû l'abandonner lorsque 10 à 20 % des sites que j'utilisais ont interdit les caractères spéciaux courants.

9voto

mbac32768 Points 3830

Une raison que je peux imaginer pour imposer une longueur maximale de mot de passe est si le frontal doit s'interfacer avec de nombreux backends de systèmes existants, dont l'un impose lui-même une longueur maximale de mot de passe.

Un autre raisonnement pourrait être que si un utilisateur est obligé d'utiliser un mot de passe court, il est plus susceptible d'inventer un charabia aléatoire qu'une phrase d'accroche ou un surnom facile à deviner (par ses amis/famille). Cette approche n'est bien sûr efficace que si le frontal impose le mélange de chiffres et de lettres et rejette les mots de passe contenant des mots du dictionnaire, y compris les mots écrits en langage l33t.

1 votes

Bien que cela soit compréhensible, les systèmes hérités doivent parfois dicter la conception. Dans la mesure du possible, ils ne doivent PAS l'influencer. La dernière chose que vous voulez dans un nouveau système est un système dont la politique de sécurité a été conçue avant même que les attaques de sécurité modernes ne soient courantes. Ou pire encore, un logiciel plus récent mais conçu de manière incorrecte en premier lieu. Un système d'entreprise existant peut utiliser HTTP, mais ce n'est pas une raison pour ne pas utiliser SSL dans un nouveau système ou une extension. De même, les politiques en matière de mots de passe ne devraient pas continuer à être vulnérables simplement parce que les DERNIERS l'ont mal fait. Et si elles sont maintenues, il vaudrait mieux qu'il y ait une ÉNORME étude coûts/avantages.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X