Ben voila, tout est dans le titre.
Un petit gars qui programme en C# a codé des petits programmes permettant de camoufler 2 binaires dans un fichier ayant le même md5.
L'article: http://www.codeproject.com/useritems/HackingMd5.asp(...)
un commentaire sur slashdot interessant:
deux pages html avec le meme md5:
http://www.doxpara.com/t1.html(...)
http://www.doxpara.com/t2.html(...)
c'est bluffant (si on regarde pas le code source).
# slashdot
Posté par BAud (site web personnel) . Évalué à 4.
C'est un exemple de collision de hash (j'ai pas trop bien compris tes explications) : en gros 2 ISOs pourraient avoir le même md5sum.
Ceci est aussi possible avec RSA (un peu plus dur néanmoins) je crois (chercher RSA-200), ou je confonds tout...
[^] # Re: slashdot
Posté par seedeexeen . Évalué à 10.
Si tu trouves un algo de hash sans collision alors cela signifie que tu as une bijection entre ton message et ton hash. Cet algo te permet donc de reconstruire le message de départ d'après le hash.
Et là t'as trouvé un super algo de compression ;-)
[^] # Re: slashdot
Posté par Laurent Saint-Michel . Évalué à 10.
[^] # Re: slashdot
Posté par Tom D . Évalué à 10.
Tom
[^] # Re: slashdot
Posté par fmaz fmaz . Évalué à 10.
Que toto.c ait un hash commun avec
un truc plus ou moins aléatoire, ce n'est pas bein grave.
Là où ça peut devenir génant, c'est si on arrive à provoquer
des collitions entre
toto.c et toto_backdoor.c
[^] # Re: slashdot
Posté par chx dein . Évalué à -9.
[^] # Re: slashdot
Posté par Éric (site web personnel) . Évalué à 2.
[^] # Re: slashdot
Posté par hervé Couvelard . Évalué à 8.
De ce que j'ai lu, il y a une 'entête particulière' qui doit être mis dans toto.c et toto_backdoor.c pour que cela fonctionne, ce qui limite un peu tout de même la porté de la chose, et du fait c'est 'reconnaissable' par 'signature'. en effet le nombres de "vecteur" qui font collisions ne sont pas infini, et ils ne sont pas facile à trouver.
[^] # Re: slashdot
Posté par jcs (site web personnel) . Évalué à 5.
L'attaque utilisée ne produit pas un machin aléatoire mais deux fichier très proches. En fait on utilise un propriété de md5 (appelée length extension) qui ne fait que seul le début des fichiers est différent. L'objectif est de produire deux fichiers du genre : si (X) alors A sinon B où seul X varie pour donner soit A, soit B.
Un des risque est d'obtenir des signatures identiques sont des fichiers très différent. Par exemple, on produit deux fichiers avec le même md5 l'un contenant Je donne 1.000.000¤ à Toto et l'autre Toto me donne 1.000.000¤. Je fais signer le 1er message à Toto avec une signature (par exemple RSA/Md5). Puis je vais voire un notaire mais avec le 2e fichier, la signature est aussi valable. Bien sûr c'est complètement théorique puisque avec l'attaque actuelle un examen des fichiers montrerait la supercherie.
Pour info : deux fichiers postscript aec le même hash md5 mais au contenus bien différents : http://www.cits.rub.de/MD5Collisions/(...)
Pour la petite histoire, l'attaque a été publiée il y a plusieurs mois par une équipe de cryptographes chinois qui avait mal implémenté le md5. Le premier papier publié cassait en fait un algo proche de md5 mais avec un problème d'endianness. Une version corrigée du papier a ensuite été publié quelques heures plus tard.
# Comme répété auparavant
Posté par lezardbreton . Évalué à 10.
[^] # Re: Comme répété auparavant
Posté par tfeserver tfe (site web personnel) . Évalué à 9.
[^] # Re: Comme répété auparavant
Posté par ashram4 . Évalué à 10.
Je n'ai pas lu comment trouver 2 séquences défférentes avec le même MD5sum il y a une méthode particulière ou faut essayer toutes les possibilités? si il y a une méthode c'est peut être plus rapide que la force brute mais encore faut t'il avoir la séquence de départ donc une situation peu probable quand on cherche un mot de passe.
# idée amusante mais...
Posté par ashram4 . Évalué à 5.
En plus dans l'exemple décrit il faut que le pirate fournisse un installateur modifié et 2 archives qui contiennent chacunes le bon programme et le mauvais programme. Quel est l'intérêt pratique (ok c'est un bon exercice intellectuel) de diffuser une archive qui contient un code malveillant non activé puis ensuite une autre avec le code malveillant activé? autant directement diffuser l'archive avec le code malveillant.
[^] # Re: idée amusante mais...
Posté par harbort1 . Évalué à 6.
Non ! Le principe du hash de fichier n'est pas là !
Le but est d'obtenir une fonction pour laquelle :
1 - toutes les valeurs sont équiprobables
2 - le hash de deux fichiers peu différents impliquent des valeurs très différentes
Mais rien n'est dis dans le cas où les fichiers sont très différents, tout simplement parce qu'on essaie de résumer des centaines de Mo en qq octets, et il est illusoire de dire qu'il n'existe pas (ou même qu'il n'y a pas bcp) de fichiers ayant le même hash.
Du coup, les attaques sont à rechercher dans les fichiers très différents ...
[^] # Re: idée amusante mais...
Posté par Anonyme . Évalué à 4.
L'exemple suivant le montre très bien http://www.cits.rub.de/MD5Collisions/(...)
Les fichiers concernés ne sont pas très différents.
Par contre, ils n'ont pas la même taille. Il s'impose donc, quand on base des verifs sur le md5, de ne pas oublier de vérifier la taille du fichier.
# oui mais
Posté par Éric (site web personnel) . Évalué à 10.
Tu as au départ une source S1, tu as à l'arrivée une source S2 et une collision C. S1 et S2 n'ont pas la même taille ni le même hash.
La conséquence :
- ça ne permet pas de pervertir un fichier qui a déjà été distribué par un tiers (puisque S1 != S2 et avec des hash différents)
- ça n'est pas extensible à tous les formats ou toutes les données (dans un exe il est facile de rajouter des bits morts, dans d'autres formats c'est impossible ou limité)
- ca ne permet pas de fausser les mots de passe gérés avec un algo basé sur md5
Ce que ça permet c'est par contre préparer un code méchant et un code gentil, diffuser le gentil, puis plus tard, l'air de rien, diffuser le méchant pendant un ou deux jours sans changer le md5. Ca demande quand même une mauvaise foi sur le distributeur initial dès le départ (ce qui n'empeche pas que ce soit gênant, on est d'accord).
Reste aussi que même dans les formats où c'est possible de rajouter des bits morts pour générer la collision, il n'est pas impossible que ce soit visible (pour ceux qui savent comment est fait un binaire, je pense qu'il doit être visible qu'un gros flot d'octet est inutilisé à la fin).
[^] # Re: oui mais
Posté par Matthieu . Évalué à 2.
Heu, c'est tout de même inquiétant ! On peut imaginer que dans quelques temps des éditeurs de sécurité en mal d'idée, ayant vendu des firewalls et des antivirus à tout le monde se disent qu'ils peuvent faire plus d'argent en vendant également des vérificateurs d'intégrité du système à la tripwire. L'utilisateur lambda se sent en sécurité.
D'un autre côté, on a un éditeur A qui vend un logiciel. Le logiciel est enregistré par le vérificateur d'intégrité. Sauf que A avait trifouillé son logiciel pour pouvoir par la suite faire des modifications tout en by-passant le vérificateur d'intégrité. Du genre A dit: "bon, maintenant, c'est fini le piratage, maintenant nos logiciels envoient des informations à nos serveurs pour vérification". Et bah, l'utilisateur lambda il se dira : "dans ses rêves ! m'en fous, mon vérificateur d'intégrité me dira si son logiciel change ! j'suis tranquille !"
Bref, scénario catastrophe. Mais bon même si ça a une probabilité de 1% de se produire, faut pas l'oublier !
[^] # Re: oui mais
Posté par Éric (site web personnel) . Évalué à 2.
- si c'est du close source y'a pas besoin de changer le soft pour faire ça, suffit que la fonctionnalité soit déjà présente et qu'elle ne soit qu'activée par la suite (par rapport à une date par exemple). Le hash n'a pas changé, le soft n'a pas changé, pas besoin de collision md5.
- si c'est de l'open source on verra des trucs bizarres dans les sources
- dans tous les cas annexer la taille au md5 (chose qu'on vérifie souvent) montrera le problème.
Ceci dit oui, c'est inquiétant.
# Même hash et même taille ?
Posté par andeus . Évalué à 8.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 4.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Même hash et même taille ?
Posté par shal . Évalué à 4.
Heuu non..... SHA1 est en passe d'etre atomisé aussi. Pour l'instant il tiens par des bouts de ficelle. on en est a du 2^69 (je crois) donc atteignable par un ordi.
Actuellement c'est un peu la panic chez les crypto (enfin autant que ca peut être la planic chez des universitaires ;-) ). Ils sont en train de se mettre a rechercher un nouveau algo de hash car tous les autres vont tomber a plus ou moins long terme
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 3.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Même hash et même taille ?
Posté par Gof (site web personnel) . Évalué à 2.
Si mes souvenirs sont bons, GPG utilise lui même le SHA1 ou un autre hash du même style, ce n'est donc pas une solution
[^] # Re: Même hash et même taille ?
Posté par briaeros007 . Évalué à 2.
gpg est un outil de chiffrement pas de hash .
Quand aux autres fonctions de hash crypto forte (> à 2^80) on en connais : ripemd160 , whirlpool, sha-256 et > etc...
[^] # Re: Même hash et même taille ?
Posté par jcs (site web personnel) . Évalué à 4.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.