Si votre système utilise un hachage cryptographique pour stocker les mots de passe, c'est-à-dire MD5, SHA1, etc., il n'y a pas de limite à la longueur du mot de passe lui-même puisque ces hachages peuvent être créés avec n'importe quelle quantité de données. Un hachage MD5 ou SHA1 peut être créé pour un disque dur entier et cela est généralement fait à des fins médico-légales, car si même un bit est légèrement modifié, vous avez un hachage très différent et vous pouvez donc vérifier que les données ont changé. Cela signifie que vous pouvez utiliser ces mêmes algorithmes pour tester si les données ont été falsifiées. Linux (Linux actuel au moins) utilise ces mêmes fonctions de hachage. Il vous demandera un mot de passe et il créera ensuite un hachage cryptographique du mot de passe que vous avez donné et verra si ce hachage correspond au mot de passe stocké. Cela signifie également que vos mots de passe ne sont pas stockés en texte brut et que la seule façon de récupérer un mot de passe perdu est d'exécuter un test de force brute qui génère un hachage de mot de passe après hachage de mot de passe jusqu'à ce qu'il en trouve un qui correspond au hachage actuel, puis vous avez votre mot de passe.
Il y a un léger inconvénient à utiliser ces hachages qui est qu'un hachage a une taille finie, par exemple un hachage MD5 est de 128 bits. Cela signifie qu'un hachage MD5 n'a que 2^128
ou 340,282,366,920,938,463,463,374,607,431,768,211,456
combinaisons possibles. Bien que ce soit un grand nombre, cela signifie que vous pouvez avoir ce qu'ils appellent une collision de hachage où vous avez deux éléments ou clés différents qui produisent le même hachage. En théorie, plus la taille de la clé est grande, plus la probabilité d'une collision est faible et plus il faut de temps pour forcer brutalement un mot de passe, mais cela évalue strictement l'entropie et combien de temps elle PEUT prendre mais il y a aussi une chance que la première entrée qu'ils essaient soit celle qui correspond même s'il s'agit d'une collision de hachage. De manière générale, vous êtes vraiment plus en sécurité en utilisant un hachage qui a une taille de clé plus grande car, supposons qu'il s'agisse de MD5, les chances que le premier mot de passe corresponde à 340,282,366,920,938,463,463,374,607,431,768,211,456
les correspondances possibles sont extrêmement extrêmement improbables. Choisissez également un bon mot de passe car de nombreux pirates essaieront d'utiliser des listes de mots, des listes de noms et des mutations de ces listes (c'est-à-dire que si le mot est "poisson", ils essaieront fish1234
, [email protected]#$
etc) avant de compter sur le forçage brutal d'un mot de passe.
La façon dont vous pouvez savoir si votre système utilise des hachages cryptographiques pour stocker les mots de passe est de jeter un œil au /etc/shadow
fichier (en supposant que vous avez un accès root). Chaque ligne est formatée comme user:password:last-changed:minimum-age:maximum-age:warning-period:inactivity-period:expiration-date:reserved
. Le champ du mot de passe peut commencer par $num$
(c'est-à-dire qu'un hachage md5 dans le champ du mot de passe ressemble à $1$01234567$b5lh2mHyD2PdJjFfALlEz1
où il commence par $1$
). Si cela commence par ceci, cela signifie que votre système utilise un hachage cryptographique. Le format du champ mot de passe sur tous les systèmes modernes est $id$salt$hash
. L'identifiant spécifie le type de hachage cryptographique que vous utilisez. Le sel est une chaîne générée aléatoirement qui est concaténée avec la clé (mot de passe en texte brut) afin de se protéger contre les tables précalculées de hachages connus. Le hachage est le hachage cryptographique créé à partir du sel et de la clé/mot de passe. Si votre champ de mot de passe commence par $num$
alors vous utilisez des hachages cryptographiques.
Donc, vous savez, les chiffres signifient ceci :
$1$
signifie que vous utilisez MD5$2$
ou$2a$
signifie que vous utilisez du poisson-globe$5$
signifie que vous utilisez SHA-256$6$
signifie que vous utilisez SHA-512
SHA-512 est le meilleur hachage disponible à utiliser proposé par la glibc. Je ne sais pas à quel point le blowfish est puissant, mais il ne fait pas partie de la glibc et n'est donc disponible que sur certaines distributions qui l'ont ajouté. SHA-512 produit des clés de 512 bits ou 2 ^ 512 combinaisons possibles avant qu'une collision ne soit attendue et avec un mot de passe suffisamment complexe, il faudrait un groupe d'ordinateurs très très long pour trouver soit le mot de passe réel, soit une collision dans le hachage .
Aussi, si vous avez un hachage qui ne commence pas par $num$
alors vous utilisez DES et cela est limité à 8 caractères. Je crois que les systèmes plus anciens qui utilisent DES, ou du moins certains d'entre eux, prendront n'importe quel mot de passe de taille mais n'utiliseront que les 8 premiers caractères. Cela signifie que si vous définissez votre mot de passe sur mybigbigapple
et quelqu'un utilise le mot de passe mybigbigcity
alors ils seront autorisés car DES n'utilisera que mybigbig
et tout ce qui suit est jeté.
Donc, vous savez, Ubuntu à partir de la version 8.04, qui a été publiée en avril 2008, utilisait des hachages MD5. Ubuntu à partir de la version 8.10, publiée en octobre 2008, et toutes les versions depuis lors utilisent des hachages SHA-512. Je ne sais pas combien de temps avant avril 2008 mais je crois que pendant plusieurs années sinon plus, la plupart des distributions utilisaient des hachages.
Les versions actuelles 12.04 et 14.04 LTS (support à long terme) d'Ubuntu semblent utiliser SHA-512 par défaut, comme on peut le voir avec le $6$
ajouté au hachage dans le fichier /etc/shadow :
catullus:$6$MsHYK60sqcv$BtDqVCMXibpqg[...]
Désormais, la longueur autorisée pour la clé ou le mot de passe pour tout algorithme de hachage n'est pas la seule chose qui détermine la taille du mot de passe que vous êtes autorisé à avoir. L'autre élément d'intérêt est la façon dont le programme est écrit et la longueur que le programme lui-même prendra en charge. Tous les programmes passwd modernes et probablement la plupart des crypt(3)
fonction sous Linux. crypt pendant longtemps (puisqu'au moins MD5 a été utilisé et probablement avant cela) a autorisé les pointeurs de caractères pour la clé réelle. Cela signifie que la seule limite sur la durée d'une clé qu'il acceptera est basée sur la quantité de RAM dont dispose ce programme, mais selon toute vraisemblance, c'est probablement beaucoup plus long que n'importe quel mot de passe que n'importe qui pourrait jamais se souvenir (millions de caractères ?).
Cela devrait répondre à votre question sur la longueur d'un mot de passe. J'espère que j'ai aidé.
Références :
-
page de manuel crypt(3) (Ubuntu 14.04)
-
Page de manuel SHADOW(5) (Ubuntu 14.04)
-
en.wikipedia.org/wiki/Crypt_(Unix)
-
en.wikipedia.org/wiki/Password_strength
-
fr.wikipedia.org/wiki/Md5
-
en.wikipedia.org/wiki/Blowfish_(cipher)
-
en.wikipedia.org/wiki/SHA-1
Cela dépend du module d'authentification utilisé. Dans les systèmes Linux modernes, il n'y a pas de limite maximale de longueur de mot de passe. Certains systèmes obsolètes peuvent avoir des limites imposées par leur système de stockage de mots de passe. Les maximums courants semblent être de 8, 40 et 255.
Selon la façon dont le mot de passe est stocké, MD5, SHA1, BlowFish, etc., je pense qu'il n'y a pas de limite au mot de passe défini par la méthode de stockage elle-même.
Les implémentations plus anciennes peuvent avoir une limite qui est probablement de 8 ou 255 caractères.
Cela semble être une question mieux adaptée à www.serverfault.com cependant :)