Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/09/2007, 11h54   #1
Membre actif
 
Inscription : mars 2003
Messages : 241
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 241
Points : 187
Points : 187
Envoyer un message via MSN à Spack
Par défaut [Sécurité] Dictionnaire MD5 ou SHA1

Imaginons : J'ai une base de données avec l'identifiant et le mot de passe de mes utilisateurs... Etant soucieux de la sécurité, je crypte le mot de passe avec un algorithme de cryptage tel que MD5 ou SHA1...

Cela dit, un gars mal intentionné parvient quand même à deviner les mot de passe des utilisateurs... Comment fais t-il? Il utilise simplement le fait que pour une même chaine de caractère donnée, le hachage résultant sera le même. On peut donc alors établir une sorte de dictionnaire : chaine -> hash...

Afin de complexifier la tâche, on pourrait ajouter au mot de passe une variable aléatoire afin de modifier le hachage. Mais, pour que moi je puisse identifier mon utilisateur, je dois stocker cette variable quelque part afin de retrouver le hachage et, quoi de plus simple de la stocker dans la base de donnée?

Mais si mon gars mal intentionné à accès à ma BD il pourra très vite trouver une concordance...

Donc comment vraiment crypter un mot de passe?
Spack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2007, 12h02   #2
Membre éclairé
 
Avatar de Inazo
 
Gérant - société de développement web
Inscription : avril 2007
Messages : 290
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Gérant - société de développement web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2007
Messages : 290
Points : 360
Points : 360
Bonjour,

Bon on va faire simple, si tu pars avec un scénario du genre il accède à ta base de données tu peux mettre autant de grain de sel que tu veux avec n'importe quel hashage il le trouvera.

Bon il faut utilisé un grain de sel par utilisateurs, ensuite si tu as vraiment peur utilise en sha256 voir même un sha512, mais bon c'est vraiment de la parano là.

En tous cas le md5 et sha1 sont compromis donc tu dois au moins utiliser un sha256. Après je vois venir certain ; "C'est quoi ton site la banque de france...[] un md5 suffit voyons !!!".

Bon moi je dis peut importe l'importance de votre site une bonne protection de vos mot de passe et un respect de vos utilisateurs. Donc utilise en sha256 au minimum.

Cordialement Inazo.
Inazo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2007, 12h03   #3
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Deja, si tu veux être plus tranquille, tu devrais utiliser SHA-256 plutot que md5 ou SHA-1 parce que ces derniers ont plusieurs attaques qui prouvent qu'ils sont moins sécurisés.

Ensuite, la technique que tu dis qui est de trouver un mot de passe différent mais qui a le meme hachage est assez aléatoire. En gros tu as une chance sur 2 puissance 39 de trouver deux chaines avec le même hash d'après wikipedia (en recherchant aléatoirement hein).

Les articles sur md5 et sha-1 de wikipedia sont assez bien expliqués tu peux aller les regarder pour plus d'infos.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2007, 12h06   #4
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
Si il parvient a deviner le mot de passe des utilisateurs , aucun cryptage ne pourra etre efficace ....

Si il etablie une corelation entre UN mot de passe et son hash , il s arretera la a moins qu il est cassé l algorythme md5...alors la chapeau l artiste !
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2007, 12h12   #5
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
md5 n'est pas "cassé" parce qu'on n'a pas de moyen de retrouver le mot de passe à partir du hash, c'est une opération non réversible.
Par contre il est prouvé non sur au sens cryptographique cf l'article de wikipedia
Il y est d'ailleurs indique que les mots de passe triviaux sont parfois récupérés en moins d'une seconde.

Par contre ils disent aussi que tu peux utiliser un sel (ou grain) pour ajouter quelquechose au mot de passe qui le rend difficile à retrouver du coup.
Exemple de grain : tu inscris l'utilisateur dans la base et tu ajoutes a la fin de son mot de passe la date et l'heure du moment de l'inscription (que tu stockes aussi dans la base). Du coup, quand tu veux vérifier un mot de passe tu fais
Code :
md5($mot_de_passe . "date du jour recupere dans la base");
et tu vérifies que c'est bien le mdp stocké dans la base.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2007, 13h08   #6
Membre du Club
 
Inscription : octobre 2004
Messages : 42
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2004
Messages : 42
Points : 40
Points : 40
Envoyer un message via MSN à MicroAlexx
Bonjour,

concidéront que le pirate recupère le hash, et cherche la correspondance via un super uber logiciel underground.. fin bref.. il trouve la chaine qui donne ce hash.

Bon apres il va venir s'auth avec le login et cette chaine.

Alors soit comme tu as dit tu utilise un token et tu crypt comme ca :
md5(pass . token) (md5 ou autre, un hash quoi)
ou md5(pass . login . id) .. etc ...

perso le token je le stockais dans un fichier de config .php (un token personnalisé par site)
si la personne a un acces ftp, forcement elle l'aura, mais bon avec un acces ftp, pas vraiment besoin de cracker le pass...

Sinon au niveau de ton code d'enregistrement du pass et de la vérif, tu peux utiliser un hash de hash du style :
md5(md5(pass))
ou plus marrant : sha(md5(pass))
ou n'importe qu'elle autre combinaison qui te plaira.

Le pirate avec son hash donc :
deja il doit trouver la correspondance, et ceux pour toutes les fonctions de hash, vu qu'il ne sait pas avec quoi tu as généré ton hash (enfin la taille du hash lui donnera une première indication, md5=32, sha1=40...)
ensuite il se retrouve avec un nouveau hash, et il doit retrouver une correspondance pour le bon algo

Le plus drole c'est que étant des fonctions de hash totalements différentes, elles produisent parfois le meme hash pour des chaines sans rapports

Depuis que je sais qu'il existe une base de convertion des chaines en md5 et inversement sur le net (actuellement de 1 a 8 caractère alpha numéric) je passe systématiquement par un double hash.

Mais bon, si le pirate a acces à la base et/ou au ftp. Ton pb de sécurité ne se situe pas au niveau des mots de passes utilisateurs, mais plutot coté hébergement

Cordialement,
MicroAlexx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2007, 17h32   #7
Membre actif
 
Inscription : mars 2003
Messages : 241
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 241
Points : 187
Points : 187
Envoyer un message via MSN à Spack
Citation:
Envoyé par MicroAlexx Voir le message
Sinon au niveau de ton code d'enregistrement du pass et de la vérif, tu peux utiliser un hash de hash du style :
md5(md5(pass))
ou plus marrant : sha(md5(pass))
ou n'importe qu'elle autre combinaison qui te plaira.
Oui le double hash j'y avais déjà pensé mais il me semble avoir lu sur le forum que passer par plusieurs fonction de hachage devient inutile au bout d'un moment...

Cela dit vous avez confirmé ce que je pensais un mdp avec des tokens et pourquoi pas un double hash bien placé, je pense que c'est suffisant
Spack est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h46.


 
 
 
 
Partenaires

Hébergement Web