these doctorat une architecture de securité
these doctorat une architecture de securité
these doctorat une architecture de securité
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