Où est-ce que le sel est attaché au mot de passe, APRÈS ou AVANT le mot de passe?

Lorsque vous utilisez GNU / Linux, le mot de passe est (principalement) écrit en MD5 et SHA
Le système d’exploitation associe un SALT à ce mot de passe avant de le chiffrer pour éviter les attacs de dictionnaire.

Ma question est la suivante: où l’OS attache-t-il le SALT, avant ou après le mot de passe?

Par exemple, est-ce que mon mot de passe est: peter2011 avant de l’enregistrer,

saltpeter2011 ou peter2011salt ?

Merci d’avance.


Je ne sais pas si vous avez mal compris ma question, mais je ne vous demande pas comment Linux stocke ses mots de passe, je demande comment ça marche, je veux dire:

encrypt_in_md5 (saltpeter2011) ou encript_in_md5 (peter2011salt)

Je sais que dans le fichier / etc / shadow sont stockés sous la forme $ salt & encripted_password

Merci d’avance!

    C’est un peu plus complexe que cela, impliquant de multiples séries d’ajouts et de hachages. Il vaut mieux utiliser simplement crypt(3) et laisser le système le gérer.

    Ce n’est pas aussi simple qu’on pourrait le penser.

    Tout d’abord, la façon dont les sels sont utilisés dépend de la fonction de hachage utilisée. Vous mentionnez MD5, alors nous allons prendre ce cas.

    Vous devez regarder dans le fichier glibc / crypt / md5-crypt.c pour la réponse, dans les sources glibc.

    Là, vous verrez que tout d’abord, il fait quelque chose comme md5 (KEY $ 1 $ SALT), puis md5 (KEYSALTKEY) et les mélange ensuite de manière étrange. Ensuite, il fait des itérations plus bizarres basées sur la clé, le sel et les résultats précédents, et enfin, après quelques mixages supplémentaires, vous avez terminé.

    Si vous implémentez le système, c’est à vous de décider. N’a pas d’importance du tout.

    Très probablement, unix fait $1$SALTpeter2011 .