• Aucun résultat trouvé

Sch´ emas de signature classiques avec oracles al´ eatoires

4.4. Sch´emas de signature classiques avec oracles al´eatoires

Plutˆot qu’une fonction de padding, une simple fonction de hachage peut ´egalement ˆetre utilis´ee. La plus courante dans le cas duRSAest la fonction de hachage sur le domaine complet (en anglais,Full-Domain Hash, not´eeFDH), donnant lieu `a la signature RSA-FDH[BR93].

Sig.RSA-FDH[RSA78,BR93] Initialisation des param`etres : Une famille de fonctions de hachage sur tout le domaineHn:M →Zn est d´efinie.

G´en´eration de cl´es : Pour g´en´erer une paire de cl´es, l’utilisateur choisit un exposant public e > 2 impair, et g´en`ere un module RSA n = pq de

`n bits, tel que (p−1)(q−1) et e soient premiers entre eux. Ensuite, l’utilisateur calcule d=e−1 mod (p−1)(q−1).

La cl´e priv´ee de l’utilisateur estdtandis que sa cl´e publique est (e, n).

Signature : Pour signer un message m ∈ M, l’utilisateur calcule la valeur s=Hn(m)dmodn. La signature de m ests.

V´erification : Pour v´erifier une signaturesd’un messagem, il suffit de tester siHn(m) =semodn, auquel cas la signature est accept´ee.

RSA-FDH poss`ede, dans le mod`ele de l’oracle al´eatoire une r´eduction lˆache vers le probl`eme RSA[BR93,Cor00] (voir Section4.5.1). Notons que dans [KW03],Jonathan Katz etNan Wang ont propos´e une variante tr`es proche deRSA-FDHposs´edant une s´ecurit´e fine.

De fa¸con g´en´erale, les signatures RSA font une taille de `n bits. D’apr`es les algorithmes connus pour r´esoudre le probl`eme RSA, les param`etres choisis sont usuellement `n = 1024, et e= 216+ 1.

4.4.2 Signature Schnorr

Nous rappelons ici la signature Schnorr, comme invent´ee par Claus-Peter Schnorr dans l’article [Sch91].

SignatureSchnorr[Sch91] Initialisation des param`etres : Un groupe Gd’ordre premier q de `q bits est choisi, ainsi qu’un g´en´erateur g. De plus, un ensembleM={0,1}`m est d´efini, et une fonction de hachageG :M ×G→Zq est choisie.

G´en´eration de cl´es : Pour g´en´erer une paire de cl´es, l’utilisateur tire un al´ea x∈Zq. Sa cl´e priv´ee est x et sa cl´e publique esty =gx.

Signature : Pour signer un message m ∈ M, l’utilisateur tire un nombre al´eatoire k∈Zq, calcule u=gk, puis c=G(m, u) et s=k+c xmodq.

La signature du messagem est alors σ= (s, c).

V´erification : Pour v´erifier une signatureσ = (s, c) d’un messagem, il faut calculer u0 = gsy−c. La signature est alors accept´ee si et seulement si c=G(m, u0).

La signature Schnorr est bas´ee sur l’heuristique de Fiat-Shamir appliqu´ee `a un Σ-protocole, et poss`ede donc, dans le mod`ele de l’oracle al´eatoire une r´eduction lˆache vers le probl`eme DL, grˆace au lemme de bifurcation [PS96].

Typiquement, un groupe G d’ordre q de 160 bits est utilis´e, pour une s´ecurit´e lˆache. Ce groupe peut ˆetre un sous-groupe deZp pour un premierpde 1024 bits, ou une courbe elliptique

4.4. Sch´emas de signature classiques avec oracles al´eatoires sur un corps premier d’environ 160 bits. Les signaturesSchnorr font une taille de 2`q bits, mais peuvent ˆetre r´eduites `a une taille de `q + 80 bits, en prenant des valeurs de challenge c plus petites [GS94].

4.4.3 Signature GQ

Dans l’article [GQ88], Louis Guillou et Jean-Jacques Quisquater ont adapt´e l’id´ee de Σ-protocole introduite par Amos Fiat et Adi Shamir, pour donner naissance `a un nouveau Σ-protocole bas´e sur le probl`eme RSA. En appliquant l’heuristique Fiat-Shamir, ces auteurs obtiennent ´egalement un sch´ema de signature, not´eGQ, bas´e sur le probl`emeRSA. Sa description est la suivante.

SignatureGQ[GQ88] Initialisation des param`etres : Un ensemble M = {0,1}`m est d´efini, et une fonction de hachageG:M ×Zn→ {0,1}`g est choisie.

G´en´eration de cl´es : Pour g´en´erer une paire de cl´es, l’utilisateur choisit un exposant public premiere >2`g, et g´en`ere un moduleRSAn=pqde `n bits, tel que (p−1)(q−1) et e soient premiers entre eux. L’utilisateur calcule alors d =e−1 mod (p−1)(q−1). Enfin, l’utilisateur prend un al´ea g∈Zn et calcule a=gdmodn.

La cl´e priv´ee de l’utilisateur estatandis que sa cl´e publique est (e, n, g).

Signature : Pour signer un message m ∈ M, l’utilisateur tire un nombre al´eatoirek∈Zn, calculeu=kemodn, puisc=G(m, u) ets=k ac mod n. La signature du messagem est alors σ= (s, c).

V´erification : Pour v´erifier une signatureσ = (s, c) d’un messagem, il faut calculer u0 = seg−c modn. La signature est alors accept´ee si et seule-ment si c=G(m, u0).

Un avantage de la signatureGQest qu’il permet un sch´ema de signature bas´e sur l’identit´e.

Dans ce type de sch´ema, la paire de cl´es est g´en´er´ee par une autorit´e, la partie publique — ici (e, n) — ´etant commune `a tous les utilisateurs et la partie priv´ee — ici d — ´etant gard´ee secr`ete par l’autorit´e. Un utilisateur d’identifiantIDpeut obtenir sa cl´e priv´ee de cette autorit´e : celle-ci est H(ID)dmodn. Ce type de signature permet une simplification de l’infrastructure `a cl´e publique ; dans le mˆeme temps, la non-r´epudiation n’est plus assur´ee, comme l’autorit´e peut signer au nom de n’importe quel utilisateur.

La signatureGQest bas´ee sur l’heuristique deFiat-Shamirappliqu´ee `a unΣ-protocole (appel´e protocole d’identificationGQ), et poss`ede donc, dans le mod`ele de l’oracle al´eatoire une r´eduction lˆache vers le probl`eme RSA, grˆace au lemme de bifurcation [PS96].

D’apr`es les fa¸cons connues `a ce jour de r´esoudre le probl`eme RSA,`g = 160 bits,`n = 1024 bits et e premier d’au moins 161 bits sont des param`etres sˆurs, pour une s´ecurit´e lˆache. Les signaturesGQ font une taille de`n+`g bits, mais peuvent ˆetre r´eduites `a une taille de `n+ 80 en prenant des valeurs de challengec plus petites [GS94].

4.4.4 Signature GPS

Le sch´ema de signature GPS fut invent´e par Marc Girault [Gir91], puis prouv´e sˆur par Guillaume PoupardetJacques Sterndans [PS98]. Il s’agit d’une adaptation du sch´emaSchnorr sur des groupes d’ordre secret. Ce sch´ema est bas´e sur la difficult´e du logarithme discret dans

un groupe Zn d’ordre secret (not´e DLn voir D´efinition 9), probl`eme qui est un probl`eme plus difficile que la factorisation.

SignatureGPS[Gir91,PS98] Initialisation des param`etres : Un module RSA n=pq de `n bits est g´ e-n´er´e. Une base g d’ordre maximal est tir´ee al´eatoirement dans Zn. De plus, un ensemble M ={0,1}`m est d´efini, et une fonction de hachage G:M ×Zn→ {0,1}`g est choisie.

G´en´eration de cl´es : Pour g´en´erer une paire de cl´es, l’utilisateur g´en`ere un al´ea x∈ {0,1}`x. Sa cl´e priv´ee estxet sa cl´e publique esty=gxmodn.

Signature : Pour signer un message m ∈ M, l’utilisateur tire un nombre al´eatoire k ∈ {0,1}`k, calcule u = gkmodn, puis c = G(m, u) et s = k+c x. La signature du messagem est alors σ= (s, c).

V´erification : Pour v´erifier une signatureσ = (s, c) d’un messagem, il faut calculer u0 = gsy−c modn. La signature est alors accept´ee si et seule-ment sic=G(m, u0).

La signature GPS est bas´ee sur l’heuristique de Fiat-Shamir appliqu´ee `a un Σ-protocole (appel´e protocole d’identificationGPS), et poss`ede donc, dans le mod`ele de l’oracle al´eatoire une r´eduction lˆache vers le probl`eme DLn, grˆace au lemme de bifurcation [PS96,PS98].

La diff´erence notable de ce sch´ema avec Schnorr est que l’ordre du groupe est secret. Aussi, la borne 2`x est choisie de telle fa¸con que le logarithme discret de y en base g soit difficile, et la borne 2`k est telle quek cache statistiquement cx (voir pour plus de pr´ecisions [PS98] ou la th`ese de Guillaume Poupard [Pou00]) : des valeurs typiques sont `x = 160,`g = 160, `k= 400 et`n= 1024.

Les signatures GPS font une taille de `k+`g bits, mais peuvent ˆetre r´eduites `a une taille de

`k+ 80 en prenant des valeurs de challenge c plus petites [GS94].

4.4.5 Signature PS

Le sch´ema de signature PSfut invent´e par Guillaume Poupardet Jacques Stern dans la publication [PS99]. Il est bas´e sur une preuve de connaissance `a divulgation nulle de connaissance de la factorisation d’un moduleRSA.

SignaturePS[PS99] Initialisation des param`etres : Un ensemble M = {0,1}`m est d´efini, et une fonction de hachageG:M × {0,1}`n → {0,1}`g est choisie.

G´en´eration de cl´es : Pour g´en´erer une paire de cl´es, l’utilisateur g´en`ere un module RSA n = pq de `n bits. Une base g d’ordre maximal est tir´ee al´eatoirement dans Zn. La cl´e publique est (n, g) et la cl´e secr`ete est x=n−(p−1)(q−1) =p+q−1.

Signature : Pour signer un message m ∈ M, l’utilisateur tire un nombre al´eatoire k ∈ {0,1}`k, calcule u = gkmodn, puis c = G(m, u) et s = k+c x. La signature du messagem est alors σ= (s, c).

V´erification : Pour v´erifier une signatureσ = (s, c) d’un messagem, il faut calculeru0 =gs−c nmodn. La signature est alors accept´ee si et seulement sic=G(m, u0) et si s∈ {0,2`k + 2`g+`n2 +1}.

4.5. Preuves classiques de sch´emas de signature