IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Sécurité] Dictionnaire MD5 ou SHA1


Sujet :

Langage PHP

  1. #1
    Membre actif

    Inscrit en
    mars 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : mars 2003
    Messages : 241
    Points : 235
    Points
    235
    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?

  2. #2
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    avril 2007
    Messages
    417
    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 : 417
    Points : 617
    Points
    617
    Par défaut
    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.

  3. #3
    Membre expert
    Inscrit en
    janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    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.

  4. #4
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    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

    Mon profil Viadeo

  5. #5
    Membre expert
    Inscrit en
    janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    octobre 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : octobre 2004
    Messages : 45
    Points : 49
    Points
    49
    Par défaut
    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,

  7. #7
    Membre actif

    Inscrit en
    mars 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : mars 2003
    Messages : 241
    Points : 235
    Points
    235
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Algorithme hachage type Md5 ou sha1
    Par shaun_the_sheep dans le forum Sécurité
    Réponses: 5
    Dernier message: 22/09/2006, 18h47
  2. [Sécurité] Cryptage MD5 et sécurité ?
    Par renaudjuif dans le forum Langage
    Réponses: 11
    Dernier message: 01/05/2006, 02h52
  3. [Sécurité] Authentification MD5
    Par dinastar dans le forum Langage
    Réponses: 4
    Dernier message: 16/03/2006, 17h48
  4. Md5/Sha1 : Vérification de l'intégrité d'un fichier
    Par ShinMei dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 26/05/2005, 11h43
  5. SHA1 ou MD5 en ASP ?
    Par bigsister dans le forum ASP
    Réponses: 3
    Dernier message: 01/02/2005, 18h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo