Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[newbie] sha1 deux méthode & rfc 3174

27 réponses
Avatar
ptilou
Bonjour,

est que quelqu'un peut m'=E9clairer sur sha1, non sur les probl=E8me de
collision, mais sur la m=E9thode employ=E9 pour obtenir la cl=E9s de
hachage ?
( j'ai lu vaguement rfc 3174 et il y aurait deux m=E9thode ? )

Merci

Ptilou

10 réponses

1 2 3
Avatar
Erwan David
Damien Wyart écrivait :

* Francois Grieu in fr.misc.cryptologie:
Non. Voir dans FreeBSD 4.0 (17 septembre 2006)
ftp://ftp.crans.org/pub/OpenBSD/4.0/src.tar.gz
(attention c'est gros).

J'ai même trouvé, parmis de multiples variantes de sha1_update dans
cette distro, une qui est plus indiscutablement fause, différemment,
et un peu plus rarement.


Avez-vous signalé tout cela aux développeurs concernés ? Si non, c'est
assez logique que ça ne soit pas corrigé (même s'ils font des audits,
ils ne peuvent pas tout repérer), et c'est dommage que vous gardiez
l'info pour vous ; si oui, je suppose que ça sera corrigé quand ils en
auront la possibilité matérielle, sauf s'ils n'étaient pas d'accord,
mais dans ce cas, cela serait étonnant.


EUh, 4.0 c'est très vieux, freeBSD en est au 6.2 Il faudrait eut-être
d'abord vérifier que ce n'est pas déjà corrigé (4.0 doit dater de 1998
ou 1999, pas 2006)

--
Erwan


Avatar
F. Senault

Damien Wyart écrivait :

* Francois Grieu in fr.misc.cryptologie:
Non. Voir dans FreeBSD 4.0 (17 septembre 2006)
ftp://ftp.crans.org/pub/OpenBSD/4.0/src.tar.gz
^^^^^^^



EUh, 4.0 c'est très vieux, freeBSD en est au 6.2


M'est avis qu'il y a eu une petite distraction...

Fred
--
I love the smell of burning luser in the morning.
(David P. Murphy in the SDM)



Avatar
Erwan David
"F. Senault" écrivait :


Damien Wyart écrivait :

* Francois Grieu in fr.misc.cryptologie:
Non. Voir dans FreeBSD 4.0 (17 septembre 2006)
ftp://ftp.crans.org/pub/OpenBSD/4.0/src.tar.gz
^^^^^^^



EUh, 4.0 c'est très vieux, freeBSD en est au 6.2


M'est avis qu'il y a eu une petite distraction...


Oui, je crois...

--
Erwan




Avatar
Benoit Izac
Bonjour,

le 07/03/2007 à 08:07, Francois Grieu a écrit dans le message
:

Un exemple au hasard: OpenBSD, sha1.c v 1.5 2004/04/28 20:39:35
Si on passe un bloc de donnée de 512Mo ou plus (ce qui de nos
jours n'a rien d'impossible) à SHA1Update, le résultat est faux.


ça a été corrigé, je suppose ?


Non. Voir dans FreeBSD 4.0 (17 septembre 2006)
^^^^^^^

OpenBSD
ftp://ftp.crans.org/pub/OpenBSD/4.0/src.tar.gz
(attention c'est gros).


On peut consulter les sources et historiques en ligne sur le cvsweb :
http://www.openbsd.org/cgi-bin/cvsweb/src/sys/crypto/sha1.c

--
Benoit Izac



Avatar
Francois Grieu
On 7 mar, 09:03, Damien Wyart wrote:
* Francois Grieu in fr.misc.cryptologie:

Non. Voir dans FreeBSD 4.0 (17 septembre 2006)
ftp://ftp.crans.org/pub/OpenBSD/4.0/src.tar.gz
(attention c'est gros).
J'ai même trouvé, parmis de multiples variantes de sha1_update dans
cette distro, une qui est plus indiscutablement fause, différemment,
et un peu plus rarement.


Avez-vous signalé tout cela aux développeurs concernés ? Si non, c' est
assez logique que ça ne soit pas corrigé (même s'ils font des audit s,
ils ne peuvent pas tout repérer), et c'est dommage que vous gardiez
l'info pour vous ; si oui, je suppose que ça sera corrigé quand ils en
auront la possibilité matérielle, sauf s'ils n'étaient pas d'accord,
mais dans ce cas, cela serait étonnant.


Je viens de passer 30 minutes à faire un email de bug report à
OpenBSD.
Ma conscience est donc maintenant en paix.

François Grieu


Avatar
Francois Grieu
Erwan David a écrit:

* Francois Grieu in fr.misc.cryptologie:
Non. Voir dans FreeBSD 4.0 (17 septembre 2006)
ftp://ftp.crans.org/pub/OpenBSD/4.0/src.tar.gz
(attention c'est gros).


EUh, 4.0 c'est très vieux, freeBSD en est au 6.2 Il faudrait eut-être
d'abord vérifier que ce n'est pas déjà corrigé (4.0 doit dater de 1998
ou 1999, pas 2006)



Désolé d'avoir mélangé FreeBSD et OpenBSD (c'est un coup à me
faire attaquer par les deux camps, ça).
Tout ce que j'avais écrit s'appliquer à OpenBSD 4.0 et antérieur,
C'est ma ligne voir.. qui est mauvaise (l'URL est bien vers OpenBSD).

Et dans FreeBSD c'est corrigé au moins là où j'ai regardé:

l=(c->Nl+(((HASH_LONG)len)<<3))&0xffffffffUL;
/* 95-05-24 eay Fixed a bug with the overflow handling, thanks to
* Wei Dai for pointing it out. */
if (l < c->Nl) /* overflow */
c->Nh++;
c->Nh+=(len>>29); /* might cause compiler warning on 16-bit */
c->Nl=l;


François Grieu


Avatar
Francois Grieu
In article ,
Francois Grieu wrote:

J'ai même trouvé, parmis de multiples variantes de sha1_update
dans OpenBSD une qui est plus indiscutablement fause,
différemment, et un peu plus rarement.

void
isc_sha1_update(isc_sha1_t *context, const unsigned char *data,
unsigned int len)
{
unsigned int i, j;
(..)
j = context->count[0];
if ((context->count[0] += len << 3) < j)
context->count[1] += (len >> 29) + 1;

Il y a une tentative manifeste de traiter len plus grand que 512Mo
(sinon à quoi bon len >> 29 ??), mais ça ne marche pas, en particulier
quand len est exactement 512Mo. Par contre ça marche si on passe
des blocs de 510Mo, puis 515Mo (1Mo = 1048576 octets).

Il fallait écrire par exemple:
j = len<<3;
context->count[1] += ((context->count[0] += j)<j)+(len>>29);


Eh bien mon code est subtilement faux: il ne fonctionne pas si
unsigned int fait plus de 32 bits, ce qui n'a rien d'impossible
dans l'absolu. Maintenant je pense qu'il faudrait écrire:

j = (len<<3)&0xFFFFFFFF;
context->count[1] += (
(context->count[0] = (context->count[0]+j)&0xFFFFFFFF)
<j)+(len>>29);


[je commence à comprendre pourquoi ce bug persiste, et à regretter
de m'y être attaqué, quel gouffre..]

François Grieu

Avatar
Steph
[je commence à comprendre pourquoi ce bug persiste, et à regretter
de m'y être attaqué, quel gouffre..]


Est-ce que les vecteurs de tests que tu avais donnés, mettent en
évidence ce bug ?

Bon courage !

Avatar
Francois Grieu
On 8 mar, 15:14, Steph wrote:

[je commence à comprendre pourquoi ce bug persiste, et à regretter
de m'y être attaqué, quel gouffre..]


Est-ce que les vecteurs de tests que tu avais donnés, mettent en
évidence ce bug ?


Non pour les vecteurs pointés par cette page dont j'avais donné
l'adresse
http://csrc.nist.gov/cryptval/shs.htm

Oui pour ces vecteurs produits il y a longtemps en collaboration
avec Jim Gillogly pour palier à l'insuffisance des vecteurs de test
'bit'
alors disponibles, et en particulier les problèmes autour de 4Gbit,
mais seulement si le test comprend le traitement d'un vecteur de
test en un seul gros bloc
http://google.fr/group/sci.crypt/msg/bdd5ed44cca69331?dmode=source


François Grieu


Avatar
Sylvain
Francois Grieu wrote on 08/03/2007 14:54:

Eh bien mon code est subtilement faux: il ne fonctionne pas si
unsigned int fait plus de 32 bits, ce qui n'a rien d'impossible
dans l'absolu. Maintenant je pense qu'il faudrait écrire:


ne peut-on pas estimer/espérer justement que les CPU sont soit:
- 64 bits et gérer le compteur de bits sur une seule var. int64,
- 32 bits mais utilisés avec un compilo proposant un long long 64 bits,
- 8 bits et tout gérer à la main ou brider la taille maximale supporté
(pour un chip carte, par exemple, je ne me vois traiter des Go par un
tel chip de toute façon).

je ne connais pas assez les cartes HSM pour savoir si leur hard est un
32 bits strict ...

Sylvain.

1 2 3