Je ne trouvais pas de bon titre alors j'ai trouvé un truc bien débile :)

Je voulais pousser un coup de gueule contre ce genre d'articles : http://mcarthurgfx.com/blog/article/a-basic-lesson-in-password-hashing

Pour moi, ca reste une référence de ce qu'il ne faut PAS faire.

Ce monsieur - que je ne connaissais pas avant de lire l'article - part pourtant d'un excellent constat: les utilisateurs (ou les développeurs de site, ca marche aussi) stockent les mots de passe en clair et c'est mal. Autre mauvaise solution: utiliser un hash tout simple du mot de passe (en l'occurence md5).

Qu'est-ce qu'un hash ? Disons simplement que c'est un algorithme de cryptage à sens unique; Une fois cryptée, la chaine originelle ne peut être retrouvée; Pour savoir si un pass est le bon, on compare celui tapé par l'utilisateur, on l'encrypte de la même façon, et on compare les hash. Si ils sont identiques, la chaine d'origine l'est également (c'est du très très simplifié et donc en partie faux, mais c'est pas la question Geneviève).
Jusque là tout va bien...
Mais là, c'est le drame: l'auteur de l'article propose de rajouter un salt au md5 et de rajouter ce salt au milieu de md5(salt + password) . Une chose est certaine, cet auteur n'a aucune notion de base en sécurité. Simplifions son raisonnement :

un simple MD5, c'est trop simple à crypter, donc on va faire une sauce très compliquée et ca sera plus difficile à trouver.


Dans la même famille de réflexe à la con, je voudrais le md5(md5(md5(password))) .

Comment démonter ce raisonnement ? Et bah c'est pas si évident finalement. Disons qu'à partir du moment où le pirate aura trouvé votre raisonnement, votre base de mot de passe ne va pas tenir longtemps. La génération de dictionnaires, d'autant plus sur l'algo md5, est devenue un passe-temps aussi courant que la pèche à la morue jouer à World of Warcraft.

La complexité, ou ce que j'appellerais aussi "l'obscurité" n'a jamais fait de bonne sécurité. Suffit de regarder le nombre de failles de sécu trouvées dans des logiciels closed-source ... Comme quoi, cela n'a jamais arrêté personne.


La meilleure sécurité et la plus simple, c'est d'imaginer que même avec votre raisonnement, un pirate ne pourra décrypter votre mot de passe. Un simple BLOWFISH, ou alors AES sont de très bons algos parfaitement connus et pourtant aucune faille n'a été trouvé (à condition d'avoir des clefs assez importantes, et que l'ordinateur quantique ne soit pas inventé dans les prochains mois).