web-dev-qa-db-fra.com

Pourquoi les gens utilisent-ils / recommandent-ils encore le MD5 s'il a été fissuré depuis 1996?

C'est toujours un moyen couramment recommandé de hacher les mots de passe, même si son insécurité avait été prouvée en 1996:

Par conséquent, nous suggérons qu'à l'avenir MD5 ne devrait plus être implémenté dans des applications comme les schémas de signature, où une fonction de hachage résistante aux collisions est requise. Selon nos connaissances actuelles, les meilleures recommandations pour des alternatives au MD5 sont SHA-1 et RIPEMD-160.

(Le statut de MD5 après une attaque récente, CryptoBytes, RSA Laboratories, VOLUME 2, NUMBER 2 - SUMMER 1996)

Même après cette étude et tous les articles à venir sur ses défauts, il a été recommandé depuis comme fonction de hachage de mot de passe dans les applications Web.

Il est même utilisé dans certaines signatures numériques des autorités de certification (selon http://rmhrisk.wpengine.com/?p=6 )

Quelle est la raison pour laquelle cet algorithme de résumé de message n'est pas encore interdit au sens de la sécurité?


Liens, m'a pris quelques minutes pour les trouver

57
Marek Sebera

Pour compléter la bonne réponse de @DW: pour le hachage de mot de passe, MD5 n'est pas plus cassé que toute autre fonction de hachage (mais ne l'utilisez pas néanmoins) .


L'image complète: MD5 est une fonction de hachage cryptographique qui, en tant que telle, devrait remplir trois caractéristiques:

  • Résistance aux préimages: étant donné x, il est impossible de trouver m tel que MD5 (m) = x.
  • Résistance aux secondes pré-images: donnée m, il est impossible de trouver m ' distinct de m et tel que MD5 (m) = MD5 (m ').
  • Résistance aux collisions: il est impossible de trouver m et m ', distincts les uns des autres, et tels que MD5 (m) = MD5 (m ').

MD5 est complètement cassé en ce qui concerne collisions, mais pas pour les pré-images ou les secondes pré-images. De plus, l'attaque de 1996 (par Dobbertin) n'a pas du tout cassé MD5; c'était une "collision sur la fonction de compression", c'est-à-dire une attaque sur l'un des éléments internes de MD5, mais pas la fonction complète. Les cryptographes l'ont pris comme un drapeau d'avertissement, et ils avaient raison parce que l'attaque par collision réelle qui a été publiée en 2004 (par Wang) a été construite à partir des découvertes de Dobbertin. Mais MD5 n'a été cassé qu'en 2004, pas en 1996, et c'était une attaque par collision.

Les collisions ne sont pas pertinentes pour la sécurité du hachage de mot de passe. La plupart des utilisations d'une fonction de hachage pour le hachage de mot de passe dépendent de la résistance à la pré-image ou d'autres propriétés (par exemple, la façon dont la fonction de hachage fonctionne lorsqu'elle est utilisée dans HMAC , quelque chose qui ne peut être réduite à aucune des propriétés ci-dessus). Le MD5 a en fait été "affaibli" en ce qui concerne les préimages, mais uniquement de manière théorique, car le coût de l'attaque est encore des milliards de milliards de fois trop cher pour être vraiment essayé (donc le MD5 n'est pas "vraiment" cassé en ce qui concerne les préimages, pas de manière pratique).

Mais n'utilisez quand même pas MD5 . Pas à cause d'une faiblesse cryptographique, mais parce que MD5 est non salé et très rapide. C'est exactement ce que vous ne voulez pas dans une fonction de hachage de mot de passe. Les gens qui "recommandent MD5" pour le hachage de mot de passe ne savent tout simplement pas mieux, et ils témoignent d'une vérité que vous devez toujours garder à l'esprit: tout ce que vous trouvez sur Internet n'est pas correct et digne de confiance. De meilleures solutions pour le hachage de mot de passe sont connues et sont utilisées et déployées depuis plus d'une décennie maintenant. Voir cette réponse pour les détails et les pointeurs.

76
Thomas Pornin

Que voulez-vous dire par "interdit"? Qui "interdirait" l'utilisation de MD5? Ce n'est pas comme si nous avions des Crypto Cops internationaux qui arrêtaient des gens qui utilisaient ROT13 et d'autres systèmes de crypto non sécurisés.

Ou, pour être un peu plus sérieux: les cryptographes recommandent déjà que les nouveaux systèmes devraient éviter MD5, et ils recommandent que les systèmes existants migrent loin de MD5. Je ne sais pas ce que vous pensez que les cryptographes peuvent faire de plus.

Vous prétendez que MD5 est une "méthode de hachage des mots de passe couramment recommandée", mais vous ne fournissez aucune preuve de cette affirmation. Je ne pense pas que l'affirmation soit correcte. Ce n'est pas mon expérience.

L'essentiel est que la communauté cryptographique est parle déjà assez clairement, d'une seule voix, sur ce sujet, et la plupart des gens sont migrent déjà loin de MD5. Les cas où le MD5 est toujours utilisé sont l'exception et non la norme.

Edit (6/17): Je vois que vous avez ajouté quelques liens qui mentionnent l'utilisation de MD5 pour le hachage. Tout ce qu'ils prouvent, c'est que certaines personnes dont je n'ai jamais entendu parler sont confuses. Et alors? Vous devriez probablement être sceptique en prenant de toute façon des conseils de personnes qui n'ont pas établi une réputation positive dans la communauté de la sécurité/cryptographie. Et je ne comprends pas comment vous pouvez critiquer la communauté de la sécurité/cryptographie sur le fait que certaines personnes qui ne font pas partie de la communauté sont confuses. Que devons-nous faire exactement? Nous faisons déjà tout notre possible pour élargir nos connaissances sur la bonne façon de le faire. Je pense que vous blâmez vraiment les mauvaises personnes.

Quoi qu'il en soit, pour répondre à votre question sur la raison pour laquelle certaines personnes recommandent toujours MD5: eh bien, c'est probablement parce que ces gens ne savent pas mieux. Je ne sais pas ce que l'on peut dire de plus sur le sujet, ni ce que vous attendez de plus.

28
D.W.

Je pense que ce que vous voyez est la longue queue du Web. Je peux trouver des articles de 2006 recommandant MD5 pour le hachage de mot de passe (par exemple http://www.pixel2life.com/publish/tutorials/118/understanding_md5_password_encryption/ ) - toujours 10 ans après votre date de référence.

Cependant, nous parlons du temps qu'il faut pour obtenir quelque chose de la recherche de pointe dans les revues de cryptographie à comité de lecture afin de recommander la pratique parmi les praticiens de tous les jours qui ne lisent pas les revues de cryptographie et ne sont même pas des experts dans ce domaine. Ce qui s'est probablement passé, c'est qu'en 1990, tout le monde "savait" que MD5 était bon pour les mots de passe, ils ont dit à tout le monde que MD5 était bon pour les mots de passe. À partir de la fin des années 1990, certaines personnes disaient que le MD5 était mauvais pour les mots de passe, mais la plupart des gens "savaient" que c'était bon pour les mots de passe et c'était toujours ce qu'ils conseillaient aux autres.

De nos jours, il y a un assez grand nombre de personnes qui "savent" que bcrypt est bon pour les mots de passe que vous commencez à voir ces recommandations, mais le les articles disant que MD5 est bon pour les mots de passe n'ont pas encore disparu des indices des moteurs de recherche. Avec le temps, ils le feront.

Ce qui signifie que dans une décennie, vous reviendrez ici et poserez la question "pourquoi les gens recommandent-ils toujours d'utiliser un bcrypt facteur de travail de 10 lorsque cela journal dit que vous devez utiliser au moins 150? "...

Poul Henning-Kamp a initialement déplacé la fonction UNIX crypt () de DES vers MD5. Il explique ici que le fait que les gens utilisent MD5 démontre qu'il n'a pas réussi décrire ce qu'il essayait de faire: rendre le hachage de mot de passe plus complexe, pas installer MD5 comme un shibboleth.

8
user185

Vous avez plusieurs utilisations de MD5

Vérification d'intégrité

Vérifier que le fichier que vous avez téléchargé ou reçu est bien l'original en vérifiant le hachage du fichier. Il a été démontré que vous pouvez facilement créer un fichier ayant la même somme de contrôle.

La collision dans MD5 est facile à produire . MD5 ne doit pas être utilisé à cet effet.

Les gens proposent toujours la somme de contrôle MD5 lors du téléchargement d'iso et d'autres choses, mais donnent souvent SHA somme de contrôle. Cela peut être expliqué parce que MD5 est beaucoup plus rapide et généralement implémenté.

Vérification du mot de passe

Au lieu de stocker un mot de passe en texte clair, vous stockez le hachage du mot de passe. Certains sites Web utilisent encore MD5 pour ce faire. Le problème ici n'est pas de trouver une collision mais de vérifier une table Rainbow ou une énorme base de données de somme de contrôle MD5.

Comme vous pouvez produire très rapidement des millions de sommes de contrôle MD5, vous pouvez forcer brutalement un mot de passe sur votre propre PC. Vous ne devez pas utiliser MD5 pour hacher votre mot de passe pour cette raison mais surtout, vous devez ajouter n sel .

Si vous avez un mot de passe très complexe (long avec des caractères spéciaux) et un sel complexe unique pour chaque mot de passe stocké, ce n'est pas vraiment un problème pour vous d'utiliser MD5. Je ne dis pas que vous devriez (vous ne devriez pas), mais ce n'est pas un énorme problème de sécurité d'utiliser MD5 si le mot de passe sera difficile à utiliser et que l'utilisation de Rainbow table est empêchée par le sel. Bien sûr, sur votre site Web, il n'est pas facile (et apprécié) de forcer les utilisateurs à avoir un mot de passe complexe, donc si un utilisateur enregistre 12345, quelle que soit la fonction de hachage que vous utilisez, il sera cassé.

La raison pour laquelle les gens l'utilisent encore, c'est peut-être à cause de cela, c'est toujours la fonction de hachage la plus connue et elle était encore acceptable il y a quelques années. Les personnes n'ayant pas beaucoup de connaissances en cryptographie peuvent l'utiliser.

6
Martin Trigaux

Je ne pense pas que ce soit recommandé. Wikipedia déclare que MD5 est considéré comme cassé et que la famille SHA-2 ou SHA est recommandée pour le remplacer. Jetez également un œil à Devise , un Ruby gem qui gère l'autorisation. Il a un type de crypteur différent.

3
Travis Pessetto

Même après cette étude, et tous les articles à venir sur ses défauts, il a été recommandé depuis hachage de mot de passe dans les applications Web.

Oui et?

Le hachage de mot de passe n'est qu'une perte de temps.

MD5 ^ n (MD5 itéré n fois) est tout aussi bon que SHA1 ^ m (pour m tel que time(MD5^n) >= time(SHA1^m)) pour - perte de temps.

Personne n'a suggéré de méthode pour calculer MD5 ^ n d'une manière plus rapide que la MD5 o MD5^(n-1) évidente. Il n'y a même pas le début d'une idée pour le faire.

Rien n'est cassé ici.

Pour perdre du temps, vous devriez considérer scrypt.

2
curiousguy

Il s'agit d'une information officielle sur MD5 - MD5 vulnérable aux attaques par collision Pour plus de sécurité, SHA-2 doit être pris en compte. Personne n'empêche les utilisateurs d'utiliser MD5, mais pas pour les données que vous souhaitez garder privées.

Performances des algorithmes de hachage

Comme le montre le diagramme "Performances des algorithmes de hachage", SHA256 est bien plus rapide que MD5.

Ceci est une bonne ressource à considérer, l'auteur examine les mots de passe fuite de LinkedIn - file d'attente (.) Acm (.) Org/detail.cfm? Id = 2254400 & ref = fullrss, montre également des moyens de sécuriser les mots de passe.

1
user1652382

Le problème du hachage de mot de passe et de l'utilisation des tables Rainbow est lié à la sécurité d'un serveur Web exploité par une faiblesse sous-jacente.

Tout d'abord, tous ces sites Web prétendent offrir un test simple pour voir si votre mot de passe est sécurisé ... Ummm laisse bien voir ces sites comme du phishing et toutes les personnes qui accèdent à ces sites font de l'alimentation d'une table Rainbow. C'est une partie du problème.

Deuxièmement, les personnes qui utilisent des services d'hébergement Web dont le but est de récolter de l'argent et d'oublier la sécurité du serveur Web, ces hôtes doivent être placés contre le mur et abattus à mon humble avis, une partie de la sécurité de la connexion des utilisateurs provient de la sécurité de un serveur Web et les technologies sous-jacentes étant à jour pour empêcher l'utilisation d'exploits connus.

Troisièmement, une fois que les gens ont atteint leur tête épaisse, même si MD5 n'est pas résistant aux collisions ou que je préfère aussi robuste qu'il pourrait l'être, il est toujours difficile pour un compte d'utilisateurs d'être piraté à moins qu'un hôte Web exécute un système exploitable , votre codage web n'est pas robuste et vous vous exposez en utilisant un site prétendant vérifier la sécurité de votre mot de passe.

Pour la grande partie MD5 +, une valeur Salt est une sécurité adéquate pour une connexion utilisateur sur un forum Web tant que le système et le logiciel mentionnés précédemment ne sont pas exploitables. Une fois que vous avez un système qui a été exploité pour une faiblesse, l'exécution d'une requête pour les valeurs de hachage connues qui n'utilisent pas de système de salage exposera une quatrième faiblesse ... l'utilisateur final.

Quatrièmement, l'utilisateur final, votre sécurité Web n'est finalement aussi solide que le lien le plus faible et pour beaucoup, ils verront l'utilisateur final comme tel et les administrateurs doivent se rappeler qu'ils sont les utilisateurs finaux d'un système et sont tout aussi vulnérables aux compromettre la sécurité d'un système en utilisant une programmation bâclée ou un logiciel qui est facilement cassé, une sécurité de mot de passe médiocre et en omettant également de modifier cette connexion ADMIN ou d'utiliser un logiciel qui insiste encore aujourd'hui pour avoir le nom de connexion administrateur en tant qu'administrateur et en utilisant également des comptes de super-utilisateur.

Il va donc sans dire, donc je le dirai quand même, MD5 n'est pas fissuré, il est rétro-conçu par des utilisateurs faibles, des logiciels faibles et l'incapacité des gens à comprendre une technologie. Si MD5 est fissuré, il en va de même pour SHA et AES et ainsi de suite ...

0
Mark Giblin