md5 vs sha1

Eléphant du PHP | 148 Messages

17 nov. 2008, 22:38

bonjour,

je voudrais savoir lequel est le plus sécurisé en sachant qu'il sont personnaliser, c'est à dire que les bases de données md5 sont inefficaces.

merci

Eléphant du PHP | 353 Messages

17 nov. 2008, 22:45

perso j'utilise md5, mais c'est surtout par habitude.

Certains hurle à la faille etc...
A coté.. pour craquer du md5, il faut en général des bdd enorme (pour comparer les clés) et pas mal de temps.

Ce qui est sur c'est qu'il faut crypter les mots de passe, après, au niveau comparaison md5 / sha1, je ne vois pas tellement la différence (si je me trompe, n'hésitez pas à me corriger).

En faisant md5 vs Sha sur google, tu trouveras un peu ton bonheur :)

Eléphant du PHP | 451 Messages

17 nov. 2008, 22:57

md5 transforme en une chaine de 32 caractères et sha1 en une chaine de 40 caractères.

Donc la différence est que au niveau des caractères je pense.

Eléphant du PHP | 148 Messages

17 nov. 2008, 23:28

donc en gros je suis pas obligé de passer au sha1 je reste avec mon md5 personnalisé :D

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

18 nov. 2008, 01:21

Bonjour,

Le seul intérêt de md5 à l'heure actuelle c'est sa large compatibilité avec les scripts existants (par exemple si on veut avoir la même bdd pour son site et son forum).

En terme de sécurité c'est mort.

Les rainbow tables permettent de casser un md5 en moins d'une seconde et si on ne veut pas installer "une bdd énorme" sur son PC, il existe des sites sur internet qui permettent d'y accéder gratuitement ou contre un coût très faible (~10aine d'euros/an).
En clair le md5 au niveau sécurité c'est définitivement à proscrire.

Le sha1 reste encore à l'heure actuelle une solution fiable.

Concernant le "md5 personnalisé", tant qu'à faire pourquoi ne pas faire du sha1 (personnalisé ou pas) plutôt que de s'appuyer sur du md5 dont il est de notoriété publique qu'il est facilement cassable?

Pour ceux que ça intéresse, voici un PDF pas mal foutu pour ceux qui veulent en savoir + sur la cryptologie :
http://www.e-watching.net/IMG/pdf_cryptographie.pdf

md5 transforme en une chaine de 32 caractères et sha1 en une chaine de 40 caractères.
Donc la différence est que au niveau des caractères je pense.
C'est comme la différence entre un poème de Baudelaire et un article du journal 20 minutes... tout est dans le choix des mots 8-)
Quand tout le reste a échoué, lisez le mode d'emploi...

ViPHP
ViPHP | 4674 Messages

18 nov. 2008, 02:48

Hey :),

J'aimerais juste préciser que l'on n'a pas réussi à casser le cryptage MD5. C'est comme dire qu'on a réussi à casser RSA, c'est débile … C'est juste avec du brute force que l'on arrive à trouver la valeur d'origine, par tests successifs. Pareil pour RSA, on teste toutes les combinaisons de n, p, q (donc d) possibles, jusqu'à tomber sur la bonne clé privée (car la publique est connue). Impossible de faire des statistiques ou de regarder les fréquences ou ce genre de choses, c'est du brute force et que ça.
Ce genre d'algorithme n'est pas cassable pour une raison simple : une raison Mathématiques. Ils sont basés sur des fonctions à sens unique, comme le modulus par exemple. On ne peut pas revenir en arrière, i.e. trouver les valeurs d'origines, sauf par tests successifs.
Et j'en viens à ce qu'à dit @rthur : « Les rainbow tables permettent de casser un md5 en moins d'une seconde » … euh, c'est un peu court quand même. Pour comparer des millions de valeurs, c'est un peu léger non ? Enfin, si c'est en local, peut-être, mais avec 32 octets, on a le temps de voir les tests s'enchaîner non ?

Enfin, quitte à choisir entre 32 et 40 octets, autant prendre le plus grand, ce sera le plus dur à casser, logique. Je ne connais pas la façon de procéder de SHA1, mais s'il utilise des fonctions à sens unique et qu'il produit des hashes plus grand, il est à préférer, naturellement.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 nov. 2008, 09:11

Pour ajouter une couche de sécurité aux valeurs haschées, il est de bonne habitude que d'ajouter un sel avant de le hascher
<?php
//Quelques part dans un fichier de configuration
$sel = "owned";
<?php
$pass = $_POST['pass'];
$pass4bdd = md5( md5($pass) . $sel );
Et là, tu compliques considérablement la recherche par dictionnaire.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 148 Messages

18 nov. 2008, 09:45

Pour ajouter une couche de sécurité aux valeurs haschées, il est de bonne habitude que d'ajouter un sel avant de le hascher
<?php
//Quelques part dans un fichier de configuration
$sel = "owned";
<?php
$pass = $_POST['pass'];
$pass4bdd = md5( md5($pass) . $sel );
Et là, tu compliques considérablement la recherche par dictionnaire.
Je fais exactement là même chose mais un peu plus compliqué :D merci pour vos réponses

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 nov. 2008, 10:26

Modération :
Mathieu68, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
AB
ViPHP | 5818 Messages

18 nov. 2008, 10:53

sha1 a été conçu pour améliorer les performances du md5.

Donc à mon avis (excepté pour des raisons de compatibilité avec un script utilisant déjà un algo de hashage), pour tout nouveau développement, la question du choix ne se pose pas.

Et puis ont peux tout aussi bien faire sa propre cuisine avec sha1 qu'avec md5...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

18 nov. 2008, 13:52

Et j'en viens à ce qu'à dit @rthur : « Les rainbow tables permettent de casser un md5 en moins d'une seconde » … euh, c'est un peu court quand même. Pour comparer des millions de valeurs, c'est un peu léger non ? Enfin, si c'est en local, peut-être, mais avec 32 octets, on a le temps de voir les tests s'enchaîner non ?
Tout dépend de la puissance de ton serveur et de la complexité de ton mot de passe.

Comme cela fonctionne par dictionnaire et que + de 90% des utilisateurs utilisent un mot de passe "commun" c'est à dire un prénom, un nom commun, un nom d'animal de compagnie, de héros de dessin animé, une date de naissance ou un code à quatre chiffre ou encore une plaque d'immatriculation, c'est pas très compliqué de trouver en moins d'une seconde 90% des mots de passe MD5.
Après il y a les quelques utilisateurs qui mettent des mots de passe complexes alternant lettres, chiffres et caractère spéciaux où là c'est un peu plus long... mais comme des services de calculs distribués existent déjà pour brute-forcer l'ensemble des combinaisons possibles...
http://www.freerainbowtables.com

Donc pour conclure avec ou sans sel, n'utilisez pas md5 si vous avez la possibilité d'utiliser SHA1.
Quand tout le reste a échoué, lisez le mode d'emploi...

ViPHP
ViPHP | 4674 Messages

18 nov. 2008, 19:28

Donc pour conclure avec ou sans sel, n'utilisez pas md5 si vous avez la possibilité d'utiliser SHA1.
Qu'on soit d'accord : pour le cryptage de mot de passe. Car s'il est question d'avoir un identifiant unique pour une session, une image uploadé ou ce genre de chose, md5 serait presque à préférer vu que sa taille est plus petite :). N'oublions pas le contexte.

Sans moquerie :
Et puis ont peux
pourtant il n'est pas tard. Que nous vaut ces belles fautes :roll:.

:)
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

18 nov. 2008, 19:37

Donc pour conclure avec ou sans sel, n'utilisez pas md5 si vous avez la possibilité d'utiliser SHA1.
Qu'on soit d'accord : pour le cryptage de mot de passe. Car s'il est question d'avoir un identifiant unique pour une session, une image uploadé ou ce genre de chose, md5 serait presque à préférer vu que sa taille est plus petite :). N'oublions pas le contexte.
Tout à fait n'oublions pas le contexte, en l'occurrence depuis le début du sujet on parle bien de sécurité pour des mots de passe.
Quand tout le reste a échoué, lisez le mode d'emploi...

ViPHP
AB
ViPHP | 5818 Messages

18 nov. 2008, 20:37

Qu'on soit d'accord : pour le cryptage de mot de passe. Car s'il est question d'avoir un identifiant unique pour une session, une image uploadé ou ce genre de chose, md5 serait presque à préférer vu que sa taille est plus petite :). N'oublions pas le contexte.

Sans moquerie :
Et puis ont peux
pourtant il n'est pas tard. Que nous vaut ces belles fautes :roll:.

:)
Oui j'avais vu mais pas j'ai pas jugé utile d'éditer mon message car cela n'aurait rien apporté pour la compréhension du sujet abordé (et puis on en voit tellement des fautes...).

La revanche :
Par contre si j'avais employé le terme de cryptage en parlant de md5, je me serais dépêché de corriger mon message car pour le coup cela peut induire en erreur le néophyte qui pourra chercher longtemps la fonction inverse de décryptage.
C'est pour cette raison qu'il faut bien distinguer hachage et cryptage :P N'oublions pas le contexte :lol:

ViPHP
ViPHP | 4674 Messages

18 nov. 2008, 20:48

Oui j'avais vu mais pas j'ai pas jugé utile d'éditer mon message car cela n'aurait rien apporté pour la compréhension du sujet abordé (et puis on en voit tellement des fautes...).
Je ne te fais pas de reproche hein, ça m'étonnait juste que tu utilises des drogues :lol:.

Et tout à fait d'accord avec le reste de ton message :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).