GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi la sortie de openssl passwd est-elle différente à chaque fois ?

> openssl passwd -1 "a"
$1$OKgLCmVl$d02jECa4DXn/oXX0R.MoQ/

C'est le crypt(3) de style Unix étendu syntaxe de hachage du mot de passe, en particulier sa version MD5.

Le premier $1$ identifie le type de hachage, la partie suivante OKgLCmVl est le sel utilisé pour chiffrer le mot de passe, puis après le séparateur $ caractère à la fin de la ligne est le hachage réel du mot de passe.

Ainsi, si vous prenez la partie sel du premier chiffrement et que vous l'utilisez avec les suivants, vous devriez toujours obtenir le même résultat :

> openssl passwd -1 -salt "OKgLCmVl" "a"
$1$OKgLCmVl$d02jECa4DXn/oXX0R.MoQ/
> openssl passwd -1 -salt "OKgLCmVl" "a"
$1$OKgLCmVl$d02jECa4DXn/oXX0R.MoQ/

Lorsque vous changez un mot de passe , vous devez toujours passer à un nouveau sel. Cela empêche quiconque de découvrir après coup si le nouveau mot de passe était en fait le même que l'ancien. (Si vous souhaitez empêcher la réutilisation d'anciens mots de passe, vous pouvez bien sûr hacher deux fois le nouveau mot de passe candidat :une fois avec l'ancien sel, puis, si le résultat est différent de l'ancien mot de passe et donc acceptable, à nouveau avec un nouveau sel.)

Si vous utilisez openssl passwd sans options, vous obtenez le crypt(3) d'origine -hachage compatible, comme décrit par dave_thompson_085. Avec lui, le sel correspond aux deux premières lettres du hachage :

> openssl passwd "a"
imM.Fa8z1RS.k
> openssl passwd -salt "im" "a"
imM.Fa8z1RS.k

Vous ne devez pas utiliser cet ancien style de hachage dans une nouvelle implémentation, car il limite la longueur effective du mot de passe à 8 caractères et contient trop peu de sel pour une protection adéquate contre les méthodes modernes.

(Une fois, j'ai calculé la quantité de données nécessaires pour stocker un ensemble complet de tables arc-en-ciel pour chaque crypt(3) classique hacher. Je ne me souviens pas du résultat exact, mais en supposant que mes calculs étaient corrects, c'était de l'ordre de "une pile modeste de disques de plusieurs téraoctets". À mon avis, cela le place dans la fourchette "les criminels organisés pourraient le faire".)


Contrairement aux hachages normaux, mot de passe les hachages doivent utiliser 'salt' et doit être lent (généralement par itération) pour empêcher un attaquant qui obtient le(s) hachage(s) de récupérer facilement le(s) mot(s) de passe. Voir canonique sur security.SX et de nombreux liens.

La crypte originale des années 1970 (3), maintenant appelée DEScrypt pour plus de clarté, est (légèrement) salée :

sel est une chaîne de deux caractères choisie dans l'ensemble [a-zA-Z0-9./]. Cette chaîne est utilisée pour perturber l'algorithme de l'une des 4096 manières différentes.

Le schéma MD5crypt légèrement plus récent est salé et itéré, mais pas conforme aux normes modernes. Ces deux schémas et certains des meilleurs schémas qui les ont remplacés sur Unix (es) sont détaillés dans https://en.wikipedia.org/wiki/Crypt_%28C%29 .


L'utilisateur muru a raison. Le mot de passe est salé.

Vous pouvez ajouter l'option -salt string vous-même et le hachage reste le même.

$ openssl passwd -salt "foo" "bar"
foXrpAKGo3142
$ openssl passwd -salt "foo" "bar"
foXrpAKGo3142

Linux
  1. Comment faire en sorte que `date` affiche l'heure d'un fuseau horaire différent ?

  2. Sortie vers Stdout et en même temps Grep dans un fichier ?

  3. Forcer un changement de mot de passe à la prochaine connexion

  4. Passer le hachage avec Remote Desktop

  5. Utilisation de la commande passwd à partir d'un script shell

Pourquoi est-ce le meilleur moment pour utiliser GNOME ?

Rediriger la sortie d'une commande dans 'time Command' ?

Pourquoi Grep -o -w ne me donne-t-il pas la sortie attendue sur Mac Os X ?

Pourquoi Ls -l affiche-t-il une taille différente de Ls -s ?

Comment rediriger la sortie de la commande time vers un fichier sous Linux ?

Pourquoi pr_debug du noyau Linux ne donne-t-il aucune sortie ?