• Aucun résultat trouvé

4.2 Graphe de dépendance causale

4.2.3 Équivalence entre chemin et séquence

Dans cette section, nous proposons de prouver qu’il y a équivalence entre l’ensembles des fer-metures transitives causales (séquences) et l’ensembles des chemins dans le graphe de dépendance causale. De ce fait, la recherche de tous les chemins existants entre deux nœuds, nous permettra d’énumérer toutes les séquences réalisables entre deux contextes. Nous proposons donc de prouver qu’un chemin correspond à une séquence, puis nous montrerons qu’une séquence correspond à un chemin. Finalement, nous énoncerons le théorème 4.2.1 d’équivalence entre un chemin du graphe et une séquence.

Nous commençons par montrer qu’un chemin de deux arcs implique une dépendance causale. Lemme 4.2.1 Soit it1 et it2 deux interactions effectuant respectivement les opérations eo1 et eo2, telles que sc1, sc2∈ it1 et sc2, sc3 ∈ it2.

Si, dans le graphe d’interactions Gc = (N, E), il existe un chemin sc1 7−→eo1 sc2 7−→eo2 sc3 alors il y a dépendance causale it1 ։it2.

Preuve :

Comme sc1 et sc2 appartiennent à l’arc sc1 7−→eo1 sc2 étiqueté par eo1, cet arc correspond à l’interaction it1(prop. 4.2.1). De même l’arc sc2 7−→eo2 sc3correspond à l’interaction it2.

Par construction, sc1 7−→eo1 sc2 implique que sc1 modifie l’état de sc2, donc it1 modifie l’état de sc2. De même, it2 modifie l’état de sc3.

De plus, sc1 7−→eo1 sc2 7−→eo2 sc3implique que sc2 est le contexte partagé par it1et it2.

L’apparition de sc1 7−→eo1 sc2 7−→eo2 sc3 implique que it1 apparaîtra avant it2 et donc que tsc2(debut(eo1)) 6 tsc2(f in(eo2)) (prop. 4.2.2).

Finalement, nous avons :

sc17−→eo1 sc27−→eo2 sc3 =⇒                    sc1 7−→eo1 sc2 ⇔ it1 sc2 7−→eo2 sc3 ⇔ it2 sc2 ∈ it1 sc2 ∈ it2 tsc2(debut(eo1)) 6 tsc2(f in(eo2)) it1modifie l’état du contexte partagé sc2 it2modifie l’état du contexte sc3

Ceci correspond à la définition de la dépendance causale (def. 3.2.2, page 65). Nous avons donc bien : sc17−→eo1 sc2 7−→eo2 sc3 =⇒ it1 ։it2



Nous montrons maintenant qu’un chemin entre n contextes (sc1, . . . , scn) implique une séquence sc1 ⇒ scn.

Lemme 4.2.2 Si, dans le graphe de dépendance causale, il existe un chemin sc1 7−→eo1 sc2 7−→eo2

Preuve :

D’après la propriété. 4.2.1 :

∀i = 1..n, [sci7−→eoi sci+1] =⇒ [iti= sci eoi

−−→ sci+1ou sci+1 eoi

−−→ sci] Et,

sc1 ∈ it1, scn+1∈ itn

D’autre part, dans les suppositions du lemme, nous avons :

sc1 7−→eo1 sc27−→eo2 . . .7−→eon scn+1 Or, d’après le lemme 4.2.1 :

∀i = 1..n − 1, [sci7−→eoi sci+17−→eoi+i sci+2] =⇒ [iti ։iti+1] Nous avons donc :

∀i = 1..n − 1, iti ։iti+1 Finalement, nous avons :

[sc1 7−→eo1 sc2 7−→eo2 . . .7−→eon scn+1] =⇒        ∀i = 1..n, sci7−→eoi sci+1 sc1 ∈ it1 scn+1∈ itn ∀k = 1..n − 1, itk։itk+1 Ceci correspond à la définition d’une séquence (def. 3.2.3, page 65). Nous avons donc bien :

[sc1 7−→eo1 sc2 7−→eo2 . . .7−→eon−1 scn] =⇒ [sc1 ⇒ scn] 

Nous venons de montrer que si il existe un chemin dans le graphe de dépendance causale alors il existe une séquence dans la politique de contrôle d’accès. Nous allons maintenant montrer qu’une séquence implique un chemin dans le graphe de dépendance causale. Pour cela, nous montrons, tout d’abord, qu’une dépendance causale implique un chemin de deux arcs dans le graphe de dépendance causale.

Lemme 4.2.3 Soit it1et it2deux interactions effectuant respectivement les opérations eo1et eo2, tels que sc1, sc2 ∈ it1et sc2, sc3∈ it2.

Si il existe une dépendance causale it1 ։ it2 alors il existe un chemin sc1 7−→eo1 sc2 7−→eo2 sc3 dans le graphe de dépendance causale.

Preuve :

D’après la définition de la dépendance causale 3.2.2 :

it1 ։it2 ⇐⇒            sc1, sc2 ∈ it1 sc2, sc3 ∈ it2 tsc2(debut(eo1)) 6 tsc2(f in(eo2)) it1modifie l’état du contexte partagé sc2 it2modifie l’état du contexte sc3

4.2. GRAPHE DE DÉPENDANCE CAUSALE 99 Comme it1modifie l’état du contexte partagé sc2 , cela implique, par construction (fonctionordre), qu’il existe un arc sc17−→eo1 sc2.

De même, it2 modifie l’état du contexte sc3implique qu’il existe un arc sc27−→eo2 sc3. Comme chaque contexte correspond à un unique nœud dans le graphe, nous avons donc :

[sc1 7−→eo1 sc2et sc2 7−→eo1 sc3] =⇒ [sc1 7−→eo1 sc27−→eo2 sc3] De ce fait, nous avons donc bien :

[it1 ։it2] =⇒ [sc1 7−→eo1 sc27−→eo2 sc3] 

Nous allons maintenant montrer qu’une séquence implique un chemin dans le graphe.

Lemme 4.2.4 Soit n interactions iti effectuant l’opération eoi tel que ∀i = 1..n, on a sci, sci+1 ∈ iti.

Si il existe une fermeture transitive causale (séquence) sc1 ⇒ scn+1 alors il existe un chemin sc1 7−→eo1 sc27−→eo2 . . .7−→eon scn+1dans un graphe de dépendance causale.

Preuve :

D’après la définition 3.2.3, une fermeture transitive causale sc1⇒ scn+1implique que : ∀i = 1..n − 1, iti ։iti+1

D’après le lemme 4.2.3,

∀i = 1..n − 1, [iti։iti+1] =⇒ [sci 7−→eoi sci+17−→eoi+1 sci+2] Chaque contexte étant identifié de manière unique dans le graphe, nous avons donc :

sc1 7−→eo1 sc27−→eo2 . . .7−→eon scn+1 De ce fait, nous avons donc bien :

[sc1⇒ scn+1] =⇒ [sc1 7−→eo1 sc2 7−→eo2 . . .7−→eon scn+1] 

A partir de ces quatre lemmes, nous pouvons désormais énoncer le théorème d’équivalence entre un chemin et une fermeture transitive causale.

Théorème 4.2.1 Dans un graphe de dépendance causale Gc = (N, E), il existe un chemin entre sc1 et scnsi et seulement si il existe une séquence (fermeture transitive causale) sc1 ⇒ scndans la politique associée à ce graphe.

Preuve :

D’après le lemme 4.2.2, si il existe un chemin entre sc1et scn, alors il existe une séquence sc1 ⇒ scn: [sc1 7−→eo1 sc2 7−→eo2 . . .7−→eon−1 scn] =⇒ [sc1 ⇒ scn]

D’après le lemme 4.2.4, si il existe une séquence sc1 ⇒ scn, alors il existe un chemin entre sc1 et scn:

Nous avons donc bien :

[sc1 ⇒ scn]⇐⇒ [sc1 7−→eo1 sc2 7−→eo2 . . .7−→eon−1 scn] 

Ce théorème montre une équivalence entre le graphe de dépendance causale et les séquences qui sont autorisées par une politique. Si cette preuve est obtenue facilement par construction du graphe, son intérêt pratique est prépondérant. D’après ce théorème d’équivalence entre un chemin et une fermeture transitive causale, nous pouvons donc énumérer toutes les séquences, entre deux contextes, légales du point de vue de la politique de contrôle d’accès, par énumération de tous les chemins entre deux nœuds dans le graphe de dépendance causale. Nous avons vu dans la section 3.3, que la formalisation des propriétés de sécurité fait apparaître des conditions portant sur l’existence de séquences. Une violation d’une de ces conditions se traduit ainsi par l’existence d’une séquence qui correspond ainsi à la présence d’un chemin dans le graphe de dépendance causale. Nous avons ainsi un modèle général permettant d’analyser une politique de contrôle d’accès afin de rechercher toute violation possible d’une propriété de sécurité.