quelle est la longueur maximale autorisée du mot de passe sur les systèmes Unix/Linux?
Si votre système utilise un hachage cryptographique pour stocker les mots de passe, à savoir MD5, SHA1, etc., la longueur du mot de passe n’est pas limitée 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, ce qui est généralement fait à des fins d'investigation, car si même un bit est légèrement modifié, vous obtenez un hachage très différent et vous pouvez donc vérifier que les données ont bien été modifiées. Cela signifie que vous pouvez utiliser exactement ces mêmes algorithmes pour vérifier si des données ont été falsifiées. Linux (au moins Linux actuel) utilise ces mêmes fonctions de hachage. Il vous demandera un mot de passe, puis créera un hachage cryptographique du mot de passe que vous avez fourni 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 le seul moyen de récupérer un mot de passe perdu consiste à exécuter un test de force brute qui génère un hachage du mot de passe après le hachage du mot de passe jusqu'à ce qu'il en trouve un qui corresponde au hachage actuel. mot de passe.
L'utilisation de ces hachages présente un léger inconvénient, à savoir 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 chiffre important, cela signifie que vous pouvez avoir ce qu’on appelle une collision de hachage lorsque vous avez deux éléments différents ou des clés différentes qui produisent le même hachage. En théorie, plus la taille de la clé est grande, plus la probabilité de collision est faible et plus il faut de temps pour forcer brutalement un mot de passe, mais c’est une évaluation stricte de l’entropie et de sa durée PEUT prend mais il y a aussi une chance que la première entrée essayée soit celle qui correspond même s'il s'agit d'une collision de hachage. En règle générale, vous utilisez réellement un hachage avec une taille de clé plus grande, car supposons qu'il s'agisse de MD5, les chances que le premier mot de passe corresponde à des correspondances 340,282,366,920,938,463,463,374,607,431,768,211,456
possibles sont extrêmement peu probables. Choisissez également un bon mot de passe car beaucoup de craqueurs 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
, fish!@#$
etc.) avant de s’appuyer sur le brute mot de passe.
Pour savoir si votre système utilise des hachages cryptographiques pour stocker les mots de passe, consultez le fichier /etc/shadow
(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 de mot de passe peut commencer par $num$
(c’est-à-dire qu’un hachage md5 dans le champ de mot de passe ressemble à $1$01234567$b5lh2mHyD2PdJjFfALlEz1
où il commence par $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'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$
, 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-512SHA-512 est le meilleur hash disponible à utiliser que glibc offre. 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 de pouvoir s'attendre à une collision. Avec un mot de passe assez complexe, il faudrait très longtemps à un groupe d'ordinateurs pour trouver le mot de passe actuel ou une collision dans le hachage. .
De même, si vous utilisez un hachage qui ne commence pas par $num$
, vous utilisez DES et sa longueur est limitée à 8 caractères. Je crois que les anciens systèmes qui utilisent DES, ou du moins certains d’entre eux, prendront un mot de passe de taille quelconque mais n’utiliseront que les 8 premiers caractères. Cela signifie que si vous définissez votre mot de passe sur mybigbigapple
et que quelqu'un utilise le mot de passe mybigbigcity
, ils seront autorisés à entrer car DES n'utilisera que mybigbig
et tout ce qui suivra sera ignoré.
Donc vous savez, Ubuntu à partir de 8.04, qui est sorti en avril 2008, utilisait des hash MD5. Ubuntu à partir de 8.10, qui a été publié 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 pense que pendant plusieurs années, sinon plus, la plupart des distributions utilisaient des hachages.
Les versions actuelles 12.04 et 14.04 des versions de support à long terme d’Ubuntu semblent utiliser SHA-512 par défaut, comme le montre le $6$
ajouté au hachage du fichier/etc/shadow:
catullus:$6$MsHYK60sqcv$BtDqVCMXibpqg[...]
Désormais, la longueur autorisée par la clé ou le mot de passe pour tout algorithme de hachage n'est pas la seule chose à déterminer pour déterminer la taille du mot de passe que vous êtes autorisé à utiliser. 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)
fonctionnent sous Linux. crypt depuis longtemps (depuis au moins MD5 et probablement probablement avant) 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 accepte va être basée sur la quantité de RAM dont dispose ce programme, mais il est fort probable que cela est beaucoup plus long que n'importe quel mot de passe serait jamais capable de se souvenir (des 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:
Cela dépend du module d'authentification utilisé. Dans les systèmes Linux modernes, il n'y a pas de limite maximale pour la longueur du mot de passe. Certains systèmes obsolètes peuvent se voir imposer des limites par leur système de stockage de mots de passe - les valeurs maximales courantes semblent être de 8, 40 et 255.
Selon la manière 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 probablement de 8 ou 255 caractères.
Cela semble être une question mieux adaptée pour www.serverfault.com bien que :)
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 ... en code source 2.6.8 de mcrypt dans le répertoire src, il existe un fichier getpass.c - au début, vous voyez la valeur 512 définie comme valeur de caractère statique. (J'aimerais bien pomper jusqu'à 1,4 Go ...):