• Aucun résultat trouvé

Nous revenons dans cette section sur quelques pr´eliminaires math´ematiques n´ecessaires `a la compr´ehension de certaines analyses. La plupart des termes ´etant adapt´es de l’s, nous pr´ecisons aussi dans cette section, pour quelques-uns de ces termes, le sens que nous leur accordons dans la suite de ce m´emoire.

2.3.1 Notions sur les treillis

Les notions math´ematiques pr´esent´ees dans cette section sont tir´ees de [6].

Pr´e-ordre

Un pr´e-ordre sur un ensemble S, not´e v, est une relation sur S, (i.e., v ⊆ S × S), qui v´erifie les propri´et´es suivantes :

– R´eflexivit´e : ∀x ∈ S.x v x.

– Transitivit´e : ∀x, y, z ∈ S.x v y ∧ y v z =⇒ x v z.

Exemple : L’ensemble N des entiers naturels muni de la relation d’ordre ≤ est un pr´e-ordre.

Ordre partiel

Un ordre partiel sur un ensemble S est un pr´e-ordre qui est antisym´etrique. C’est-`a-dire :

∀x, y ∈ S.(x v y ∧ y v x) =⇒ x = y.

Majorant, borne sup´erieure

Soit v un ordre partiel d´efini sur un ensemble S, un ´el´ement u ∈ S est dit majorant d’un ensemble X ⊆ S si ∀x ∈ X.x v u. Soit u le plus petit des majorants de X, u est par d´efinition la borne sup´erieure de X et on ´ecrit u = tX. Plus formellement :

Minorant, borne inf´erieure

Soit v un ordre partiel d´efini sur un ensemble S. Un ´el´ement v ∈ S est dit minorant d’un ensemble X ⊆ S si ∀x ∈ X.v v x.

Soit v le plus grand des minorants de X, v est par d´efinition la borne inf´erieure de X et on ´ecrit v = uX. Plus formellement :

v = uX ⇐⇒ (∀x ∈ X.v v x) ∧ (∀v0∈ S, (∀x ∈ X.v0 v x) =⇒ v0v v). Treillis

Un treillis est un couple (L, v), o`u L est un ensemble partiellement ordonn´e par la relation v, et tel que toute paire d’´el´ements admet une borne inf´erieure et une borne sup´erieure. Treillis complet

Un treillis complet est un 6-uplets (L, v, ⊥, >, t, u), o`u L est un ensemble partiellement ordonn´e par la relation v, et tel que tout sous-ensemble (fini ou infini) X de L a une borne inf´erieure et une borne sup´erieure, c’est-`a-dire :

∀X ⊆ L. tX et uX existent.

En particulier, en prenant X = L ⊆ L, on a par d´efinition : – tL = >

– uL = ⊥ .

Propri´et´e 1. Tout treillis sur un ensemble L fini est un treillis complet.

Dans la suite, nous repr´esenterons le treillis tout simplement par le couple (L, v). Le treillis de s´ecurit´e et l’analyse du flot d’information

Nous avons vu dans la section2.2.1que dans les mod`eles de contrˆole d’acc`es obligatoires, on attribue des ´etiquettes de s´ecurit´e aux objets et aux principaux. Dans les mod`eles de contrˆole du flot d’information par le langage, on associe aussi des ´etiquettes de s´ecurit´e `a certaines entit´es du programme. Dans certains mod`eles, ces ´etiquettes sont associ´ees aux variables du programme. Dans d’autres, elles sont associ´ees seulement aux canaux d’entr´ee et de sortie. Dans d’autres encore, elles sont ´egalement associ´ees aux commandes. Une relation d’ordre

est ensuite d´efinie sur l’ensemble des ´etiquettes. L’ensemble des ´etiquettes muni de cette relation poss`ede souvent les propri´et´es d’un ordre partiel et parfois celles d’un treillis. Dans ce dernier cas, le plus petit ´el´ement du treillis (⊥) correspond `a l’´etiquette du plus bas niveau de s´ecurit´e et le plus grand ´el´ement du treillis de s´ecurit´e (>) correspond `a l’´etiquette du plus haut niveau de s´ecurit´e. Pour assurer la confidentialit´e, on ne doit pas permettre un flot d’information d’une entit´e sur un niveau donn´e vers une autre entit´e sur un niveau plus bas. D’autre part, pour assurer l’int´egrit´e, les flots d’informations vers les entit´es de haut niveau doivent ˆetre limit´es.

La non-interf´erence pr´esent´ee dans la section 2.2.2introduit une dichotomie entre niveau bas et niveau haut, ce qui revient `a effectuer une partition du treillis L en deux ensembles L et H respectivement, tous deux stables par les op´erations u et t. Il serait possible de formuler une notion plus g´en´erale, s´eparant les niveaux en un nombre quelconque de classes. Cependant, cette propri´et´e ´etendue pourrait ˆetre vue comme la superposition de plusieurs instances de la forme simple, chacune d’entre elles exprimant l’absence de flot d’information entre une paire d’un ´emetteur et d’un receveur. `A la lumi`ere de ce constat, nous allons souvent consid´erer dans la suite un treillis de s´ecurit´e `a deux niveaux, avec L pour le bas niveau et H pour le haut niveau o`u L v H et H 6v L.

2.3.2 Sensibilit´e aux flots et insensibilit´e aux flots

Par rapport au traitement des variables, une des particularit´es de presque toutes les analyses du flot d’information parmi les plus r´ecentes est qu’elles sont insensibles aux flots, c’est- `

a-dire que l’ordre d’ex´ecution des instructions n’est pas pris en compte. C’est le cas de la technique d’analyse pr´esent´ee par Denning et Denning [10]. Une intuition simple de cette notion est qu’une analyse est insensible aux flots si le r´esultat de l’analyse de la s´equence C1; C2 est le mˆeme que celui de l’analyse de C2; C1. En particulier, l’insensibilit´e aux flots

dans un syst`eme de types signifie que si un programme est typ´e comme s´ecuritaire, alors tous ses sous-programmes doivent ˆetre aussi typ´es comme s´ecuritaires. Par exemple, le programme l := h; l := 0 o`u h contient un secret et que la valeur finale de l est observable par le public, est consid´er´e comme non s´ecuritaire parce que le sous-programme l := h est non s´ecuritaire. Plus g´en´eralement, une analyse insensible aux flots utilise une abstraction simple (dans notre cas le niveau de s´ecurit´e) pour repr´esenter chaque variable du programme. Une analyse sensible aux flots am´eliore la pr´ecision en fournissant une abstraction diff´erente `a chaque point du programme. Le niveau de s´ecurit´e attribu´e `a chaque variable du programme n’est pas fixe, mais se met `a jour au fur et `a mesure qu’on avance dans le programme. Nous reviendrons plus en d´etail sur les m´ecanismes de contrˆole de flot d’information sensible aux flots au chapitre3.

(Expressions) e ::= v | x | e ⊕ e

(Commandes) c ::= skip | x := e | c; c | if e then c else c | while e do c | stop | end

Table 2.1 – Langage imp´eratif simple

2.3.3 Syntaxe et s´emantique des programmes

Dans ce m´emoire, nous appliquerons souvent nos mod`eles sur des programmes ´ecrits avec un langage imp´eratif simple. Nous introduisons ce langage dans cette section, en nous ap- puyant sur la pr´esentation de Volpano et al. [32]. Dans la suite de ce m´emoire, certaines nouvelles primitives vont ˆetre ajout´ees `a cette version de base, notamment pour traiter de la communication avec l’ext´erieur ou de la concurrence.

Le langage est constitu´e d’expressions et de commandes comme on peut voir dans la table2.1. Une expression e peut ˆetre un entier v, une variable x ou une composition d’expressions de la forme e ⊕ e, o`u ⊕ est une op´eration binaire. Une commande c est une instruction imp´erative standard : l’inaction (skip), l’affectation, la composition s´equentielle, la conditionnelle (if then) et la boucle (while). Le langage inclut aussi deux autres commandes, stop et end, g´en´er´ees par le syst`eme dans certains mod`eles pour marquer la fin d’une ex´ecution pour la premi`ere, et la sortie d’un bloc conditionnel ou d’une boucle pour le second.

2.3.4 Autres d´efinitions

Les termes « coh´erence » et « permissivit´e » sont utilis´es dans plusieurs articles sans d´efinition formelle. Voici la signification que nous leur donnons.

D´efinition 2. Coh´erence

Un m´ecanisme statique de contrˆole de flot d’information est dit coh´erent, « sound » en an- glais3, s’il rejette tout programme non s´ecuritaire. Un m´ecanisme de contrˆole dynamique est

coh´erent s’il bloque toute ex´ecution non s´ecuritaire.

D´efinition 3. Permissivit´e

Le terme permissif est utilis´e pour comparer deux m´ecanismes diff´erents de contrˆole de flot d’information. Un m´ecanisme est plus permissif qu’un autre si le premier accepte un plus grand nombre de programmes s´ecuritaires que le second.

3. Dans le domaine de la logique, « sound » est utilis´e dans la litt´erature anglaise pour qualifier un m´ecanisme solidement bˆati, dont la coh´erence est d´emontr´ee.

2.4

Les grandes familles de m´ecanismes de contrˆole du flot