Est-il possible de déchiffrer les hash MD5?

Quelqu'un m'a dit qu'il a vu des systèmes logiciels qui:

  1. récupérez les mots de passe codés MD5 d'autres systèmes;
  2. décrypter les mots de passe cryptés et
  3. stocke les mots de passe dans la base de données du système en utilisant l'algorithme propre au système.

est-ce possible? Je pensais qu'il n'était pas possible / faisable de décrypter les hachures MD5.

je sais il y a des dictionnaires MD5, mais y a-t-il un algorithme de déchiffrement?

220
demandé sur Maarten Bodewes 2009-08-06 23:25:24

23 réponses

Pas de. MD5 n'est pas un cryptage (bien qu'il puisse être utilisé dans le cadre de certains algorithmes de cryptage), il est un aller fonction de hachage . La plupart des données originales sont en fait "perdues" dans le cadre de la transformation.

pensez à ceci: un MD5 est toujours de 128 bits de long. Cela signifie qu'il y a 2 128 hashes possibles MD5. C'est un nombre assez grand, et pourtant il est certainement fini. Et pourtant, il y a une infinité de nombre d'entrées possibles à une fonction de hachage donnée (et la plupart d'entre elles contiennent plus de 128 bits, ou un infime 16 octets). Donc, il y a en fait un nombre infini de possibilités pour des données qui seraient hachées à la même valeur. La chose qui rend les hachages intéressants est qu'il est incroyablement difficile de trouver deux morceaux de données qui hachent à la même valeur, et les chances que cela se produise par accident sont presque 0.

exemple simple d'une fonction de hachage (très peu sûre) (et cet exemple illustre bien l'idée générale de one-way) serait de prendre tous les bits d'un morceau de données et la considérer comme un grand nombre. Ensuite, effectuer la division entière en utilisant un grand nombre (probablement premier) n et prendre le reste (voir: module ). Il vous restera un nombre entre 0 et n . Si vous étiez à effectuer le même calcul à nouveau (tout moment, sur n'importe quel ordinateur, n'importe où), en utilisant exactement les mêmes chaîne, il viendra avec la même valeur. Et pourtant, il n'y a aucun moyen de savoir quelle était la valeur originale, puisqu'il y a un nombre infini de nombres qui ont CE reste exact, divisé par n .

cela dit, MD5 a été trouvé pour avoir quelques faiblesses, tels que, avec certains des mathématiques complexes, il peut être possible de trouver une collision sans essayer d'2 128 possible des chaînes d'entrée. Et le fait que la plupart des les mots de passe sont courts, et les gens utilisent souvent des valeurs communes (comme "mot de passe" ou "secret") signifie que dans certains cas, vous pouvez faire une estimation raisonnable à mot de passe de quelqu'un en Googlant pour le hachage ou en utilisant un table arc-en-ciel . C'est une raison pour laquelle vous devriez toujours " salt " mots de passe hachés, de sorte que deux valeurs identiques, une fois hachés, ne seront pas hachés à la même valeur.

une fois qu'un morceau de données a été exécuté à travers un hachage la fonction, il n'y a pas de retour en arrière.

369
répondu Adam Batkin 2009-08-06 19:43:28

vous ne pouvez pas-en théorie. Le but d'un hachage, c'est que c'est un seul chemin. Cela signifie que si quelqu'un parvient à obtenir la liste des hashs, il ne peut toujours pas obtenir votre mot de passe. En outre, cela signifie que même si quelqu'un utilise le même mot de passe sur plusieurs sites (Oui, nous savons tous que nous ne devrions pas, mais...) toute personne ayant accès à la base de données du site A ne pourra pas utiliser le mot de passe de l'utilisateur sur le site B.

le fait que MD5 est un hash signifie également qu'il perd des informations. Pour tout hachage MD5 donné, si vous autorisez des mots de passe de longueur arbitraire, il peut y avoir plusieurs mots de passe qui produisent le même hachage. Pour un bon hachage, il serait infaisable sur le plan informatique de les trouver au-delà d'une longueur maximale assez triviale, mais cela signifie qu'il n'y a pas de garantie que si vous trouvez un mot de passe qui a le hachage cible, c'est certainement le mot de passe original. C'est astronomiquement improbable que vous verriez deux ASCII seulement, de longueur raisonnable mots de passe qui ont le même hachage MD5, mais ce n'est pas impossible.

MD5 est un mauvais hachage à utiliser pour les mots de passe:

  • c'est rapide, ce qui signifie que si vous avez un hash" cible", il est bon marché pour essayer beaucoup de mots de passe et voir si vous pouvez trouver un qui hash à cette cible. Salting n'aide pas avec que scénario, mais il aide à le rendre plus cher pour essayer de trouver un mot de passe correspondant à l'un de multiple hashes utilisant des sels différents.
  • je crois qu'il a des défauts connus qui rendent plus facile de trouver des collisions, bien que trouver des collisions dans un texte imprimable (plutôt que des données binaires arbitraires) serait au moins plus difficile.

Je ne suis pas un expert en sécurité, donc je ne ferai pas de recommandation concrète au-delà de" ne lancez pas votre propre système d'authentification."Trouve-en un d'un fournisseur réputé, et utilise ça. À la fois la conception et la mise en œuvre de systèmes de sécurité est une affaire délicate.

151
répondu Jon Skeet 2018-09-19 09:29:38

techniquement, c'est" possible " , mais sous conditions très strictes ( tables arc-en-ciel , forçage Brutal basé sur la très petite possibilité que le mot de passe d'un utilisateur est dans cette base de données de hachage).

mais ça ne veut pas dire que c'est

  • Viable

    ou
  • Sécurisé

Vous ne voulez pas' inverser ' un MD5 hash. en utilisant les méthodes décrites ci-dessous, vous n'en aurez jamais besoin. "Inverser" MD5 est en fait considéré comme malicieux - quelques sites Web offrent la possibilité de "crack" et bruteforce MD5 hash - mais tout ce qu'ils sont sont des bases de données massives contenant des mots de dictionnaires, mots de passe soumis précédemment et d'autres mots. Il y a une très petite chance qu'il aura le hash MD5 dont vous avez besoin inverser. Et si vous avez salé le hash MD5 - ce qui ne fonctionne pas, soit! :)


la façon dont les connexions avec le hachage MD5 devraient fonctionne est:



lors de L'enregistrement:

L'utilisateur crée un mot de passe -> le mot de passe est hashé en utilisant MD5 -> le hachage est stocké dans la base de données

Lors De La Connexion:

L'utilisateur entre le nom d'utilisateur et le mot de passe -> (le nom d'utilisateur est vérifié) le mot de passe est hachée en utilisant MD5 - > le hachage est comparé avec le hachage stocké dans la base de données

quand 'mot de passe perdu' est nécessaire:



2 options:

  • L'Utilisateur a envoyé un mot de passe aléatoire pour se connecter, puis est mis sur écoute pour le changer lors de la première connexion.

ou

  • L'utilisateur reçoit un lien pour changer son mot de passe (avec vérification supplémentaire si vous avez une question de sécurité/etc) et puis le nouveau mot de passe est hachée et remplacée par l'ancien mot de passe dans la base de données
50
répondu Daniel May 2015-06-18 05:32:05

pas directement. En raison du pigeonhole Principe , il y a (probablement) plus d'une valeur qui hache à une sortie MD5 donnée. En tant que tel, vous ne pouvez pas inverser avec certitude. En outre, MD5 est fait pour rendre difficile de trouver n'importe quel tel hachage inversé (cependant il y a eu des attaques qui produisent collisions - c'est-à-dire, produire deux valeurs que hachage au même résultat, mais vous ne pouvez pas contrôler ce que le résultat La valeur MD5 sera).

cependant, si vous limitez l'espace de recherche à, par exemple, les mots de passe communs avec la longueur sous N, vous pourriez ne plus avoir la propriété d'irréversibilité (parce que le nombre de sorties MD5 est beaucoup plus grand que le nombre de chaînes dans le domaine d'intérêt). Ensuite, vous pouvez utiliser un table arc-en-ciel ou similaire à des coups de fouet inversés.

30
répondu bdonlan 2009-08-06 19:28:06

Impossible, du moins dans un délai raisonnable.

La façon dont cela est souvent traité est un mot de passe "reset". C'est-à-dire que vous leur donnez un nouveau mot de passe (aléatoire) et que vous leur envoyez par courriel.

13
répondu Matthew Groves 2009-09-24 13:20:57

vous ne pouvez pas inverser un mot de passe md5.(dans n'importe quelle langue)

mais vous pouvez:

donner à l'utilisateur un nouveau.

vérifiez dans une table arc-en-ciel pour peut-être récupérer l'ancienne.

12
répondu Nettogrof 2009-09-24 13:24:11

Non, il a dû confondre avec les dictionnaires MD5.

hashes cryptographiques (MD5,etc...) sont one way et vous ne pouvez pas revenir au message d'origine, avec seulement le digest à moins que vous avez d'autres informations sur le message d'origine, etc. que tu ne devrais pas.

9
répondu Robert Greiner 2009-08-06 20:08:09

Décryptage (directement obtenir le texte en clair à partir de la valeur de hachage, dans une façon algorithmique), pas de.

il y a, cependant, des méthodes qui utilisent ce qui est connu comme un table arc-en-ciel . C'est assez faisable si vos mots de passe sont hachés sans sel.

8
répondu Sinan Taifour 2009-08-06 19:29:33

MD5 est un algorithme de hachage, vous ne pouvez pas inverser la valeur de hachage.

vous devez ajouter" modifier la fonctionnalité de mot de passe", où l'utilisateur donne un autre mot de passe, calcule le hachage et le stocke comme un nouveau mot de passe.

7
répondu Svetlozar Angelov 2009-09-24 13:21:24

Il n'y a pas de moyen facile de le faire. C'est un peu le but de Hasher le mot de passe en premier lieu. :)

une chose que vous devriez être en mesure de faire est de définir un mot de passe temporaire pour eux manuellement et de leur envoyer que.

j'hésite à le mentionner parce que c'est une mauvaise idée (et ce n'est pas garanti de fonctionner de toute façon), mais vous pourriez essayer de chercher le hachage dans une table arc-en-ciel comme milw0rm pour voir si vous pouvez récupérer l'ancien mot de passe de cette façon.

7
répondu Bill the Lizard 2009-09-24 13:29:09

voir toutes les autres réponses ici sur comment et pourquoi il n'est pas réversible et pourquoi vous ne voulez pas de toute façon.

par souci d'exhaustivité, il existe tables arc-en-ciel sur lesquelles vous pouvez rechercher des correspondances possibles. Il n'y a aucune garantie que la réponse dans la table arc-en-ciel sera le mot de passe original choisi par votre utilisateur de sorte que les confondre grandement.

aussi, cela ne fonctionnera pas pour les hachures salées. salage est recommandé par de nombreux experts en sécurité.

6
répondu Dinah 2009-09-24 13:34:26

Il n'y a aucun moyen de "retourner" une fonction de hachage en termes de trouver la fonction inverse. Comme mentionné avant, c'est tout l'intérêt d'avoir une fonction de hachage. Elle ne doit pas être réversible et doit permettre un calcul rapide de la valeur de hachage. Donc, la seule façon de trouver une chaîne d'entrée qui donne une valeur de hachage est d'essayer toutes les combinaisons possibles. C'est ce qu'on appelle l'attaque par la force brute pour cette raison.

essayer toutes les combinaisons possibles prend beaucoup de temps et c'est aussi la raison pour laquelle les valeurs de hachage sont utilisées pour stocker les mots de passe d'une manière relativement sûre. Si un attaquant est en mesure d'accéder à votre base de données avec tous les mots de passe utilisateur à l'intérieur, vous perdez en tout cas. Si vous avez des valeurs de hachage et (dans l'idéal) des mots de passe forts, il sera beaucoup plus difficile d'obtenir les mots de passe de l'valeurs de hachage pour l'attaquant.

stocker les valeurs de hachage n'est pas non plus un problème de performance parce que le calcul de la valeur de hachage est relativement rapide. Ainsi, la plupart des systèmes calculent la valeur de hachage du mot de passe que l'Utilisateur a saisi (ce qui est rapide) et la comparent ensuite à la valeur de hachage stockée dans leur base de données d'utilisateur.

4
répondu Kage 2009-09-24 13:49:06

MD5 est considéré comme cassé, non pas parce que vous pouvez récupérer le contenu original du hachage, mais parce qu'avec le travail, vous pouvez craft deux messages qui hachent au même hachage.

vous ne pouvez pas enlever le hachage D'un MD5.

3
répondu Ned Batchelder 2009-08-06 19:28:56

la seule chose qui peut être du travail est (si nous mentionnons que les mots de passe sont juste hachés, sans ajouter aucune sorte de sel pour empêcher les attaques de replay, si c'est ainsi que vous devez connaître le sel)par ailleurs, obtenir un outil d'attaque de dictionnaire, les fichiers de nombreux mots, numéros, etc. ensuite, créez deux rangées, une rangée est mot, nombre (dans le dictionnaire) l'autre est hachage du mot, et comparez les hachages si correspond vous l'obtenez...

c'est le seul moyen, sans aller dans cryptanalyse.

2
répondu berkay 2010-02-06 17:02:33

Oui, exactement ce que vous demandez est possible. Il n'est pas possible de 'déchiffrer' un mot de passe MD5 sans aide, mais il est possible de re-crypter un mot de passe MD5 dans un autre algorithme, tout simplement pas tous en une seule fois.

ce que vous faites est de faire en sorte que vos utilisateurs puissent se connecter à votre nouveau système en utilisant l'ancien mot de passe MD5. Au moment où ils se connectent, ils ont donné à votre programme de connexion une version inashed du mot de passe que vous prouvez ça correspond au hash MD5 que vous avez. Vous pouvez alors convertir ce mot de passe inachevé à votre nouvel algorithme de hachage.

évidemment, il s'agit d'un processus prolongé parce que vous devez attendre que vos utilisateurs vous disent ce que sont les mots de passe, mais cela fonctionne.

(NB: sept ans plus tard, j'espère que quelqu'un le trouvera utile)

2
répondu user3710044 2016-09-14 01:12:39

vous pouvez trouver des outils en ligne qui utilisent un dictionnaire pour récupérer le message original.

dans certains cas, la méthode du dictionnaire pourrait être tout simplement inutile:

  • si le message est hachée en utilisant un message de sel

  • si le message est hash plus d'une fois
    151970920

par exemple, voici un MD5 decrypter en ligne outil.

2
répondu davitz38 2018-09-19 10:31:33

Non, c'est impossible. Soit vous pouvez utiliser un dictionnaire, soit vous pouvez essayer de hachage de différentes valeurs jusqu'à ce que vous obtenez le hachage que vous recherchez. Mais il ne peut pas être "décrypté".

1
répondu Vilx- 2009-08-06 19:28:34

MD5 a ses faiblesses (voir Wikipedia ), Il ya donc certains projets, qui tentent de précalculer les hash. Wikipédia ne fait également allusion à certains de ces projets. Un que je connais (et respecte) est ophrack. Vous ne pouvez pas donner à l'utilisateur son propre mot de passe, mais vous pourriez être en mesure de lui donner un mot de passe qui fonctionne. Mais je pense: envoyez un nouveau mot de passe à thrm au cas où ils auraient oublié.

1
répondu dz. 2009-09-24 13:52:47

l'algorithme de hachage MD5 n'est pas réversible, donc MD5 décoder dans pas possible, mais certains sites Web ont ensemble de correspondance de mot de passe, de sorte que vous pouvez essayer en ligne pour le hachage MD5.

Essayer en ligne :

MD5 Déchiffrer

md5online

md5decrypter

1
répondu Girish Patidar 2016-01-04 05:57:16

En théorie il n'est pas possible de décrypter une valeur de hachage mais vous avez une certaine sale des techniques pour obtenir le texte brut d'origine de retour.

  1. Bruteforcing : tous les algorithmes de sécurité informatique souffrent bruteforcing . Basé sur cette idée GPU d'aujourd'hui employer l'idée de programmation parallèle en utilisant laquelle il peut récupérer le texte clair en bruteforcing massivement en utilisant tous les graphiques processeur. Cet outil hashcat fait ce travail. La dernière fois que j'ai vérifié la version cuda de celui-ci, j'ai pu bruteforce un caractère long de 7 lettres en six minutes.
  2. recherche sur Internet : il suffit de copier-coller le hachage sur Google et de voir si vous pouvez trouver le texte en clair correspondant. Ce n'est pas une solution quand vous êtes pentesting quelque chose, mais il est certainement la peine d'essayer. Certains sites de maintenir la hachez presque tous les mots du dictionnaire.
1
répondu vikkyhacks 2018-09-18 21:49:55

Non, il n'est pas possible d'inverser une fonction de hachage telle que MD5: étant donné la valeur de hachage de sortie, il est impossible de trouver le message d'entrée à moins que suffisamment d'informations sur le message d'entrée ne soient connues.

le déchiffrement n'est pas une fonction définie pour une fonction de hachage; le chiffrement et le déchiffrement sont des fonctions d'un chiffrement telles que AES en mode CBC; les fonctions de hachage ne sont pas chiffrer ni déchiffrer . Les fonctions de hachage sont utilisées pour digérer un message d'entrée. comme son nom l'indique, il n'existe pas d'algorithme inverse possible par conception .


MD5 a été conçu comme une fonction de hachage cryptographique, à Sens Unique . Il est maintenant facile de générer des collisions MD5 - même si une grande partie du message d'entrée est pré-déterminé. So MD5 est officiellement cassé et MD5 ne doit plus être considéré comme un hachage cryptographique sécurisé. Il est cependant toujours impossible de trouver un message d'entrée qui conduise à une valeur de hachage: trouver X quand seul H(X) est connu (et X n'a pas de structure pré-calculée avec au moins un bloc de 128 octets de données précalculées). Il n'y a aucune attaque pré-image connue contre MD5.

il est généralement aussi possible de deviner les mots de passe en utilisant la force brute ou (augmenté) attaques de dictionnaires, pour comparer des bases de données ou pour essayer de trouver des mots de passe hashes dans ce que l'on appelle des tables arc-en-ciel. Si une correspondance est trouvée, alors il est mathématiquement certain que l'entrée a été trouvé. Les fonctions de hachage sont également sécurisées contre les attaques de collision: trouver X' de sorte que H(X') = H(X) donné H(X) . Ainsi, si un X est trouvé, il est certain par calcul qu'il s'agit bien du message d'entrée. Sinon, vous auriez fait une attaque après tout. Rainbow des tables peuvent être utilisées pour accélérer les attaques et il y a des ressources internet spécialisées là-bas qui vous aideront à trouver un mot de passe donné un hachage spécifique.

il est bien sûr possible de réutiliser la valeur de hachage H(X) pour vérifier les mots de passe qui ont été générés sur d'autres systèmes. La seule chose que le système de réception a à faire est de stocker le résultat d'une fonction déterministe F qui prend H(X) comme entrée. Lorsque X est donné pour le système H(X) et donc F peut être recalculé et les résultats peuvent être comparés. En d'autres termes, il est pas nécessaire pour décrypter la valeur de hachage à juste vérifier qu'un mot de passe est correcte, et vous pouvez encore stocker le hachage comme une valeur différente.


au lieu de MD5 il est important d'utiliser un hachage de mot de passe ou PBKDF (fonction de dérivation des clés basée sur le mot de passe) à la place. Une telle fonction spécifie comment utiliser un sel avec un hachage. De cette façon, des hachages identiques ne seront pas générés pour des mots de passe identiques (d'autres utilisateurs ou dans d'autres bases de données). Pour cette raison, les mots de passe hashes ne permettent pas non plus d'utiliser les tables rainbow tant que le sel est assez grand et correctement aléatoire.

hashes de mot de passe contiennent également un facteur travail (parfois configuré en utilisant un compte d'itération ) qui peut ralentir considérablement les attaques qui tentent de trouver le mot de passe donné le sel et la valeur de hachage. Ceci est important car la base de données avec les valeurs de sels et de hash pourrait être volée. Enfin, le hachage de mot de passe peut aussi être mémoire-dur de sorte qu'une quantité significative de mémoire est nécessaire pour calculer le hachage. Il est donc impossible d'utiliser du matériel spécial (GPU, ASIC, FPGA, etc.).) afin de permettre une attaquant pour accélérer la recherche. D'autres entrées ou options de configuration telles qu'un pepper ou la quantité de parallélisation peuvent également être disponibles pour un hachage par mot de passe.

il permettra cependant à n'importe qui de vérifier un mot de passe donné H(X) même si H(X) est un hachage de mot de passe. Les hachages de mot de passe sont encore déterministes, donc si quelqu'un connaît toutes les entrées et l'algorithme de hachage lui - même alors X peut être utilisé pour calculer H(X) et - encore une fois-le les résultats peuvent être comparés.

les mots de passe utilisés couramment sont bcrypt , scrypt et PBKDF2 . Il y a aussi Argon2 dans diverses formes qui est le gagnant de la compétition de hachage de mot de passe raisonnablement récente. , Ici sur CrackStation est un bon billet de blog sur le mot de passe de sécurité à droite.


il est possible de rendre impossible pour les adversaires d'effectuer le calcul de hachage vérifier qu'un mot de passe est correct. Pour cela, un poivre peut être utilisé comme entrée dans le hachage de mot de passe. Par ailleurs, la valeur de hachage peut bien sûr être chiffrée en utilisant un chiffrement tel que AES et un mode de fonctionnement tel que CBC ou GCM. Cela nécessite cependant le stockage d'un secret / clé indépendamment et avec des exigences d'accès plus élevées que le hachage de mot de passe.

1
répondu Maarten Bodewes 2018-09-19 11:30:31

il n'est pas encore possible de mettre un hachage de mot de passe dans un algorithme et d'obtenir le mot de passe de nouveau en texte clair parce que le hachage est une chose à Sens Unique. Mais ce que les gens ont fait est de générer des hachures et de les stocker dans une grande table de sorte que lorsque vous entrez un hachage particulier, il vérifie la table pour le mot de passe qui correspond au hachage et vous renvoie ce mot de passe. Un exemple de site qui fait qui est http://www.md5online.org / . Système de stockage de mots de passe moderne pour contrer cela, utilisez un algorithme de salting tel que lorsque vous saisissez le même mot de passe dans une boîte de mots de passe lors de l'enregistrement, différents hachages sont générés.

-1
répondu Ogbe 2016-11-12 14:48:07

Non, vous ne pouvez pas décrypter/inverser le md5 car il s'agit d'un cryptage à Sens Unique. mais certains sites Web a une grande quantité de jeu de mots de passe de base de données, de sorte que vous pouvez essayer en ligne pour décoder votre MD5 ou sha1 chaîne de hachage. J'ai essayé un site web comme http://www.mycodemyway.com/encrypt-and-decrypt/md5 et son fonctionnement parfait pour moi mais cela dépend totalement de votre hachage si ce hachage est stocké dans cette base de données alors vous pouvez obtenir la chaîne réelle.

-1
répondu Rafi Ahmad 2018-07-05 09:12:24