• Aucun résultat trouvé

Conversion générique

Partie II Cryptographie à seuil 79

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

5.3 Conversion générique

Dans cette section, nous revisitons le modèle du double-chiffrement proposé par Naor et Yung [129], tout en supposant que(K,E,D)est un système de chiffrement (éventuellement à seuil) qui atteint déjà

52. LeT, Threshold, est là pour signifier protocole à seuil en anglais.

la sécurité sémantique contre les attaques à clairs choisis (IND-CPAouIND-TCPA, dans le cas distri-bué). Ainsi, nous présentons un nouveau schéma qui évite les attaquesCCA(ouTCCA, respectivement) quelque soit le type d’adversaire.

5.3.1 Description

La génération de clés : K(1k)exécute deux foisK(1k)pour obtenir deux clés publiques(pk,pk0), qui représentent la nouvelle clé publiquePK. De la même manière, on définit le nouvel ensemble de clés secrètes comme SK = {SKi}1≤i≤n = {sk,sk0} = {ski,sk0i}1≤i≤n et le nouvel ensemble de clés de vérificationVK={VKi}1≤i≤n={vk,vk0}={vki,vk0i}1≤i≤n.

Chiffrement dem

– le message m est chiffré deux fois sous deux cléspk et pk0 différentes, a0 = Epk(m) eta1 = Epk0(m);

– une preuve que les deux chiffrésa0 et a1 chiffrent le même clair m est ensuite générée, c = preuve[Dsk(a0) =Dsk0(a1)].

Déchiffrement partiel de(a0, a1, c)

– le serveur vérifie la validité de la preuvec;

– il calcule les deux parts de déchiffrement des chiffrésa0eta1(seule une peut être suffisante, mais alors le même choix aléatoire doit être fait par tous les serveurs).

Il est ensuite possible de reconstruire le clair en utilisant l’algorithme de reconstruction.

Avec cette construction générique, il n’est pas évident que la preuvecne révèle pas plus d’informa-tion (comme cela a été remarqué dans [129]), de plus une telle preuve peut rarement être rendue efficace dans le modèle standard. Cependant, le modèle de l’oracle aléatoire permet de rendre efficace des preuves zero-knowledge non-interactives [151].

5.3.2 Preuve Non-Interactive Zero-Knowledge

Dans la suite de ce chapitre, nous avons besoin d’une notion de sécurité forte sur la preuvecet sur le langage

L={(pk,pk0,Epk(m),Epk0(m))| ∀m}, appelée significativité simulable [164].

En effet, nous voulons que tout adversaireA, ayant vu une paire(x?, c?), où

x? = (pk,pk0,Epk(m),Epk0(m0))(avec m = m0 mais aussi probablement m 6= m0) etc? une preuve acceptée pourx?, ait une probabilité de succès négligeable de forger une nouvelle preuvecpour un mot x6∈ L:

Succsim−nizk(A) =Pr

(x, c)← A(x?, c?)|x∈L ∧¯ (x, c)6= (x?, c?) .

L’idée de cette probabilité de succès est que l’adversaire ne doit pas être capable de construire une nouvelle preuve à partir de preuves précédemment vues, excepté pour des mots valides (ce qui veut dire dansL). En effet, on ne peut pas empêcher l’adversaire de construire une preuve acceptée pour un mot correct choisi par lui et dans ce cas, le chiffré est valide.

De plus, l’adversaire a accès à une preuve pour un mot dansL, ou peut-être en dehors deL, parce que le simulateur créera quelques fois une preuve acceptée pour un mot qui n’est pas dansL. Une telle preuve ne devra pas donner des informations à l’adversaire non plus.

La preuvecconvainc tout le monde que le chiffré est valide avant le début du déchiffrement. Dans la preuve de sécurité, le simulateur du déchiffrement connaît une clé secrète. Mais le chiffré cible ne sera pas nécessairement valide (éventuellement avec deux messages chiffrés distincts). Grâce au modèle de l’oracle aléatoire, il est toujours possible de simuler, de manière indistinguable, une preuve acceptée même pour un faux mot, sous l’hypothèse de la difficulté du problème de décider l’appartenance (ce qui est une hypothèse plus faible que la sécurité sémantique du cryptosystème sous-jacent).

Enfin, nous présentons des preuves pratiques non-interactives zero-knowledge qui prouvent essen-tiellement la significativité simulable en utilisant la technique du lemme de bifurcation [151].

5.3.3 Preuve de sécurité

Nous montrons qu’à partir de tout adversaireAcontre un double schémaIND-CCA, il est possible de construire un adversaireBcontre le schéma originelIND-CPA, en considérant seulement les adversaires passifs. On note parSuccsim−nizk(t)la probabilité de succès d’un adversaire qui peut générer une preuve zero-knowledge non-interactive correcte sans connaître le clair en temps inférieur àt.

5.3.4 Adversaire passif

Théorème 18. Étant donné un système de chiffrement IND-CPA (ouIND-TCPA)S, la conversion double fournit un système de chiffrementIND-CCA(ou IND-TCCA, resp.) Stw, dans le modèle de l’oracle aléatoire.

Preuve: Notre preuve utilise une réduction. Étant donné un(t, ε)-adversaireAcontre la sécurité de notre schémaStwau sensIND-CCA, on construit un(t0, ε0)-attaquantBcontre la sécurité du schémaS(“tw”

pour “twin”) dans le sensIND-CPAoùt0=tetε0 =ε/4−2Succsim−nizk(t).

Avant tout, remarquons que si un système de chiffrement (classique) est IND-CPA, alors si nous chiffrons le même message sous deux clés différentes, on obtient un système de double-chiffrement toujoursIND-CPA. Ce résultat peut être montré en utilisant les techniques hybrides [98, 94] et il a déjà été formellement prouvé dans [4, 2], avec une perte d’avantage d’un facteur 2. Le lecteur intéressé peut lire la preuve au chapitre 10.

Maintenant, montrons comment faire la réduction (cf. figure 5.1). L’attaquantBreçoit une clé pu-blique donnéepk du systèmeS et va utiliser l’adversaireA, qui gagne le jeuIND-CCAcontre le sys-tème de double-chiffrementStw, pour gagner le jeuIND-CPA. Le simulateurBexécuteK(1k)et obtient (pk0,sk0 ={sk0i}1≤i≤n). Il tire aléatoirement un bitb, et posepkb =pk, alors quepk1−b =pk0. Puis, il envoie(pk0,pk1)àA.

A l’étape suivante du jeu, l’adversaireAretourne deux messagesm0, m1. Le simulateurBles envoie au challengeur : ce dernier choisit au hasard un bitb0 et chiffremb0 sousEpk

b, ce qui produit le chiffré ciblea?b =Epk

b(mb0).

Ensuite, B choisit un bit b00 au hasard et calcule a?1−b = Epk1−b(mb00) et envoie à l’adversaire le double-chiffré cible suivant :

y?= (a?0, a?1, c?)

oùc?est une preuve simulée de la validité dea?0eta?1. Cette preuve peut être simulée de manière indistin-guable dans le modèle de l’oracle aléatoire. Commea?0 eta?1ne chiffrent pas forcément la même valeur,

pk

pk1−b =pk0 b,pkb =pk

(pk0,sk0)

pk0,pk1,{ski}i=1,...,t,{sk0i}i=1,...,t y= (a0, a1, d)

m m0, m1

m0, m1 Epk(m0b) b0,Epk(m0b)

a?1−b =Epk0(mb00)

(a?0, a?1, c?) b00

BSimulateur AAdversaire

Challengeur

y = (a0, a1, d) m b? b?

FIG. 5.1: Preuve de sécurité de la conversion générique.

l’indistinguabilité est prouvée sous la condition que l’adversaire ne sache pas résoudre le problème de décision : est-ce quea?0eta?1chiffrent le même message?

Montrons comment simuler l’oracle de déchiffrement. L’adversaireApeut alors faire des requêtes y= (a0, a1, d)à l’oracle de déchiffrement, oùai=Epk

i(m)etcest une preuve de validité des chiffrés.

Le simulateurBpeut alors déchiffrera1−b, car il connaît la clé secrète reliée àpk1−b =pk0. Si la preuve est correcte, nous savons quea0 eta1 chiffrent la même valeur m. Cette simulation est parfaite. Si la preuve n’est pas correcte, mais acceptée, l’adversaire a cassé la significativité simulable, après avoir vu une seule preuve.

Enfin,Arépond avec un bitb?, qui est retourné parBau challengeur. Comme la simulation peut ne pas être parfaite, l’adversaire peut ne jamais terminer. Dans ce cas, après un certain time-out,Btire un bitb?.Bgagne sib? =b0, et donc avec probabilité :

ε0+ 1 2 =Pr

b?=b0∧NIZK +Pr

b? =b0∧ ¬NIZK

≥Pr

b?=b0|NIZK

·Pr[NIZK]

Dans la dernière formule, NIZK dénote l’événement qu’aucune des preuves envoyées par l’adversaire à l’oracle de déchiffrement brise la significativité simulable, même après avoir éventuellement vu une preuve.

En effet, si l’adversaire peut forger des preuves d’appartenance pour des faux mots, le simulateur ne répondra jamais avec le message chiffré souspk0. Par conséquent, l’adversaire peut décider quelle clé a le simulateur.

Cependant, sous l’hypothèseNIZK, disant que l’adversaire ne forge pas une fausse preuve, notre si-mulateur pour l’oracle de déchiffrement est parfait. Alors, en utilisant la notationprpour les probabilités sous cette hypothèse :

– dans le casb00=b0, la simulation est perfaite. En effet, le chiffré cible est un chiffré valide, et toutes

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.