Pages : 1
#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 je vient de l'utiliser pour faire autre chose cella la
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
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
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
Pages : 1