- Fil d'ariane : Accueil du devBlog
- / Détail du billet (Lien direct)
Histoire de graine : quand le MD5 ne suffit plus
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.
Commentaires
[#2] Commentaire rédigé le Lundi 26 Novembre 2007 à 12:49 par Damien
[#3] Commentaire rédigé le Lundi 26 Novembre 2007 à 14:11 par glooze
Sinon, c'est comme d'habitude : une solution conne qui marche super bien. C'est pas comme si vous aviez l'habitude, avouez-le
[#4] Commentaire rédigé le Lundi 26 Novembre 2007 à 14:57 par Loïc
Le md5 n'a jamais servi a crypter mais à controler l'intégrité d'une donnée
[#5] Commentaire rédigé le Lundi 26 Novembre 2007 à 16:13 par Eric
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.).
[#7] Commentaire rédigé le Mardi 27 Novembre 2007 à 17:11 par Gérald
Dans le code PHP, ça donne
hash('sha256', 'Une chaine de hashage qu elle est bien');
[#8] Commentaire rédigé le Mardi 27 Novembre 2007 à 19:16 par Fred
Pour ma part, j'ai retenu la leçon d'Antoine Caillau sur le md5.
http://antoine.media-box.net/index.php?post/quand-...
http://antoine.media-box.net/index.php?post/le-has...
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
L'ajout de commentaire a été désactivé pour ce billet.
Trackbacks
Pisteurs vers ce billet (trackbacks entrant)
Il n'y a pas encore de pisteurs pour ce billet.
Pistés par ce billet (trackbacks sortant)
Il n'y a pas encore de pisteurs effectué par ce billet.



[#1] Commentaire rédigé le Lundi 26 Novembre 2007 à 12:26 par giz404