Académique Documents
Professionnel Documents
Culture Documents
II -
II
discrétionnaires
(DAC)
L'appellation "Modèle de matrice de contrôle" est due au fait que les autorisations
sont représentées via une matrice. Malgré sa simplicité apparente, ce modèle
illustre de façon très claire et utile les différents aspects des politiques
discrétionnaires.
Remarque
Les concepts de sujets, objets et actions peuvent être différent en fonction du
contexte d'application.
Nazih Selmoune
15
Les politiques discrétionnaires (DAC)
Exemple
Dans un système d'exploitation, les objets sont les fichiers, dossiers et
programmes
Dans un SGBD, les objets sont les tables, vues , procédures stockées ...
Il est intéressant de noter que les sujets peuvent eux même être des objets. c'est
le cas par exemple des procédures stockées.
Un sujet peut éventuellement créer d'autres sujets (processus fils par exemple).
Dans ce cas le sujet créateur détient des privilèges sur les sujets créés (un
processus, peut suspendre, ou terminer ses processus fils).
Règles de Lampson
Règle 1 : d1 peut supprimer les attributs d'accès de A[d 2,x] s'il a l'accès en
contrôle de d2
Règle 2 : d1 peut copier dans A[d 2,x] n'importe quel attribut d'accès qu'il
détient sur x s'il a la marque de copie (*), et peut spécifier si l'attribut
d'accès doit avoir ou non la marque de copie.
Règle 3 : d1 peut ajouter n'importe quel attribut d'accès à A[d 2,x] avec ou
Nazih Selmoune
16
Les politiques discrétionnaires (DAC)
Remarque
La restriction "protégé" permet à un seul propriétaire de défendre son accès des
autres propriétaires.
La mise à jour d'une politique de sécurité exprimée par ce modèle est coûteuse car
si de nouveaux objets, de nouveaux sujets ou de nouvelles actions sont ajoutés
dans le système, il devient nécessaire d'enregistrer toutes les permissions
accordées pour ces nouvelles entités. Enfin, ce modèle ne permet pas de contrôler
les interdictions ou d'exprimer des obligations.
1. Formalisation (HRU)
Dans le modèle de matrice d'accès l'état du système est défini par un triplet
(S,O,A), où s est un ensemble de sujets, O un ensemble d'objets et A est la matrice
d'accès telle que les lignes correspondent aux sujets et les colonnes aux objets.
Une cellule A[s,o] correspond aux privilèges de s sur o.
En plus des privilèges classiques "lecture", "écriture", "exécution" (r,w,e), il est
possible en fonction du contexte de définir d'autre privilèges tels que "propriété"
(own), "contrôle" (pour modéliser la relation entre un processus père et un
processus fils).
Remarque
Un sujet peut être considéré comme un objet, donc S est inclus dans O.
Nazih Selmoune
17
Les politiques discrétionnaires (DAC)
Syntaxe
command c(x1,....xk)
if r1 in A[xs1,xo1] and r2 in A[xs2,xo2] and.....and rm in A[xsm,xom]
then op1, op2, ... opn
end.
Complément
n>0, m>=0,
r1, r2 ... rm sont des actions (privilèges),
op1, op2, ... opn sont des actions primitives,
s1, s2, ...sm et o1, o2,....om sont des entiers entre 1 et k.
Remarque
Si m=0 alors la commande n'a pas de précondition.
Nazih Selmoune
18
Les politiques discrétionnaires (DAC)
Remarque
Dans les deux exemple précédents a n'est pas un paramètre, mais une abréviation
pour définir plusieurs commandes similaire, une pour chaque valeur possible de a
(par exemple CONFERread, REVOKEwrite ). Car les commandes sont paramétrées par
des sujets et objets et non par des actions. Il est donc nécessaire de définir des
commandes pour chaque action.
Notons Q |--op Q' l'exécution d'une opération op sur un état Q, résultant en un état
Q'.
L'exécution de la commande c(a1,...., ak) sur un état Q=(S,O,A) induit une
transition de l'état Q à l'état Q' tel que il existe Q 1,...,Qn pour lesquels Q |--op*1 Q1
|--op*2 Q2 ...|--op*n Qn =Q' , où op*1,...,op*n sont les opérations primitives op 1,...,opn
dans les corps de la commande c, dans laquelle les paramètres a i sont substitués
pour chaque paramètre xi i :=1,...,k.
Si la partie conditionnelle de la commande n'est pas vérifiée alors Q=Q'
Exemple
Command TRANSFERa (subj, friend, file)
if a* in A[subj, file]
then enter a into A[friend, file]
end.
Nazih Selmoune
19
Les politiques discrétionnaires (DAC)
(transfer only) notée + peut être prise en compte. Celle ci permet à un sujet de
transmettre un privilège, mais en effectuant ce transfert il perd le privilège.
Remarque
Cette flexibilité introduit un problème intéressant appelé problème de sûreté (safety
problem), qui concerne la propagation des privilèges : Étant donné un système
avec une configuration initiale, le problème de sûreté consiste à déterminer si oui
ou non un sujet s peut acquérir un privilège a sur un objet o. c-à-d s'il existe une
séquence de requêtes qui appliquée sur Q produit un état Q' dans lequel 'a'
apparaît dans une cellule A[s,o].
En fait, ce problème revient à vérifier qu'un schéma d'autorisation est correct vis-à-
vis d'un ensemble d'objectifs de sécurité.
Harrison, Ruzzo et Ullman ont démontré deux théorèmes fondamentaux concernant
la complexité du problème de sûreté :
le problème de sûreté est indécidable dans le cas général, c'est-à-dire, étant
donné une matrice d'accès initiale et un ensemble de commandes, il est
impossible de savoir si aucune séquence d'applications de ces commandes
n'aura pour conséquence de mettre un droit particulier dans un endroit de la
matrice où il ne se trouvait pas initialement ;
le problème de sûreté est décidable pour les systèmes à mono-opération,
c'est-à-dire dont les commandes ne contiennent qu'une seule opération
élémentaire.
Les auteurs du modèle HRU ont proposé un algorithme de vérification de sûreté
pour le système mono-opérationnel. L'algorithme consiste à tester un ensemble fini
d'exécutions. Cependant, l'algorithme est difficilement utilisable du fait de sa
complexité (NP-Complete) et l'hypothèse d'un système mono-opérationnel ne
correspond pas aux systèmes réels.
Remarque
Ce modèle ne permet pas d'exprimer des interdictions,des obligations ou des
recommandations.
Bien que la matrice représente une bonne conceptualisation des autorisations, elle
n'est pas appropriée pour l'implémentation. Dans un système réel la matrice serait
creuse (la plupart des cellules seraient vides) et d'une taille très importante. Donc
le stockage de la matrice dans un tableau à deux dimensions conduirait à une perte
considérable d'espace mémoire.
Table d'autorisations
La table comprend trois colonnes (sujet, actions et objet ). Chaque tuple dans la
table correspond à une autorisation. Cette approche est utilisée notamment dans
les SGBDs où les autorisations sont stockées dans les catalogues.
Nazih Selmoune
20
Les politiques discrétionnaires (DAC)
Table d'autorisations
ACL
Capacités
La matrice est stockée par lignes. Chaque sujet est associé à une liste appelé liste
de capacités , indiquant pour chaque objet les accès que le sujet peut effectuer
dessus.
Nazih Selmoune
21
Les politiques discrétionnaires (DAC)
Capacités
ACLs et capacités présentent des avantages et des inconvénients. Dans les ACLs on
peut facilement connaître les autorisations associées à un objet, alors la recherche
des autorisations d'un sujet requiert le parcours de toutes les listes des objets.
L'inverse est vrai pour les capacités. Ceci affecte l'efficacité de la révocation des
autorisations (nécessité d'une étape de recherche).
Remarque
Les capacités présentent un intérêt notamment dans les systèmes distribués. Car
elles permettent d'éviter la répétition des authentifications. Un sujet peut
s'authentifier une fois auprès du hôte, récupérer sa capacité et les présenter pour
obtenir des accès aux différents serveurs du système. Cependant les capacités sont
vulnérable à la contrefaçon (elles peuvent être copiées et utilisées par un sujet non
autorisé).
Plusieurs systèmes à base de capacités ont été développés dans les années 70,
mais n'ont pas eu de succès commercial. Les systèmes d'exploitation récents se
basent sur l'approche ACL. Certains implémentent une abréviation des ACLs basée
sur un nombre limité de groupes et ne permettent pas les autorisations
individuelles. Ceci induit un gain d'efficacité en travaillant sur de petits vecteurs de
bits.
Exemple
Dans Unix chaque utilisateur appartient à un seul groupe et chaque fichier a un seul
propriétaire (généralement l'utilisateur qui l'a créé) et est associé à un groupe
(généralement le groupe de son propriétaire).
Les autorisations de chaque fichier peuvent être spécifiées pour : son propriétaire,
son groupe d'appartenance, et le "reste du monde".
Les autorisations sont représentées par l'association à chaque objet d'une liste de
contrôle d'accès de 9 bits : les bits de 1 à 3 reflètent les privilèges du propriétaire,
les bits de 4 à 6 reflètent les privilèges de groupe d'appartenance, et les trois
derniers bits aux privilèges des autres utilisateurs.
Chaque groupe de trois bits fait référence respectivement aux autorisations de
Nazih Selmoune
22
Les politiques discrétionnaires (DAC)
B. Modèle Take-Grant
Remarque
Dans ce modèle, le graphe représentant l'état du système, peut être assimilé à la
matrice d'accès, et les quatre règles ci-dessus (dites de réécriture), correspondent
au schéma d'autorisation, c'est-à-dire aux commandes.
Même si ces règles peuvent paraître simples, leurs combinaisons peuvent mener le
système dans des états d'insécurité. En effet, l'application successive de plusieurs
règles (bien choisies) peut donner d'autres droits à des sujets, ce qui risque de
compromettre certains objectifs de sécurité.
Nazih Selmoune
23
Les politiques discrétionnaires (DAC)
Exemple
L'exemple ci dessous montre un graphe de protection qui contient deux sujets, P et
R et un objet O.
Dans l'état de protection initial, R possède le droit α sur O et le droit t sur P.
Considérons un objectif de sécurité stipulant que le système est déclaré non-sûr si
P parvient à acquérir le droit α sur O.
Exemple
La séquence d’application des règles décrites dans la figure suivante indique que le
système n’est pas sûr, alors que ce constat n’est pas directement explicite dans la
figure précédente.
Complément
Pour pallier à ce type de problème, Jones et al. ont étudié le problème de sûreté
dans le cadre du modèle Take-Grant. Ils définissent le prédicat “can” de la façon
suivante : « P can a Q » est vrai si et seulement s'il existe une séquence de
graphes “G1, .., Gn” telle que P ait le droit a sur Q dans le graphe Gn. Jones et al.
définissent les conditions nécessaires et suffisantes pour que le prédicat soit
satisfait :
Chemin tg : chemin dans le graphe représentant la matrice de droits d'accès
ne contenant que des arêtes t ou g. (Orientation d'arêtes non-importante).
Théorème : En supposant S = O, pour x, y ∈ S, x peut récupérer le droit α
sur y si et seulement si il existe un z ∈ S tel que α∈A [z, y] et x et z sont
reliés par un chemin tg.
Ils établissent également l'existence d'une solution algorithmique de complexité
linéaire permettant d'établir si le prédicat est vérifié. Toutefois, les hypothèses
sous-jacentes à ce modèle sont assez peu réalistes.
En effet, et comme on peut le constater avec l'exemple présenté, s'il est vrai que P
peut parvenir à acquérir le droit a sur O, il ne peut le faire que si R collabore avec
lui. En réalité, il est difficile d'imaginer que tous les sujets vont collaborer afin de
mettre la sécurité en péril. Une telle hypothèse est donc le pire cas sur le
comportement des utilisateurs du système.
Nazih Selmoune
24
Les politiques discrétionnaires (DAC)
C. Modèle TAM
Remarque
Un point important, dans ce modèle, est que la création de nouveaux types n'est
pas possible.
Nazih Selmoune
25
Les politiques discrétionnaires (DAC)
Sandhu montre qu'il est possible de résoudre le problème de sûreté dans bon
nombre de cas pratiques, sans perdre de puissance d'expression.
Le problème de sûreté est décidable suivant certaines conditions parmi lesquelles :
le système doit être monotone (les privilèges ne peuvent être supprimés)
les commandes doivent être limitées à 3 paramètres.
Complément
Une version dite “augmentée” de TAM, appelée ATAM, a été proposée (1992) afin
de fournir un moyen simple de détecter l'absence de droits dans une matrice
d'accès. Pour cela, le modèle ATAM offre la possibilité d'utiliser des tests du type :
« ai n'appartient pas à M(s,o) » dans la partie conditionnelle de la commande.
La façon de gérer ce type de commande et de résoudre le problème de protection a
également été définie. L'intérêt de cette démarche consiste à modéliser facilement
la séparation des responsabilités (celle-ci préconise l'intervention de plusieurs
utilisateurs pour mener à bien une certaine tâche).
En définissant les concepts de base des politiques discrétionnaires, nous avons fait
références aux requête d'accès faites par les utilisateurs pour accéder aux
objets.Celles ci sont vérifiées par rapport aux autorisations des utilisateurs. Bien
que chaque requête soit affiliée à un utilisateur, une étude plus poussée des
contrôles d'accès montre l'intérêt de différencier entre un utilisateur et un sujet.
Les utilisateurs sont des entités passives pour lesquels des autorisations peuvent
être spécifiées, et qui peuvent se connecter au système. Une fois connectés au
système, les utilisateurs créent des processus (sujets) qui s'exécutent pour leur
compte et, par conséquent, envoient des requêtes au système.
Les politiques discrétionnaires ignorent cette distinction et évaluent toutes les
requêtes présentées par un processus en cours d'exécution pour le compte de
certains utilisateurs par rapport aux autorisations de l'utilisateur.
Cet aspect rend les politiques discrétionnaires vulnérables aux processus exécutant
des programmes malveillants qui exploitent les autorisations de l'utilisateur pour le
compte duquel ils s'exécutent.
En particulier, le système de contrôle d'accès peut être contournée par les chevaux
de Troie intégrées dans les programmes.
Un cheval de Troie est un programme d'ordinateur avec une fonction apparemment
ou réellement utile, qui contient des fonctions supplémentaires cachées qui
exploitent sournoisement les autorisations légitimes du processus appelant. (Les
virus et les bombes logiques sont généralement transmis comme les chevaux de
Troie).
Un cheval de Troie peut utiliser à mauvais escient les autorisations de l'utilisateur
exécutant, par exemple, il pourrait même supprimer tous les fichiers de l'utilisateur
(ce comportement destructeur n'est pas rare dans le cas des virus).
Cette vulnérabilité aux chevaux de Troie, ainsi que le fait que les politiques
discrétionnaires n'assurent aucun contrôle sur la circulation de l'information une fois
que cette information est acquise par un processus, font qu'il est possible pour les
processus de divulguer des informations à des utilisateurs non autorisés à les lire.
Tout cela peut se produire à l'insu de l'administrateur ou propriétaires de données,
Nazih Selmoune
26
Les politiques discrétionnaires (DAC)
Exemple
Supposons que dans une organisation, Vicky, un gestionnaire de haut niveau, crée
un fichier 'Market' contenant des informations importantes sur l'émission de
nouveaux produits. Ces informations sont très sensibles pour l'organisation et,
conformément à la politique de l'organisation, ne doivent pas être divulgués à
quiconque en dehors de Vicky. Considérons maintenant John, l'un des subordonnés
de Vicky, qui veut acquérir ces informations sensibles pour les vendre à un
concurrent.
Pour ce faire, John crée un fichier, appelons-le "Stolen", et donne l'autorisation à
Vicky pour écrire dans ce fichier.
Notez que Vicky ne peut même pas connaître l'existence de "Stolen", ou sur le fait
qu'il a l'autorisation d'écriture sur celui-ci.
En outre, John modifie une application généralement utilisée par Vicky, pour inclure
deux opérations cachées, une opération de lecture sur le fichier "Market" et une
opération d'écriture sur le fichier "Stolen". Puis, il donne la nouvelle application à
son manager.
Supposons maintenant que Vicky exécute l'application. Depuis l'application
exécutée au nom de Vicky, chaque accès est vérifié par rapport aux autorisations
de Vicky, et les opérations de lecture et d'écriture ci-dessus sont autorisés. En
conséquence, lors de l'exécution, des informations sensibles du fichier "Market"sont
transférées vers "Stolen" et donc en mode lecture à l'employé malhonnête John, qui
peut alors les vendre à un concurrent.
Nazih Selmoune
27
Les politiques discrétionnaires (DAC)
Complément
Il peut paraître peu intéressant de à se défendre contre les fuites d'information à
travers chevaux de Troie car une telle fuite peut avoir lieu de toute façon, Vicky
peut transmettre explicitement cette information à John, éventuellement hors ligne,
sans l'utilisation du système informatique . C'est ici que la distinction entre les
utilisateurs et les sujets opérant sur leur nom entre en jeu. Alors que les
utilisateurs sont sensés respecter les restrictions d'accès,les sujets opérant en leur
nom ne le sont pas.
En ce qui concerne notre exemple, Vicky est digne de confiance de ne pas divulguer
les informations sensibles qu'il connaît à Jean, puisque, selon les autorisations,
John ne peut pas y accéder.
Cependant, les processus opérant pour le compte de Vicky ne peut pas jouir de la
même confiance.
Les processus exécutent des programmes qui, sauf dûment certifiés, ne peuvent
pas jouir de confiance pour les opérations qu'ils exécutent. Pour cette raison, les
restrictions doivent être imposées sur les opérations que les processus peuvent
exécuter.
En particulier, la protection contre les chevaux de Troie exige le contrôle des flux
d'informations lors de l'exécution des processus et éventuellement de les
restreindre.
Les politiques obligatoires fournissent un moyen de faire respecter le contrôle de
flux d'informations grâce à l'utilisation d'étiquettes.
Nazih Selmoune
28
Les politiques discrétionnaires (DAC)
Les listes de contrôle d'accès (ACL) sous Unix sont concises plutôt qu'expressives.
Une ACL d'un fichier F définit trois ensembles de privilèges :
1. Les privilèges du propriétaire PrivsF.owner
2. Les privilèges du groupe : PrivsF.group
3. Les privilèges des autres : PrivsF.other
Un processus ayant euid comme userId effectif, et egid comme groupId effectif est
autorisé à effectuer une opération nécessitant un privilège p sous les conditions ci
dessous :
Conditions d'accès
La vérification des autorisations de cette façon a été sans doutes choisie par les
concepteurs d'UNIX à cause de l'efficacité de son évaluation en exécutant une
commande "Si ..alors .. Sinon.." imbriqué. La sémantique qu'elle définit n'est
cependant pas intuitive. Par exemple un processus s'exécutant avec un groupId
effectif egid peut ne pas être habilité à exercer un privilège p sur un fichier pour
lequel la liste de contrôle autorise p sur le groupe egid. Ceci est illustré dans le cas
ci dessous :
Exemple
On pourrait s'attendre à ce que le processus pour lequel egid = groupF est vérifiée
devrait âtre autorisé à effectuer l'opération d'écriture, du moment que w appartient
à PrivsF.group. Cependant cette requête sera refusée à cause du fait que w
n'appartient pas à PrivsF.owner ce qui implique que la première disjonction est
fausse, et que les deux autres sont également fausses car euid=ownerF
Unix utilise trois identifiants (r,w et x) pour désigner les privilèges d'accès.
Quelques bits suffisent ainsi pour représenter les ensembles de privilèges dans les
listes de contrôle d'accès de Unix., ce choix de conception s'est fait à une époque
où l'espace mémoire (primaire et secondaire) coûtait cher.
Nazih Selmoune
29
Les politiques discrétionnaires (DAC)
Nazih Selmoune
30