13.05.2014 Views

these doctorat une architecture de securité

these doctorat une architecture de securité

these doctorat une architecture de securité

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Section 2.7. Programmation Réflexive<br />

Nous présentons ici la technique d’interception <strong>de</strong> l’appel <strong>de</strong> métho<strong>de</strong> par objet d’interposition.<br />

Cette technique d’interception transparente <strong>de</strong> l’appel <strong>de</strong> métho<strong>de</strong> est basée sur l’utilisation d’un<br />

objet d’interposition qui s’interpose entre <strong>de</strong>ux objets <strong>de</strong> manière à intercepter les transferts <strong>de</strong><br />

contrôle <strong>de</strong> l’un vers l’autre. Il s’agit en fait d’<strong>une</strong> implémentation du <strong>de</strong>sign pattern Proxy [49]. Le<br />

graphe <strong>de</strong>s appels <strong>de</strong> métho<strong>de</strong> successifs est présenté sur la figure 2.13 où l’objet d’interposition<br />

est appelé I. On constate que l’objet d’interposition intercepte l’appel <strong>de</strong> métho<strong>de</strong> à la fois au<br />

moment <strong>de</strong> son transfert <strong>de</strong> A vers B et aussi lors du retour du flot d’exécution <strong>de</strong> B vers A.<br />

A<br />

4<br />

1 2<br />

I<br />

3<br />

B<br />

FIG. 2.13 – Utilisation d’un objet d’interposition entre A et B<br />

tel-00239252, version 1 - 5 Feb 2008<br />

L’intérêt d’<strong>une</strong> approche à objets d’interposition pour la programmation à objets réflexive a<br />

été i<strong>de</strong>ntifié pour la première fois par Geoffrey A. Pascoe [98] pour le langage Smalltalk. La mise<br />

en œuvre <strong>de</strong> cette technique dans un langage à typage dynamique comme Smalltalk est en fait<br />

beaucoup plus aisée que dans le cadre d’un langage à typage fort et statique comme Java. En effet,<br />

l’implémentation en Smalltalk consiste à créer la classe <strong>de</strong> l’objet d’interposition <strong>de</strong> manière<br />

à ce qu’elle ne reprenne auc<strong>une</strong> <strong>de</strong>s métho<strong>de</strong>s <strong>de</strong> la classe encapsulée 2 . Les appels <strong>de</strong> métho<strong>de</strong><br />

envoyés vers l’objet réflexif B mais interceptés par l’objet d’interposition I ne trouvent par conséquent<br />

aucun sélecteur leur correspondant, et la métho<strong>de</strong> par défaut doesNotUn<strong>de</strong>rstand est<br />

appelée. C’est à l’intérieur <strong>de</strong> cette métho<strong>de</strong> que le passage au niveau méta est implémenté.<br />

Cette technique est d’un usage répandu en Smalltalk et a aussi été utilisée, par exemple, pour<br />

implémenter <strong>de</strong>s références transparentes vers <strong>de</strong>s objets distants [14, 82]. Dans le cadre <strong>de</strong><br />

ProActive (Java), l’objet d’interposition est polymorphiquement compatible avec l’objet qu’il représente,<br />

ce polymorphisme est assuré par la génération dynamique <strong>de</strong> l’objet d’interposition<br />

comme sous-classe <strong>de</strong> l’objet cible.<br />

Lorsque nous faisons figurer le méta objet dans la chaîne d’appels (voir figure 2.14), nous<br />

constatons que c’est le méta objet lui-même qui se charge d’exécuter l’appel <strong>de</strong> métho<strong>de</strong> réifié en<br />

transférant l’appel <strong>de</strong> métho<strong>de</strong> à l’objet B puis récupére le flot d’exécution lors <strong>de</strong> la sortie <strong>de</strong> la<br />

métho<strong>de</strong>. C’est aussi le méta objet qui communique le résultat <strong>de</strong> l’appel <strong>de</strong> métho<strong>de</strong> à l’objet<br />

d’interposition, qui lui-même le renvoie à l’objet appelant.<br />

A<br />

6<br />

1<br />

I<br />

2<br />

5<br />

Meta<br />

4<br />

3<br />

B<br />

FIG. 2.14 – Transfert <strong>de</strong> contrôle au méta niveau.<br />

Il est indispensable que la présence du mécanisme d’interception <strong>de</strong>s appels <strong>de</strong> métho<strong>de</strong> soit<br />

complètement transparente au programme <strong>de</strong> base. En d’autres termes, la sémantique du programme<br />

<strong>de</strong> base doit rester inchangée si le comportement <strong>de</strong> niveau méta consiste à ne rien<br />

faire. Les conséquences <strong>de</strong> cette propriété sont multiples car elles affectent différents aspects <strong>de</strong><br />

l’exécution du programme.<br />

2.7.3 Les protocoles à méta objets et la sécurité<br />

Maintenant que nous avons introduit le mécanisme d’interception transparent <strong>de</strong>s appels <strong>de</strong><br />

métho<strong>de</strong>, nous pouvons abor<strong>de</strong>r le thème <strong>de</strong> la sécurité au sein <strong>de</strong> programme réflexif. Une étu<strong>de</strong><br />

sur les propriétés <strong>de</strong> sécurité <strong>de</strong>s protocoles à méta objets est présentée dans la thèse <strong>de</strong> Julien<br />

Vayssière [117].<br />

2 En Smalltalk, les métho<strong>de</strong>s sont appelées sélecteurs.<br />

23

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!