• Aucun résultat trouvé

5.2 Une Histoire de monades

5.2.1 Les Distributions

5.3 Modélisation de CIL . . . 73

5.3.1 Définitions fondamentales . . . 73 5.3.2 Les Jugements . . . 84 5.3.3 Comportement idéal et réduction . . . 86 5.3.4 Règles . . . 93

5.4 Validité . . . 98

5.4.1 De la propriété à l’hypothèse de sécurité . . . 98 5.4.2 CIL et sécurité asymptotique . . . 99

5.5 Agent d’observation . . . 101

La difficulté principale des preuves cryptographiques est qu’elles sont faites à la main, qu’elles sont souvent difficiles à vérifier, et qu’on leur fait confiance jusqu’à ce que quel-qu’un prouve qu’elles sont fausses, comme cela arrive quelquefois. En réponse à ces re-marques, Halevi conseille dans [Hal05] de concevoir des outils partiellement automatisés de vérification pour les preuves de sécurité. Des logiciels comme CryptoVerif [Bla06] et CertiCrypt [BGZ09] remplissent partiellement les suggestions d’Halevi, en fournissant un langage de modélisation rigoureux pour décrire des systèmes cryptographiques et énoncer leur propriétés, et des outils aidant à vérifier la correction des preuves.

Ces approches, souvent généralistes, ont vérifié avec succès des systèmes emblématiques mais peinent à prendre en compte de nouveaux besoins en matière de preuve cryptogra-phique, comme par exemple l’existence d’attaques par canaux cachés. Le développement de la logique d’indiscernabilité calculatoire (cil) se base sur Coq pour pouvoir répondre

à ce besoin de flexibilité. Ainsi, cet outil robuste nous permet de vérifier une preuve, tout en en automatisant les parties les plus triviales et en en gardant l’esprit.

La formalisation decilen Coq est faite de différentes bibliothèques : on utilise d’ALEA (par C. Paulin et. al., [APM09] qui formalise les distributions de probabilités pour raisonner sur les programmes probabilistes) pour bénéficier des propriétés déjà prouvées en Coq. La seconde bibliothèque intègre la modélisation du modèle d’oracles et des adversaires, ainsi que la modélisation et la preuve de la validité en Coq des règles decil.

Les définitions et résultats présentés dans les sections 5.1 et 5.2 sont dues à C. Paulin et al. ([APM09]). Les définitions et résultats présentés dans les sections 5.3 sont dues à Pierre Corbineau.

5.1 Les Probabilités et distributions en Coq par ALEA

Pour représenter les probabilités, Paulin et. al. ont défini axiomatiquement l’ensemble

[0,1]. Ce nouvel ensemble,U, repose essentiellement sur la notion d’ordre partiel complet et d’un opérateur sur les bornes (en anglais least uper bound, lub). On utilise donc les constantes0et 1.

5.1.1 La Théorie

Les probabilités sont représentées en Coq par un ensemble d’axiomes définissant l’en-semble[0,1]représenté par un type U. Ces axiomes définissent le comportement de l’en-semble des opérations et constructions dont on dispose :

— l’addition (bornée par 1)Uplus, — la multiplicationUmult,

— la divisionUdiv,

— l’inversionUinv(x7→1−x)

— on définit1(U1) comme étant l’inverse de0, — le constructeur deUnth n7→ 1

n+1.

On démontre également les propriétés usuelles sur ces opérations (commutativité, sy-métrie, associativité, distributivité, monotonie...), le fait que la relation inférieur ou égal est totale, et la propriété que l’ensemble est archimédien.

On définit également grâce à ces opérateurs les opérations usuelles comme la soustrac-tion, l’opérationmax, la borne minimale. On définit n×xet xn par induction sur n. On définit également l’opération & : x&y def= 1−((1−x) + (1−y)) qui permet d’exprimer également l’intersection de probabilité.

Maintenant que les propriétés des probabilités sont définies ainsi que celles de leurs opérations usuelles, l’on peut associer à un élément d’un type une mesureµcorrespondant à la probabilité de l’élément : on obtient ainsi une distribution de probabilité.

Pour représenter des variables probabilistes, on utilise des monades, qui permettent de généraliser leur manipulation en s’abstrayant du type de la variable. Soit une variable de

5.2. Une Histoire de monades type (β). Une probabilité pour cette variable est définie par une fonction f : β →[0,1]

(pour chaque élémentx∈β sa probabilité estf(x)), une distribution surβ est définie par une mesureµ: (β →[0,1])→[0,1].

5.2 Une Histoire de monades

Les monades sont particulièrement utilisées dans les langages de programmation fonc-tionels pour définir des comportements impératifs (générant par exemple des effets de bords) comme les entrées/sorties et les exceptions. Cela permet d’éviter les effets de bord et de rester dans un cadre purement fonctionnel. Moggi donne une motivation et un contexte d’application ainsi qu’un cadre formel à l’utilisation des monades dans les langages de programmation [Mog90]. Elle permettent également de s’abstraire des types sur lesquels on raisonne.

Par exemple,optionest un type de Coq. Nous allons l’utiliser ici pour illustrer ce qu’est une monade. Pour rappel, une monade est un triplet(M, unit, star)(pouroptionen Coq : option, Some,option_map).

— M associe au typet le typeM(t)(optionassocie àascii le typeoptionascii). — L’opérateur unit associe à un élément de t un élément correspondant de M(t)

(Some(’g’)est donc de typeoptionascii).

— L’opérateurstarpermet d’associer à un type monadique une fonction d’association sur un autre type monadique : il permet d’appliquer une fonction usuelle sur un type monadique (option_map(ascii nat)nat_of_ascii).

On représente ici les distributions par une monade surβ (qui est l’ensemble sur lequel on veut représenter une distribution). Nous pouvons ainsi raisonner sur des distributions en général plutôt que sur la distribution sur un type en particulier. Une distribution étant monotone, on requiert cette propriété dans sa définition. Soit deux types munis d’ordreOa

et Ob, on note Oa−m>Ob le type d’une fonction monotone de Oa vers Ob, tandis que mon

autorise la construction de fonctions monotones.

DefinitionMF(A:Type) :Type:=A→U.(*evenement*) DefinitionM(A:Type) :=MF A−m>U. (*distribution*) 3

Definitionunit(A:Type) (x:A) :M A :=mon(fun(f:MF A) ⇒f x).

6 Definitionstar:forall(A B:Type),M A→(A→M B)→M B.

MF représente donc le type des fonctions renvoyant une probabilité, M représente la distribution d’une telle probabilité (c’est donc une fonction monotone).

Les distributions sont représentées par une monade : unit, représentant la mesure Diracδxau pointx, etstarsont les opérateurs monadiques habituels devant respecter les propriétés usuelles.

5.2.1 Les Distributions

Une distribution est donc cette fonction de mesureµ, associée aux preuves de stabilité : la linéarité, la compatibilité avec les inverses et la continuité.µest également une fonction monotone.

Recorddistr(A:Type) :Type:= {mu: M A;

3 mu_stable_inv :stable_inv mu;

mu_stable_plus :stable_plus mu;

mu_stable_mult :stable_mult mu;

6 mu_continuous :continuous mu}.

La probabilité est donc une fonction de typef : (β→[0,1])→[0,1], le typeM β, encapsulé dansdistravec ses preuves de stabilité. De ce fait, nous avons tous les outils en main pour raisonner sur les distributions.

Par exemple, la distribution flip est la distribution uniforme sur les booléens. On définit la fonctionflipcomme fonction def : c’est la somme pondérée de f appliquée aux deux valeurs booléennes. On peut alors composer la distribution sur les booléens avec une probabilité (f) afin d’obtenir une distribution finale (d’un résultat de calcul par exemple).

Definitionflip:M bool:=

mon(fun(f : bool→U)⇒[1/2] ∗(ftrue) + [1/2]∗(ffalse)).

flip permet de tirer une valeur aléatoirement entretrueet falseavec une propriété de 1 2 chacune.

Documents relatifs