• Aucun résultat trouvé

Un nouveau sch´ ema de signature dans le mod` ele standard

Dans ce sch´ema, nous pouvons voir qu’aucune fonction de hachage n’est utilis´ee, ce qui est un avantage, obtenu malheureusement au prix d’une signature plus longue et d’une restriction aux messages courts. Si signer des messages longs est important pour l’utilisateur, il est possible d’utiliser une fonction de hachage, avec l’hypoth`ese suppl´ementaire de sa r´esistance aux collisions.

7.2.5 Sch´ema de signature Fischlin

Une derni`ere variante du sch´emaCSfut propos´ee parMarc Fischlin dans [Fis03]. Soient`n

et`h des param`etres de s´ecurit´e (typiquement,`n1024, `h160). L’ensemble des messages est M={0,1} et une fonction de hachageH:M → {0,1}`h est utilis´ee.

Sig.Fischlin[Fis03] G´en´eration de cl´es : La cl´e publique est pk = {n, x, g, h}, o`u n = (2p0 + 1)(2q0+ 1) est un moduleRSAfort de`nbits, etx, g, hsont des ´el´ements al´eatoires de QRn. La cl´e priv´ee est sk={p0, q0}.

Signature : La signature d’un message m ∈ Mest σ = (c, t, v), o`u cest un premier al´eatoire de (`h+ 1) bits, t est un entier al´eatoire de `h bits et v= (x gtht⊕ H(m))c−1modp0q0 modn.

V´erification : La signature σ = (c, t, v) du message m ∈ M est accep-t´ee si et seulement si c est un entier impair de (`h + 1) bits et x = vcg−th−(t⊕ H(m)) modn.

Une comparaison de tous les sch´emas de cette section et de celui que nous pr´esentons Sec-tion 7.3est propos´ee dans la Table 7.1.

7.3. Un nouveau sch´ema de signature dans le mod`ele standard

TSS[CJ07] G´en´eration de cl´es : L’utilisateur choisit un premier impair E de (`m+ 1) bits, g´en`ere deux modules RSA forts n et N de `n bits, de telle fa¸con que gcd(E, λ(N)) = 1, calcule D = E−1 modλ(N) et enfin tire deux

´

el´ements al´eatoiresu∈Zn etg∈ZN.

La cl´e publique est pk = {N, n, u, g, E} et la cl´e priv´ee est sk = {λ(n), D}.

Signature : Pour signer le message m ∈ {0,1}`m, il faut choisir un premier al´eatoire c de N+1

2 , N −1

, puis calculer s = uc−1modλ(n)modn et r = (c g−m)D modN.

La signature du message mest alors σ = (r, s)∈ZN ×Zn.

V´erification : Soit σ = (r, s) une signature suppos´ee du message m ∈ {0,1}`m. Pour la v´erifier, il suffit de calculer c = gmrE modN, puis de s’assurer que sc = umodn, c > 2 et (r, s) ∈ ZN ×Zn. Si cette condition est v´erifi´ee, la signature σ est accept´ee.

Remarque 1. Comme dans le sch´emaCSet dans ses variantes, il n’est pas n´ecessaire de v´erifier la primalit´e de c dans l’algorithme de v´erification. Pour TSS, nous ne devons mˆeme plus tester sa taille ou sa parit´e, mais seulement v´erifier quec>2.

Typiquement, nous pourrions avoir `m = 160 et `n = 1024, pour une utilisation avec des messages courts. Pourtant, s’il est n´ecessaire de signer de longs messages, rien n’empˆeche de prendre un param`etre `m plus grand††. Alternativement, il est possible de pr´ec´eder TSS d’une

´etape de hachage des messages, en supposant alors ´egalement la r´esistance aux collisions.

Ce sch´ema est sujet, comme bien souvent, `a de nombreuses variantes. Il est par exemple possible de l´eg`erement acc´el´erer le calcul de la signature, en pr´ecalculantg−1modN oug−D mod N et en ´evaluant alorsrcommer = (c(g−1)m)D modN ou bien commer =cD(g−D)m modN. 7.3.2 Analyse de s´ecurit´e

Dans cette section, nous montrons que la s´ecurit´e de notre sch´ema est bas´ee de fa¸con fine sur l’hypoth`ese RSAforte. Plus formellement, nous posons le th´eor`eme suivant.

Th´eor`eme 10. Supposons que le probl`eme FlexibleRSA est (τ0, ε0)-difficile. Alors, pour tout nombreqs de requˆetes permis, le sch´ema de signature TSS est (τ, qs, ε)-sˆur, o`u

ε0 > ε

2 et τ06τ+O `n5+qs`n3max(log2qs, `n) .

Dans ce th´eor`eme, la s´ecurit´e du sch´ema est entendue dans son sens le plus fort, c’est-`a-dire par la r´esistance aux falsifications existentielles faibles, sous attaques `a messages choisis.

D´emonstration. De fa¸con habituelle, la preuve est par contrapos´ee. Nous supposons qu’il existe un adversaireAcapable de produire une falsification existentielle faible avec une probabilit´e non n´egligeableε, en un temps polynomialτ, apr`es avoir eu droit `a qs requˆetes de signature.

Nous utilisons alors cet attaquantApour r´esoudre en un tempsτ0 et avec une probabilit´eε0 le probl`eme FlexibleRSA : ´etant donn´e un moduleRSAfort ˆn de `n bits et un ´el´ement al´eatoire ˆ

y∈Znˆ, nous voulons trouver une paire (ˆx,e)ˆ ∈Znˆ×N>1 satisfaisant ˆy≡xˆeˆ (mod ˆn).

Dans la version finale de notre article [CJ07], nous expliquons comment se passer de tout test surc.

††La mˆeme chose est possible dans le sch´emaCL.

Simulation. Au d´emarrage de l’attaquant, nous prenons une valeur al´eatoire b ∈ {0,1} et ex´ecutons la Simulationb d´efinie ci-dessous.

Simulation 0

– Nous posons n = ˆn. Nous choisissons alors un premier (impair) E de (`m + 1) bits. Ensuite, nous g´en´erons un moduleRSAfort al´eatoire N = (2P0+ 1)(2Q0+ 1) de `n bits, tel que gcd(E,2P0Q0) = 1 et en d´eduisons D=E−1 mod 2P0Q0. Nous choisissons un ´el´ement al´eatoire g ∈ ZN. Finalement, pour tout i ∈ {1, . . . , qs}, nous tirons un premier ci de N+1

2 , N −1

, et d´efinissons u= ˆyQici modn .

Nous cr´eons alors la cl´e publiquepk={N, n, u, g, E}. Nous pouvons voir ais´ement que l’algorithme de g´en´eration de cl´es est parfaitement simul´e.

– QuandAdemande une signature d’un messagemj ∈ {0,1}`m, pourj ∈ {1, . . . , qs}, nous simulons la signature par le calcul suivant :

rj = (cjg−mj)D modN et sj = ˆyQi6=jci modn .

Nous retournonsσj = (rj, sj) comme une signature demj. L`a encore, la simulation est parfaite.

Simulation 1

– Nous posons N = ˆn et g = ˆy. Nous g´en´erons alors un module RSA fort n = (2p0+ 1)(2q0+ 1) de `nbits, ainsi qu’un premier (impair) E de (`m+ 1) bits. Sans perte de g´en´eralit´e, nous pouvons supposer que gcd(E, λ(N)) = 1, car sinon, E permettrait de factoriser N et d’en d´eduire une infinit´e de solutions du challenge.

Finalement, nous choisissons un ´el´ement al´eatoire u∈Zn.

Nous cr´eons la cl´e publiquepk={N, n, u, g, E}. L’algorithme de g´en´eration de cl´es est parfaitement simul´e.

– QuandAdemande une signature d’un messagemj ∈ {0,1}`m, pourj ∈ {1, . . . , qs}, nous simulons la signature de la fa¸con suivante :

1. Nous choisissons un ´el´ement al´eatoirerj ∈ZN et posons cj =gmjrjE modN; 2. Sicj n’est pas un premier de N+1

2 , N −1

, nous retournons `a l’´etape 1.

Ensuite, nous calculons sj = ucj−1mod 2p0q0 modn et retournons σj = (rj, sj) comme une signature demj. La simulation est parfaite.

Utilisation de la falsification. A la fin de l’attaque, l’adversaire` A exhibe, avec une proba-bilit´eεune falsification valideσ = (r, s)∈ZN×Znsur un messagem ∈ {0,1}`m, avec (m, σ)6= (mi, σi) pour tout i∈ {1, . . . , qs}. Nous calculonsc =gmrE modN.

– Si c 6= cj pour tout j ∈ {1, . . . , qs} et si b = 0 (c’est-`a-dire que la Simulation 0 a ´et´e ex´ecut´ee), alors nous avons gcd(c,Q

ici) = 1, comme c est un entier de [0, N −1] et comme lescisont des nombres premiers deN+1

2 , N−1

. C’est pourquoi, par l’algorithme

´

etendu d’Euclide, il est possible de trouver α et β entiers tels que α c+β Q

ici = 1.

Aussi, en notant que ˆyQici ≡u≡sc (modn) et n= ˆn, nous avons ˆ

y≡yˆα cQici ≡ yˆαsβc

(mod ˆn) .

7.3. Un nouveau sch´ema de signature dans le mod`ele standard La paire (ˆx,ˆe) avec ˆx = ˆyαsβ mod ˆn et ˆe=c est donc une solution de l’instance du probl`eme FlexibleRSA.

– Si c = cj pour un certain j ∈ {1, . . . , qs} (et par cons´equent s = sj) et si b = 1 (c’est-`a-dire que la Simulation 1 a ´et´e ex´ecut´ee), alors, comme N = ˆn et g = ˆy, nous avons

gmjrjE ≡gmrE (modN) =⇒ yˆ(mj−m)≡r

rj E

(mod ˆn), sj =s .

Il est impossible d’avoir m = mj car sinon nous aurions r = rj et donc (m, σ) = (mj, σj), ce qui signifierait que la falsification ne serait pas nouvelle, et donc serait invalide. Aussi, commeEest un premier de (`m+1) bits, nous pouvons trouver des entiers αetβpar l’algorithme ´etendu d’Euclidetels queα E+β(mj−m) = gcd(E, mj−m) = 1. Ainsi, nous avons

ˆ

y≡yˆα E+β(mj−m)≡ ˆ

yα(r/rj)β E

(mod ˆn)

et la paire (ˆx,ˆe) avec ˆx= ˆyα(r/rj)β mod ˆnet ˆe=E est une solution de l’instance du probl`eme FlexibleRSA.

– Dans les autres cas, c’est-`a-dire sic =cj pour un certainj∈ {1, . . . , qs} etb= 0, ou si c 6=cj pour toutj∈ {1, . . . , qs} etb= 1, la r´eduction ´echoue.

Comme la vue de l’adversaireAest parfaitement simul´ee, et que donc celui-ci ne peut deviner bavec une probabilit´e meilleure que 12, la probabilit´e de notre r´eduction est deε/2.

Pour finir la d´emonstration, nous calculons le temps de notre r´eduction, en sachant qu’il existe un algorithme de g´en´eration de premier fort qui soit quintique, un algorithme de g´en´eration de premier qui soit quartique, que l’´evaluation des exponentiations et des inverses modulaires est cubique, et que le test de primalit´e est cubique, toutes ces complexit´es ´etant donn´ees en terme de longueur binaire.

Pour la Simulation 0, nous devons g´en´erer un module RSA N de `n bits, un premier E de (`m+ 1) bits, un inverse modulaireDet un param`etreu durant la phase de g´en´eration de cl´es ; nous devons aussi, pour chaque requˆete de signature, calculer rj et sj. L’´evaluation deu et des qs valeurssj peut ˆetre fait en O(qslog2qs) exponentiations de `n bits, en utilisant la technique de [CLP05, Paragraphe 3.3]. C’est pourquoi le temps d’ex´ecution approximatif de la Simulation 0 est deτ +O(`n5+qslog2qs`n3).

Pour la Simulation 1, nous devons de mani`ere assez similaire g´en´erer un module RSA n de `n bits et un premier E de (`m + 1) bits. Enfin, pour chaque requˆete de signature, nous devons effectuer une exponentiation, tester la primalit´e du r´esultat, et r´eit´erer jusqu’`a obtenir un premier, pour terminer par le calcul d’un inverse modulaire et d’une exponentiation. Comme la probabilit´e d’un al´ea de `n bits d’ˆetre premier est en `1

n, nous obtenons pour la Simulation 1 un temps total d’ex´ecution approximatif de τ+O(`n5+qs`n4). ut 7.3.3 Comparaison avec les autres sch´emas

Dans la Table 7.1, nous comparons les avantages et les inconv´enients des sch´emas pr´esent´es en Section 7.1 avec le sch´ema TSS. Nous incluons notamment les diff´erences de finesse des

Notamment, nous avons bien ˆe>2. Il est pour cela tr`es important de tester quec>2 dans l’algorithme de erification.

r´eductions de s´ecurit´e dans le mod`ele standard, et la taille des signatures, des cl´es publiques et priv´ees. Quand cela est n´ecessaire, nous donnons ´egalement les conditions que la fonction de hachage doit remplir (en plus de la r´esistance aux collisions).

Tab. 7.1 – Comparaison des performances.

S´ecurit´e

Longueurs Tailles

Finesse Hypoth`ese typiques σ pk sk

GHR O q1

s

Div+FlexibleRSA `n1024 `n 2`n 1

2`n

GHR (cam´el´eon) O(1) Div+DL+FlexibleRSA `n=`p= 1024

`n+`q 2`n+ 3`p 1 2`n

`q= 160 Twin-GHR O(1) FlexibleRSA `n= 1024

2`n+ 2`m 4`n `n

`m= 160

CS O q1s

FlexibleRSA `n1024

2`n+`h 3`n+`h 1 2`n

`h= 160

CL O q1

s

FlexibleRSA `n1024

2`n+ 2`m+` 4`n 1 2`n

`m= 160,`= 80 Fischlin O q1

s

FlexibleRSA `n1024

`n+ 2`h 4`n 1 2`n

`h= 160

TSS O(1) FlexibleRSA `n= 1024

2`n 4`n+`m `n

`m= 160

Pour les tailles des cl´es secr`etes, nous avons consid´er´e les faits suivants. Dans la description de GHRet des sch´emas de typeCS, nous avonssk={p0, q0}; cependant, il est possible de ne stocker que la valeurp0 et de retrouverq0 `a partir de p0 et depk. De fa¸con similaire, dansTwin-GHR, le stockage de sk={p0, P0} est suffisant, et dans TSS, il est possible de retrouversk ={λ(n), D}

`

a partir d’un facteur den, d’un facteur deN et de pk.

A partir de cette table, il apparaˆıt que` TSSetTwin-GHRsont les seuls sch´emas dont la s´ecurit´e prouv´ee, dans le mod`ele standard, se r´eduit uniquement `a l’hypoth`ese RSA forte, avec une r´eduction fine. De plus, nous voyons que cela n’est pas fait au prix d’hypoth`eses suppl´ementaires sur la fonction de hachage, comme l’indivisibilit´e du sch´ema GHR. C’est pourquoi nous avons plac´e dans une table s´epar´ee ces deux sch´emas, pour offrir une comparaison plus d´etaill´ee.

Tab. 7.2 – Comparaison entre TSSetTwin-GHR.

Premiers `a g´en´erer Tailles

Signature V´erification Longueur σ pk sk

Twin-GHR 2 2 2`m+τ 2`n+ 2`m 4`n `n

TSS 1 0 `n 2`n 4`n+`m `n

Compar´e aux signatures jumelles GHR, notre sch´ema offre une v´erification plus simple et plus rapide, car aucune g´en´eration de premier n’est effectu´ee dans la v´erification deTSS, quand deux appels `a la fonction injectiveP sont n´ecessaires dansTwin-GHR. Notons ´egalement que le

Pour simplifier la lecture, nous avons arrondi les tailles `a quelques bits pr`es.

7.3. Un nouveau sch´ema de signature dans le mod`ele standard premier g´en´er´e dansTSSpeut ˆetre calcul´e hors-ligne, contrairement `a l’un des deux premiers `a g´en´erer dans Twin-GHR. De plus, dans notre sch´ema, les signatures sont plus courtes que dans le sch´ema Twin-GHR. Tout ceci rend notre sch´ema int´eressant, du moment que le prix `a payer, une cl´e publique plus grande, n’est pas un point bloquant.

Du cˆot´e des d´esavantages, notre sch´ema produit des signatures plus longues que les sch´emas Fischlin ou GHR (mais qui restent plus courtes que celles des sch´emas CS ou CL). Un autre d´esavantage est le temps de calcul d’une signature : le sch´emaTSS n´ecessite la g´en´eration d’un premier al´eatoire de N+1

2 , N −1

. Mˆeme en utilisant des m´ethodes efficaces de g´en´eration de premier (par exemple, [JPV00]), ceci peut ˆetre tr`es consommateur de temps pour des objets cryptographiques `a faibles ressources. Aussi, nous pr´esentons dans la section suivante une version en-ligne/hors-ligne (voir les Sections 4.2.2, 5.2.1 et 6.3.4) de notre sch´ema pour r´esoudre ce probl`eme de rapidit´e.

7.3.4 Version en-ligne/hors-ligne

Soit M={0,1}`m l’ensemble des messages de notre sch´ema. Soient ´egalement `n et` deux param`etres de s´ecurit´e. Typiquement, nous pourrions avoir ` = 80 + log2(qs) = 110 et `n = 1024. Alors, une description d´etaill´ee du sch´ema TSS, dans sa version en-ligne/hors-ligne, est la suivante.

TSSen-ligne/hors-ligne[CJ07] Signature, partie hors-ligne : Pour pr´eparer un coupon, le signataire choi-sit un premier al´eatoirecde N+1

2 , N−1

, et un al´eak0 de (`n+`m+`) bits. Ensuite, il calcule s=uc−1modλ(n)modn etr =gk0cD modN, et stocke le coupon (k0, r, s).

Signature, partie en-ligne : Pour signer un message m∈ M, le signataire utilise un nouveau coupon (k0, r, s) et calcule simplementk=k0+D·m.

La signature sur le messagemestσ = (k, r, s)∈ {0,1}`n+`m+`+1×ZN× Zn.

V´erification : Soitσ = (k, r, s) la signature du messagem∈ {0,1}`m qui doit ˆ

etre test´ee. Pour la v´erifier, il suffit de calculer c=gm(r g−k)E modN, puis de s’assurer que sc = umodn et c > 2. Si cette condition est v´erifi´ee, la signature σ est accept´ee.

Il est int´eressant de noter que la g´en´eration de cl´es de cette variante de notre sch´ema reste la mˆeme que la version classique de TSSd´ecrite en Section7.3.1.

Preuve de s´ecurit´e. Nous montrons maintenant que la notion de s´ecurit´eEUF-CMAde cette version en-ligne/hors-ligne de notre sch´ema peut se r´eduire de fa¸con fine `a l’hypoth`ese RSA forte. En fait, nous prouvons exactement que si un attaquantEUF-CMA (que nous appellerons A) contre cette version en-ligne/hors-ligne existe, alors il est un attaquantEUF-CMAcontre la version classique deTSSd´ecrite en Section7.3.1.

De fa¸con plus d´etaill´ee, soit une cl´e publique cpk = {N ,ˆ n,ˆ u,ˆ ˆg,E}. Avec au maximumˆ qs

requˆetes de signature `a un oracle TSS, nous voulons produire une falsificationTSS not´ee ˆσ = (ˆr,ˆs) d’un nouveau message ˆm, en utilisant l’attaquant A.

Initialisation de l’attaquant. Nous posons pk = cpk (c’est-`a-dire {N, n, u, g, E} = {N ,ˆ n,ˆ u,ˆ ˆ

g,E}) la cl´ˆ e de la version en-ligne/hors-ligne deTSS.

Requˆetes de signature. QuandAdemande une signature (en-ligne/hors-ligne) d’un message mj ∈ {0,1}`m, pour un j ∈ {1, . . . , qs}, nous utilisons une requˆete `a l’oracle de signature TSS avec comme message ˆmj = mj et recevons en retour la signature TSS not´ee ˆσj = (ˆrj,ˆsj) telle que

ˆ

cj = ˆgmjjEˆ mod ˆN est un premier de N+ 1

2 , N −1

et sˆjˆcj = ˆumod ˆn . Ensuite, nous tirons un nombre al´eatoire kj de (`n+`m +`) bits. Nous calculons rj = ˆ

rjkj mod ˆN et posons sj = ˆsj. Nous retournons alors `a l’attaquant A la signature en-ligne/hors-ligneσj = (kj, rj, sj) du messagemj.

La signature σj est une signature valide, car cj = gmj(rjg−kj)E modN = ˆgmjjEˆ mod Nˆ = ˆcj est un premier de N+1

2 , N −1

etsjcj ≡ sˆjcˆj ≡uˆ≡u (modn).

Utilisation de la falsification : A la fin de son attaque, avec une probabilit´` e εA et en un temps τA, A retourne une falsification existentielle (non-faible) contre la version en-ligne/hors-ligne du sch´ema σ = (k, r, s) d’un message m ∈ {0,1}`m, avec m 6= mj pour toutj∈ {1, . . . , qs}.

A partir de` σ= (k, r, s), nous fabriquons la falsification existentielle (non-faible) contre le sch´emaTSS que nous notons ˆσ= (ˆr,ˆs), avec

ˆ

r =r−k mod ˆN et ˆs =s modn ,

du message ˆm =m. Il est ais´e de voir que cette falsification est une falsification valide sur un nouveau message, car, comme m 6= mj, il s’ensuit que ˆm,6= ˆmj pour tout j ∈ {1, . . . , qs}.

Finesse de la r´eduction. La distance statistique entre les kj retourn´es par la simulation et les kj qui seraient retourn´es par le v´eritable signataire est de qs2−`. C’est pourquoi, notre r´eduction r´eussit, avec une probabilit´eε>εA−qs2−`et en un temps τ 6τA+ (qs+ 1)O(`n3)

`

a transformer un attaquant EUF-CMAde la variante en-ligne/hors-ligne en un attaquant EUF-CMAde la forme classique de TSS. Comme la version classique de notre sch´ema est sˆure sous l’hypoth`ese forteRSA, la version en-ligne/hors-ligne du sch´ema est donc, elle aussi, sˆure contre les attaques EUF-CMA, sous l’hypoth`ese RSAforte, et ceci avec une r´eduction fine.

A propos des attaques` sEUF-CMA. La preuve de s´ecurit´e ci-dessus prend l’hypoth`ese de l’existence d’un attaquant EUF-CMA (et non d’un attaquant sEUF-CMA) contre la version en-ligne/hors-ligne deTSS.

Nous expliquons ci-dessous pourquoi la preuve ne serait pas valide pour un attaquant sEUF-CMA. Imaginons un tel attaquant, retournant une falsification σ = (k, r, s) 6= σj pour un message d´ej`a soumis `a l’oracle de signature m = mj, pour un certain j ∈ {1, . . . , qs}. Alors, la falsification d´eduite par la r´eduction ci-dessus est ˆσ = (ˆr,ˆs), pour le message ˆm = m. Cette falsification n’est pas forc´ementvalide, c’est-`a-dire telle que ( ˆm,σˆ)6= ( ˆmj,σˆj). En effet,

ˆ

m = ˆmj et

σ 6=σj ⇐⇒ (k,rˆk mod ˆN ,sˆ)6= (kj,rˆjkj mod ˆN ,ˆsj) =6 ⇒ (ˆr,sˆ)6= (ˆrj,sˆj) . Ceci est encore plus explicite avec un contre-exemple : si σ = (k, r, s) est une signature en-ligne/hors-ligne valide du messagem, alorsσ0 = (k+1, g rmodN, s) est ´egalement une signature

Contre les attaquessEUF-CMAet donc aussi contre les attaquesEUF-CMA.

7.4. Conclusion