OVH Cloud OVH Cloud

md5, comment ca fonctionne ?

89 réponses
Avatar
Eric CHAPUZOT
j'ai bien trouvé sur internet un machin pour coder le md5 mais par contre,
rien pour décoder ?
quel est l'intérêt supplémentaire d'avoir un truc qui ne marche que dans un
sens ?
comment faire pour une personne A pour envoyer un message md5 que seule une
personne B pourra décoder ?
comment ajouter un modérateur C entre A et B via md5?

10 réponses

5 6 7 8 9
Avatar
Jacques L'helgoualc'h
Emmanuel Florac a dit :

Le Wed, 19 May 2004 00:09:58 +0000, Eric CHAPUZOT a écrit :

c'est vrai, c'est injectif mais pas forcément surjectif... du coup, une
clef md5 sur 17 octets peut ne correspondre qu'à un seul code-source
mais pour ce faire, il faut qu'ailleurs, une autre clef entre à chaque
fois en collision une fois de plus...


Si je peux me permettre, vu qu'il y a une infinité de fichiers qui
correspondent à un hash md5 donné, il y a forcément une infinité de
codes sources qui y correspondent.


A priori, pas nécessairement.

1/ L'ensemble des md5 est plus petit que celui des fichiers,
donc il y a au moins une collision, détectable en un temps
fini ;

2/ ... mais certains md5 pourraient n'avoir qu'un nombre fini
d'antécédents, voire même une infinité, dont un seul source
correct.

--
Jacques L'helgoualc'h

« C'est bien plus beau lorsque c'est inutile »


Avatar
Etienne de Tocqueville
"Eric CHAPUZOT" a écrit sur fr.comp.securite :

il peut y avoir des phénomènes de logaritmisation locaux cachés
mais comme on ne fait que transformer un
stateMd5 (4dword=4*4 octets) en un autre StateMd5
via un blockMd5 de 64 octets
je pense qu'il y a des chances non-négligeables...


Je n'ai pas trop suivi le raisonnement qui permet de laisser penser
ça...

... mais j'y mettrais même pas mon petit doigt d'orteil à couper...
surtout que les gugusses qu'on fait ca étaient des mordus des grands nombres
premiers (p+1)(n-1)


(p+1)(n-1) n'est pas un nombre premier, puisqu'il peut se diviser par
(p+1) et par (n-1)...

et qui dit multiplication, dit pas loin d'exponentiation


et qui dit multiplication, dit pas loin de l'addition. Pas loin de la
choucroute non plus, d'ailleurs...

que les textes à 17 octets n'occupent que la moitié des clefs md5 n'est pas
impossible du tout...


Un textes à 17 octets occupent bien pas plus de 0.125% des clés md5,
puisque ça ne fait au mieux que 119 bits !

Avatar
Jacques L'helgoualc'h
Fabien LE LEZ a dit :

On 19 May 2004 23:18:06 GMT, Emmanuel Florac
wrote:

Si je peux me permettre,


AMHA, non (cf plus bas) ;-)

vu qu'il y a une infinité de fichiers qui correspondent à un hash md5 donné,


Je ne connais pas assez bien l'algorithme MD5 pour avoir un avis sur
ce point, je te fais confiance.


Non, là c'est simple et indépendant de la fonction md5, dès
qu'on considère l'infinité de fichiers face à un nombre fini de
valeurs md5...

il y a forcément une infinité de codes sources qui y correspondent.



C'est plausible car calculer le md5 et compiler n'ont pas
grand-chose à voir ; mais c'est invérifiable -- les calculs
bruts sont déjà beaucoup trop longs, alors si on ajoute
là-dessus la compilabilité...

Pour trouver une faiblesse à la fonction md5, il faudrait avoir
une propriété relativement simple du fichier, et démontrer ce
qui lui arrive via le calcul md5 ; mais les trucs évidents ont
sûrement déjà été testés !
--
Jacques L'helgoualc'h
md5(x) = d41d8cd98f00b204e9800998ecf8427e


Avatar
Eric CHAPUZOT
"Guillermito" a écrit dans le message de
news:1o3cnj7bevpl4
Le MD5 du texte "Guillermito" est ad33e1a0dddb4053f4cdf92e6c5d7b66.

Si vous, Eric Chapuzot, grâce à votre programme magique, trouvez
n'importe quel fichier, texte ou pas, qui a le même MD5 que ci-dessus
dans le mois qui vient, je vous donne 1000 dollars. Je le jure ici en
public devant tout le monde. Je ne les ai pas, mais je les trouverai.
D'ailleurs, vous n'en aurez pas besoin puisque vous deviendrez
instantanément millionnaire avec une telle découverte.


haha, voilà qui me parait super-intéressant... d'un coup ma stat à 75 %
passe à 49%-51%

allez, je vais être magnanime, je fait mon ch'ti programme et je t'en donne
même 10 ou 100 ou 1000 si tu y tiens... mais, je te préviens, y aura pas
grand chose qui ressemblera probablement à un quelconque texte lisible. Rien
que du l'octet...
int(log(100))=2---int(log(999))=2
É.chap.
allez, j'annule même ta dette de 1000 $ si une fois que j'ai fait c'te
connerie, tu me dis où faut empocher les $1 000 000 et comment...
j'en ai pour 3 jours à une semaine, je pense, le temps de taper toute la
matrice de transfert à l'envers.

Avatar
Eric CHAPUZOT
2/ ... mais certains md5 pourraient n'avoir qu'un nombre fini
d'antécédents, voire même une infinité, dont un seul source
correct.



ca on est assuré de source infinie pour tous les md5 quand même :
pour chaque paquet de 64 dword, le md5state refait un tour par la matrice de
transfert.
donc:
md5=T(p64)=T(T(p64+p64'))=T(T(T(p64+p64'+p64'')))...
et dans l'autre sens: p64x=T-1(md5)...
si c'est bijectif, ca assure au moins un prochain fichier à 64 octets plus
loin... pire si ca ne l'est pas.
mais bon, ca peut être aussi plus près.
donc, c'est assuré, le +1 collision existe sur toutes les empreintes md5. et
quand on fait +1+1+1...on obtient l'infini...

Avatar
Emmanuel Florac
Le Thu, 20 May 2004 13:13:34 +0000, Jacques L'helgoualc'h a écrit :


2/ ... mais certains md5 pourraient n'avoir qu'un nombre fini
d'antécédents, voire même une infinité, dont un seul source
correct.


C'est là que je manque quelque chose...

--
De longs désirs, une longue admiration sans espérance, voilà le moyen
d'adorer les femmes, et de rendre l'amour une passion délicieuse!
N. Rétif de la Bretonne.

Avatar
Emmanuel Florac
Le Thu, 20 May 2004 11:34:12 +0000, Fabien LE LEZ a écrit :


vu qu'il y a une infinité de fichiers qui correspondent à un hash md5
donné,


Je ne connais pas assez bien l'algorithme MD5 pour avoir un avis sur ce
point, je te fais confiance.



Il n'y a pas besoin de connaître l'algorithme pour cela; il existe un
nombre fini de hash md5 (2^32 ou à peu près, si j'ai suivi), par contre
on peut toujours définir de nouvelles combinaisons de lettres, de
chiffres et signes de ponctutation de taille arbitraire obéissant à une
syntaxe donnée.

il y a forcément une infinité de codes sources qui y correspondent.


Soit un hash MD5 donné, et soit N un entier positif. On considère
l'ensemble des fichiers de taille supérieure à N, qui correspondent à
ce MD5.
Comment comptes-tu prouver qu'il y a, parmi ces fichiers, un code source
valide ?


Un code source est une série de caractères qui obéit à une syntaxe. Par
exemple "exit;" répété un nombre quelconque de fois est un code source
perl valide (et on doit pouvoir prouver qu'il existe un code
valide composé de la répétition d'un seul syntagme pour n'importe quel
langage Turing-complet, mais je laisse ça aux mathématiciens pointus
comme M. Chapuzot :). Il y a donc une infinité de codes sources
correspondant aux répétitions de "exit;" en perl, et par la même une
infinité de codes sources constitués uniquement de répétitions de
"exit;" correspondant à un md5 donné.

--
Dix grammes d'abstraction valent des tonnes de bricolage.
Loi de Booker.


Avatar
Eric CHAPUZOT
"Etienne de Tocqueville" <et+ a écrit dans le message
de

Du coup, tu peux obtenir le MD5 que tu souhaite sans pour autant changer
la signification du fichier d'origine.

... C'est juste une question de temps ;-)


dans un post qui n'est pas paru, j'affirmais une autre chose en ce sens...
en ajoutant un texte-code bien calculé, on peut faire :
md5('mon message secret')=md5('cours de philo'+texte-code)

mais le texte-code aura des allures de
'hjdhksdsdiisidvpwxphjcnxwphvsdbvdsbvi bvb<vi<'
pas très discret pour tromper son ennemi.

Avatar
Xavier Roche
Eric CHAPUZOT wrote:
haha, voilà qui me parait super-intéressant... d'un coup ma stat à 75 %
passe à 49%-51%
allez, je vais être magnanime, je fait mon ch'ti programme et je t'en donne
même 10 ou 100 ou 1000 si tu y tiens... mais, je te préviens, y aura pas
grand chose qui ressemblera probablement à un quelconque texte lisible. Rien
que du l'octet...
int(log(100))=2---int(log(999))=2


Bon, on arrête ce thread qui part en c*illes et on continue sur
fr.misc.crypto avec Lheureux qui pourra donner des arguments au moins
aussi convaincants ?
(Je déconne pour la 2e proposition)

Avatar
Arnaud Gomes-do-Vale
Jacques L'helgoualc'h writes:

vu qu'il y a une infinité de fichiers qui correspondent à un hash
md5 donné,


Je ne connais pas assez bien l'algorithme MD5 pour avoir un avis sur
ce point, je te fais confiance.


Non, là c'est simple et indépendant de la fonction md5, dès
qu'on considère l'infinité de fichiers face à un nombre fini de
valeurs md5...


C'est tout à fait dépendant de la fonction md5 et je soupçonne (sans
connaître la dite fonction) que c'est loin d'être simple. Tout ce que
tu viens de montrer, c'est qu'il existe au moins un hash md5
correspondant à une infinité de fichiers, pas que c'est le cas de tous
les hashes.

--
Arnaud



5 6 7 8 9