58 votes

Décoder l'adresse e-mail à partir du hash de Gravatar ?

Je suppose que Gravatar génère l'image de l'avatar à partir des adresses électroniques. Si c'est le cas, l'inverse devrait être possible. Serait-il difficile d'obtenir l'adresse électronique associée à l'image ? Ne s'agit-il pas d'une menace potentielle de spam ?

Qu'en pensez-vous ? (à part me traiter de paranoïaque ;) je l'ai déjà fait)

52voto

tialaramex Points 2351

Michael Stum s'est complètement trompé, mais il a une grosse coche verte qui signifie que sa réponse apparaîtra toujours comme la "bonne" malgré les erreurs...

Traitons d'abord la deuxième partie de sa réponse, qui est un peu hors sujet. Il se trompe complètement. Étant donné un fichier provenant d'un "site open source" et la somme MD5 de ce fichier, vous ne pouvez pas créer un autre fichier différent avec le même hachage. Il se peut qu'un jour il y ait une percée qui rende cela possible, mais ce jour n'est pas arrivé et il peut se passer des années ou des décennies avant que cela ne se produise.

Pourquoi Michael pense-t-il que cela est possible ? Une simple erreur. Il a lu qu'il était possible de créer deux fichiers différents avec la même somme MD5 en forçant un certain type de collision, ce résultat a été rapporté en 2004 et a été amélioré depuis. Mais il ne s'agit pas du même problème. En cryptographie, le type d'attaque Michael réclamé Ce qui a été découvert n'est qu'une collision, le type d'attaque le plus facile à trouver contre un hachage, et sans doute une raison de ne pas choisir MD5 pour de nouvelles applications, mais pas, et cela vaut la peine d'être souligné, une raison de ne pas faire confiance aux sommes MD5 fournies pour les téléchargements de logiciels, ni une raison (en soi) d'éviter MD5 dans les hachages de mots de passe.

OK, maintenant la première partie de la réponse de Michael, plus pertinente. Voici le problème : Les spammeurs et autres attaquants similaires ne se soucient pas du fait qu'une personne sur un milliard possède une adresse électronique qui ressemble à un exercice de Perl obscurci - ils veulent le plus grand nombre d'adresses. Sur une liste de 5 millions de hachages de Gravatar, au moins 4 millions sont des hachages d'adresses électroniques d'apparence assez ordinaire, comme "firstname.lastname@example.com". Il s'agit de hachages de 128 bits, de sorte que toute chaîne arbitraire a une chance sur 2^128 d'aboutir à la même valeur, mais c'est un très grand nombre et il n'y a tout simplement pas 2^128 adresses électroniques stéréotypées plausibles. Tant que nous ne voulons qu'un facteur raisonnable, par exemple 50 % de chances d'inversion, nous pouvons utiliser la force brute pour résoudre ce problème. Essayez les dix millions de combinaisons prénom / nom les plus probables, avec jusqu'à un million de noms de domaine tirés des listes des bureaux d'enregistrement, et vous aurez 10 milliards de valeurs à essayer. Pour une attaque ponctuelle, il suffit de procéder par force brute, 10 milliards de calculs MD5 étant un jeu d'enfant. Mais si vous étiez un spammeur et que vous aviez accès à un crawler à la recherche de nouveaux URI Gravatar chaque jour, vous construiriez une table arc-en-ciel afin de répartir le temps de calcul sur un nombre potentiellement illimité de hachages.

Existe-t-il un moyen de contourner ce problème ? Oui et non. Il n'y a aucun moyen de résoudre ce problème sans changer quelque chose. Mais le changement minimal est relativement indolore. Pour vaincre les tables arc-en-ciel, il faut ajouter du sel et gaspiller les cycles de l'unité centrale, comme pour les mots de passe. Vous pouvez ajouter du sel en demandant à chacun de choisir un mot favori et de le taper avec son adresse électronique lors de la création d'un Gravatar ou d'un compte nécessitant un Gravatar. Peu importe le mot choisi, tant qu'il est toujours le même, ils obtiennent le même Gravatar. Désormais, un attaquant doit non seulement deviner une adresse électronique plausible, mais aussi un mot aléatoire. Ses chances de réussite sont donc réduites de plusieurs ordres de grandeur. Parallèlement, vous passez de MD5 (conçu pour être rapide) à un hachage de mot de passe (conçu pour être lent). Lors du calcul du hachage, vous travaillez un peu plus dur, mais l'attaquant doit également travailler proportionnellement plus dur. Si votre unité centrale prend 0,5 seconde pour générer votre gravatar lors de la création d'un compte, l'attaquant doit perdre 0,5 seconde par devinette, ce qui l'épuisera rapidement.

46voto

Michael Stum Points 72046

Editer 2 : Cette réponse a suscité de nombreuses controverses. J'invite le lecteur à lire les autres réponses et commentaires. Je m'en tiens toujours à mon opinion initiale selon laquelle cela n'a pas d'importance pour les Gravatars, mais il y a certainement de bons arguments pour le contraire.

EDITAR: Cette réponse a été rédigée il y a plus d'un an. Voir mon addendum au bas de la page.

@ICR : Il IS absolument impossible, il n'y a pas de "mais".

Une table arc-en-ciel permet d'obtenir une correspondance pour un hachis donné, mais vous devez JAMAIS être en mesure d'obtenir l'entrée exacte (bien qu'il y ait en effet une chance sur un nombre illimité de l'obtenir, mais vous ne sauriez pas s'il s'agit ou non de l'entrée exacte). Si vous pouviez obtenir l'entrée exacte à partir d'un hachage de 128 bits, vous auriez inventé le meilleur algorithme de compression au monde.

Il existe un nombre illimité de possibilités qui produiront toutes exactement le même hachage.

Permettez-moi d'expliquer un peu plus en détail. Imaginez un algorithme de hachage où "foo" et "bar" donneront le même hachage, disons "HAsh1 !".

Maintenant, vous avez le Hash - HAsh1 ! Comment savoir si les données d'entrée étaient "foo" ou "bar" ? Vous ne pouvez pas et vous ne pourrez jamais le savoir.

Quel est le problème et à quoi servent les tables arc-en-ciel ?

Imaginez que vous piratiez ma base de données d'utilisateurs et que vous vérifiiez la table des utilisateurs. Mon login est généralement stocké en clair, vous savez donc que vous devez vous connecter avec "mstum". Mais mon mot de passe est haché. J'ai utilisé "trez" avec des hashs incidentiels pour HAsh1 !

Vous vérifiez mon mot de passe haché, qui est HAsh1 !, mais vous ne savez pas que mon mot de passe en clair est trez. Mais le fait est que vous n'avez pas BESOIN de le savoir. Vous consultez votre table arc-en-ciel pour HAsh1 ! et vous voyez "foo".

Vous vous rendez donc sur la page pour laquelle vous venez d'obtenir les données de l'utilisateur et vous vous connectez en tant que "mstum" avec "foo". Bien que j'aie utilisé "trez" comme mot de passe, vous vous connecterez avec succès avec "foo" parce que le hachage est exactement le même.

C'est ce que l'on appelle une collision : 2 valeurs d'entrée ayant le même hachage. Pour MD5, il n'y a que 128 bits, alors que pour SHA-512, il y a 512 bits, mais vous aurez toujours une infinité d'entrées qui donneront le même hachage.

Donc : Les tables arc-en-ciel résolvent l'un des deux problèmes que les pirates veulent résoudre : elles leur permettent de s'authentifier comme n'importe quel utilisateur pour lequel ils ont obtenu le hash.

Le deuxième problème des pirates informatiques est un peu hors sujet : Comment donner à l'utilisateur un fichier (par exemple, un fichier d'installation manipulé qui contient des logiciels malveillants ou qui est une version modifiée d'un outil qui fait de mauvaises choses) qui aura avec succès le même hachage ? Lorsque l'on consulte des pages de téléchargement populaires ou des sites open source, on trouve "Setup.exe, MD5 Hash : f387......". Bien qu'il y ait une infinité de possibilités de produire quelque chose dont le hachage est f387..., le pirate doit modifier le fichier Setup.exe de manière à ce qu'il contienne son logiciel malveillant ET qu'il ait le hachage f387..... C'est difficile, mais possible. En ce qui concerne le MD5, c'est désormais possible dans un délai raisonnable. C'est pourquoi le MD5 ne devrait plus être utilisé à moins qu'une norme ne l'exige ou que la sécurité ne soit pas une préoccupation.

Pour Gravatar, la sécurité n'est pas une préoccupation, donc MD5 est très bien et ils veulent quelque chose de rapide puisque ce n'est pas lié à la sécurité.

Edit : Voici un exemple concret, celui qui a été utilisé pour montrer les collisions dans MD5 :

d131dd02c5e6eec4693d9a0698aff95c 2fcab5**8**712467eab4004583eb8fb7f89 
55ad340609f4b30283e4888325**7**1415a 085125e8f7cdc99fd91dbd**f**280373c5b 
d8823e3156348f5bae6dacd436c919c6 dd53e2**b**487da03fd02396306d248cda0 
e99f33420f577ee8ce54b67080**a**80d1e c69821bcb6a8839396f965**2**b6ff72a70

et

d131dd02c5e6eec4693d9a0698aff95c 2fcab5**0**712467eab4004583eb8fb7f89 
55ad340609f4b30283e4888325**f**1415a 085125e8f7cdc99fd91dbd**7**280373c5b 
d8823e3156348f5bae6dacd436c919c6 dd53e2**3**487da03fd02396306d248cda0 
e99f33420f577ee8ce54b67080**2**80d1e c69821bcb6a8839396f965**a**b6ff72a70 

les deux hashs sont 79054025255fb1a26e4bc422aef54eb4.

Alors, compte tenu du hachage, comment savoir lequel des deux a été utilisé ?

Addendum : Je maintiens mon point de vue initial : Il est impossible de décoder une adresse électronique à partir d'un hachage. Vous pouvez utiliser la force brute ou une table arc-en-ciel et vous aurez peut-être la chance d'obtenir une adresse électronique. Comme il y a une infinité d'entrées dans un hachage, il y a aussi une infinité d'entrées qui ressemblent à une adresse électronique, mais les chances d'en obtenir une valide sont vraiment insignifiantes. Le décodage à partir d'un hachage n'est donc pas une option. Mais il y a des options que je n'avais pas envisagées à l'origine, comme par exemple aquí . En gros, vous pouvez deviner. Je poste avec mon vrai nom, vous pouvez donc essayer toutes sortes de combinaisons de michaelstum@, mstum@, michael.stum@ avec tous les grands fournisseurs et les faire passer par une fonction de hachage. Cela ne fonctionne pas dans tous les cas, mais comme de nombreuses personnes utilisent GMail, Yahoo ou Hotmail, les chances de succès ne sont pas si faibles. Le salage résoudrait-il ce problème ? Peut-être. Peut-être pas. Il faudrait trouver le sel, ce qui nécessite très certainement une approche par force brute. Au moins, vous disposez d'un texte clair connu (votre propre adresse de courrier électronique), ce qui vous permet d'utiliser la force brute sur votre machine. Le fait d'avoir un sel différent pour chaque utilisateur pourrait être plus sûr, mais je ne sais pas si cela pourrait entraîner un risque significatif de création de collisions.

En y réfléchissant, je pense que le salage avec un sel long et aléatoire améliorerait en effet la sécurité car il mettrait en échec la seule approche viable qui consiste à deviner. Je recommanderais plutôt d'utiliser des adresses électroniques jetables/différentes car on ne sait jamais ce qui peut arriver (les bases de données des sites web sont piratées tous les jours et ces adresses électroniques sont certainement vendues à des spammeurs), mais je me rends compte que ce n'est pas pratique pour les personnes qui n'ont pas de domaine et de boîte aux lettres électronique attrape-nigauds.

17voto

Peter Coulton Points 12453

@Karl : Tu as raison. J'ai essayé de faire une recherche MD5 inversée sur quelques gravatars sur stackoverflow et je n'ai obtenu aucun résultat, j'ai donc supposé à tort qu'ils étaient en train de saler.

J'ai procédé à quelques vérifications (au lieu d'un raisonnement erroné) et les gravatar FAQ explique leur justification de l'utilisation de simples hachages md5 :

"Si vous pensez aux tables arc-en-ciel, elles sont toutes destinées aux mots de passe (qui sont généralement plus courts et moins globalement différents les uns des autres) et non aux adresses électroniques, et elles sont en outre destinées à générer tout ce qui correspond au hachage, PAS aux données originales qui sont hachées. Si vous pensez pouvoir reproduire une collision, vous n'obtiendrez pas nécessairement l'adresse électronique réelle qui est hachée à partir des données générées pour créer la collision. Dans les deux cas, le travail nécessaire à la construction et au fonctionnement d'une telle monstruosité serait d'un coût prohibitif. Si nous laissons votre mot de passe traîner au grand jour sous la forme d'un simple hachage md5, quelqu'un pourrait être en mesure de trouver des données (pas nécessairement votre mot de passe) qu'il pourrait utiliser pour se connecter en votre nom... En revanche, le fait de laisser votre adresse électronique sous la forme d'un hachage md5 n'entraînera pas une forte augmentation du nombre de faux courriels que vous recevrez. Il est vrai qu'il existe des moyens bien plus lucratifs et plus faciles d'obtenir des adresses électroniques. J'espère que cela vous rassurera".

16voto

wvdschel Points 6111

La réponse concernant les collisions de hachages est intéressante, mais nous oublions quelque chose : nous savons à quoi nous attendre ! . Nous savons que nous recherchons des adresses électroniques réalistes .

Cela nous permet non seulement de disposer d'un modèle pour comparer tous les résultats potentiels, mais aussi de simplifier le modèle d'attaque pour les attaques par force brute.

Étant donné que nous n'avons pas besoin de l'adresse de tout le monde, mais que nous voulons simplement obtenir rapidement un grand nombre d'adresses, nous pourrions aller encore plus loin : 80 % de tous les comptes de messagerie sont fournis par un grand fournisseur. Il suffit d'essayer @gmail.com, @hotmail.com, ... avec des mots courts ou des attaques par dictionnaire pour que la construction d'une base de données d'adresses électroniques soit possible. bon pour la recherche de nombreuses adresses devient également beaucoup plus facile.

13voto

Jeff Atwood Points 31111

MicroID est essentiellement un hachage calculé à partir de l'URL de la page de profil d'un utilisateur et de son adresse électronique enregistrée, produisant un jeton qui rend l'adresse électronique vulnérable aux attaques par dictionnaire. Pour voir s'il était facile de décrypter ces jetons, j'ai mené une petite étude en choisissant 56 775 utilisateurs aléatoires de Digg et en décryptant les adresses électroniques de 14 294 d'entre eux (25 %) en utilisant uniquement leur MicroID, leur nom d'utilisateur et une liste de domaines de messagerie électronique populaires.

http://yro.slashdot.org/article.pl?sid=08/08/28/2241238

Je ne sais pas si cela a un rapport avec le hash Gravatar, mais c'est intéressant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X