MD5 + generateur aleatoire de mot de passe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : MD5 + generateur aleatoire de mot de passe

par dread » 20 mars 2007, 15:59

Merci pour tes précieux conseils zeus.
J'en prends bonnes notes.

par zeus » 20 mars 2007, 15:44

Comme je te l'ai dit précédemment, le hachage d'un mot de passe le rend inutilisable puisque indéchiffrable. Ce qui permet d'éviter le vol de mot de passe et c'est largement suffisant.

Pour éviter les piratages, prend plutôt gare au injections SQL, aux failles de sécurité des codes qui permettent d'accéder aux codes et aux bases de données.

par dread » 20 mars 2007, 15:10

En d'autres termes, pas besoin de mon grain de sel. C'est ce que tu veux dire zeus?
Que me conseille tu alors pour rendre le travail d'un pirate plus compliqué et dissuader les moins téméraires?
Juste le hachage du password initial?

par zeus » 20 mars 2007, 14:54

Je vais t'expliquer pourquoi je suis partisant du hachage :

Si un pirate accède à ta base de données, c'est qu'il s'est déjà introduit sur ton site. Il a donc accès au grain de sel, au fichiers, aux données ...
Je hache donc les password car les utilisateurs utilisent souvent un unique pass pour leur boite mail, leur compte bancaire, leur appli pro ... et que si un pirate tombe sur mes données, il ne puisse pas la réutiliser.

Sur ce postulat, ton grain de sel est inutile car dès l'accès à la base réalisé, il dispose du grain de sel ...


Sinon, je trouve que tu complique un système éprouvé pour rien, explications :
ton système de connexion récupère le grain de sel, le multiplie au pass et le hache.
Donc, une attaque par dictionnaire (envoi de beaucoup de mot de passe jusqu'à tomber sur le bon) n'aura rien à faire de ton grain de sel puisque passant par le système de connexion, sera multipliée au grain de sel ...

Conclusion :
  • le grain de sel permet de crypter une chaine d'une manière qui nous est propre et qui nous permet de décoder ...
  • Le hachage est indéchiffrable
=> Pas la peine d'utiliser un grain de sel dans un hachage qui ne sécurise pas plus que le hachage lui même ... c'est complexifier un problème simple.

Et, en terme de sécurité, l'idée qui dit que plus c'est compliqué, plus c'est sécurisé est pas forcément vraie ...

par hakazizi » 20 mars 2007, 12:14

Salut Zeus.

Mon grain de sel est généré aléatoirement, suivant les chiffres de 0 à 9, lors de l'enregistrement d'un client. Il est ensuite stocké dans ma bd en clair (donc non crypté) et reste le même pour un utilisateur donné.

Le mot de passe(celui que les utilisateurs devront rentrer avec leur login pour avoir accès à leur page) est aussi généré aléatoirement lors de l'enregistrement et est stocké en crypté selon le calcul que j'ai donné.

Ce mot de passe quant à lui se générait suivant les lettres de a à z et les chiffres de 0 à 9.

J'ai enlevé les lettres des possibilités pour le mot de passe initial et il semblerait qu'à présent, le calcul $mdp=md5($_POST['pwd']*$grain_sel); engendre des résultats différents dans ma base de données.

Seulement, j'ai encore une inquiétude:
Les chiffres seuls pour générer des mots de passe + la technique du grain de sel et du hachage md5 sont-ils suffisants pour se prémunir du piratage?
rassure toi si un pirate en veut a ton site ils reussira a le mettre par terre il n'y a aucun systeme sans faille car ce serait trop beau c'est comme une maison qui est proteger par des alarmes meme avec les meilleur technologie au monde il reste des faille tous ce que l'on peut faire c'est les retadez et esperez qu'il se lasseront pour une "proie" plus facile car il est evident que si on a le choix entre s'attaquer a une veritable forterresse et s'attaque a une simple demeure le choix est vite fait...

par dread » 20 mars 2007, 12:00

Salut Zeus.

Mon grain de sel est généré aléatoirement, suivant les chiffres de 0 à 9, lors de l'enregistrement d'un client. Il est ensuite stocké dans ma bd en clair (donc non crypté) et reste le même pour un utilisateur donné.

Le mot de passe(celui que les utilisateurs devront rentrer avec leur login pour avoir accès à leur page) est aussi généré aléatoirement lors de l'enregistrement et est stocké en crypté selon le calcul que j'ai donné.

Ce mot de passe quant à lui se générait suivant les lettres de a à z et les chiffres de 0 à 9.

J'ai enlevé les lettres des possibilités pour le mot de passe initial et il semblerait qu'à présent, le calcul $mdp=md5($_POST['pwd']*$grain_sel); engendre des résultats différents dans ma base de données.

Seulement, j'ai encore une inquiétude:
Les chiffres seuls pour générer des mots de passe + la technique du grain de sel et du hachage md5 sont-ils suffisants pour se prémunir du piratage?

par zeus » 19 mars 2007, 22:49

Alors, plusieurs soucis ;)

1/ Le grain de sel permet de crypter une chaine sous une forme qu'il est impossible de décrypter sans le grain de sel. D'où 2 soucis
1.1/ le grain de sel doit être le même au cryptage qu'au décryptage, il ne doit donc pas être aléatoire
1.2/ md5 est un protocole de hachage, ce qui signifie qu'on modifie la chaine d'une manière irréversible, sachant qu'à chaque fois qu'on hache une chaine, le résultat est le même. Son utilisation est la suivante : lors de la mémorisation du mot de passe, on le hache et on le sauvegarde. La valeur sauvegardée est indéchiffrable. Lors de la connexion, tu haches la valeur saisie par le visiteur et tu la compares à la valeur stockée en base.

2/ Pas la peine d'encadrer toutes les opérations par les parenthèses,
$mdp=md5(($_POST['pwd'])*($grain_sel));
peut avantageusement être remplacé par
$mdp=md5($_POST['pwd'] * $grain_sel);
Sinon, en ce qui concerne ton soucis, est-ce que tu nous donnes TOUT le code ? parce que md5() transforme toujours une chaine de la même manière, ton grain de sel étant censé être toujours différent, c'est pas normal ???

MD5 + generateur aleatoire de mot de passe

par dread » 19 mars 2007, 18:19

Bonjour à tous!!
Je reviens vers vous avec un problème concernant md5.
Souhaitant sécuriser les mots de passe sur ma base de donnée, je suis tomber sur une reflexion qui parlait de les crypter grâce à md5 et mieux, de rajouter un "grain de sel" afin de rendre un décryptage encore plus difficile.
Pour mon cas, lorsque j'enregistre un hypothétique annonceur, je lui génère un mot de passe aléatoirement via ce qui suit:

$cars="az0erty2ui3op4qs5df6gh7jk8lm9wxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN";
$wlong=strlen($cars);
$wpas="";
$taille=8;
srand((double)microtime()*1000000);
for($i=0;$i<$taille;$i++){
      $wpos=rand(0,$wlong-1);
      $wpas=$wpas.substr($cars,$wpos,1);
     
}
Ensuite, sur la feuille qui enregistre les données que j'ai pu rentrer sur l'annonceur, j'utilise ceci:
$chiffre="0123456789";
$wlong2=strlen($chiffre);
$grain_sel="";
$taille2=8;
srand((double)microtime()*1000000);
for($i=0;$i<$taille2;$i++){
	$wpos2=rand(0,$wlong2-1);
	$grain_sel=$grain_sel.substr($chiffre,$wpos2,1);
}

$mdp=md5(($_POST['pwd'])*($grain_sel));
Ainsi, et mon mot de passe et le grain de sel sont générer aléatoirement. Mon mot de passe crypté par md5 est alors la multiplication de ces deux éléments.

Mon souci est le suivant:
Quelque soit le mot de passe généré et le grain de sel (qui sont différents), le résultat $mdp est toujours le même. Chose dérangeante puisque chaque mot de passe est alors utilisable par tout le monde.

Quelqu'un aurait'il une idée de ce qui peut se passer?
Merci par avance.