• Aucun résultat trouvé

4.2 Sémantiques basées sur la réécriture

4.2.3 Systèmes de sécurité

Nous pouvons désormais montrer que nous pouvons construire, grâce à la propo-sition 4.21, un système de réécriture à la racine, basé sur les constructeurs (c.-à-d. tel que les termes composés uniquement de constructeurs sont irréductibles), simulant la relation de transition d’un système de sécurité donné.

Proposition 4.29. Soit teo une théorie de sécurité et S un système de sé-curité sur teo. Il existe un système de réécriture RS à la racine convergent tel que pour tout environnement η et toute séquence d’événements evts = h (act1, d1), . . . , (actn, dn)i, η−−→evts Sη0 si et seulement si

γteo(η)⊗ (act1, d1) :: . . . :: (actn, dn) :: [ ]−→ RS γteo0)⊗ [ ]

(où ⊗ est un nouveau symbole binaire modélisant l’application d’une séquence d’événements sur un environnement).

Pour démontrer cette propriété, nous avons recours aux deux lemmes suivants :

Lemme 4.30. Soient (E, ≤E) un ensemble totalement ordonné et Φ un isomor-phisme d’ordre de (E, ≤E) dans (F ⊆ N, ≤N). Pour tout élément e /∈ E associé à la contrainte ebef ore≤ e ≤ eaf ter, (pour ebef ore et eaf ter dans E) l’application Φ0

définie par :  

Φ0(e) = Φ(eaf ter)

∀e0∈ E, e0 ≤ ebef ore, Φ0(e0) = Φ(e0) ∀e0∈ E, eaf ter ≤ e0, Φ0(e0) = Φ(e0) + 1

est un isomorphisme de la mise à jour de (E, ≤E) pour la contrainte ebef ore ≤ e≤ eaf ter dans (F0

⊆ N, ≤N).

Lemme 4.31.Soient (E, ≤E)un ensemble partiellement ordonné et Φ un isomor-phisme d’ordre de (E, ≤E) dans (F ⊆ Bn,≤×). Pour tout élément e /∈ E associé à la contrainte e1

bef ore, . . . , em

bef ore ≤ e ≤ e1

af ter, . . . , ek

af ter, (on suppose que les ei

bef ore sont sont deux à deux incomparables pour ≤E, de même que les ej af ter et que ei

bef ore<E ejaf ter quels que soient i et j) l’application Φ0 définie par :       

Φ0(e) = (Φ(emax), 0) si m > 1 et Φ0(e) = (Φ(emax), 1) sinon ∀e0 ∈ E, e0E emax, Φ0(e0) = (Φ(e0), 0)

∀e0 ∈ E, eminE e0, Φ0(e0) = (Φ(e0), 1) ∀e0 ∈ E, emin./E e0, Φ0(e0) = (Φ(e0), 0)

avec Φ(emax) = (maxi=1...m(bi 1), . . . , maxi=1...m(bi n)) où (bi 1, . . . , bi n) = Φ(ei bef ore) et Φ(emin) = (maxj=1...k(bj1), . . . , maxi=j...k(bjn)) où (bj

1, . . . , bjn) = Φ(ejaf ter), est un isomorphisme de la mise à jour de (E, ≤E) pour la contrainte e1

bef ore, . . . , em

bef ore ≤ e ≤ e1

af ter, . . . , ek

af ter, dans (F0 ⊆ Bn+1,≤×).

}Démonstration (Lemmes). Le lemme 4.30 est trivial. Le lemme 4.31 est quant à lui basé sur les constats suivants :

si m > 1, alors Φ(emax) >×Φ(ei

bef ore) pour tout i,

si k > 1, alors Φ(emin) <× Φ(ejaf ter) pour tout j,

pour tous α, β ∈ Bn, les trois inégalités suivantes sont équivalentes :   α <× β (α, 0) <×(α, 1) <×(β, 1) (α, 0) <×(β, 0) <×(β, 1) ~ }Démonstration (Proposition 4.29). Dans la suite, étant donnés une signature Σ = (S, F), deux S-ensembles de variables disjoints X1 et X2, un système de réécriture R sur Σ (et X1) ainsi qu’un contexte C sur Σ0 = (S, F ∪ {X2}) (où les variables de X2sont vus comme des constantes), on note C[R] le système de réécriture contenant les règles C[lhs] → C[rhs] pour toute règle lhs → rhs de R. On modifie la signature ΣAR

teo en considérant les symboles suivants :

_ ⊗ _ : Environment × Events → State

checkr : Environment× Computation × Events → State mapr : Environment× TupleList × Facts × Events → State replacep : Factsp× Computation × Events → State pour tout prédicat p de ˜ΣEnv

teo et toute règle de transition r de S. Le système RS

contient, pour toute règle de transition r,

Cr[RAR]où Cr= checkr(x, ),

si r = (act, d) : p(t1, . . . , tn)

| {z }

C

← α :

x⊗ (act, d) :: qevents → checkr(x, γteo(α), qevents) checkr(x, [ ] . r :: q, qevents) → mapr(x, r, [ ], qevents)

mapr(x,h x1, . . . , xni :: q, l, qevents) → mapr(x, q, C[x1, . . . , xn] :: l, qevents) mapr(h xp1, . . . , xpni , [ ], l)

→ replacep(h xp1, . . . , xpni , union :: [ ] . xp:: l, qevents) Un terme de la forme x ⊗ levents représente le calcul de l’état résultant de l’application de la séquence d’événements décrite par la liste levents. Pour effec-tuer ce calcul, la première étape consiste à déterminer les solutions de α dans l’environnement courant. C’est l’objet de la réduction des termes de la forme checkr(x, γteo(α),_) vers un terme de la forme checkr(_, [ ] . r :: _, _) dont le sous-terme caractérisé par r contient la liste des solutions. À partir de ces 94

4.2. SÉMANTIQUES BASÉES SUR LA RÉÉCRITURE

solutions, on peut construire l’ensemble des atomes clos à ajouter à l’environne-ment, c’est à dire l’ensemble des σi(p(t1, . . . , tn))où à chaque élément de la liste des solutions correspond un σi (les atomes σi(p(t1, . . . , tn))sont construits par la règle mapr(_, h x1, . . . , xni :: _, _, _) → mapr(_, _, C[x1, . . . , xn] ::_, _)).

si r = (act, d) : ¬ p(t1, . . . , tn)

| {z }

C

← α :

x⊗ (act, d) :: qevents → checkr(x, γteo(α), qevents) checkr(x, [ ] . r :: q, qevents) → mapr(x, r, [ ], qevents)

mapr(x,h x1, . . . , xni :: q, l, qevents) → mapr(x, q, C[x1, . . . , xn] :: l, qevents) mapr(h xp1, . . . , xpni , [ ], l, qevents)

→ replacep(h xp1, . . . , xpni , diff :: [ ] . xp:: l, qevents)

si r = (act, d) : p(t1, . . . , tn) ← α |      inf (e1 bef ore, e) ... inf (em bef ore, e) ∧      inf (e, e1 af ter) ... inf (e, ek af ter) ,

les règles devenant plus techniques et plus nombreuses, nous nous contente-rons d’expliquer le principe de ces dernières. Les règles évoquées pour le cas r = (act, d) : p(t1, . . . , tn) ← α sont adaptées pour permettre une étape sup-plémentaire entre la vérification de la contrainte (réduction des termes dont la racine est checkr) et le calcul des atomes à ajouter (réduction des termes dont la racine est mapr). Chaque tuple solution de la contrainte (c’est-à-dire chaque élément de la liste r dans checkr(x, [ ] . r :: q, qevents)), contient les valeurs des Φ(ei

bef ore) et des Φ(ej

af ter) (à des positions déterminables statiquement). À partir de ces informations, une étape de mise à jour de tous les termes re-présentant un élément appartenant à l’ensemble ordonné considéré, suivant les lemmes 4.30 et 4.31, est effectuée. Cette étape ajoute également une compo-sante aux tuples résultats de la contrainte qui ne contenaient jusqu’alors pas les valeurs des variables libres de β (c’est-à-dire les nouveaux éléments à « insérer » dans l’ordre). À l’issue de cette étape, les tuples solutions sont « complets » (ils contiennent les valeurs de toutes les variables libres) et le calcul des atomes clos à ajouter peut être entamé (réduction vers un terme de racine mapr). ainsi que, pour tout symbole de prédicat p de ˜ΣEnv

teo tel que Cteo(p) = empty, Cp[RAR] où Cp = replacep(x, ) et :

replacep(x, done(h xp1, . . . , xpni), qevents)

xp1, . . . , xpi−1, x, xpi+1, . . . , xpn

⊗ qevents

(où i est l’indice correspondant à p). ~

4.2.4 Politiques de sécurité

De la même façon que nous avons proposé une sémantique de la relation de transition d’un système de sécurité sous la forme d’un système de réécriture à la racine, nous nous attachons désormais à présenter un tel système pour décrire une politique de sécurité décrite dans notre formalisme.

Proposition 4.32.Soit teo une théorie de sécurité et pol une politique de sécurité sur teo. Il existe un système de réécriture Rpol à la racine tel que :

γteo(η)` action−→ Rpol decisionssi action−→ polη decision,

Rpol termine (resp. est confluent sur les termes clos, resp. suffisamment complet) ssi pol termine (resp. est cohérente, resp. complète).

}Démonstration.On ajoute à la signature ΣAR

teo les symboles suivants :

_ ` _ : Environment × Action → Request

_ `aux _ , _ : Environment × Action × Trace → Request checkr : Environment× Computation × Trace → Request

undefined : → Request

h _, . . . , _ i : Bool × . . . × Bool → Trace

pour toute règle r de pol. Rpolcontient le système C[RAR]avec C = checkr(, x, y, z) ainsi que les règles suivantes :

x ` y → x `aux y , h ⊥, . . . , ⊥ i

x `aux y , h t1, . . . , tmi → checkr(x, γteo(y = action∧ ϕ), h t0

1, . . . , t0mi) checkr(x, [ ] . h y1, . . . , yni :: [ ], z) →  x ` rhs[y1, . . . , yn] si rhs /∈ Dteo rhs si rhs∈ Dteo checkr(x, [ ] . [ ], z) → x `aux y , z x `aux y , h >, . . . , > i → undefined

pour toute règle r = action[y1, . . . , yn] −→ rhs[yϕ 1, . . . , yn] et où h t1, . . . , tmi est le terme de sorte Trace tel que ti est égal à ⊥ si i est l’indice de la règle r, > si i est l’indice d’une règle r0 <polr, et une variable sinon tandis que t0

i est égal à ti sauf si i est l’indice de r auquel cas t0

i =>. Intuitivement, le terme h t1, . . . , tmi signifie que la règle correspondant à l’indice i a été « testée » (et n’est pas applicable) ssi ti =>. La présence d’un terme de sorte Trace est nécessaire pour que le système de réécriture soit confluent si la spécification initiale de la politique est cohérente. À noter que les variables libres de la formule y = action[y1, . . . , yn]∧ ϕ dans la seconde règle (y est instancié) correspondent aux variables du motif action, c’est-à-dire {y1, . . . , yn}. En conséquence, le résultat de l’évaluation de cette formule est soit la liste vide (si l’instance de y ne filtre pas le motif action ou si ϕ n’est pas vérifiée) soit le tuple h t1, . . . , tni tel que action[t1, . . . , tn]soit égal à l’instanciation de y. L’équivalence de la terminaison des systèmes de réécriture →Rpol et →pol

η est évidente dans la mesure où le système RAR termine et que les systèmes sont des systèmes de réécriture à la racine. La non-terminaison de →Rpol ne peut provenir que d’une boucle provoquée par la réécriture d’une action en une autre action, de même pour →pol

η . ~

4.2.5 Système sécurisé

Le système de réécriture simulant la relation de transition d’un système sécurisé s’obtient aisément à partir de la sémantique du système de sécurité et de la politique de sécurité à partir desquels il est construit.