• Aucun résultat trouvé

1.3 Sécurité prouvée

1.3.2 Types de preuves et modèles de sécurité

Pour attester de la robustesse d’un schéma, sa sécurité doit donc être prouvée. Pour cela, il est nécessaire de montrer qu’il est difficile, au sens calculatoire, de mettre en défaut sa sécurité. Nous utilisons alors des preuves de sécurité réalisées dans un modèle particulier.

Types de preuves - sécurité par réduction

Nous présentons ici trois types de preuves différentes. Derrière chacune de ces méthodes, nous retrouvons l’idée de sécurité dite réductionniste.

Preuves standard, par réduction. Dès 1984, GOLDWASSERet MICALI[GM84] introduisent les bases de la sécurité prouvée réductionniste. Ces preuves par réduction reposent sur l’idée que si un adversaire parvient à casser la sécurité du schéma alors il est parvenu à résoudre un problème considéré comme difficile – ou à casser la propriété d’un autre schéma lui-même prouvé sûr. Pour formaliser cela, nous construisons un adversaire A contre une expérience

Exp

pA propre à une propriété p. De plus, un challengerCest, quant à lui, construit contre le problème difficile. Pour modéliser les capacités de l’adversaire, nous lui donnons éventuelle-ment accès à un certains nombres d’oracles. Indirecteéventuelle-ment, l’adversaire est utilisé pour casser le problème difficile – en ajoutant une interface entreAetC. Ses réponses contre l’expérience

Exp

pAsont utilisés par le challengerCpour casser le problème difficile. Bien sûr, casser le pro-blème difficile n’est possible qu’avec une probabilité négligeable. Cela nous permet d’affirmer que la probabilité de succès de l’adversaire est négligeable également et donc que le schéma est sûr. Nous parlerons également d’avantage négligeable de l’adversaire. Cela correspond la probabilité de succès relative à l’expérience

Exp

Ap considérée.

Preuves par jeux. Une autre méthode pour réaliser des preuves par réduction consiste à utiliser une suite d’étapes appelée séquence de jeux [BG90, KR96, BR04]. Formalisée en 2004 par SHOUP [Sho04], cette technique consiste tout d’abord à décrire formellement l’attaque réalisée par l’adversaire, sous la forme d’une expérience. Cette description est alors appelée

jeu 0et est associée à l’évènement “S0 : l’adversaire gagne”. Ensuite, une séquence de jeux est définie où chaque jeu i est associé à un évènement “Si : l’adversaire gagne”. La preuve de sécurité consiste alors à montrer que la probabilité de succès P(Si)au jeu i est très proche de la probabilité de succès P(Si+1)à l’étape i +1. Le but est de créer autant d’instance que nécessaire pour se ramener à un jeu n où la probabilité est facile à calculer. Au final, la probabilité de succès de l’adversaire P(S0)à l’étape initiale sera alors très proche de la probabilité de succès P(Sn)au jeu n.

Preuves par simulation. Les preuves par simulation sont particulièrement adaptées aux schémas multipartites et reposent sur le paradigme “monde idéal/monde réel”. Le but de

la preuve de sécurité est alors de montrer que, du point de vue d’un adversaire, ces deux mondes sont indistinguables. Le monde dit réel correspond simplement au schéma étudié. En revanche, dans le monde idéal, il est considéré qu’aucune attaque n’est possible. Une fonc-tionnalité idéale F est définie : elle est exécutée par un tiers de confiance dont le rôle est central puisqu’il permet aux participants d’interagir entre eux. Le protocole sera alors dit sûr si la vue d’un adversaire pendant l’exécution peut être simulée par un algorithme, appelé

simula-teur, qui interagit exclusivement avec le tiers de confiance du monde idéal. Cette méthode de preuves suit le principe de composition séquentielle c’est-à-dire qu’il est possible d’utiliser un ensemble de protocoles, prouvés sûrs indépendamment selon ce paradigme, pour construire un système plus complexe où la sécurité sera assurée par “composition”. Pour plus de détails, nous renvoyons le lecteur au tutoriel proposé par LINDELL[Lin16].

Modèle de sécurité

Un modèle de sécurité définit l’environnement dans lequel l’adversaire réalise son attaque. Nous distinguons ici trois modèles majeurs.

Modèle de l’oracle aléatoire. En 1986, FIATet SHAMIR[FS87] introduisent les oracles aléa-toires dont le modèle est formalisé en 1993 par BELLARE et ROGAWAY[BR93]. Le modèle de

l’oracle aléatoireconsiste à considérer les fonctions de hachage comme des fonctions parfaite-ment aléatoires. En pratique, la fonction de hachage prend alors la forme d’un oracle. Chaque fois qu’un adversaire a besoin du résultat de la fonction de hachage sur une entrée de son choix, il appelle l’oracle aléatoire qui va lui retourner une valeur indistinguable de celle qu’au-rait produite une fonction parfaitement aléatoire et déterministe sur la même entrée.

Ce modèle est parfois critiqué car il est jugé trop idéalisé. En particulier, des schémas [CGH98, CGH04, BB04] mettent en avant la fragilité de ce modèle. Néanmoins, cela concerne des constructions très singulières. Le modèle de l’oracle aléatoire reste donc très utilisé en pratique car il permet, grâce à cette idéalisation de la fonction de hachage, la construction de schémas efficaces.

Modèle du groupe générique. En 1994, NECHAEV [Nec94] introduit le modèle du groupe

générique [Sho97, Mau05, JS08]. Il s’agit d’un autre modèle “idéalisé” qui suppose que les opérations arithmétiques n’ont pas de propriétés particulières qui pourraient être utilisées par un attaquant pour obtenir de l’information. Autrement dit, l’adversaire ne peut pas exploiter les propriétés de structure de groupe pour réaliser ses attaques. Pour chaque opération de groupe qu’il souhaite effectuer – une addition dans le contexte des courbes elliptiques ou une multiplication par exemple, il doit faire appel à un oracle.

Modèle standard. Contrairement aux cas précédents, le modèle standard n’a recours à au-cune idéalisation. Seules les propriétés inhérentes aux constructions utilisées sont considérées. Avec ce modèle, la sécurité des constructions ne repose que sur la difficulté calculatoire de cer-tains problèmes mathématiques tels que le problème du logarithme discret énoncé ci-dessus. Cependant, les schémas prouvés sûrs avec ce modèle sont souvent moins efficaces et les preuves sont plus complexes.

1.3. SÉCURITÉ PROUVÉE 23

De manière générale, pour prouver la sécurité de nos schémas nous suivrons les étapes suivantes :

1. définitions des propriétés de sécurité attendues du schéma ;

2. description du schéma et des hypothèses calculatoires considérées ;

3. constructions des preuves de sécurité selon le modèle et le type de preuves choisis.

Conclusion

Dans ce premier chapitre, nous avons étudié les outils mathématiques de base et le fonc-tionnement de la sécurité prouvée. Ces notions préliminaires sont indispensables pour la com-préhension du mémoire.

Nous allons maintenant nous intéresser plus particulièrement aux différentes primitives cryptographiques qui répondent, entre autres, aux besoins de confidentialité, d’authentification et d’intégrité des données ainsi qu’aux propriétés de respect de la vie privée.

Chapitre 2

Outils cryptographiques

Dans ce chapitre, nous présentons les outils cryptographiques nécessaires à la compréhen-sion de la suite du manuscrit. Tout d’abord, nous rappelons le fonctionnement de la cryptogra-phie dite “à clé publique” dans le contexte de la confidentialité. Ensuite, nous définissons les techniques permettant d’assurer l’authentification et l’intégrité des données, à savoir les signa-tures numériques et les codes d’authentification de messages. Enfin, nous présentons quelques primitives additionnelles utilisées couramment en cryptographie.

Dans chaque section, nous précisons les définitions générales des méthodes citées, leur sécurité et les schémas particuliers utilisés pour la construction de nos systèmes présentés dans les chapitres suivants.

Sommaire

2.1 Confidentialité . . . . 25 2.1.1 Chiffrement à clé publique . . . 26