quelle est la longueur maximale du mot de passe sur le système unix / linux?

27

quelle est la longueur maximale autorisée de mot de passe sur le système unix / linux?

hari
la source
20
Si la réponse n'est pas 42, elle devrait l'être.
tvanfosson
une meilleure question pourrait être: que puis-je raisonnablement attendre de quelqu'un pour taper? Si la limite est de 40 et que vous dépassez cela, vous faites quelque chose de mal.
msw

Réponses:

39

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, car 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 modifié très légèrement, 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é.

Il y a un léger inconvénient à utiliser ces hachages, c'est qu'un hachage a une taille finie, par exemple un hachage MD5 fait 128 bits. Cela signifie qu'un hachage MD5 a seulement 2^128ou les 340,282,366,920,938,463,463,374,607,431,768,211,456combinaisons possibles. Maintenant, alors que c'est 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é, la probabilité plus faible d'une collision et plus il devrait prendre à la force brute un mot de passe , mais qui est d' évaluer strictement l'entropie et combien de temps il peutmais il y a aussi une chance que la première entrée qu'ils essayent 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 sûr d'utiliser 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 apparaisse parmi les correspondances 340,282,366,920,938,463,463,374,607,431,768,211,456possibles sont extrêmement extrêmement improbables. Choisissez également un bon mot de passe car beaucoup de crackers essaieront d'utiliser des listes de mots, des listes de noms et des mutations de ces listes (c'est-à-dire si le mot est "poisson" alors ils essaieront fish1234, fish!@#$etc.) avant de s'appuyer sur la force brute pour forcer 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 regarder le /etc/shadowfichier (en supposant que vous ayez 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 à l' $1$01234567$b5lh2mHyD2PdJjFfALlEz1endroit où il commence $1$). Si cela commence par cela, cela signifie que votre système utilise un hachage cryptographique. Le format du champ de mot de passe sur tous les systèmes modernes est $id$salt$hash. L'ID 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é / du 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 Blowfish
  • $5$ signifie que vous utilisez SHA-256
  • $6$ signifie que vous utilisez SHA-512

SHA-512 est le meilleur hachage disponible à utiliser que la glibc offre. Je ne sais pas à quel point 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 puisse être attendue et avec un mot de passe suffisamment complexe, il faudrait très longtemps à un cluster d'ordinateurs pour trouver le mot de passe réel ou une collision dans le hachage .

De plus, si vous disposez d'un hachage qui ne commence pas par, $num$vous utilisez DES et est limité à 8 caractères. Je crois que les anciens systèmes qui utilisent DES, ou au 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 mybigbigappleet que quelqu'un utilise le mot de passe, mybigbigcityil sera autorisé à entrer, car DES n'utilisera que mybigbigtout ce qui sera supprimé.

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 8.10, sorti en octobre 2008, et toutes les versions depuis lors utilisent des hachages SHA-512. Je ne sais pas jusqu'où avant avril 2008 mais je crois que pendant plusieurs années sinon plus, la plupart des distributions utilisaient des hachages.

Les versions 12.04 et 14.04 LTS (versions de support à long terme) actuelles d'Ubuntu semblent utiliser SHA-512 par défaut, comme on peut le voir avec le $6$préfixé au hachage dans le fichier / etc / shadow:

catullus:$6$MsHYK60sqcv$BtDqVCMXibpqg[...]

Maintenant, la longueur de la clé ou du mot de passe autorisée pour tout algorithme de hachage n'est pas la seule chose à déterminer 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 durée du programme lui-même. Tous les programmes passwd modernes et probablement la plupart des crypt(3)fonctions sous Linux. Crypt depuis longtemps (car 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 que le programme a à sa disposition, mais selon toute vraisemblance, cela est probablement beaucoup plus long que tout mot de passe dont toute personne pourrait se souvenir. (des millions de personnages?).

Cela devrait répondre à votre question sur la durée d'un mot de passe. J'espère que j'ai aidé.

Les références:

jetole
la source
7
"Quelle est la longueur maximale d'une réponse SU?" lol Grande réponse!
James Mertz
1
Il convient de noter que l'algorithme crypt () est obsolète depuis plus d'une décennie. Quelle que soit la longueur d'un mot de passe crypt (), il est tronqué à 8 caractères. Combiné avec le très petit espace de clé d'un sel de 12 bits, crypt () a été rendu totalement non sécurisé. Pour référence, voici un article sur la façon dont 1 million de mots de passe de Gawker ont été exposés en raison de l'utilisation de crypt () en 2010: https://www.lightbluetouchpaper.org/2010/12/15/the-gawker-hack- comment-un-million-de-mots-de-passe-ont-été-perdus /
cremefraiche
8

Cela dépend du module d'authentification utilisé. Dans les systèmes Linux modernes, il n'y a pas de limite maximale sur la longueur du mot de passe. Certains systèmes obsolètes peuvent avoir des limites imposées par leur système de stockage de mot de passe - les maximums populaires semblent être 8, 40 et 255.

John Millikin
la source
3

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 de mot de passe définie 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 :)

Kelsey
la source
5
Il s'agit d'un ordinateur général, pas nécessairement spécifique aux serveurs!
Dark Android
0

La commande passwd implique la commande mcrypt pour le chiffrement. Selon le code source de mcrypt, la taille maximale de stdin est limitée à 512 caractères (chiffres) - mais c'était il y a deux ans .... - (je mettrai à jour cette réponse dans les prochaines heures) ... Oui ... Dans le code source 2.6.8 de mcrypt dans le répertoire src, il y a le fichier getpass.c - là au début vous voyez la valeur 512 définie comme valeur de caractère statique. (J'adorerais le pomper jusqu'à 1,4 Go ...):

dschinn1001
la source