OVH Cloud OVH Cloud

Collision sur SHA-0

29 réponses
Avatar
Jean-Marc Desperrier
A quoi sert ce groupe si l'annonce d'un truc de ce genre met plusieurs
jours pour y arriver ? Tss.

Une collision a été trouvé sur SHA-0 en utilisant un algo de Antoine
Joux (une amélioration de ses résultats de 98 avec Chabaud qui utilise
aussi une technique de Biham et Chen sur les "neutral bit") :
http://www.mail-archive.com/cryptography@metzdowd.com/msg02554.html

Premier message :
a766a602 b65cffe7 73bcf258 26b322b3 d01b1a97 2684ef53 3e3b4b7f 53fe3762
24c08e47 e959b2bc 3b519880 b9286568 247d110f 70f5c5e2 b4590ca3 f55f52fe
effd4c8f e68de835 329e603c c51e7f02 545410d1 671d108d f5a4000d cf20a439
4949d72c d14fbb03 45cf3a29 5dcda89f 998f8755 2c9a58b1 bdc38483 5e477185
f96e68be bb0025d2 d2b69edf 21724198 f688b41d eb9b4913 fbe696b5 457ab399
21e1d759 1f89de84 57e8613c 6c9e3b24 2879d4d8 783b2d9c a9935ea5 26a729c0
6edfc501 37e69330 be976012 cc5dfe1c 14c4c68b d1db3ecb 24438a59 a09b5db4
35563e0d 8bdf572f 77b53065 cef31f32 dc9dbaa0 4146261e 9994bd5c d0758e3d

Second message:
a766a602 b65cffe7 73bcf258 26b322b1 d01b1ad7 2684ef51 be3b4b7f d3fe3762
a4c08e45 e959b2fc 3b519880 39286528 a47d110d 70f5c5e0 34590ce3 755f52fc
6ffd4c8d 668de875 329e603e 451e7f02 d45410d1 e71d108d f5a4000d cf20a439
4949d72c d14fbb01 45cf3a69 5dcda89d 198f8755 ac9a58b1 3dc38481 5e4771c5
796e68fe bb0025d0 52b69edd a17241d8 7688b41f 6b9b4911 7be696f5 c57ab399
a1e1d719 9f89de86 57e8613c ec9e3b26 a879d498 783b2d9e 29935ea7 a6a72980
6edfc503 37e69330 3e976010 4c5dfe5c 14c4c689 51db3ecb a4438a59 209b5db4
35563e0d 8bdf572f 77b53065 cef31f30 dc9dbae0 4146261c 1994bd5c 50758e3d

Valeur de haché commune :
c9f160777d4086fe8095fba58b7e20c228a4006b

Il suffit de faire "openssl sha file.bin" sur un fichier binaire dont le
contenu est l'un de deux précédent pour reproduire le résultat.

Rapellons que SHA-0 est la première version de l'algorythme SHA, qui a
été précipitament retiré par le NSA suite à la découverte d'une
faiblesse que le NSA n'a jamais publié.

L'attaque a pris environ 80 000 heures CPU sur le système TERA NOVA (256
Intel-Itanium2 de BULL SA, installé au labo TERA TECH du CEA DAM).
La complexité de l'attaque est estimé à 2^51.

Apparement, ce système n'est pas listé dans le top 500 des
super-ordinateurs de 2004.
Ou bien s'agit-il en fait de l'ordinateur de Bull classé 227ème dont la
description ressemble fortement ?

10 réponses

1 2 3
Avatar
Tibo
"Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD"
http://eprint.iacr.org/2004/199.pdf
Avatar
steph
A quoi sert ce groupe si l'annonce d'un truc de ce genre met plusieurs
jours pour y arriver ? Tss.


Comme tu dis Tsss ... !
Beau boulot en tout cas.

Avatar
Jean-Marc Desperrier
Tibo wrote:
"Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD"
http://eprint.iacr.org/2004/199.pdf


C'est une très mauvais semaine pour les fonctions de hachage.
Il n'y aura guère que SHA-1 à s'en sortir indemne.

Voir le papier de Eric Rescorla qui donne une archive à télécharger pour
reproduire : md5coll.tar.gz .
http://www.rtfm.com/movabletype/archives/2004_08.html#001053

La collision est sur une variante de md5 dont le vecteur
d'initialisation est inversé.

Personne ne pense qu'il serait plus difficile de casser le vrai md5 que
celui-là, apparement la seule raison de cette inversion est une erreur
d'implémentation des auteurs.
C'est vrai que la RFC du MD5 est peu claire sur ce point, elle écrit
"word A: 01 23 45 67", mais il faut bien lire qu'il y a écrit avant
"low-order bytes first", mais c'est curieux de ce lancer dans quelque
chose comme cela sans même tester son implémentation.

Les commentaires analysent assez peu l'attaque.

L'article écrit qu'elle consiste de trouver un couple de bloc M'k et
M'ki qui vérifie une certaine propriété, et que ensuite on peut trouver
très rapidement des paires de bloc complémentaire Ni et N'i tels que :
MD5(M,Ni) = MD5(M',N'i) (',' désigne la concaténation)

Le papier écrit que la propriété à vérifier pour M'k/M'ki est :

M'k = Mk + delta C1,delta C1 = ( 0,0,0,0,2^31,....2^15,...2^31,0),s
= 4,11,14

M'ki = Mki + delta C2,delta C2 = ( 0,0,0,0,2^31,....-2^15,...2^31,0),s
= 4,11,14

Aucune explication claire sur la signification de cette équation qui est
très obscure pour ce qui me concerne.
Mais je ne prétend pas être un expert en crypto :-)

Ils expliquent ensuite pour les autres fonctions de hachage que c'est à
chaque fois une équation du même type mais avec des paramètre modifiés
qui permet de trouver les bons blocs.
D'où la conclusion qu'effectivement, ils n'auront aucun problème à
corriger l'attaque pour le vrai MD5.

Les résultats sont énormes : sha-0 cassé à 2^40, Haval-160 en 2^32, md4
à la main, 1 heure de calcul sur un IBM P690 pour md5 ...

Note : Ca peut être très puissant un IBM P690, tout dépend combien de
processeurs on assemble. Apparament celui de Shanghai n'est pas listé
dans le top 500, mais des P690 y soit présents de la 6ème à la 470ème place.

Avatar
Erwann ABALEA
Bonjour,

On Tue, 17 Aug 2004, Jean-Marc Desperrier wrote:

Tibo wrote:
"Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD"
http://eprint.iacr.org/2004/199.pdf


C'est une très mauvais semaine pour les fonctions de hachage.
Il n'y aura guère que SHA-1 à s'en sortir indemne.


Et les version étendues de SHA (256, 384, 512). Mais comme personne ne
s'en sert en pratique...

La collision est sur une variante de md5 dont le vecteur
d'initialisation est inversé.


En fait, dans leur papier, toutes les valeurs numériques ont des problèmes
d'endianness. Mais j'ai testé leurs couples de messages pour le MD4, et
effectivement, on trouve bien le même hash, qui n'est pas celui présenté
dans le papier (c'est encore étrange).

Les commentaires analysent assez peu l'attaque.


Ouaip.

M'k = Mk + delta C1,delta C1 = ( 0,0,0,0,2^31,....2^15,...2^31,0),s
= 4,11,14

M'ki = Mki + delta C2,delta C2 = ( 0,0,0,0,2^31,....-2^15,...2^31,0),s
= 4,11,14

Aucune explication claire sur la signification de cette équation qui est
très obscure pour ce qui me concerne.


La partie 's=4,11,14' désigne les entiers 32 bits concernés par les
modifications (la numérotation commence à 0, donc il s'agit ici des 5è,
12è et 14è entiers 32bits), et le (0,0,0,...) désigne les bits modifiés
(là encore, il faut considérer les entiers comme des quantités 32 bits
little-endian).

Mais ça ne semble pas suffire. J'ai tiré 64 octets au hasard, effectué les
modifications indiquées pour le MD4, et je ne trouve pas de collision.
J'ai également repris les messages proposés et changé un seul bit, et là
non plus, ça ne marche pas.

Mais je ne prétend pas être un expert en crypto :-)


Je pense qu'il faudrait être également bon en Chinois, au moins pour
comprendre leur façon de penser ;)

J'attend avec impatience les commentaires...

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
- Il n'y a pas de "newsmaster". Ici, c'est un forum libre (aussi libre
que puisse être un forum sur la hiérarchier Usenet FR, bien sûr).
[...] Réfléchis à cela.
-+- V. in GNU : les newsmasters, c'est à (hiérar)chier +-+


Avatar
Jean-Marc Desperrier
Erwann ABALEA wrote:
Bonjour,


Salut, bronzé de partout ?

On Tue, 17 Aug 2004, Jean-Marc Desperrier wrote:
M'k = Mk + delta C1,delta C1 = ( 0,0,0,0,2^31,....2^15,...2^31,0),s
= 4,11,14

M'ki = Mki + delta C2,delta C2 = ( 0,0,0,0,2^31,....-2^15,...2^31,0),s
= 4,11,14

Aucune explication claire sur la signification de cette équation qui est
très obscure pour ce qui me concerne.


[...]

Mais ça ne semble pas suffire. J'ai tiré 64 octets au hasard, effectué les
modifications indiquées pour le MD4, et je ne trouve pas de collision.
J'ai également repris les messages proposés et changé un seul bit, et là
non plus, ça ne marche pas.


L'équation décrirait seulement le couple tiré, et n'a rien à voir avec
les critères qui ont permis de le trouver ?
C'est pas vraiment ce que l'on croit comprendre dans leur papier, qui
reste sybillin.

Mais on est au coeur d'un point essentiel dans cette attaque.

Les fonctions de hachage sont censé parfaitement mélanger les bits de
façon à ce que la modification d'un seul bit change totalement le résultat.
Or là on n'en modifie que trois, et c'est en en changeant seulement
trois qu'on arrive facilement à trouver un complément qui provoque
facilement une collision.

Cela me semble donc révéler une faille majeure dans le mélange des bits
qu'est censé faire la fonction, faille dont le principe semble en plus
s'appliquer à une série d'autres fonctions de hachage.

Soit ces fonctions sont fortement cassés, et ce papier n'est que le début.
Soit il existe quelques block "faibles" qui sont mal mélangés, sans que
cela soit applicable à la majeure partie des blocs, mais cela ne veut
pas dire pour autant qu'on ne puisse pas exploiter avec des conséquence
gravissime cette faiblesse même localisée.


Avatar
WinTerMiNator
"Erwann ABALEA" a écrit dans le message de
news:
Bonjour,

On Tue, 17 Aug 2004, Jean-Marc Desperrier wrote:

Tibo wrote:
"Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD"
http://eprint.iacr.org/2004/199.pdf


C'est une très mauvais semaine pour les fonctions de hachage.
Il n'y aura guère que SHA-1 à s'en sortir indemne.


Et les version étendues de SHA (256, 384, 512). Mais comme personne ne
s'en sert en pratique...


Bonsoir,

Justement, on va peut-être s'en servir davantage!


La collision est sur une variante de md5 dont le vecteur
d'initialisation est inversé.


En fait, dans leur papier, toutes les valeurs numériques ont des problèmes
d'endianness.


Ils précisent en fin de leur article que tous leur mots sont en 32 bits avec
l'octet de poids le plus significatif à gauche. C'est vrai ou ils se sont
trompés?


--
Michel Nallino aka WinTerMiNator
http://www.chez.com/winterminator
(Internet et sécurité: comment surfer en paix)
http://www.gnupgwin.fr.st
(GnuPG pour Windows)
Adresse e-mail: http://www.cerbermail.com/?vdU5HHs5WG



Avatar
Erwann ABALEA
Bonsoir,

On Tue, 17 Aug 2004, WinTerMiNator wrote:

"Erwann ABALEA" a écrit dans le message de
news:

On Tue, 17 Aug 2004, Jean-Marc Desperrier wrote:

Tibo wrote:
"Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD"
http://eprint.iacr.org/2004/199.pdf


C'est une très mauvais semaine pour les fonctions de hachage.
Il n'y aura guère que SHA-1 à s'en sortir indemne.


Et les version étendues de SHA (256, 384, 512). Mais comme personne ne
s'en sert en pratique...


Bonsoir,

Justement, on va peut-être s'en servir davantage!


Le temps que ça va prendre pour se généraliser n'est pas nul, on est dans
la vraie vie. ;)

La collision est sur une variante de md5 dont le vecteur
d'initialisation est inversé.


En fait, dans leur papier, toutes les valeurs numériques ont des problèmes
d'endianness.


Ils précisent en fin de leur article que tous leur mots sont en 32 bits avec
l'octet de poids le plus significatif à gauche. C'est vrai ou ils se sont
trompés?


Dans leur article, les nombres sont des mots de 32 bits tels que lus par
une machine little-endian (un Intel par exemple).

Par exemple, le premier message pour le MD4 commence par '4d7a9c83'. Il
faut le prendre comme l'entier 32 bits 0x4d7a9c83 (en C), et lu par une
machine little-endian, donc son écriture sur disque donnera la suite
d'octets 0x83 0x9c 0x7a 0x4d. Donc écrire que l'octet de poids fort est
à gauche ne précise rien, personne n'écrit de nombre avec les chiffres les
plus significatifs à droite.

Le fait qu'ils aient attaqué un MD5 avec des constantes d'initialisation
'inversées' est quand même un problème. Et les valeurs de hash qu'ils
trouvent en est un autre. Enfin, que tout ça finisse quand même par
fonctionner et produire des collisions est presque un miracle. ;)

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
Press Control-Alt-$ to appease spirits.




Avatar
Francois Grieu
Jean-Marc Desperrier dit:

La collision est sur une variante de md5 dont le vecteur
d'initialisation est inversé.


Non. Les messages sont pas dans leur ordre habituel, mais
le vecteur est absolument standard. Le md5 des deux fichiers
de 1024 bits dont le contenu en hexa est:

d131dd02c5e6eec4693d9a0698aff95c2fcab58712467eab4004583eb8fb7f8955ad340609f4b30283e488832571415a085125e8f7cdc99fd91dbdf280373c5b960b1dd1dc417b9ce4d897f45a6555d535739ac7f0ebfd0c3029f166d109b18f75277f7930d55ceb22e8adba79cc155ced74cbdd5fc5d36db19b0ad835cca7e3

et

d131dd02c5e6eec4693d9a0698aff95c2fcab50712467eab4004583eb8fb7f8955ad340609f4b30283e4888325f1415a085125e8f7cdc99fd91dbd7280373c5b960b1dd1dc417b9ce4d897f45a6555d535739a47f0ebfd0c3029f166d109b18f75277f7930d55ceb22e8adba794c155ced74cbdd5fc5d36db19b0a5835cca7e3

est identique: a4c0d35c95a63a805915367dcfe6b751

Bravo aux auteurs !


François Grieu

Avatar
Erwann ABALEA
Le papier http://eprint.iacr.org/2004/199.pdf a été révisé. Les formules
ne sont pas plus claires, les messages sont toujours du little-endian, et
les hash fournis ne sont pas ceux calculés. Mais la collision fonctionne
sur le vrai MD5.

Reste à comparer les 2 papiers, j'ai conservé le précédent au bureau...

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
je suis équipé d'un PC avec PENTIUM II 300 mhz, et d'une RAM de 64 Mo,
modem USR de 58 K Pour améliorer les perfo sur Internet, vaut-il mieux
accroître la RAM ou faire passer le P II à 450 Mhz ?
-+- PL in GNU : Bien configurer son Cray T3E avec Wanadoo -+-
Avatar
Erwann ABALEA
On Tue, 17 Aug 2004, Francois Grieu wrote:

Jean-Marc Desperrier dit:

La collision est sur une variante de md5 dont le vecteur
d'initialisation est inversé.


Non. Les messages sont pas dans leur ordre habituel, mais
le vecteur est absolument standard. Le md5 des deux fichiers
de 1024 bits dont le contenu en hexa est:


Ca dépend. Quelle version du papier as-tu? Dans celle datée du 16 août,
les vecteurs sont effectivement inversés. Dans la version révisée du 17
août, ce sont les bons.

est identique: a4c0d35c95a63a805915367dcfe6b751


C'est ce que je trouve aussi avec la version révisée (heureusement).

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
Tu as une vision obsolète du Net. Les groupes sont hébergés chez les
FAI maintenant. Il FAUT que leur gestion change.
-+- Rocou in GNU : l'avenir appartient à ceux qui neuneutent tôt -+-


1 2 3