|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() |
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? |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Gérant - société de développement web Inscription : avril 2007 Messages : 290 ![]() |
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. |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 2 288 ![]() |
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. |
|
|
00
|
|
|
#4 |
![]() ![]() Directeur technique Inscription : septembre 2006 Messages : 5 959 ![]() |
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 ! ![]()
|
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 2 288 ![]() |
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"); |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() |
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, |
|
|
00
|
|
|
#7 | |
|
Membre actif
![]() |
Citation:
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 |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com