Page 1 sur 2

md5 vs sha1

Posté : 17 nov. 2008, 22:38
par Mathieu68
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

Posté : 17 nov. 2008, 22:45
par yaug
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 :)

Posté : 17 nov. 2008, 22:57
par djtec
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.

Posté : 17 nov. 2008, 23:28
par Mathieu68
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]

Posté : 18 nov. 2008, 01:21
par @rthur
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-)

Posté : 18 nov. 2008, 02:48
par Hywan
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.

Posté : 18 nov. 2008, 09:11
par zeus
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.

Posté : 18 nov. 2008, 09:45
par Mathieu68
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

Posté : 18 nov. 2008, 10:26
par zeus
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.

Posté : 18 nov. 2008, 10:53
par AB
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...

Posté : 18 nov. 2008, 13:52
par @rthur
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.

Posté : 18 nov. 2008, 19:28
par Hywan
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:.

:)

Posté : 18 nov. 2008, 19:37
par @rthur
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.

Posté : 18 nov. 2008, 20:37
par AB
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:

Posté : 18 nov. 2008, 20:48
par Hywan
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 :).