• Aucun résultat trouvé

Partie III Applications 157

Chapitre 8 Application au recouvrement de clé 185

8.3 Conclusion

Cette solution de recouvrement a été développée dans le cadre du projet OPPIDUM Confiance. Le partage de la clé de l’autorité de recouvrement est nécessaire car il s’agit d’une clé très sensible de même que dans une solution d’encapsulation. Cependant, contrairement à cette solution, un adversaire n’a pas accès aux clés chiffréesEpk

A(skU), alors que dans une solution d’encapsulation, il a accès àEpk

A(ks).

L’autorité de recouvrement utilise des clés RSA de 2048 bits. On sait que le système RSA partagé est résistant aux attaques à clairs choisis,IND-CPA. Ceci est nécessaire dans le cadre de ce produit car un attaquant ne peut pas monter une attaque à chiffrés choisis. En effet, l’agent de recouvrement, ne fait pas des demandes de déchiffrement de clés. Pourtant, il serait utile d’avoir un système résistant à ce type d’attaque pour le système RSA.

Dans le cas où l’on utiliserait des certificats recouvrables contenantEpk

A(skU), comme dans le sys-tème de recouvrement de Poupard et Stern, le syssys-tème devrait résister à ce type d’attaque. En effet, l’agent de recouvrement fait des demandes de déchiffrement à l’autorité de recouvrement. Dans ce sys-tème, le cryptosystème utilisé est celui de Paillier que nous avons protégé contre ce type d’attaque dans le chapitre 5.

Conclusion

Dans cette thèse, nous avons étudié certains aspects théoriques et pratiques du partage de clé crypto-graphique. La cryptographie partagée est la composante de la cryptographie qui s’intéresse aux calculs multiparties (MPC) et qui propose des schémas efficaces en pratique pour distribuer des fonctions par-ticulières. L’approcheMPC est plus générale et fournit des solutions pour des classes de fonctions au sens de la théorie des calculs et de la complexité. La cryptographie à seuil permet de protéger une clé contre des attaquants plus forts que ceux considérés dans les systèmes classiques “centralisés”. De plus, elle permet de répartir les décisions parmi un ensemble de personnes de telle sorte que plusieurs d’entre elles soient impliquées pour prendre une décision. Ceci permet de distribuer la confiance pour atteindre un degré de sécurité plus important, l’attaquant doit en effet corrompre plus de personnes pour frauder.

Dans la première partie de cette thèse nous avons présenté des techniques de partage de secret et nous avons rappelé les modèles de sécurité pour prouver la sécurité des schémas partagés de chiffrement et de signature.

Puis dans la deuxième partie, nous avons étudié des techniques pour complètement partager la signa-ture RSA et le système de chiffrement de Paillier. Les protocoles décrits sont sûrs contre des attaques à clairs choisis et à chiffrés choisis. Nous avons aussi présenté une méthode pour générer une clé Diffie-Hellman de manière distribuée ce qui permet de complètement partager des protocoles comme le système de chiffrement El Gamal ou le schéma de signature DSA.

Enfin, nous avons décrit dans la troisième partie, les applications de ces partages à des systèmes sensibles comme un système de loterie, de vote électronique, ou de recouvrement de clé.

Cette thèse suggère trois problèmes ouverts essentiels :

– est-il possible de partager RSA de manière sûre contre les attaquesCCA?

– est-il possible de construire un schémaIND-CCAdans le modèle standard basé sur la factorisa-tion?

– est-il possible de calculer efficacement modulo un secret partagé?

Un schéma partagé du cryptosystème RSA sûr contre des attaques à chiffrés choisis serait utile en pratique pour construire une autorité de recouvrement de clé. Même dans le modèle de l’oracle aléatoire, ce problème semble être difficile, comme le mentionnent Gennaro et Shoup dans [175]. Nous avons proposé dans cette thèse un partage du système de chiffrement de Paillier, basé sur une hypothèse reliée à la factorisation alors que jusqu’à présent, les systèmes proposés à seuilIND-CCAétaient tous reliés au problème du calcul du logarithme discret. La preuve de sécurité du schéma proposé utilise le modèle de l’oracle aléatoire.

Par conséquent, le deuxième problème semble difficile. Notre schéma de Paillier partagé sûr contre des attaquesCCAutilise des preuves de validité publiquement vérifiables. Une piste de recherche serait d’utiliser des preuves de validité qui ne soient vérifiables que par le possesseur de la clé privée. Ceci est le cas du cryptosystème Cramer-Shoup [55], seul système de chiffrement efficace prouvé sûr dans le modèle standard sans hypothèse supplémentaire.

Enfin, un problème difficile aujourd’hui est le calcul debmodpoùpetbsont deux secrets partagés.

Ceci pourrait être un premier pas vers un algorithme de génération de nombres premiers sûr en utilisant par exemple l’algorithme de Miller-Rabin partagé. Le seul calcul que l’on sait faire aujourd’hui est le calcul d’inverse modulo un nombre secret partagé. En effet, Catalano, Gennaro et Halevi dans [40] ont construit un tel protocole sûr. On a vu dans cette thèse que cet algorithme permet de calculer le pgcd d’une quantité publique et d’une quantité secrète. Une voie de recherche serait de partager le cryptosys-tème d’Okamoto et Uchiyama [136] puisque le déchiffrement de ce cryptosyscryptosys-tème permet d’obtenir le message modulop. Enfin, le problème est peut-être plus facile en se limitant à un partage entre deux serveurs.

Outils pour le partage du cryptosystème RSA

Dans cette annexe, nous décrirons différentes preuves de robustesse pour RSA et différents algo-rithmes utilisés dans le partage de RSA.

9.1 Différentes preuves de validité

Nous présentons ici deux preuves de validité qui peuvent être utilisée à la place de la preuve de validité de Shoup. La première preuve que nous présentons est celle de Frankel et al. qui n’a pas besoin de nombres premiers sûrs et qui peut donc être utilisée pour remplacer la preuve de Shoup76. Il s’agit d’une preuve d’égalité de logarithme discret interactive, prouvée sûre dans le modèle standard. Puis, nous décrivons la preuve de Gennaro et al. [89]. Il s’agit d’une preuve non-interactive prouvée sûre dans le modèle standard mais qui suppose une certaine relation entre le prouveur et le vérifieur. Cette preuve n’est pas une preuve d’égalité de logarithmes discrets, mais est une preuve d’appartenance à un certain langage que nous décrirons.

9.1.1 Preuve interactive d’égalité de logarithmes discrets dans un groupe non cyclique d’ordre inconnu

Frankel, Gemmel, Mac Kenzie, et Yung ont décrit dans [77], un protocole interactif efficace qui peut être prouvé sans faire appel à l’oracle aléatoire et qui ne fait pas d’hypothèse sur le module RSA. Le prix à payer étant l’interactivité du protocole (cf. figure 9.1).

Preuve: Cette preuve est effectuée pour plusieurs générateurs g car comme on l’a dit précédemment, ZN n’est pas un groupe cyclique et trouver des éléments d’ordre maximal(λ(N))n’est pas évident.

Cependant, en prenant plusieurs éléments, avec forte probabilité, on génèreZN.

Le premier message du vérifieur permet de faire une preuve efficace en quatre tours et d’imposer un vérifieur honnête car son choix sera indépendant du premier message du prouveur.

Consistance.La consistance de ce protocole est immédiate.

Significatif.La preuve est significative car un prouveur malhonnête ne peut pas tricher sauf en devinant le challengeˆcou en cassant la fonction de Pedersen [144] de mise en gageCommit, donc avec probabilité

76. Ceci nous permet donc de distribuer complètement RSA. Cependant, la preuve de Shoup présente des caractéristiques intéressantes comme le fait qu’elle soit non-interactive. De plus, des éléments dans la preuve de Frankel et al. n’ont pas été complètement étudiés comme le fait de savoir combien de générateurs différents faut-il prendre pour engendrer un sous-groupe d’ordre maximal deZN. Ceci a été fait par Poupard et Stern dans [157].

Prouveur vki =gdi modN Vérifieur di∈[0, ϕ(N)[

σi =xdi modN

Met en gageˆc=c1k. . .kch Commit

←−−−−−−−−−−−−− Commit=gˆcg2q0 oùq0R[0, N[ ChoisitqjR[0, X[

oùX = 2∆3N3+t2nt+n+nN2 Calculet1 = (gq1, . . . , gqh)

t2 = (xq1, . . . , xqh) t1kt2

−−−−−−−−−−−−−→

B1 etB2

←−−−−−−−−−−−−− B1 = ˆcetB2=q0 Vérifie sigB1g2B2 =? Commit

∀j= 1àh,vj =cjdi+qj

σiet(v1, . . . , vh)

−−−−−−−−−−−−−→

Vérifie si∀j = 1àh, vkcijgqj =? gvi modN σicjxqj =? xvi modN

FIG. 9.1: Preuve de validité interactive dans le modèle standard de Frankel et al..

1/2h.

Statistiquement Zero-Knowledge. La simulation zero-knowledge peut facilement être effectuée en temps polynomial (en deux passes). Le simulateur après le messageCommit choisitt1kt2 au hasard et reçoitˆc décommité. Le simulateur rembobine juste après le premier message et comme il sait quel random choisira le combineur sauf s’il connaîtloggg2, il peut simuler la preuve en choisissant au hasard (v1, . . . , vh)et en calculantt1comme(gv1vk−ci 1, . . . , gvhvk−ci h)ett2comme(xv1σ−ci 1, . . . , xvhσi−ch).

u t

9.1.2 Preuve de validité non-interactive sûre dans le modèle standard

La preuve de validité de Gennaro et al. est décrite dans la figure 9.2. Il s’agit d’une preuve d’appar-tenance à un langage. Le langage n’est pas celui des couples ayant le même logarithme discret, mais il est constitué des paires(σi, Y)∈ZN ×ZN telles queσibxc =Y modN. Seul un vérifieur connaissant betcpeut vérifieur ces preuves.

Description de la preuve. Considérons deux joueurs P et V. P génère une signature que V peut vérifier. Cette preuve utilisera des valeurs auxiliaires pourP etV. Le prouveurP détient la clé secrète diet génère une sorte de clé de vérificationy. Le vérifieurV détientbetctels quey=bdi+cdans les entiers. Les valeursdi,y,betcsont partagées entre les parties durant la phase de génération des clés (et gardées secrètes par les parties). Étant donné un messageM, etx=H(M), le prouveur génère une part de signatureσi =xdi modN, et l’information supplémentaire de vérificationY =xy modN.Penvoie ces valeurs àV qui vérifie la part de signature en calculant(σi)bxc = (xdi)bxc=? xy =Y modN.

Cette preuve suppose l’existence d’un distributeur Dqui prend en entrée un module RSAN, une part di de la clé secrète d, et des paramètres de sécurité0 ≤ k1, k2, k3 = k1 +k2+ logN. Il choisit

Prouveur Vérifieur di∈[0, ϕ(N)[, y=bdi+c b∈[0,2k1[, c∈[0,2k3[ σi=xdi modN et

Y =my modN (σi, Y)

−−−−−−−−−−−−−→ vérifie siσbixc=? Y modN

FIG. 9.2: Preuve de validité non-interactive dans le modèle standard de Gennaro et al..

b∈[0,2k1[etc∈[0,2k3[avec probabilité uniforme. Puis il calculey=bdi+cet transmet secrètement dietyàP puisbetcàV.

Les preuves présentes dans cette section considèrent l’équationy = bdi +cdans les entiers. L’ap-proche plus naturelle de générer cette équation moduloϕ(N)pourrait permettre àP etV de combiner leur information et de calculer un multiple deϕ(N), permettant de factoriserN. Une part de signature σisera acceptée par le combineur soit siσi =xdi modN, soit siσi =−xdi modN. Dans le cas d’une signature, ce n’est pas un problème sérieux. Une part de signature incorrecte influencera seulement le signe de la signature finale, ce que l’on peut décider en utilisant l’exposant public.

Présentons avant tout les deux lemmes suivant. On représente parY l’ensemble[2k1+logN,2k3[.

Lemme 7 Étant donnéesdi∈[0, ϕ(N)[ety ∈ Y, pour chaque valeur possible deb∈[0,2k1[, il existe exactement une valeur possible pourc∈[0,2k3[telle quey =bdi+c.

Preuve: Comme le calcul est effectué dans les entiers, il existe exactement une valeur decpour chaque b,di ety. De plus, sib∈[0,2k1[, ety ∈[2k1+logN,2k3[, alors la valeurc =y−bdiest contenue dans [0,2k3[. En effet :

ymin−bmaxdi,max ≤ c ≤ ymax−bmindi,min 1≤2k1+logN−2k1ϕ(N) ≤ c ≤ 2k3 −1

ce qui prouve le lemme. ut

Lemme 8 Pr[y6∈ Y]≤ 1

2k2.

Preuve: Le nombre total de paires(b, c)différentes est2k12k3. L’intervalleYest de taille2k3−2k1+logN. D’après le lemme 7, chaque valeur y dans cet intervalle peut être générée par 2k1 paires (b, c). Par conséquent, commebetcsont choisis avec probabilité uniforme, la probabilité queytombe en dehors de cet intervalle est1−(2k3−2k1+logN)2k1

2k32k1 = 21k2. ut

Ils ont prouvé le théorème suivant :

Théorème 28. SoitN = pq, oùp < q,p = 2p0 + 1, q = 2q0 + 1etp, q, p0, q0 sont tous des nombres premiers. Supposons un prouveurP˜qui triche et qui ne peut pas casser RSA pour un moduleN (en particulier, il ne connait pas et ne peut pas calculer la factorisation deN).

Consistance.SiP etV suivent le protocole, alorsV accepte toujours une part de signa-ture.

Significative.Un prouveur tricheurP˜ peut convaincreV d’accepterσ˜i 6=±xdi modN, avec probabilité au plus p10 +21k1 + 21k2.

Zero-Knowledge.V n’apprend aucune information au-delà de la signatureσi =xdi mod N, i.e. étant donnéσi, b, cil existe un algorithme en temps polynomial pour calculerY.

Preuve:Consistance.Immédiate.

Significative.Commencons par examiner le cas oùy ∈ Y = [2k1+logN, . . . ,2k3]. On remarque que le vérifieur utilise un algorithme déterministe pour accepter ou rejeter la paire publique(σi, Y). Par consé-quent, la probabilité établie dans le théorème est prise sur l’ensemble des couples(b, c)∈[0,2k1[×[0,2k3[ tels que y = bdi +c. Afin que le prouveur P puisse convaincreV d’accepter la preuve (σi, Y), on doit avoir Y = σibxc modN. Or, d’après le protocole de génération y = bdi +c. Par conséquent, xy = (xdi)bxc modN. En divisant ces deux équations, on obtient :

Y x−y = (σix−di)b modN (9.1)

Ceci signifie que Y x−y appartient au sous-groupe < σix−di >. Soit k la valeur minimale telle que Y x−y = (σix−di)kmodN. L’équation 9.1 est satisfaite si b = kmodord(σix−di). Comme b est choisi au hasard avec une distribution uniforme dans[0,2k1[, la probabilité qu’une paire(σi, Y)vérifie l’équation 9.1 est telle que :

Pr h

b=kmodord(σix−di) i

l 2k1

ordixdi)

m 2k1

≤ 1

ord(σix−di) + 1 2k1

CommeN est un module RSA sûr, il existe seulement quatre éléments deZN dont l’ordre est plus petit quep0. Ce sont les racines carrées de l’unité. En effet, les éléments deZN ont comme ordre possible un diviseur deλ(N) = 2p0q0, c’est-à-dire2, p0, q0,2p0,2q0, p0q0, ou 2p0q0. Si σix−di = ±1 modN, alors σi = ±xdi modN. Si le prouveur pouvait trouver σi tel que σix−di soit une racine non triviale de l’unité,(6= ±1), alors il pourrait factoriserN, ce qui est supposé infaisable. Pour tous les autres choix de σi, ord(σix−di) ≥ p0. Ceci termine la preuve dans le cas y ∈ Y. Cependant, d’après le lemme 8, on sait que la probabilité quey 6∈ Y est au plus 2k12, en combinant ces deux probabilités, on obtient la probabilité annoncée.

Zero-Knowledge.Connaissantb, cetσi =xdi modN, le vérifieur peut calculerY =xyibxc mod N. (On utilise ici un vérifieur honnête pourV car la preuve est non-interactive.) ut 9.1.3 Comparaison

L’avantage de la preuve de Shoup par rapport à la preuve de Gennaro et al. est d’éviter d’avoir une relation entre le vérifieur et le prouveur. L’avantage de la preuve de validité de Gennaro et al. est qu’elle

n’utilise pas le modèle de l’oracle aléatoire tout en étant non-interactive. Dans le cas où il existe un seul combineur, il vaut mieux utiliser la preuve de validité de Gennaro et al.. Cependant, dans le cas où tous les utilisateurs peuvent faire des requêtes de signature, le protocole de Shoup est utile. La preuve de Frankel et al. est utile si on veut utiliser un module RSA n’ayant pas une forme spécifique. Elle fait toutefois l’hypothèse qu’en prenant suffisamment d’éléments au hasard dans ZN on génèrera ZN en entier, mais l’analyse n’a pas été faite. Dans la suite de ce chapitre, nous verrons une analyse de cette hypothèse avec des modules ayant certaines particularités.

D’autre part, dans le cas de signature RSA, comme RSA-FDH [11, 51] par exemple, la preuve de sécurité utilise déjà le modèle de l’oracle aléatoire, on peut alors utiliser le protocole de Shoup. Mais, dans le cas de la signature de Gennaro, Halevi et Rabin [87] qui n’utilise pas l’oracle aléatoire, les preuves de validité de Gennaro et al. et celle de Frankel et al. permettent de distribuer ce schéma de signature sans faire appel à l’oracle aléatoire mais en utilisant leFlexible-RSA Problemqui est un problème plus facile à résoudre que le problème RSA77. Ceci a été fait par Catalano, Gennaro et Halevi dans [40].