web-dev-qa-db-fra.com

Pourquoi les mots de passe sont-ils limités à 16 caractères?

Quelle est la raison pour laquelle la plupart des sites Web se limitent à 16 caractères?

J'aurais pensé que plus le mot de passe est long, plus il est difficile pour quelqu'un de le déchiffrer?

Est-ce lié aux collisions de hachage?

36
orange

Si vous devez respecter CWE-521: exigences de mot de passe faibles . Ensuite, tous les mots de passe doivent avoir une longueur de mot de passe min et max.

Il y a deux raisons pour limiter la taille du mot de passe. D'une part, le hachage d'une grande quantité de données peut entraîner une consommation importante de ressources au nom du serveur et serait une cible facile pour le déni de service. Surtout si le serveur utilise un étirement des clés tel que PBKDF2.

L'autre problème est le hachage attaques par extension de longueur ou l'attaque par préfixe contre MD5. Cependant, si vous utilisez une fonction de hachage qui n'est pas endommagée, comme bcrypt ou sha-256, cela ne devrait pas être un problème pour les mots de passe.

IMHO 16 octets est beaucoup trop petit . bcrypt a un plafond intégré de 72 caractères, ce qui est probablement une taille raisonnable pour une fonction de hachage lourde. L'étirement des touches utilisé par ces fonctions crée la possibilité d'une Algorithmic Complexity Attack ou ACA.

32
rook

Quelle est la raison pour laquelle la plupart des sites Web se limitent à 16 caractères?

Limite d'implémentation arbitraire.

Peut-être qu'ils veulent seulement allouer un tampon de 17 octets (16 caractères ASCII/1 octet + terminaison NUL).

Peut-être pensent-ils qu'avoir un mot de passe avec plus de 16 caractères est inutile ou idiot, car ils ne comprennent pas les mots de passe.

J'aurais pensé que plus le mot de passe est long, plus il est difficile pour quelqu'un de le déchiffrer?

En effet. Un mot de passe avec 16 caractères alphabétiques indépendants aléatoires avec une distribution uniforme a suffisamment d'entropie. Mais l'être humain est mauvais à choisir au hasard 16 caractères alphabétiques indépendants aléatoires avec une distribution uniforme, et terriblement mauvais à se souvenir de telles séquences de caractères sans signification, donc ils choisissent des mots de passe dont ils peuvent se souvenir, mais avec moins d'entropie par caractère .

Ce qui importe, c'est seulement l'entropie totale, pas l'entropie par caractère. Par exemple, une séquence de mots de dictionnaire aléatoires, générée avec un Word-die (Word-die: ouvrir une page au hasard dans un dictionnaire, etc.) est plus facile à retenir qu'une séquence de lettres obtenue avec un dé à lettres.

De tels mots de passe seront plus longs que des séquences de lettres purement aléatoires, mais ils seront beaucoup plus faciles à retenir pour une entropie égale; ou, si vous préférez, ils auront beaucoup plus d'entropie pour un effort de mémoire mentale égal.

Pour une résistance adéquate, ces mots de passe constitués de mots du dictionnaire auront probablement plus de 16 caractères.

En d'autres termes, cette limite est stupide.

Est-ce quelque chose à voir avec les collisions de hachage?

Non.

Il n'y a aucune garantie formelle en ce qui concerne les collisions avec des mots de passe courts, mais l'impact pratique des collisions de hachage est inexistant.

18
curiousguy