Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/03/2012, à 13:40

utnubu42

Hachage et salage utilisés dans /etc/shadow

Bonjour à tous.

Je voudrais savoir, par simple curiosité, comment sont cryptés les mots de passes dans le fichier /etc/shadow
Voila une ligne de mon fichier :
bidon:$6$JZ1idS/T$iFqQmqk9Lt/UPRsEoAWk2KExp/HA9z80cmN3MB2vda6JBhMEG2Krs0gCCzEUs1JQadfT/vqWz42rM4X403HoE/

D'après ce que je sais, le $6 indique que le mot de passe est haché en SHA-512, le $JZ1idS/T est le salage et le reste c'est le mot de passe haché.

Je voudrais donc comprendre comment sont salés les mots de passe et pourquoi ici le hash est en caractères ASCII et non des chiffres en hexadécimal.

Merci d'avance

Hors ligne

#2 Le 12/03/2012, à 22:52

VoucyusDo

Re : Hachage et salage utilisés dans /etc/shadow

A vue de nez, il s'agit d'un encodage base64 (64 caractères possibles: a-z A-Z 0-9 + et /). L'intérêt d'un tel codage est de donner des nombres plus courts (6 bits par caractères, 2⁶=64) qu'en hexa (4 bits par caractères, 2⁴=16). Je suppose que sha512 produit des hash longs et difficiles à manipuler en hexa, d'où le codage en base64 pour les raccourcirs.

Généralement, le salage est effectué en concaténant le mot de passe et le sel. sha512 étant un algorithme cryptographique (les résultats semblent aléatoire au regard des données en entrée, une variation d'un seul caractère donne un hash totalement différent), il devient impossible d'utiliser une "rainbow table" (liste des hashs de tous les mots du dictionnaire et un grand nombre de combinaisons simples).

En espérant avoir répondu aux questions, n'hésite pas à préciser les points qui ne te semblent pas clairs


Sent from my Ubuntu box

Hors ligne

#3 Le 12/03/2012, à 23:32

sputnick

Re : Hachage et salage utilisés dans /etc/shadow

Salut,

voir http://sputnick-area.net/pasteme/312
copier le script C dans crypt.c, puis

gcc -lcrypt -o /tmp/crypt crypt.c
/tmp/crypt salt

C'est donc la fonction crypt() qui genere les mots de passe.

man 5 shadow
man 3 crypt

Dernière modification par sputnick (Le 13/03/2012, à 00:03)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#4 Le 12/03/2012, à 23:54

pires57

Re : Hachage et salage utilisés dans /etc/shadow

unistd.h big_smile je vient de l'utiliser pour faire autre chose cella la tongue


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#5 Le 13/03/2012, à 00:08

sputnick

Re : Hachage et salage utilisés dans /etc/shadow

VoucyusDo a écrit :

A vue de nez, il s'agit d'un encodage base64 (64 caractères possibles: a-z A-Z 0-9 + et /). L'intérêt d'un tel codage est de donner des nombres plus courts (6 bits par caractères, 2⁶=64) qu'en hexa (4 bits par caractères, 2⁴=16). Je suppose que sha512 produit des hash longs et difficiles à manipuler en hexa, d'où le codage en base64 pour les raccourcirs.

Généralement, le salage est effectué en concaténant le mot de passe et le sel. sha512 étant un algorithme cryptographique (les résultats semblent aléatoire au regard des données en entrée, une variation d'un seul caractère donne un hash totalement différent), il devient impossible d'utiliser une "rainbow table" (liste des hashs de tous les mots du dictionnaire et un grand nombre de combinaisons simples).

En espérant avoir répondu aux questions, n'hésite pas à préciser les points qui ne te semblent pas clairs

Hummmmmhhh....

Heureusement que c'est *pas* du base64, car base64 est réversible !

$ base64 <<< azerty
YXplcnR5Cg==
$ base64 -d <<< "YXplcnR5Cg=="
azerty

Un résumé comme sha* md5 etc, ne permet pas d’être réversible à moins d'avoir une rainbow table et pas de salt (grain de sel).
man 3 crypt


man 3 crypt a écrit :

               ID  | Method
               ---------------------------------------------------------

*              1   | MD5
               2a  | Blowfish (not in mainline glibc; added in some
                   | Linux distributions)
               5   | SHA-256 (since glibc 2.7)
               6   | SHA-512 (since glibc 2.7)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#6 Le 13/03/2012, à 22:20

VoucyusDo

Re : Hachage et salage utilisés dans /etc/shadow

Par base64 j'entends la méthode codage du résultat de la fonction de hash sha512. L'algorithme produit une suite d'octets qui n'est pas aisément représentable en caractères ASCII imprimables. Pour l'afficher on pourrait la représenter sous la forme d'un nombre décimal (base 10), binaire (base 2), octal (base 8), hexadécimal (base 16), etc. En fonction du codage utilisé, la taille de la chaîne obtenue est plus ou moins longue (512 caractères en base 2, 155 en base 10, 128 en base 16). Base64 est simplement une autre méthode de codage qui emploie 64 caractères imprimables (0-9A-Za-Z+/).

Je confirme que base64 est réversible: ce n'est pas un algorithme de cryptage mais une manière d'écrire des valeurs numériques.


Sent from my Ubuntu box

Hors ligne