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

162

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 a une exigence que les mots de passe comportent entre 6 et 8 caractères, et j'ai commencé à me demander ...

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

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

nickf
la source
16
Il y a presque certainement une politique «trois coups et vous êtes absent», qui élimine la menace d'une attaque par force brute.
Stu Thompson
23
Il n'y a aucune excuse à cela pour les systèmes non hérités, comme les sites Web modernes.
mparaz
7
Je ne pense pas que la réponse soit purement informatique. La taille minimale (6) et la limite maximale de tentative sont "susceptibles" d'éliminer les suppositions sauvages. Je suppose que la taille maximale (8) est de limiter le nombre d'appels (et par conséquent le coût) du support pour le "Oups, j'oublie mon code" ou "Je tape le code trop vite" ou "Je saisis mal un caractère" etc. En plus du papier sur lequel vous écrivez le mot de passe si vous ne vous en souvenez plus ..
appelez-moi Steve
17
L'université à laquelle je suis inscrit a des règles de mot de passe incroyablement stupides: 8 caractères seulement, au moins 1 chiffre, mais pas au début ou à la fin du mot de passe, a besoin de caractères de plus des 2 lignes supérieures du clavier, etc. etc. À la fin ils facilitent le bruteforcing en ayant ces règles -.-. Je sais que tu n'es pas si stupide, mais s'il te plaît, ne fais pas de règles stupides comme ça! (Je devais juste le sortir de mon système :))
cwap
17
@call Eh bien, si vous imposez une longueur maximale pour cette raison, vous recevrez des appels "J'ai oublié mon mot de passe" de ma part , car les mots de passe uniques de mon site sont tous longs, et me limiter à 12 caractères est un moyen sûr de garantir que je le ferai ne m'en souviens pas.
Roman Starkov

Réponses:

193

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

Le XKCD obligatoire expliquant pourquoi vous ne rendez pas service à votre utilisateur si vous imposez une longueur maximale:

Le XKCD obligatoire

epochwolf
la source
6
Une banque pourrait peut-être choisir de limiter le mot de passe, car sur les guichets automatiques, vous ne pouvez pas saisir plus de, disons, 8 caractères.
André Chalella
11
eh bien au moins sur les guichets automatiques, si vous essayez une attaque par force brute, cela va manger votre carte. Ce à quoi je fais référence est le mot de passe pour se connecter en ligne uniquement.
nickf
39
Malheureusement, cela suppose que les mots de passe sont toujours hachés. Les mots de passe de longueur maximale sont un symptôme des mots de passe stockés en texte brut.
jevon
14
Soupir, même chez PayPal, "l'agrafe correcte de la batterie du cheval" est de 8 caractères au-dessus de leur longueur maximale <censurée> ... headdesk
Roman Starkov
3
@kleinfreund car s'il était haché, la longueur du mot de passe n'aurait pas d'importance pour eux (les fonctions de hachage convertissent une chaîne de n'importe quelle longueur en une longueur fixe).
Vicky Chijwani
75

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

Dans ce cas, c'est le cas:

  1. Évitez d'utiliser ce site comme la peste si possible. Ils ne savent évidemment rien de la sécurité.
  2. Si vous devez vraiment utiliser le site, assurez-vous que votre mot de passe est unique - contrairement à tout mot de passe que vous utilisez ailleurs.

Si vous développez un site qui accepte les mots de passe, ne mettez pas une limite de mot de passe idiote, à moins que vous ne vouliez être goudronné avec le même pinceau.

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

tarder
la source
17
J'envoie également à ces sites Web un e-mail standard, mentionnant qu'ils m'ont forcé à utiliser un mot de passe plus court et moins sécurisé, que je réutilise également sur chaque site Web qui impose des limites aussi stupides. Cela leur permet de savoir que c'est un problème et peut également donner à un Joe Coder un effet de levier à montrer aux plus hauts: preuve que les utilisateurs pensent vraiment mal au site Web à cause de cela.
Roman Starkov
3
Je ne suis pas sûr que vous deviez supposer qu'un mot de passe maximum signifie qu'ils stockent des mots de passe en texte brut. Parfois, ils tronquent l'entrée et passent simplement les x premiers caractères dans le hachage (). (La façon de vérifier est de définir un mot de passe au-delà de la limite, puis essayez de vous connecter avec une variation des caractères du mot de passe au-delà de la longueur maximale).
benc
5
@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 (en particulier une courte) est un signe d'avertissement et je pense qu'il est préférable de supposer le pire (ou de contacter le fournisseur pour qu'il confirme).
tardif
1
Veuillez préciser. Cette réponse est une simple déclaration.
kleinfreund
1
Un mot de passe maximum ne signifie pas nécessairement qu'il est stocké sous forme de texte brut; cela peut être pour des raisons techniques, par exemple bcrypt n'autorise que des mots de passe de 72 caractères maximum.
emorris
58

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

L'expéditeur pourrait essayer de vous donner un mot de passe si long qu'il en résulterait un déni de service pour d'autres personnes. Par exemple, si le mot de passe est de 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 le souhaitez. Si vous ne faites pas attention aux autres paramètres impliqués, cela pourrait conduire à une attaque DoS.

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

Jason Dagit
la source
35
Vous pouvez toujours envoyer 1 Go de données avec une limite maximale. Le logiciel effectuant la limitation est presque toujours derrière le serveur Web.
epochwolf
6
Vous pouvez toujours supprimer tout sauf les 256 premiers caractères avant de faire quelque chose d'intensif en calcul. L'exécution d'un hachage sha sur 1 Go de données prendra beaucoup plus de temps que le même hachage sur 256 caractères.
rcreswick
2
@Eyal: tout ce qui se passe du côté client d'une application Web n'est par nature pas approuvé; ainsi, le hachage devient un équivalent de mot de passe, ce qui en fait un exercice futile. (un navigateur Web n'acceptera probablement pas une entrée de texte de 1 Go, et un client personnalisé pourrait envoyer une chaîne de 1 Go dans le champ de formulaire "thisisthehashedpassword")
Piskvor a quitté le bâtiment
4
@Piskvor: Mais il n'y a aucun moyen d'empêcher la chaîne de 1 Go de toute façon. Un utilisateur peut toujours demander example.com/?password=abcabcabcabc ... et faire sa demande aussi grande qu'il le souhaite. DoS standard.
Eyal
4
@Piskvor et Eyal, heureusement, Apache et IIS (et probablement d'autres serveurs matures) limitent la longueur des champs transmis via les URL: boutell.com/newfaq/misc/urllength.html
sampablokuper
21

Premièrement, ne supposez pas que les banques ont de bons professionnels de la sécurité informatique qui travaillent pour elles. Pas beaucoup .

Cela dit, la longueur maximale du mot de passe est sans valeur. Il oblige souvent les utilisateurs à créer un nouveau mot de passe (arguments sur la valeur de l'utilisation de mots de passe différents sur chaque site mis à part pour le moment), ce qui augmente la probabilité qu'ils les écrivent simplement. Cela augmente également considérablement la vulnérabilité aux attaques, par n'importe quel vecteur, de la force brute à l'ingénierie sociale.

Sparr
la source
D'accord! Regardez que la série d'échecs de sécurité d'accès en ligne des banques britanniques au cours des dernières années ...
Stu Thompson
6
J'utilise déjà un mot de passe différent sur chaque site Web grâce à un schéma qui me permet de tous les retenir, mais ils sont tous assez longs. Les seuls sites Web dont j'écris les mots de passe sur des pense-bêtes sont ceux qui imposent des limites de longueur maximale stupides et m'obligent ainsi à m'éloigner de mon mot de passe préféré mais unique ...
Roman Starkov
@romkyns Je suppose que votre schéma n'utilise pas de symboles? J'ai eu une fois un tel schéma qui produisait des mots de passe courts et difficiles à forcer, mais j'ai dû l'abandonner lorsque 10 à 20% des sites que j'ai utilisés interdisent les caractères spéciaux courants.
Sparr
pas de caractères spéciaux, non, mais il ajoute toujours des chiffres et des majuscules, car je savais que certains sites l'exigent. J'aurais aimé connaître les limites de longueur maximale lorsque je l'ai proposé ... Mais les schémas (plus simples) que j'ai inventés pour les proches ont parfaitement fonctionné jusqu'à présent!
Roman Starkov
1
@romkyns d'autres problèmes avec de tels schémas: des sites qui partagent des mots de passe. Si votre schéma est quelque chose comme nameofwebsitefO0 (googlefO0 yahoofO0 etc) alors comment vous souvenez-vous que vous êtes censé utiliser "yahoofO0" sur flickr.com, ou stackoverflowfO0 sur askubuntu.com? sites dont les mots de passe expirent. alors vous devez étendre le schéma pour inclure une partie qui peut changer. mais cela échoue si la règle d'expiration vérifie les sous-chaînes.
Sparr
13

La définition d'une longueur maximale de mot de passe inférieure à 128 caractères est désormais déconseillée par la feuille de triche d'authentification OWASP

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

Citant l'ensemble du paragraphe:

Les mots de passe plus longs fournissent une plus grande combinaison de caractères et, par conséquent, rendent la tâche plus difficile à deviner pour un attaquant.

La longueur minimale des mots de passe doit être appliqué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 causer des problèmes de mémorisation des mots de passe chez certains utilisateurs, les applications devraient les encourager à définir des phrases de passe (phrases ou combinaison de mots) qui peuvent être beaucoup plus longues que les mots de passe classiques et pourtant beaucoup plus faciles à retenir.

La longueur maximale du mot de passe ne doit pas être définie trop bas, car cela empêchera les utilisateurs de créer des phrases de passe. 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 contiennent que des caractères latins minuscules. Chaque personnage compte !!

Assurez-vous que chaque caractère saisi par l'utilisateur est effectivement inclus dans le mot de passe. Nous avons vu des systèmes qui tronquent le mot de passe à une longueur plus courte que ce que l'utilisateur a fourni (par exemple, tronqué à 15 caractères quand ils ont entré 20). Ceci est généralement géré en définissant la longueur de TOUS les champs de saisie de mot de passe exactement la même longueur que la longueur maximale du mot de passe. Ceci est particulièrement important si la longueur maximale de votre mot de passe est courte, comme 20 à 30 caractères.

Kravietz
la source
11
Cette source ne décourage pas les limites de longueur maximale de mot de passe, elle décourage les limites de longueur maximale de mot de passe faibles (moins de 128 caractères).
Matthew
9

Une des raisons que je peux imaginer pour appliquer une longueur de mot de passe maximale est si le frontend doit s'interfacer avec de nombreux backends système hérités, dont l'un applique lui-même une longueur de mot de passe maximale.

Un autre processus de réflexion pourrait être que si un utilisateur est obligé d'utiliser un mot de passe court, il est plus susceptible d'inventer du charabia aléatoire qu'un slogan ou un surnom facilement deviné (par ses amis / sa famille). Cette approche n'est bien sûr efficace que si l'interface impose le mélange de chiffres / lettres et rejette les mots de passe qui ont des mots du dictionnaire, y compris les mots écrits en l33t-speak.

mbac32768
la source
1
Bien que compréhensibles, 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 une politique de sécurité conçue avant même que les attaques de sécurité modernes ne soient courantes. Ou pire, un logiciel plus récent mais mal conçu en premier lieu. Un système d'entreprise existant peut utiliser HTTP, mais ce n'est pas une justification pour ne pas utiliser SSL dans un nouveau système ou une nouvelle extension. De même, les politiques de mot de passe ne devraient pas continuer à être vulnérables simplement parce que les DERNIERS gars l'ont mal fait.
Katastic Voyage
6

Une raison potentiellement valable pour imposer une longueur maximale de mot de passe est que le processus de hachage (en raison de 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 requêtes qui prennent trop de temps. Je doute donc que ce soit vraiment un problème.

AardvarkSoup
la source
4

Je pense que vous avez parfaitement 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'affecte en rien leur schéma de base de données. Avoir une longueur de mot de passe ouverte jette une autre variable qu'un attaquant par force brute doit prendre en compte.

Il est difficile de voir une excuse pour limiter la longueur du mot de passe, en plus d'une mauvaise conception.

Lucas Oman
la source
3

Le seul avantage que je peux voir à une longueur de mot de passe maximale serait d'éliminer le risque d'attaque par débordement de tampon causé par un mot de passe trop long, mais il existe de bien meilleures façons de gérer cette situation.

DrStalker
la source
1
Il devrait y avoir une longueur d'entrée maximale, oui, mais elle ne devrait certainement pas être <64. Une longueur maximale de 8 ou 12 est tout simplement ridicule.
Dan Bechard
2

Ignorez 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 suffisamment d'espace pour respirer, vous pouvez donner un peu plus, disons 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 la tâche plus difficile à deviner pour un attaquant.

...

La longueur maximale du mot de passe ne doit pas être définie trop bas, car cela empêchera les utilisateurs de créer des phrases de passe. 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 contiennent que des caractères latins minuscules.

CommonSenseCode
la source
Pas pertinent pour la discussion. La question est de savoir s'il y a un avantage à limiter la longueur et non si 128 est suffisant.
vikki
1

Le stockage est bon marché, pourquoi limiter la longueur du mot de passe. Même si vous cryptez le mot de passe au lieu de simplement le hacher, une chaîne de 64 caractères ne prendra pas beaucoup plus qu'une chaîne de 6 caractères pour crypter.

Il y a de fortes chances que le système bancaire superpose un système plus ancien, de sorte qu'ils n'ont pu laisser qu'une certaine quantité d'espace pour le mot de passe.

LizB
la source
9
À moins qu'il n'y ait une raison très valable, les mots de passe doivent être hachés. Les hachages donnent des chaînes de longueur fixe. Il n'y a pas d'argument d'espace à faire, à moins que le système ne stocke le mot de passe réel, ce qui est sans doute une idée terrible.
Stu Thompson
8
Crypter les mots de passe est une mauvaise idée. Un employé sans scrupules est tout ce qu'il vous faut pour divulguer des milliards de mots de passe. Évitez les ennuis en ne les stockant jamais en premier lieu.
Roman Starkov
1

Ma banque le fait aussi. Il autorisait n'importe quel mot de passe, et j'avais un mot de passe de 20 caractères. Un jour, je l'ai changé, et voilà qu'il m'en a donné un maximum de 8, et j'ai coupé les 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, donc le support hérité ne peut pas en être la raison. Et même si c'était le cas, ils devraient toujours vous permettre d'avoir des mots de passe arbitraires, puis de créer un hachage qui correspond aux exigences des systèmes hérités. Mieux encore, ils devraient réparer les anciens systèmes.

Une solution de carte à puce ne me conviendrait pas. J'ai déjà trop de cartes en l'état ... Je n'ai pas besoin d'un autre truc.

Vincent McNabb
la source
Ils coupent un espace de clés important qui s'allonge au fil du temps pour les attaques par force brute lorsque (et je veux dire QUAND) leur base de données de hachages est volée (en supposant même qu'ils salent / hachent / étirent, ce que je suis sûr qu'ils ne font pas). Il est temps de changer de banque.
Chris Gomez
1

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

Utilisateur
la source
1

Essayez de ne pas imposer de limitation sauf si nécessaire. Soyez averti: cela pourrait et sera nécessaire dans de nombreux cas différents. La gestion des systèmes hérités est l'une de ces raisons. 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éfivation de clé (KDF) que vous utiliserez (généralement PBKDF2, bcrypt, scrypt) prendront beaucoup de temps et de ressources. Exemple réel: http://arstechnica.com/security/2013/09/long-passwords-are-good-but-too-much-length-can-be-bad-for-security/

Marek Puchalski
la source
0

Devrait-il y avoir une longueur maximale? C'est un sujet curieux en informatique en ce sens que les mots de passe plus longs sont généralement plus difficiles à retenir, et donc plus susceptibles d'être écrits (un GRAND non-non pour des raisons évidentes). Les mots de passe plus longs ont également tendance à être davantage oubliés, ce qui, bien que n'étant pas nécessairement un risque de sécurité, peut entraîner des tracas administratifs, une perte de productivité, etc. Les administrateurs qui pensent que ces problèmes sont urgents sont susceptibles d'imposer des longueurs maximales aux mots de passe.

Je crois personnellement sur cette question spécifique, à chaque utilisateur le sien. Si vous pensez que vous pouvez vous souvenir d'un mot de passe de 40 caractères, alors plus de pouvoir pour vous!

Cela dit, les mots de passe deviennent rapidement un mode de sécurité obsolète, les cartes à puce et l'authentification par certificat s'avèrent très difficiles, voire impossibles, à la force brute, comme vous l'avez déclaré, et seule une clé publique doit être stockée sur le serveur avec le privé. clé sur votre carte / ordinateur à tout moment.

tekiegreg
la source
Les gens peuvent facilement se souvenir d'une chanson préférée, d'un verset biblique ou d'un autre dicton. Ceux-ci sont très longs par rapport à un mot de passe classique. Je viens d'en tester un et je suis arrivé à 79 caractères! (Certes, la possibilité d'une erreur augmente plus la phrase de passe est longue. Pire encore lorsqu'un site Web STUPIDE ne vous montre pas le dernier caractère que vous avez entré dans la zone de mot de passe.)
Katastic Voyage
0

Les mots de passe plus longs, ou phrases de passe, sont plus difficiles à déchiffrer simplement en fonction de leur longueur, et plus faciles à retenir que d'exiger un mot de passe complexe.

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

benPearce
la source
0

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

Mandrin
la source
0

L'algorithme d'authentification utilisé est l'une des raisons pour lesquelles les mots de passe ne peuvent pas être hachés. Par exemple, certains algorithmes de résumé nécessitent une version en texte brut du mot de passe sur le serveur car le mécanisme d'authentification implique à la fois le client et le serveur d'effectuer les mêmes calculs sur le mot de passe entré (qui ne produira généralement pas la même sortie à chaque fois que le mot de passe est combiné avec un 'nonce' généré aléatoirement, qui est partagé entre les deux machines).

Cela peut souvent être renforcé car le résumé peut être partiellement calculé dans certains cas, mais pas toujours. Un meilleur moyen consiste à stocker le mot de passe avec un cryptage réversible - cela signifie alors que les sources de l'application doivent être protégées car elles contiendront la clé de cryptage.

Digst auth est là pour permettre l'authentification sur des canaux autrement non cryptés. Si vous utilisez SSL ou un autre cryptage à canal complet, il n'est pas nécessaire d'utiliser des mécanismes d'authentification condensée, ce qui signifie que les mots de passe peuvent être stockés hachés à la place (car les mots de passe peuvent être envoyés en texte clair sur le fil en toute sécurité (pour une valeur donnée de safe).

Chris J
la source
-4

Seuls les mots de passe de 8 caractères semblent tout simplement faux. S'il doit y avoir une limite, alors au moins 20 caractères sont une meilleure idée.

user17000
la source
3
Mais c'est le problème - il ne devrait pas y avoir de limite du tout.
Luke Stevenson
-4

Je pense que la seule limite qui devrait être appliquée est comme une limite de 2000 lettres, ou quelque chose d'autre incroyablement élevé, mais uniquement pour limiter la taille de la base de données si cela pose un problème

Josh Hunt
la source
9
Les mots de passe doivent être hachés ... Et la taille de la base de données ne serait pas un problème si le mot de passe est haché.
epochwolf
4
@epochwolf - Je peux penser à une raison pour laquelle les mots de passe ne devraient pas toujours être hachés (parce que je l'ai découvert moi-même aujourd'hui): un mot de passe qui doit être soumis à un tiers au nom de l'utilisateur ne peut pas être stocké sous forme de hachage valeur. [Par exemple, une application qui a besoin de stocker des informations d'identification pour envoyer des e-mails via un domaine externe.]
Kenny Evitt