• Aucun résultat trouvé

configuration donnée par le programme ρ suivant :                                              ura(Alice, r1) ⇐ ura(Bob, r2) ⇐ ura(Charlie, r1) ⇐ ura(Charlie, r2) ⇐

pra(r1, read_mode, file(n)) ⇐ even(n) pra(r2, write_mode, file(n)) ⇐ thd(n)

thd(zero) ⇐ thd(succ(n)) ⇐ rem3 2(n) rem3 2(succ(n)) ⇐ rem3 1(n) rem3 1(succ(n)) ⇐ thd(n) even(zero) ⇐ odd(succ(n)) ⇐ even(n) even(succ(n)) ⇐ odd(n)

Les prédicats auxiliaires even, odd et thd caractérisent respectivement les entiers pairs, impairs et multiples de trois tandis que l’atome remk

m(n) carac-térise le fait que le reste de la division euclidienne de n par k est m. Cette spécification de configuration indique que Alice est affectée au rôle r1, Bob au rôle r2 et Charlie aux rôles r1 et r2. Elle caractérise également le fait que le rôle r1 dispose du droit d’accès en lecture sur les fichiers identifiés par un entier pair et que le rôle r2 dispose du droit d’accès en écriture sur les fichiers identifiés par un entier multiple de trois.

3.2 Sémantique et propriétés

Dans cette section, nous allons montrer que notre cadre permet de montrer des propriétés sur les spécifications de politiques. Nous montrerons également que l’on peut calculer automatiquement une procédure d’évaluation des autorisations (la sé-mantique de la politique). Enfin, nous montrerons que nous pouvons interroger les politiques au moyen de « requêtes administratives ». Avant cela, il est nécessaire de vérifier que la configuration de la politique est cohérente. Il est en effet nécessaire que le programme de configuration définisse une interprétation des symboles du mo-dèle sur lequel est basé la politique et qu’il respecte les contraintes imposées par le modèle. C’est ce que nous appelons dans la suite la cohérence de la politique.

Définition 3.14.Une politique de sécurité h modζ, ρκi est cohérente ssi : (i) ρ possède un plus petit modèle syntaxique basé sur les constructeurs Amin

de ˜Σmod,

(ii) ρ|= Tmod (signifiant Amin|= Tmod)

La définition ainsi énoncée peut être vue comme une propriété de modélisation (propriété d’existence d’un modèle logique d’une spécification) mais peut également être vue comme la définition d’une propriété sur une politique : le premier point

correspondant à l’absence de conflit et le second correspondant à une notion de conformité de la configuration avec le modèle de sécurité.

Proposition 3.15. La cohérence d’une politique de sécurité est décidable.

Pour démontrer cette proposition ainsi que celles qui seront énoncées ultérieure-ment, nous nous basons sur le théorème suivant :

Théorème 3.16.Soit ˜Σ une signature logique et A une interprétation syntaxique basée sur les constructeurs telle que pour tout prédicat p, pA est une relation fortement régulière. Pour toute formule du premier ordre ϕ telle que FVar(ϕ) = {x1, . . . , xn}, l’ensemble SolA(ϕ) = {(t1, . . . , tn) | A |= {x1 7→ t1, . . . , xn 7→ tn}(ϕ)} est effectivement fortement régulier.

}Démonstration.Toute relation fortement régulière R est équivalente à une union finie de produits cartésiens d’ensembles réguliers Ri

j : R = m [ i=1 Ri 1× . . . × Ri n 

Notons unaryA(ϕ) la formule obtenue à partir de ϕ après remplacement de tout atome p(t1, . . . , tn)(y compris les égalités) parWmpA

i=1 (pA)i

1(x1)∧ . . . × (pA)i n(xn) où les (pA)i

j sont issus de la décomposition de la relation pA en une union finie de produits cartésiens d’ensembles réguliers équivalente. Naturellement, A |= {x1 7→ t1, . . . , xn7→ tn}(ϕ) ssi A |= {x1 7→ t1, . . . , xn7→ tn}(unaryA(ϕ)). Il faut et il suffit ensuite d’appliquer les étapes suivantes :

transformer tous les quantificateurs en quantificateurs existentiels ;

mettre la formule sous la forme d’une disjonction de conjonctions ;

descendre les quantificateurs le plus bas possible dans l’arbre de la formule ;

transformer les conjonctions d’atome comportant la même variable en inter-section : pA(x)∧ p0A(x)devient (pA∩ p0A)(x);

remplacer les atomes niés ¬pA(x) par pA(x) (où l’inversion de pA s’effectue relativement à la sorte de x, c.-à-d. : pA=T (Σ)s\ pA où s est la sorte de x) ;

remplacer les conjonctions contenant un atome quantifié ∃x:pA(x)∧ conj par conj si pA est non vide et par ∅ sinon ;

transformer toute conjonction non vide conj en T (Σ)(x)s∧ conj pour toute variable x : s ∈ FVar(ϕ) \ Var(conj) ;

choisir un ordre sur les variables et « ordonner les conjonctions » de telle sorte à ce que l’apparition des atomes dans chaque conjonction respecte cet ordre ;

remplacer toutes les conjonctions qui sont alors de la forme p1

A(x1)∧. . .∧pn A(xn) par (p1

A× . . . × pn

A)(x1, . . . , xn);

remplacer la disjonction par une union : p1

A(x1) ∨ . . . ∨ pn

A(xn) devient (p1

A∪ . . . ∪ pn

A)(x1, . . . , xn).

La formule est alors transformée en une expression caractérisant les opérations à effectuer sur les ensembles pA, où p ∈ P, pour obtenir l’automate reconnaissant l’ensemble des n-uplets de valeurs validant la formule ϕ dans A. ~

3.2. SÉMANTIQUE ET PROPRIÉTÉS

Définition 3.17. Soit pol = h modζ, ρκi une politique de sécurité cohérente. On appelle sémantique de pol et l’on noteJpolK l’ensemble des actions que pol auto-rise, c.-à-d. :

JpolK = n

ac∈ At(˜Σ) | ρ |= Γζmod(ac)o

Cette définition induit une relation d’équivalence sur les politiques de sécurité : pol≈ pol0 ssi JpolK =qpol0y

.

Exemple 3.18. Soit pol la politique définie dans l’exemple pré-cédent. JpolK contient les atomes read(Alice, file(succ2k(zero))), write(Bob, file(succ3k(zero))), read(Charlie, file(succ2k(zero))) et write(Charlie, file(succ3k(zero))), pour tout k ∈ N.

Proposition 3.19. Pour toute politique de sécurité pol, l’ensemble JpolK est ef-fectivement fortement régulier.

}Démonstration. Considérons un ensemble (éventuellement ordonné) de règles de sécurité Γmod = (actioni 7→ ϕi)i=1,...,n. Notons, pour tout I = {i1, . . . , iq} ⊆ [1, n] et i∈ [1, n] :

recI =T

i∈Irec(actioni)∩Si∈[1,n]\Irec(actioni)

recf sti = rec(actioni)∩Tj<irec(actionj)

ψi la formule ∃y1, . . . , yk: x1= t1∧ . . . ∧ xm= tm∧ ϕi[y1, . . . , yk]où actioni = act(t1, . . . , tm), act∈ P, {y1, . . . , yk} = Var(actioni). x1, . . . , xm sont les nou-velles variables du motif d’action.

On redéfinit Γζ

mod de la façon suivante (cette nouvelle définition « regroupe » les éléments ayant le même comportement relativement à la fonction Γζ

mod pour pouvoir en donner une caractérisation finie) :

si ζ = and, alors Γζ

mod est la fonction qui à tout recI 6= ∅ associe Vi∈Iψi, et associe > à Act(˜Σ) \Sn

i=1rec(actioni),

si ζ = or, alors Γζ

mod est la fonction qui à tout recI 6= ∅ associe Wi∈Iψi, et associe ⊥ à Act(˜Σ) \Sn

i=1rec(actioni),

si ζ is or_elseν, alors Γζ

modassocie ψià recf st

i et ν à Act(˜Σ)\Sn

i=1rec(actioni). Γζmod doit se comprendre de la façon suivante : étant donnée une action (atome clos) ac = act(t1, . . . , tm) appartenant à L ∈ Dom(Γζ

mod) (un tel L existe et est unique puisque le domaine de Γζ

mod forme une partition de l’ensemble des actions), l’action acest permise ssi (t1, . . . , tm)est une solution de Γζ

mod(L). Formellement, l’automate reconnaissantJpolK est le résultat de l’opération suivante :

[

L∈Dom(Γζmod)



L ∩ Solρζmod(L))

En conséquence de la proposition précédente, on obtient la faculté d’« interroger » la politique. Interroger une politique consiste à calculer le résultat de requêtes de la forme « Y a-t-il au moins un utilisateur pouvant accéder au fichier f ? » ou « Tous les utilisateurs peuvent-ils accéder à au moins un fichier ? ». Dans la littérature, cette technique est parfois appelée « what-if analysis » ou « administrator queries ». Dans [Kirchner et al., 2009], il est montré comment résoudre des requêtes exprimées sous la forme d’une action avec variables lorsque la politique est exprimée au moyen d’un système de réécriture. Dans ce chapitre, nous considérons une classe plus large de requêtes.

Définition 3.20. Étant donnée une politique pol sur ˜Σ, on appelle requête sur pol toute formule du premier ordre sur ˜Σ.

Exemple 3.21. Soit pol la politique définie dans les exemples précédents. La formule suivante est une requête sur pol caractérisant les utilisateurs qui ne peuvent effectuer aucune action.

Q(s)=4∀o, ¬read(s, o) ∧ ¬write(s, o)

Les solutions de la requête dans pol, notée Solρ(Q), est vide puisque tous les utilisateurs (Alice, Bob et Charlie) peuvent lire ou écrire au moins un fichier.

Proposition 3.22.Étant donnée une politique pol, l’ensemble Solρ(Q)est effec-tivement fortement régulier pour toute requête Q.

Il s’agit d’une conséquence directe de la proposition 3.19 et du théorème 3.16. Cette proposition, très puissante en ce sens où elle nous affirme que l’on peut évaluer toute requête du premier ordre sur la sémantique d’une politique donnée, justifie le choix du fragment H1 pour la spécification de configurations de sécurité. De plus, le pouvoir d’expression offert par ce fragment est suffisament important pour pouvoir décrire les cas réels de configuration.