Les temps changent. Il est fini l'époque où pour protéger les informations il suffisait de les crypter avec MD5 afin de les stocker en base de données.
Petit retour sur le sujet pour ceux qui n'étaient pas au Forum PHP et qui n'aurait pas pris connaissance des slides (et bientôt les résumés audio) de Louis et Nicolas.
Il existe des collections de hash couvrant plusieurs langues et correspondants à des mots les plus courts. Pour compliquer la tâche des personnes mal intentionnées il peut être utiliser d'utiliser ce que l'on appelle une graine.
L'utilisation en est simple, comme nous le rappelle cet article sur Nexen :
Pour corriger cela, il faut personnaliser le MD5, en ajoutant un grain
de sel : au lieu de stocker md5( 'nexen' ), on peut ajouter une autre
chaîne de caractère, et stocker md5( 'prefixe'.'nexen'.'suffixe' ); Comme
vous choisissez le préfixe et le suffixe, vous rallongez le mot utilisé
pour la signature (mais pas la signature), et vous pourrez ainsi
échapper aux bases de données de MD5.
Alors, c'est une arme supplémentaire à ajouter à votre batterie de solutions. Elle ne vous garantira pas d'être à coup sûr protégé, car comme vous le savez tous, la sécurité est continuellement à remettre en question.
via.













Pas mal, l’idée ! Et assez simple à mettre en oeuvre
Il me semble que le CMS Spip utilise déjà un principe similaire, avec un « alea » pour chaque membre qui s’ajoute au pass. Il est même différent pour chaque auteur et change régulièrement
Attention, md5 ne crypte pas, il hashe. C’est pas tout à fait la même chose, hein.
Sinon, c’est comme d’habitude : une solution conne qui marche super bien. C’est pas comme si vous aviez l’habitude, avouez-le
Meme commentaire que Glooze :
Le md5 n’a jamais servi a crypter mais à controler l’intégrité d’une donnée
Il faut surtout éviter de réinventer la roue.
Vous ne devriez *pas* utiliser md5 pour hacher les mots de passe. Il y a une super fonction nommée crypt(), qui fonctionne presque partout.
Elle comporte une graine aléatoire de base. Elle sait générer la graine aléatoire probablement mieux que vous pour éviter qu’elle soit prévisible ou identique chez tout le monde. Elle sait utiliser md5 en interne mais encore mieux elle a un système de fonctions interchangeables pour rester compatible avec les anciens systèmes DES tout en proposant un hachage sha1 chez ceux qui peuvent.
Tout est géré en interne, côté système. Le jour où un algo devient trop facilement cassable, la fonction de hachage par défaut sera changée sur le système, sans rien changer dans votre code ou dans votre configuration.
Mieux encore, votre base de mot de passe deviendra d’un coup compatible avec les bases de mots de passe unix (celles des .htpasswd, celle des mots de passe système, etc.).
Merci Eric pour ces éclaircissements
Sinon, le « SHA256″ est implémenté en natif depuis PHP5.1.2 par l’intermédiaire de la méthode « hash ». Cet algo est je crois le plus sécurisé du moment….. à en croire les outils de signature électronique que j’ai eu l’occasion de côtoyer dernièrement.
Dans le code PHP, ça donne
hash(‘sha256′, ‘Une chaine de hashage qu elle est bien’);
Salut Thanh
Pour ma part, j’ai retenu la leçon d’Antoine Caillau sur le md5.
http://antoine.media-box.net/index.php?post/quand-un-hash-md5-ne-prend-que-quelques-secondes
http://antoine.media-box.net/index.php?post/le-hash-md5-n-est-pas-sur
et il existe aussi un, SHA256 pour PHP4 (faire une recherche Google pour avoir des liens actualisés sur ‘SHA256 static class for PHP4′)
Fred