• Aucun résultat trouvé

Preuve fine pour un sch´ ema bas´ e sur l’identit´ e

Partie III. Sch´ ema de chiffrement ` a s´ ecurit´ e prouv´ ee

10.2 Preuve fine pour un sch´ ema bas´ e sur l’identit´ e

Dans cette section, nous ´elaborons une nouvelle variante bas´ee sur l’identit´e, et montrons ensuite que sa r´eduction est fine. Notre sch´ema est une continuation de l’id´ee deJonathan Katz etNan Wangexpos´ee pr´ec´edemment, dans le sens o`u nous reprenons la technique du chiffrement sous deux cl´es publiques. N´eanmoins, pour assurer une s´ecurit´e contre les attaques `a chiffr´es choisis, une modification a ´et´e n´ecessaire, de fa¸con `a pouvoir v´erifier l’´egalit´e des clairs dans les deux parties du chiffr´e.

10.2.1 Description du sch´ema Le sch´ema modifi´e se d´ecrit ainsi :

Mise en place des param`etres : L’autorit´e g´en`ere des param`etres, com-pos´es de deux groupesG1etGT d’ordreq(de taille`q), d’une application bilin´eaire e:G1×G1 →GT et d’un g´en´erateurg de G1.

Ensuite, l’autorit´e g´en`ere un al´ea x∈Zq, et calcule y=gx. Elle choisit

´egalement un param`etre de s´ecurit´e`et la longueur`m des messages, et pose M={0,1}`m. Enfin, trois fonctions de hachage H:{0,1}? →G1, G:GT ×G1 → {0,1}`m2 +`q etF :{0,1} → {0,1}` sont s´electionn´ees.

Alors, params=hq,G1,GT, e,M, g, y,F,G,Hi etskIBE=x

Extraction de cl´e : Pour g´en´erer la cl´e priv´ee de la nouvellea identit´e ID, l’autorit´e g´en`ere un bit al´eatoire bID puis calcule dID =H(ID, bID)x. La cl´e skID= (bID, dID) est alors retourn´ee.

Chiffrement : Pour chiffrer un messagem= (m0, m1)∈ {0,1}`m2 × {0,1}`m2

`

a une identit´e ID, l’utilisateur – tire un al´ea r ∈Zq;

– calcule les deux cl´es publiqueshID0=H(ID,0) ethID1=H(ID,1) ; – calcule w0 =e(y, hID0)r etw1=e(y, hID1)r;

– calculec0 =gr,c0,1 = (m0kr) ⊕ G(c0, w0),c1,1 = (m1kr) ⊕ G(c0, w1) ; – calcule la redondancef =F(m0, m1, r,ID, c0, c0,1, c1,1).

Le chiffr´e c= (c0, c0,1, c1,1, f) est alors retourn´e.

D´echiffrement : Pour d´echiffrer un chiffr´e c = (c0, c0,1, c1,1, f) ∈ G1 × {0,1}`m2 +`q× {0,1}`m2 +`q × {0,1}κ, l’utilisateur ID

– calcule wb0

ID=e(c0, dID) ;

– retrouve une partie du messagembID et l’al´ear selonmbIDkr =cbID,1 ⊕ G(c0, wb0

ID) ; – calcule w1−b0

ID =e(y,H(ID,1−bID))r;

– retrouve la seconde partie du message m1−bID selon m1−bIDkr0 = c1−bID,1 ⊕ G(c0, w1−b0

ID) ;

– si la redondancef =F(m0, m1, r,ID, c0, c0,1, c1,1) est satisfaite, le mes-sage m= (m0, m1) est retourn´e, sinon⊥ est renvoy´e.

aSi l’identit´eIDa d´ej`a re¸cu sa cl´e priv´ee, la mˆeme cl´e lui est retourn´ee.

Comme nous pouvons le voir, cette variante est plus efficace que le double chiffrement de la variante deJonathan KatzetNan Wang. En effet, un seul al´ea est n´ecessaire et surtout la taille

10.2. Preuve fine pour un sch´ema bas´e sur l’identit´e

des chiffr´es est plus petite. Une comparaison compl`ete est donn´ee en Section10.3.

10.2.2 Etude de la s´´ ecurit´e de ce sch´ema

Dans cette section, nous ´etudions la s´ecurit´e de la variante que nous proposons. Nous posons le th´eor`eme suivant, reposant sur le probl`eme qh-LBDH (voir D´efinition13).

Th´eor`eme 14. Soit A un adversaire qui attaque la s´ecurit´e s´emantique du sch´ema pr´ e-sent´e Section10.2.1, sous une attaque `a messages et identit´es choisis, apr`es avoir eu droit

`

aqhrequˆetes `a un oracle de hachage,qdrequˆetes `a un oracle de d´echiffrement etqe requˆetes

`

a un oracle d’extraction de cl´e, dans le mod`ele de l’oracle al´eatoire. Soit ε l’avantage de A, etτ son temps d’ex´ecution.

Alors il est possible d’utiliser cet attaquant pour r´esoudre le probl`eme qh-LBDH, avec une probabilit´eε0 et en un tempsτ0, tels que

ε0 > AdvIND-ID-CCA(A)

4 −2−`−1 .

et

τ06τ+ 2qdTp+ (2qe+qh+ 3qd)Te

o`u Te est le temps pour calculer une exponentiation et Tp est le temps pour calculer un couplage.

D´emonstration. La preuve de ce th´eor`eme est donn´ee sous forme de jeux successifs, `a la mani`ere d´evelopp´ee `a l’origine par Victor Shoup. Soit (g, y=gx, gα=gα, gβ =gβ)∈G14 une instance al´eatoire du probl`eme LBDH. Soit εLBDH la probabilit´e que la r´eduction r´esolve le probl`eme LBDHetεDL la probabilit´e que la r´eduction retrouve β. Nous posons y comme cl´e publique.

Jeu J0 : Ce jeu correspond `a la d´efinition du jeuIND-ID-CCA, tel que d´efini en Section8.3.2.

NotonsS0 l’´ev´enementb=b0 pour ce jeu, et Si l’´ev´enement similaire pour les jeux suivants Ji. Par d´efinition, nous avons

Pr[S0] = 1

2+AdvIND-ID-CCA(A)

2 et τ0=τ .

Les jeux suivants contiennent de nombreuses r`egles, pour chacune des ressources de l’atta-quant :

- requˆetes de hachage F(m0, m1, r,ID, c0, c0,1, c1,1) ; - requˆetes de hachage G(v, w) ;

- requˆetes de hachage H(ID, b) ;

- requˆetes d’extraction de cl´e de l’identit´eID;

- requˆetes de d´echiffrement Decrypt(c0, c0,1, c1,1, f) pour l’identit´e ID; - challenge.

L’objectif des jeux suivants est de simuler les r´eponses de ces oracles.

Jeu J1 : Le but de ce jeu est de simuler les oracles de hachage F etG, de fa¸con tr`es simple, au moyen de listesLF et LG initialis´ees au d´epart de l’attaque `a la liste vide.

I Requˆete de hachage F(m0, m1, r,ID, c0, c0,1, c1,1)

- Si une valeur (m0, m1, r,ID, c0, c0,1, c1,1, f) existe dans la liste LF, la mˆeme r´eponse f est retourn´ee ;

- Sinon, la r´eduction teste sigβ =gr, auquel cas le logarithme discret degβ en baseg est retrouv´e par la r´eduction. Dans ce cas, la r´eduction s’arrˆete ; - Sinon, si gr6=gβ, la r´eduction choisit al´eatoirement f ← {0,1}` et ajoute la

valeur (m0, m1, r,ID, c0, c0,1, c1,1, f) `a la listeLF. La valeurf est retourn´ee.

I Requˆete de hachage G(v, w)

- Si une valeur (v, w, g) existe dans la listeLG, la mˆeme r´eponsegest retourn´ee ; - Sinon, la r´eduction choisit al´eatoirement g← {0,1}`m2 +`q et ajoute la valeur

(v, w, g) `a la listeLG. La valeur gest retourn´ee.

Ce jeu est identique au jeu pr´ec´edent, sauf si la r´eponse au probl`eme DL (pouvant ˆetre trivialement transform´ee en r´eponse au challengeLBDH) est obtenue par la r´eduction :

Pr[S0]6Pr[S1] +DL et τ10+qFTe .

Jeu J2 : Dans ce jeu, nous simulons les oracles de hachageH, de fa¸con `a faire que les requˆetes d’extraction de cl´e deviennent simples `a simuler `a partir du jeu suivant. Pour cela, au d´ebut du jeu, la r´eduction tire une fonction al´eatoire B :{0,1} → {0,1}, permettant de calculer, pour chaque identit´eID, le bitbID=B(ID). Comme pour les fonctions de hachageF etG, la fonction de hachageH est g´er´ee au moyen d’une listeLH, prenant au d´epart la valeur vide.

I Requˆete de hachage H(ID, b)

- Si une valeur (ID, b, ?, h) existe dans la liste LH, la mˆeme r´eponse h est retourn´ee ;

- Sinon, si b=bID =B(ID), alors la r´eduction choisit al´eatoirement t←Zq et poseh=gt. La valeur (ID, b, t, h) est ajout´ee `a la liste LH ethest retourn´e ; - Sinon, la r´eduction choisit al´eatoirement t← Zq et pose h =gαt. La valeur

(ID, b, t, h) est ajout´ee `a la listeLH eth est retourn´e.

Ce jeu est identique au jeu pr´ec´edent, dans le mod`ele de l’oracle al´eatoire : Pr[S1] = Pr[S2] et τ21+qHTe .

Jeu J3 : Grˆace au jeu pr´ec´edent, il est maintenant possible, pour la r´eduction, de r´epondre aux requˆetesExtract. Plus pr´ecis´ement, les r´eponses `a ces requˆetes sont maintenant simul´ees comme suit.

I Requˆete d’extraction de cl´e de l’identit´e ID

- La simulation calculebID=B(ID) puis demande la valeurH(ID, bID) `a l’oracle de hachage de la fonctionH;

- Ensuite, la r´eduction retrouve la valeur (ID, bID, t, h) dans la liste LH, et calculedID=yt;

- La cl´e (bID, dID) est alors retourn´ee.

Le bit bID est bien al´eatoire et la cl´e est bien valide, c’est-`a-dire telle que dID =H(ID, bID)x. En effet,H(ID, bID) =gtpar d´efinition deHet debID dans le jeu pr´ec´edent. Aussi, les deux jeux J2 etJ3 sont parfaitement indistinguables :

Pr[S2] = Pr[S3] et τ32+ 2qeTe .

10.2. Preuve fine pour un sch´ema bas´e sur l’identit´e

Jeu J4 : Dor´enavant, notre but est de changer la fa¸con dont nous fabriquons le challenge, de fa¸con `a inclure une partie de l’instance du probl`eme LBDH. La premi`ere fa¸con, expos´ee dans ce jeu, est fictive, c’est-`a-dire que nous supposons que la r´eduction connaˆıt la valeurβ. Dans le jeu suivant, nous verrons qu’il est possible de se passer de celle-ci.

I Challenge, pour deux messages (m0,0, m1,0) et (m0,1, m1,1) et une identit´e ID? - La simulation calculeb? =B(ID?), et pose (m?0, m?1) = (m0,b?, m1,b?) ;

- Elle calcule les deux cl´es publiqueshID0 =H(ID?,0) ethID1 =H(ID?,1) ; - Elle prend comme al´ea r=β;

- Elle calculew0 =e(y, hID0)β etw1 =e(y, hID1)β;

- Elle calcule c?0 = gβ = gβ, c?0,1 = (m?0kβ) ⊕ G(c?0, w0), c?1,1 = (m?1kβ) ⊕ G(c?0, w1) ;

- Elle calcule la redondancef? =F(m?0, m?1, β,ID?, c?0, c?0,1, c?1,1) ; - Elle retourne le challengec? = (c?0, c?0,1, c?1,1, f?) `a l’adversaire.

Clairement, ce jeu est indistinguable du pr´ec´edent, puisqueβ est bien un nombre al´eatoire.

Pr[S3] = Pr[S4] et τ43 .

Jeu J5 : Dans ce jeu, nous changeons la fa¸con dont est fabriqu´e le challenge. Le but est de pouvoir calculer celui-ci sans avoir besoin de la valeurβ.

Premi`erement, nous retournons un al´ea f? au lieu de f? = F(m?0, m?1, β,ID?, c?0, c?0,1, c?1,1) : ceci ne peut poser de probl`eme, car depuis le jeuJ1, ce genre de requˆetes ne peut plus ˆetre pos´e par l’adversaire.

Deuxi`emement, au lieu des d´efinitions du jeu pr´ec´edent, nous retournons des al´eas c?0,1 et c?1,1. Si les valeursG(c?0, w?0) et G(c?0, w?1) — o`u w0? =e(y,H(ID,0))z et w?1 =e(y,H(ID,1))z — n’apparaissent pas, ce jeu est indistinguable du pr´ec´edent.

Le challenge est alors d´efini comme suit.

I Challenge, pour deux messages (m0,0, m1,0) et (m0,1, m1,1) et une identit´e ID? - La simulation calculeb? =B(ID?) ;

- Elle posec?0 =gβ;

- Elle tire ´egalement al´eatoirement c?0,1 ← {0,1}`m2 +`q, c?1,1 ← {0,1}`m2 +`q et f? ← {0,1}`;

- Le challengec?= (c?0, c?0,1, c?1,1, f?) est retourn´e `a l’adversaire.

Les deux jeux J4 et J5 sont indistinguables, `a moins que les valeurs G(c?0, w0?) ou G(c?0, w?1) n’apparaissent. Nous noterons cet ´ev´enementBadi dans les jeuxJi suivants :

Pr[S4]6Pr[S5] + Pr[Bad5] et τ54 .

Comme le challenge ne d´epend plus des messages choisis par l’attaquant, l’avantage de celui-ci est n´ecessairement nul, c’est-`a-dire Pr[S5] = 12, et

AdvIND-ID-CCA(A)62 Pr[Bad5] + 2DL .

La fin de la preuve consiste donc `a borner la valeur de la probabilit´e Pr[Bad]. Pour cela, nous pouvons remarquer qu’il existe pour l’adversaire deux fa¸cons de connaˆıtre une des valeurs G(c?0, w?0) ouG(c?0, w1?) : soit en la demandant `a l’oracle de hachageG(not´e dans les jeux suivants

Aski), soit en la faisant intervenir dans un oracle de d´echiffrement (not´e dans les jeux suivants Colli).

AdvIND-ID-CCA(A)62 Pr[Ask5] + 2 Pr[Coll5] + 2DL . Jeu J6 : Dans ce jeu, nous simulons l’oracle de d´echiffrement.

I Requˆete de d´echiffrement Decrypt(c0, c0,1, c1,1, f) pour l’identit´e ID - Sic0 =c?0, la simulation retourne⊥, pour signifier que le message est invalide ; - Sinon, la simulation calcule bID = B(ID) et demande la valeur H(ID, bID) `a l’oracle de hachage de la fonctionH. Ensuite, la r´eduction retrouve la valeur (ID, bID, t, h) dans la liste LH, et calcule dID = yt. Avec la cl´e (bID, dID), la simulation peut proc´eder `a l’´etape de d´echiffrement telle que donn´ee dans la description du sch´ema, et retourner le r´esultat correspondant.

Ce jeu a ´et´e cr´e´e pour que, dor´enavant, nous ayons Pr[Coll6] = 0, c’est-`a-dire pour que les valeursG(c?0, w0?) ouG(c?0, w?1) ne puissent ˆetre apprises grˆace `a l’oracle de d´echiffrement. Ce jeu est indistinguable du pr´ec´edent, sauf si l’adversaire est capable de former un chiffr´e valide avec un c0=c?0. Calculons maintenant cette probabilit´e.

Pour qu’un chiffr´e (c?0, c0,1, c1,1, f) soumis par l’adversaire `a l’oracle de d´echiffrement soit un chiffr´e valide pour l’identit´e ID, il faut qu’il existe (m, r) = (m0km1, r) ∈ M ×Zq, avec r =β, tel quef =F(m0, m1, r,ID, c?0, c0,1, c1,1). Ainsi, l’adversaire pourrait avoir tent´e de :

– deviner cette valeur f = F(m0, m1, r,ID, c?0, c0,1, c1,1) sans la demander `a l’oracle de ha-chage (avec, dans le mod`ele de l’oracle al´eatoire, une probabilit´e de 2−`) ;

– demander `a l’oracle de hachage F, mais ceci est en fait impossible, car depuis le jeu J1, une telle valeur ne peut plus apparaˆıtre dans les requˆetes de l’oracle de hachageF; – connaˆıtre f = F(m0, m1, r,ID, c?0, c0,1, c1,1) grˆace au challenge — c’est-`a-dire utiliser la

relation implicite (?, ?, z,ID?, c?0, c?0,1, c?1,1, f?) d´efinie dans le jeuJ5: ceci est impossible, car alors le chiffr´e soumis `a l’oracle de d´echiffrement serait pr´ecis´ement le chiffr´e du challenge, ce qui est interdit.

Aussi

AdvIND-ID-CCA(A)62−`+1+ 2 Pr[Ask6] + 2DL et τ65+qd(3Te+ 2Tp) .

Jeu J7 : Finalement, nous s´eparons l’´ev´enementAsk en deux : AskGood, pour lequel la valeur G(c?0, wb?

1−ID?) est demand´ee par l’attaquant et AskBad, pour lequel la valeur G(c?0, wb?

ID?) est demand´ee par l’attaquant. Clairement, Pr[Ask7]6Pr[AskBad7] + Pr[AskGood7].

De plus, comme le bit bID? est indistinguable pour l’adversaire (que ce soit au niveau de l’extraction de cl´e ou de l’algorithme de d´echiffrement), Pr[AskBad7] = Pr[AskGood7], et

Pr[Ask7]62 Pr[AskGood7] . Remarquons que w?1−b

ID? vaut, par d´efinition,w?1−b

ID? =e(y, hID1−bID?)β =e(g, g)txαβ. Aussi, au cas o`u l’´ev´enementAskGood7 a lieu, la r´eduction peut retrouver (ID?,1−bID?, t, h) dans la liste LH, calculer, pour chaque ´el´ement (w, g) de la liste LG, la valeurw1t, et ainsi r´esoudre le probl`eme qh-LBDH.

En cons´equence,

Pr[Ask7]62LBDH .

10.3. Comparaison des sch´emas