• Aucun résultat trouvé

Partie II Cryptographie à seuil 79

Chapitre 5 Cryptosystèmes partagés sûrs contre les attaques à chiffrés choisis 127

5.4 Exemples

les requêtes de déchiffrement sont des chiffrés valides (sous l’hypothèseNIZK). Ainsi, l’avantage est plus grand queε/2, grâce aux résultats sur le chiffrement multicast [2, 4] (excepté un avantage possible dans le jeu réel grâce à une attaque sur la significativité). Donc,

pr[b? =b0|b00=b0]≥ ε/2 + 1

2 −Pr[¬NIZK] = ε 4+ 1

2−Pr[¬NIZK].

– dans le cas b00 6= b0, même un adversaire tout puissant qui sait déchiffrer a0 et a1, obtiendra m0 et m1. Par conséquent, il ne pourra pas obtenir un avantage. Cependant, l’adversaire qui le détecte peut choisir de ne jamais s’arrêter ou de tricher. S’il décide de ne jamais s’arrêter, le time-out lancé parBtirera un bit. S’il décide de tricher, il n’aura pas d’information surb0. Alors, pr[b?=b0|b006=b0] = 1/2.

Par conséquent, ε0+ 1

2 ≥

pr[b? =b0|b00=b0] +pr[b? =b0|b00 6=b0] 2

·Pr[NIZK]

≥ 1 2 ·ε

4 + 1−Pr[¬NIZK]

·Pr[NIZK]≥ 1 2 ·

ε

4 + 1−9

4·Pr[¬NIZK]

. Ainsi,

ε0 = 2Pr

b?=b0

−1≥

ε−9·Pr[¬NIZK]

4 .

Afin de borner supérieurement Pr [¬NIZK], nous jouons le même jeu mais en connaissant les deux clés secrètes. Alors, dès que l’adversaire produit une preuve acceptée pour un mot non valide, nous le détectons, et nous le retournons. Ceci brise la significativité simulable en temps t: Pr [¬NIZK] ≤

Succsim−nizk(t). ut

u t

5.3.5 Adversaire actif

Il est clair que dans le cas distribué cette preuve est toujours valable quelque soit l’adversaire. Nous avons fait une preuve rigoureuse sans corruption. Si le schéma sous-jacent est sûr contre les adversaires IND-TCPA, le nouveau évite aussi le même type d’adversaireIND-TCCA.

5.4.1 Cryptosystème El Gamal Description du Cryptosystème El Gamal

Soit pun nombre premier sûr tel queq|p−1soit aussi un nombre premier, etgun élément deZp

d’ordre q. Nous notons Gle sous-groupe deZp des éléments d’ordre q. Il est engendré par g. Posons y = gx la clé publique correspondant à la clé secrètex. Pour chiffrer un messageM ∈ G, on choisit au hasardr ∈Zq et on calcule le chiffré(M.yr, gr). Pour déchiffrer un chiffréa = (α, β), le receveur calcule βαx = M.ygr xr = M caryr = gxr. Il est bien connu que la sécurité sémantique de El Gamal est basée sur le problème Diffie-Hellman Décisionnel (DDH) comme on l’a vu dans la première partie.

VersionIND-CPAà Seuil du Cryptosystème El Gamal

La clé secrètexest partagée avec un partage de secret à la Shamir. Chaque serveur reçoit une part skide la clé secrètesket une clé de vérificationvki =gski. Pour déchiffrer un chiffréa= (α, β), chaque serveur calcule une part de déchiffrement βi = βski, et prouve queloggvki = logββi. Le combineur choisit un sous-ensembleSdet+ 1parts correctes et calcule

βx =Y

i∈S

βλ

S 0,i

i modp

oùλSi,0représente le coefficient de Lagrange. Enfin, le combineur calculeα/βxmodppour reconstituer le clair. Il est facile de montrer que si un adversaire peut casser la sécurité sémantique de ce système de chiffrement, on peut alors construire un attaquant qui sait casser la sécurité sémantique de El Gamal.

VersionIND-CCAà seuil du Cryptosystème El Gamal

Il est par conséquent possible d’appliquer notre conversion générique. SoitGun groupe engendré par g. L’algorithme de génération de clé est exécuté deux fois et les clés publiques sonty0=gx0 ety1=gx1. Pour chiffrer un messageM, l’émetteur calculea0 = (M·y0r, gr) = (α0, β0)eta1 = (M ·y1s, gs) = (α1, β1). La preuve d’égalité de clairs consiste à prouver l’existence deretstels queβ0 =gr1 =gs etα01 =y0ry−s1 .

A cette fin, on choisit des randomsa, b ∈ Zq, et calcule A = ga,B = gb etC = y0ay1b. Alors, on obtient le challenge aléatoiree∈ Zqd’une fonction de hachage qui est supposée se comporter comme un oracle aléatoire :e=H(g, y0, y1, a0, a1, A, B, C). Enfin, on calculeρ =a−remodq etσ = b+ semodq. Cette preuve peut être facilement vérifiée parA=gρβ0e,B =gσβ1−e, etC=yρ0yσ101)e, ou de manière équivalente par

e=H(g, y0, y1, a0, a1, gρβ0e, gσβ1−e, yρ0yσ101)e), où la preuve consiste en le triplet(e, ρ, σ).

Le processus de déchiffrement est simple en utilisant la même technique que celle présentée avant, mais deux fois, après avoir vérifié la validité du chiffré.

Analyse de sécurité.

Le cryptosystème à seuil de base El Gamal est clairement IND-CPA comme nous l’avons prouvé dans le chapitre 2. La conversion générique fait que la nouvelle proposition estIND-TCCA, mais sous la condition que la preuve précédente d’égalité de clairs soit significative simulable. Nous allons donc le prouver.

D’abord, nous devons être capable de construire une listeQde preuves acceptées pour des mots dans ou en dehors du langage. Ceci peut être fait facilement, grâce à la propriété de l’oracle aléatoireH: on choisitρ,σetedansZq, et définissons

H(g, y0, y1, a0, a1, gρβ0e, gσβ1−e, yρ0yσ101)e)←e.

Maintenant, supposons qu’avec un accès à cette liste de preuves, un adversaire soit capable de forger une nouvelle preuve pour un faux mot(pk0,pk1, a0, a1), avec probabilitéν, en tempst. Comme tout est incorporé dans la question à l’oracle aléatoireH, on peut appliquer le lemme de bifurcation [151], qui dit que

Lemme 6 Soit A une machine de Turing probabiliste en temps polynomial qui peut poser qh ques-tions à l’oracle aléatoire, oùqh>0. Nous supposons qu’en temps bornét,Aproduise, avec probabilité ν ≥7qh/q, une nouvelle preuve accepté(g, y0, y1, a0, a1;A, B;e;ρ, σ)pour un faux mot(pk0,pk1, a0, a1).

Alors, en tempst0≤16qht/ν, et avec probabilitéν0≥1/9, un rejeu de cette machine retournera deux preuves acceptées pour un faux mot(pk0,pk1, a0, a1):

(g, y0, y1, a0, a1;A, B;e00, σ0)et(g, y0, y1, a0, a1;A, B;e11, σ1), avece0 6=e1modq.

Supposons que l’adversaire n’a pas cassé la collision de la fonction de hachageH, alors gρ0β0e0 = gρ1βe01, gσ0β1−e0 = gσ1β1−e1

y0ρ0y1σ001)e0 = y0ρ1yσ1101)e1 et alors,

β0=gρ, β1 =gσ, etα01 =y0ρy1−σ, où

ρ= ρ1−ρ0 e0−e1

modq, etσ= σ0−σ1 e0−e1

modq.

Ainsi α0 =M0y0ρ, etα1 =M1y1σ, nous obtenons finalementM0 = M1, ce qui signifie que le mot est dans le langage, à moins que l’on ait trouvé une collision pour H. Mais sous l’hypothèse de l’oracle aléatoire, pour obtenir une probabilité plus grande que 1/9 pour trouver une collision, on doit avoir demandé plus que√

q/3questions àH, en utilisant le paradoxe des anniversaire, et ainsi 16qht

ν ≥t0

√q 3 τ, oùτ est le temps nécessaire pour une évaluation deH. Ceci mène à

Succsim−nizk(t)≤ν ≤48qh

√q t τ

et prouve la significativité du système de preuve. Mais comme ce lemme est toujours valable, même pour un adversaire avec des informations auxiliaires (la listeQ), ceci prouve aussi la significativité simulable.

5.4.2 Cryptosystème de Paillier

Pour être complet, nous rappelons le chiffrement de Paillier et sa version distribuée présentée au chapitre précédent.

Rappel du système de chiffrement

Le système de chiffrement de Paillier est basé sur les propriétés de la fonction lambda de Carmichael dansZN2. PosonsN un module RSAN = pq, oùpetq sont des nombres premiers. Soitg un entier d’ordre un multiple de N modulo N2. La clé publique est pk = (N, g) et la clé secrète est sk = λ(N). Pour chiffrer un message M ∈ ZN, on choisit au hasardx ∈ ZN et on calcule le chiffré c = gMxN modN2. Pour déchiffrerc, on calcule

M = L(cλ(N)modN2)

L(gλ(N)modN2) modN

où la fonctionLprend ces éléments dans l’ensembleSN ={u < n2|u= 1 modN}et vérifieL(u) = (u−1)/N. La sécurité sémantique est basée sur la difficulté de distinguer lesN-ièmes résidus modulo N2.

Rappel de la versionIND-CPAà seuil du Cryptosystème de Paillier

On rappelle brièvement le schéma décrit dans le chapitre précédent pour clarifier les notations. On rappelle que l’on note∆ =n!oùnest le nombre de serveurs.

Algorithme de Génération de Clés : SoitN un entier, produit de deux nombres premiers sûrspetq, tels quep= 2p0+ 1etq = 2q0 + 1etpgcd(N, ϕ(N)) = 1. On peut remarquer que l’exigence sur les nombres premiers sûrs peut être évitée si on utilise [57, 75]53. Cependant, pour simplifier la présentation, nous supposerons que le module RSA est composé de nombres premiers sûrs. Posonsm=p0q0. Soitβ un élément aléatoirement choisi dansZN.

La clé secrètesk =β×mest partagée avec un schéma de partage à la Shamir [170] modulomN.

Soitvun carré qui génère avec probabilité écrasante le groupe cyclique des carrés deZN2. Les clés de vérificationvkisont obtenues avec la formulev∆ski modN2.

Algorithme de Chiffrement : Pour chiffrer un messageM, on choisit aléatoirementx ∈ ZN et on calculec=gMxN modN2.

Algorithme de Déchiffrement Partiel : Lei-ième joueurPicalcule la part de déchiffréσi =c2∆ski mod N2en utilisant sa part de la clé secrèteski. Il génère une preuve de validité qui garantit quec4∆modN2 etvmodN2ont été élevés à la même puissanceski afin d’obtenirσ2i etvki.

Algorithme de Reconstruction : Si moins det+ 1parts de déchiffrement ont des preuves correctes de validité, l’algorithme de reconstruction échoue. Sinon, soit S l’ensemble det+ 1 parts valides, on peut calculer le clair en utilisant la formule d’interpolation de Lagrange dans les exposants.

Dans le chapitre précédent, nous avons prouvé le théorème suivant :

Théorème 19. Sous l’hypothèse décisionnelle de résiduosité modulo un nombre composé et dans le modèle de l’oracle aléatoire, la version à seuil du système de chiffrement de Paillier estIND-TCPAcontre des adversaires actifs et statiques.

53. Ces articles permettent d’utiliser le protocole de Shoup [174] en évitant les nombres premiers sûrs. Ils partagent ainsi complètement le cryptosystème de Paillier du protocole de génération des clés au processus de déchiffrement. En effet, il est apparemment difficile de générer des modules RSA sûrs en utilisant le protocole [27].

VersionIND-CCAà seuil du Cryptosystème de Paillier Il est alors possible d’appliquer notre conversion générique.

Algorithme de Génération des Clés : Choisir, pourj = 0,1, un entierNj, produit de deux nombres premiers sûrspj etqj. Posonsmj = (pj−1)(qj−1)/4. Soitβj un élément choisi au hasard dansZNj. Les clés secrètesskjj ×mj sont partagées avec un partage de secret à la Shamir [170] modulo mjNj. Soitvj un carré générateur du groupe cyclique des carrés deZN2

j

. Les clés de vérification vkj

sont obtenues avec la formulev∆ski,j modNj2.

Algorithme de Chiffrement : Pour chiffrer un messageM, il faut tirer au hasardxj ∈ZNjet calculer aj =gjMxNjj modNj2. Ensuite, il faut calculer une preuve que a0 eta1 chiffrent la même valeur. Pour cela, soit r un élément choisi au hasard dans [0, A[, et des éléments aléatoiresαj ∈ ZNj. Calculons yj = grjαNjj modNj2. Posonsela valeur de la fonction de hachageH(g0, g1, a0, a1, y0, y1) oùH est une fonction de hachage qui retourne des valeurs dans l’intervalle[0, B[. Alors, on posez=r+e×M, ujjxej modNjUne preuve d’égalité est un quadruplet

(e, z, u0, u1)∈[0, B[×[0, A[×ZN1 ×ZN2 Il est vérifié par l’équation

e=H(g0, g1, a0, a1, gz0uN00/ae0modN02, g1zuN11/ae1 modN12) Le processus de déchiffrement est identique à celui du chapitre précédent.

Il est remarquable que la conversion générique du cryptosystème de Paillier conserve les propriétés homomorphiques :E(M1+M2)≡ E(M1)×E(M2)etE(kM)≡ E(M)k. Par exemple, dans les schémas de vote, comme [56, 1], l’autorité peut vérifier les preuves universellement de validité des chiffrés et calculer le total. Cependant, le résultat (produit des chiffrés) ne sera plus un chiffré valide car on ne peut pas recalculer la preuve à moins de connaître une trappe comme on le verra dans la section suivante.