Quelles méthodes sont utilisées pour crypter les mots de passe dans / etc / passwd et / etc / shadow?

19

Un examen attentif des fichiers /etc/passwdet /etc/shadowrévèle que les mots de passe stockés sont hachés à l'aide d'une forme de fonction de hachage.

Une recherche rapide sur Google révèle que par défaut, les mots de passe sont cryptés à l'aide de DES . Si une entrée commence par $, cela indique qu'une autre fonction de hachage a été utilisée.

Par exemple, certaines entrées sur ma machine Ubuntu commencent par $6$...

Que représentent les différents chiffres?

Nathan Osman
la source

Réponses:

28

La liste complète est en man 3 crypt( version web ):

          ID  | Method
          -------------------------------------------------
          1   | MD5
          2a  | Blowfish (on some Linux distributions)
          5   | SHA-256 (since glibc 2.7)
          6   | SHA-512 (since glibc 2.7)

(Blowfish peut être $2$ou $2a$selon Wikipedia Crypt (Unix) .)

Cela $6$signifie donc SHA-512.

Celui que votre système utilise est régi par les options passées au module pam_unix PAM .

La valeur par défaut sur la dernière version d'Ubuntu est définie dans /etc/pam.d/common-password:

password        [success=1 default=ignore]      pam_unix.so obscure sha512

ce qui signifie que la prochaine fois que vous modifierez votre mot de passe, il sera haché à l'aide de SHA-512, en supposant que votre compte est local, plutôt que NIS / LDAP / Kerberos, etc.

Voir également:

Mikel
la source
Une double vérification rapide de mon /etc/shadowmontre 2 entrées qui commencent par $6$.
Nathan Osman
Notez que SHA-256 et SHA-512 font partie de l'ensemble de fonctions de hachage SHA-2.
mattdm
4
Notez que les hachages de cryptage basés sur SHA-2 ne sont pas des SHA-2 simples, ce qui serait mauvais car SHA-2 ordinaire est faible contre les attaques par dictionnaire. Les schémas de cryptage SHA-2 utilisent les hachages simples comme bloc de construction, mais ajoutent un facteur de travail variable (pour ralentir les attaques par dictionnaire) et un sel.
CodesInChaos
Sur ma machine Ubuntu, le mot de passe de root a un symbole de point d'exclamation ( !). En lecture man shadow, cela signifie que le mot de passe est verrouillé, vous ne pouvez donc pas vous connecter directement en utilisant le mot de passe Unix. Cela a à voir avec le compte root Ubuntu défini par défaut.
Akronix