OVH Cloud OVH Cloud

MD5 compromis ?

40 réponses
Avatar
Guillaume Gielly
https://www.devnullteam.org/~pmz/sha-collision.txt


Si j'ai bien compris, ils ont réussi à trouver input2 telle que
md5(input1) == md5(input2) == hash.

Maintenant si input1 doit avoir une forme spécifique ou que input2 se
dérive de input1 facile, les conséquences sont minimes, non ?

--
Guillaume Gielly

10 réponses

1 2 3 4
Avatar
Grindipo
Et bien non, les conséquences sont au contraire catastrophiques.
En effet, les algorithmes de hachage sont massivement utilisés dans les
mécanismes de signatures.
C'est la fin programmée, au moins pour quelques années, du
commerce électronique.
Bon ok. Quelle que soit l'importance de l'attaque faite sur md5, il est

désormais non fiable. Mais puisque depuis 10 ans on conseille de ne plus
l'utiliser, quelle est actuellement la fonction de hash la plus sûre ? Sur
quels critères ?
Tant qu'à changer mes habitudes, autant en prendre de bonnes !
J'avoue être un peu perdu avec toutes les nouvelles infos.

Je propose Xpost et fu2 fmc.

Grindipo

Avatar
Michel Arboi
On Thu Aug 19 2004 at 08:41, Jean-Marie Delapierre wrote:

En effet, les algorithmes de hachage sont massivement utilisés dans les
mécanismes de signatures.
[snip]

C'est la fin programmée, au moins pour quelques années, du
commerce électronique.


Il existe d'autres fonctions de hachage "prouvées solides"
(c'est-à-dire au moins équivalentes à un problème mathématique
difficile) mais elles sont terriblement lentes. Pour signer un
contrat, ça ira bien.

Et puis, on n'est pas obligé de hacher pour signer -- sauf si on
manque de puissance de calcul pour la signature.

--
http://arboi.da.ru
FAQNOPI de fr.comp.securite http://faqnopi.da.ru/
NASL2 reference manual http://michel.arboi.free.fr/nasl2ref/

Avatar
Cedric Blancher
Le Thu, 19 Aug 2004 08:09:27 +0000, Michel Arboi a écrit :
Et puis, on n'est pas obligé de hacher pour signer -- sauf si on
manque de puissance de calcul pour la signature.


Non, effectivement. Mais si on doit chiffrer en RSA une archives de 50Mo,
ça risque de :

1. prendre un temps non négligeable
2. constituer pas mal de données à transférer


--
BOFH excuse #382:

Someone was smoking in the computer room and set off the halon systems.

Avatar
Eric Razny
"Cedric Blancher" a écrit

La protection valable, c'est la signature cryptographique. On me dira que
ce procédé appelle une fonction de hashage, mais heureusement
les logiciels comme GnuPG ou GPG utilisent SHA-1 depuis longtemps. Fingers
crossed. N'empêche que je n'arrive pas à comprendre l'avantage que
certains trouvent à génèrer des sommes MD5, les coller dans un
fichier et puis signer ce fichier par rapport à signer directement les
archives...


On voit souvent ça concernant les hashs de plusieurs archives. J'imagine
(faute de mieux!) qu'ils pensent que c'est plus facile que de mettre les
signatures détachées avec les autres fichiers.

Le pire c'est quand même (et souvent!) les sites qui affichent les md5 de
leur archive sur une page web (md5 non signés bien sur)
Non seulement ce n'est pas une sécurité (la plupart du temps les fichiers à
télécharger sont sur le même serveur qui fait tourner le démon http) mais en
plus ça donne de très mauvaises habitudes à l'utilisateur (fausse impression
de sécu).

Encore faut-il que les gens vérifient la signature (cf openssh trojaned).

Malheureusement j'ai déjà vu un "admin" sous Windows[1] me dire qu'il
n'allait pas se faire chier à apprendre pgp pour "ça" (amusant, il
téléchargeait du logiciel libre avec signature... Je n'ai même pas osé lui
parler de GnuPG[2] :( )

Eric.

[1] Non, pas de troll ; il en existe aussi de très mauvais sous nunux et
xBSD :)
[2] A mon grand regret, mais ce n'était vraiment pas la peine, il était
hermétique à toute notion de sécu, hors MS-Update :((

--
L'invulnérable :
Je ne pense pas etre piratable, infectable par un trojen oui!
Vu sur fcs un jour de mars 2004.

Avatar
Eric Razny
"Cedric Blancher" a écrit dans le message de
news:
Et puis, on n'est pas obligé de hacher pour signer -- sauf si on
manque de puissance de calcul pour la signature.


Non, effectivement. Mais si on doit chiffrer en RSA une archives de 50Mo,
ça risque de :

1. prendre un temps non négligeable
2. constituer pas mal de données à transférer


Accessoirement si tu tiens à ta clef privée je te conseille fortement de
signer le hashé d'un message que je te propose et non pas le message lui
même. Ne JAMAIS signer automatiquement en RSA un message présenté [1] sinon
couic :)

Eric

[1] tu peux par contre signer le hashé du message. Mais bon, de toute façon
une signature automatique...


--
L'invulnérable :
Je ne pense pas etre piratable, infectable par un trojen oui!
Vu sur fcs un jour de mars 2004.


Avatar
Cedric Blancher
Le Thu, 19 Aug 2004 09:58:53 +0000, Eric Razny a écrit :
Accessoirement si tu tiens à ta clef privée je te conseille fortement de
signer le hashé d'un message que je te propose et non pas le message lui
même. Ne JAMAIS signer automatiquement en RSA un message présenté [1] sinon
couic :)


Je ne connais pas de système de signature électronique de message qui
signe directement en RSA les données. La signature RSA est en pratique
toujours implémentée sur un hash (signature OpenPGP par exemple).

La signature directe des données est utilisée sur des blocs de données
de taille faible, comme pour l'authentification par signature RSA.


--
Alors, une bonne fois pour toutes : le 1er janvier 2000 à 00h00h01s,
on aura déjà entamé 2001, année qui sera entièrement révolue le 1er
janvier 2001 à 00h00m00s.
-+- JCM in GNU: toujours un an d'avance sur la concurrence -+-

Avatar
Xavier Henner
Le pire c'est quand même (et souvent!) les sites qui affichent les md5 de
leur archive sur une page web (md5 non signés bien sur)
Non seulement ce n'est pas une sécurité (la plupart du temps les fichiers à
télécharger sont sur le même serveur qui fait tourner le démon http) mais en
plus ça donne de très mauvaises habitudes à l'utilisateur (fausse impression
de sécu).


Je crois surtout que les signatures MD5 des fichiers ne sont pas la au
départ pour des questions de sécurité ou pour valider le contenu.

A mon sens (et c'est comme ca que je les utilise surtout) les sommes MD5 sont
la pour s'assurer qu'on a pas eu de probleme de téléchargement.

Quand je met 3h à télécharger une image ISO, j'ai envie de
savoir s'il n'y a pas eu de probleme en cours de route avant de la
graver. Tous les protocoles de transfert ne le garantissent pas et j'ai
deja du relancer des transferts FTP ou HTTP pour cause de fichier
corrompus a l'arrivée.

Il m'arrive d'ailleurs, quand je transfère un fichier entre le boulot et
chez moi, de calculer les hash MD5.

Après, en bonus on va dire, signer le fichier de signature permet, outre
l'usage "on vérifie qu'il n'y a pas eu de probleme de téléchargement" un
usage "je sousigné toto vous assure que ces fichiers sont les miens".
Modulo le fait que toto ne se soit pas fait voler sa clef, ce dont on a
jamais aucune garantie de toutes facons.

Avec un MD5 troué, ce 2e usage a un peu de plomb dans l'aile. Le premier
reste d'actualité, une collision accidentelle de MD5 étant en pratique
impossible. Si ca se confirme, il faudra soit signer autrement, soit
utiliser autre chose comme algo de hashage.

--
Xavier Henner

Avatar
Eric Razny
"Cedric Blancher" a écrit


Accessoirement si tu tiens à ta clef privée je te conseille fortement de
signer le hashé d'un message que je te propose et non pas le message lui
même. Ne JAMAIS signer automatiquement en RSA un message présenté [1]
sinon


couic :)


Je ne connais pas de système de signature électronique de message qui
signe directement en RSA les données. La signature RSA est en pratique
toujours implémentée sur un hash (signature OpenPGP par exemple).


J'aurais peux être du le préciser mais je répondais dans le contexte mis en
place par Michel Arboi :
"on n'est pas obligé de hacher pour signer ".
Ca implique il me semble qu'il parle de signer directement le message et ça
c'est une faiblesse (je ne parle même pas des problèmes pratiques -vitesse
principalement- que tu as soulevés). Il ne parlait pas des systèmes actuels
de signature (où beaucoup de gens croient que le hash n'est là que pour
résoudre le problème de vitesse [1] ).

La signature directe des données est utilisée sur des blocs de données
de taille faible, comme pour l'authentification par signature RSA.


La encore c'est le signataire qui choisi en partie les données à signer il
me semble. La vulnérabilité est présente quand on accepte de signer par RSA
un message alien sans vérification.

Eric

[1] C'est un exemple parmis tant d'autre qui montre que l'implémentation de
la crypto ne s'improvise pas et que les bricolages sont souvent dangereux
pour la sécu :)

--
L'invulnérable :
Je ne pense pas etre piratable, infectable par un trojen oui!
Vu sur fcs un jour de mars 2004.


Avatar
Jean-Marc Desperrier
Grindipo wrote:
Bon ok. Quelle que soit l'importance de l'attaque faite sur md5, il est
désormais non fiable. Mais puisque depuis 10 ans on conseille de ne plus
l'utiliser,


Depuis 10 ans, on recommande sha-1, et md-5 était une sale habitude qui
perdurait beaucoup trop.

quelle est actuellement la fonction de hash la plus sûre ? Sur
quels critères ?


Jusqu'à présent, MD-5 était le minimum non cassé, et SHA-1 recommandé
pour prendre une marge. En fait, on savait pertinament que MD-5 était
vraiment limite, et pour les parano, qu'il était louche que Dobbertin se
soit arrété deux doigts avant de le casser après ses attaques contre MD4.

Maintenant SHA-1 est le minimum, mais justement il serait bon de prendre
de la marge, donc d'utiliser le niveau au-dessus soit sha-256 ou
sha-512, des extensions du sha-1.

Sha-1 = 160 bits = 20 octets.
Sha-256 = 256 bits = 32 octets.
Sha-512 = 512 bits = 64 octets.

L'inconvénient, c'est que cela commence à sérieusement prendre de la
place ...

Tant qu'à changer mes habitudes, autant en prendre de bonnes !


C'est une remarque légitime.
A mon avis, les meilleurs recommendations sont encore à écrire.

A mon avis, une conclusion des récents articles publiés est qu'il est
tout à fait possible que suite à une attaque ce soit toute une classe de
fonction de hachage qui s'écroule. Cela relativise l'intérêt d'un
sah-256/512. Ca peut relancer aussi le concept du mélange de deux
fonctions de hachage différente, mais je ne sais pas d'un point de vue
théorique quelle est vraiment la solidité de ce type de méthode.

Le souci est qu'aujourd'hui on dispose d'une seule brique de base, le
sha et dérivés.

Ca peut aussi pousser les techniques de hachage à base d'algo de
chiffrement, par exemple les hachés basés sur AES, d'autant que
sha-256/512 sont très lents.

Avatar
pornin
According to Jean-Marc Desperrier :
Grindipo wrote:
quelle est actuellement la fonction de hash la plus sûre ? Sur
quels critères ?


Jusqu'à présent, MD5 était le minimum non cassé, et SHA-1 recommandé
pour prendre une marge.


Avant on recommandait effectivement SHA-1. Je recommande toujours SHA-1
mais je suis moins tranquille :

-- SHA-256 & co, c'est bien mais c'est plus lent (pas très grave, la
vitesse est rarement un critère déterminant dans la pratique) et surtout
c'est plus récent. SHA-256 a été beaucoup moins analysé et attaqué que
SHA-1. Par ailleurs, SHA-1 et SHA-256 se ressemblent beaucoup, et si
SHA-1 tombe, il n'est pas rigoureusement impensable que ce soit à la
suite de type d'attaques qui s'appliqueraient aussi à SHA-256. Dans le
même genre, SHA-0 ressemble beaucoup à MD5. La différence entre SHA-0 et
SHA-1 est minime mais semble cruciale (et, pour ce que je comprends de
l'attaque sur MD5 ne peut pas marcher sur SHA-1 parce qu'elle repose sur
la non-propagation de retenues lors d'additions sur 32 bits, ce qui est
mis en échec par les rotations que SHA-1 rajoute).

-- MD5 était rassurant en ce sens qu'il était prévisible que MD5 serait
cassé avant SHA-1 (vu les similitudes, et la taille de sortie de SHA-1
supérieure). En quelque sorte, tant que MD5 tenait, SHA-1 était
tranquille. Maintenant, SHA-1 est en première ligne.


En bref, je n'ai personnellement rien de mieux à proposer que SHA-1
pour le moment. Le mieux serait que SHA-1 tienne une dizaine d'années
de plus, qu'on ait le temps de s'assurer que SHA-256 est bon, et de se
mettre à conseiller d'utiliser SHA-256.

Sinon, comme le dit Rivest, il est temps de repenser un grand coup.


Ca peut relancer aussi le concept du mélange de deux fonctions de
hachage différentes, mais je ne sais pas d'un point de vue théorique
quelle est vraiment la solidité de ce type de méthode.


D'un point de vue théorique, on a beaucoup de mal à bien définir ce que
ça veut dire, que deux fonctions de hachage sont "différentes".


--Thomas Pornin


1 2 3 4