• Aucun résultat trouvé

4.3 Vérification

4.3.4 Analyse par requêtage

Comme nous l’avons évoqué dans le chapitre précédent, il est souvent utile de pouvoir « interroger » une politique de sécurité en formulant des requêtes spécifiant partiellement les éléments à partir desquels la politique est définie. Ce type d’analyse a été présenté sous le nom d’analyse par requêtage ou encore d’analyse administra-tive. Dans le cas des politiques dynamiques, ce type d’analyse diffère légèrement de la présentation qui en a été faite dans le chapitre 3. En effet, dans le cas présent l’ana-lyse peut correspondre à l’évaluation d’une requête contenant des inconnues dans un environnement complètement spécifié ou bien à l’évaluation d’une requête sous un certain nombre de contraintes spécifiant partiellement un environnement. Pour permettre ce type d’analyse dans notre cadre, il est nécessaire que les contraintes possèdent une forme particulière. Nous baptisons de teo-définissables les contraintes éligibles relativement à la théorie teo et les définissons comme suit :

Définition 4.39. Soient teo une théorie de sécurité et {p1, . . . , pn} l’ensemble des prédicats de ˜ΣEnv

teo = (S, F, P) tels que Cteo(pi) = empty. Une contrainte teo-définissable est une formule du second ordre de la forme

∃q1, . . . , qm, n ^ i=i ∀x1, . . . , xni, (pi(x1, . . . , xni) ⇔ ϕi) !

où pour tout i, ϕi est une formule sans quantificateur (contenant éventuellement des égalités) sur la signature ˜Σdef

teo = (S, F, {p ∈ P | Cteo(p) 6= empty}) et l’en-semble de variables du second ordre XP ={q1, . . . , qm}. Par extension, on désigne par teo-définissable toute formule (éventuellement du premier ordre) équivalente à une contrainte de la forme présentée.

Exemple 4.40.Considérons par exemple une théorie de sécurité teo contenant deux prédicats p1 : s et p2 : s tels que Cteo(p1) = Cteo(p2) = empty. La contrainte ϕ = ∀x, p1(x)⇒ p2(x) est teo-définissable car ϕ peut s’écrire sous la forme suivante :

∃q1 : s, q2 : s, 

∀x : s, (p1(x) ⇔ q1(x)∧ q2(x)) ∧ ∀x : s, (p2(x) ⇔ q2(x))

Définition 4.41. Soit teo une théorie de sécurité. Une requête administrative sur teo est une paire req k ϕ où ϕ est une contrainte teo-définissable et req un terme de T (ΣAct

teo,X ). L’ensemble des solutions de la requête req k ϕ dans une politique 100

4.3. VÉRIFICATION

de sécurité pol (supposée terminante, cohérente et complète), noté Solpol(req k ϕ) est donné par :

n

(σ, ψ, d) | ∃η ∈ Env(teo), η |= ϕ ∧ ψ, d ∈ Dteo, σ(req)−→ pol do

Les solutions indiquent la décision (d) prise par la politique en fonction des valeurs des variables de la requête (σ) et de conditions supplémentaires (ψ).

Exemple 4.42. Considérons la politique présentée dans l’exemple 4.18. On se pose la question de l’évaluation de la requête req = take(s, o, read) dans les environnements vérifiant : ϕ =∀s0:Subject, o0:Object,    s0= user(is, ls) ∧ o0 = object(io, lo) ∧ accesses(s0, o0, write) ⇒ inf(ls, lo)

en fonction des valeurs de s et de o. (ϕ, req) est une requête administrative sur teo car ϕ est teo-définissable :

∃        qsudo : Subject

qacc : Subject× Object × Mode qblacklist: Subject qredlist: Subject ,        ∀x, sudo(x) ⇔ qsudo(x) ∧ ∀x, y, z, accesses(x, y, z) ⇔ ϕacc ∧ ∀x, blacklist(x) ⇔ qblacklist(x) ∧ ∀x, redlist(x) ⇔ qredlist(x) où ϕacc est la formule :

qacc(x, y, z)∧ ∀is, ls, io, lo,   x = user(is, ls) ∧ y = object(io, lo) ∧ z = write   ⇒ inf(ls, lo) L’ensemble des solutions de req k ϕ est donné par :

{(∅, ¬blacklist(s), permit), (∅, blacklist(s), deny)}

Il indique que lorsque ϕ est vérifiée, l’accès en lecture à un objet est accordée à un utilisateur si et seulement si il n’est pas sur liste noire.

La question qui nous intéresse désormais est de savoir comment le cadre proposé permet de calculer les solutions d’une requête administrative. Tout d’abord, remar-quons que la caractérisation des formules teo-définissables correspond aux contraintes qui peuvent être représentées sous la forme d’un terme avec variables sur la signature ΣAR

teo.

Proposition 4.43. Soit teo une théorie de sécurité et ϕ une contrainte teo-définissable. Il existe un système de réécriture à la racine Rdef

AR sur une extension Σdefteo de ΣAR

substitution close σ telle que σ(ϑteo(ϕ))−→ Rdef AR

γteo(η).

}Démonstration.Soit ϕ une contrainte teo-définissable exprimée sous la forme ex-posée dans la définition 4.39, c.-à-d. sous la forme :

∃q1, . . . , qm, n ^ i=i ∀x1, . . . , xni, (pi(x1, . . . , xni) ⇔ ϕi) !

On associe à chaque prédicat q quantifié existentiellement une variable xq de sorte Factsq< Facts et l’on augmente la signature ΣAR

teo des symboles suivants :

q : s1× . . . × sn→ Factq,

nilq:→ Factsq

consq: Factq× Factsq→ Factsq

Le système Rdef

AR est composé des règles Ci[RAR]pour tout Ci =hx1, . . . , mappi(), . . . , xni ainsi que des règles C0

i[mappi] où C0

i = h x1, . . . , , . . . , xni et mappi est l’ensemble de règles :

mappi(done(x)) → mapaux

pi (done(x), [ ]) mapaux

pi (done(h x1, . . . , xni :: q), l) → mapaux

pi (done(q), pi(x1, . . . , xn) :: l) mapaux

pi (done([ ]), l) → l

Le terme h mapp1teo1)), . . . , mappnteon))i correspond alors à ϑteo(ϕ). ~

En conséquence, la recherche des solutions d’une requête administrative peut être réduite à une union finie de problèmes d’accessibilité.

Proposition 4.44.Soit teo une théorie de sécurité et req k ϕ une requête adminis-trative sur teo. À toute solution (σ, ψ, d) de Solpol(reqk ϕ) correspond exactement une solution du problème d’accessibilité ϑteo(ϕ)` req−→ Rpol∪RAR

teo d. Toute solution σ du problème d’accessibilité ϑteo(ϕ)` req −→ Rpol∪RAR

teo dpeut être partitionnée en deux substitutions σ = σ1∪ σ2 telles que Dom(σ1)⊆ Var(ϑteo(ϕ))et Dom(σ2) ⊆ Var(req). σ1 caractérise les conditions supplémentaires sous lesquelles σ2(req) est évalué en d.

4.4 Travaux reliés

Depuis une dizaines d’années, de nombreux travaux se sont attachés à établir des cadres formels de spécification pour l’analyse de politiques dynamiques.

Le premier article paru en ce sens est [Jajodia et al., 2001]. Dans ce papier, les auteurs présentent un cadre logique baptisé Flexible Authorization Framework (FAF) permettant d’exprimer et de mettre en oeuvre des politiques de contrôle d’accès multiples. Dans FAF, les règles sont spécifiées dans un style à la Prolog 102

4.5. SYNTHÈSE

[Sterling and Shapiro, 1994]. Le cadre inclus notamment la notion d’historique mé-morisant les accès effectués. En ce sens, ce travail constitue une première étape vers une définition plus générique de la notion de politiques dynamiques. Dans la même veine, les travaux présentés dans [Becker and Sewell, 2004] proposent un langage et un système basé sur les rôles pour exprimer les politiques. Le langage, Cassandra, supporte le contrôle d’accès basé sur les certificats et se fonde sur une extension de Datalog intégrant la notion de contraintes. Les faits évoluent pour modéliser les effets de bords induits par l’exécution des actions. Les politiques sont vues comme des déclarations sur les données des requêtes et sur les relations capturant les infor-mations recueillies par l’application. Une des principales limitations de ces travaux est le caractère spécifique de la démarche aux politiques basés sur la notion de rôles. Dans [Dougherty et al., 2006], les auteurs préconisent également une séparation de la politique de sécurité, définie statiquement, du comportement dynamique du programme et proposent une représentation de la politique dynamique induite par ces deux éléments (règles statiques et programme). La notion d’environnement est introduite sous la forme d’un ensemble de faits caractérisant le système. L’exécution d’une action est associée à l’ajout ou à la suppression de faits à partir de l’environ-nement duquel l’action a été invoquée. Les politiques de sécurité sont modélisées par des programmes logiques Datalog de la forme suivante :

permit(x1, . . . , xn) ← p1(x1 1, . . . , x1 n1)∧ . . . ∧ pk(xk 1, . . . , xk nk) deny(x1, . . . , xn) ← p1(x1 1, . . . , x1 n1)∧ . . . ∧ pk(xk 1, . . . , xk nk)

Les auteurs s’attachent à montrer que ce cadre permet d’analyser formellement les propriétés de sûreté et de disponibilité. Cependant, l’usage de Datalog limite le pou-voir d’expression du cadre proposé.

Dans [Becker, 2009], Becker propose un langage de spécification appelé DynPAL permettant de vérifier les propriétés de sûreté sur des politiques dynamiques possé-dant un nombre non borné d’objets. Le papier propose deux méthodes pour raisonner sur l’accessibilité et les invariants des politiques. Pour traiter le problème de l’acces-sibilité, la politique est traduite dans le langage PDDL [McDermott et al., 1998]. Les propriétés de sûreté sont vérifiées en utilisant un prouveur de théorèmes du premier ordre et réduit la vérification de l’hypothèse d’invariance à un problème de validité d’une formule du premier ordre.

Dans [Becker and Nanz, 2010], un langage baptisé SMP est présenté. Destiné à décrire les politiques avec effets de bords, le langage est fondé sur la logique transac-tionnelle. Cette logique est une extension de la logique des prédicats comportant à la fois une sémantique déclarative et procédurale décrivant les changements d’états d’une base de données dynamique. Le fragment retenu pour la description des poli-tiques est basé sur Datalog. Il souffre donc d’une expressivité limitée.

4.5 Synthèse

Nous avons présenté dans ce chapitre un cadre permettant de spécifier séparément les règles d’une politique de sécurité du système sur lequel elle s’applique.

Les états du systèmes sont vus comme des interprétations logiques finies (en-sembles finis de faits) et les transitions sont décrites au moyen de règles de mises

à jour des interprétations. Les politiques sont exprimées au moyen de règles de ré-écriture contraintes par des formules du premier ordre. Nous avons ensuite défini la notion de système sécurisé, matérialisant le résultat de l’application d’une politique de sécurité sur un système.

Nous avons proposé un langage dont la sémantique opérationnelle des spécifica-tions est donnée au moyen de systèmes de réécriture. La mise en place d’un langage dédié permet d’imposer des restrictions syntaxiques complexes sur la logique sous-jacente (les systèmes de réécriture) de façon transparente pour l’utilisateur. En ce sens, notre approche se distingue fortement de la plupart des approches formelles proposées pour la spécification des politiques dans la littérature. La forme particu-lière des systèmes obtenus permet d’utiliser les outils et techniques existants pour analyser les politiques ainsi spécifiées : étude des propriétés (cohérence, terminaison, complétude), du problème de l’administration, comparaison des politiques et analyse par requêtage.

Une partie des travaux présentés dans ce chapitre ont été présentés dans [Bourdier et al., 2010b,Bourdier et al., 2010c,Bourdier et al., 2011].