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 6.6. Tolérance aux pannes et sécurité<br />

fin<br />

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

Chaque worker est inclus dans un nœud appartenant au nœud virtuel WorkerVN.<br />

– Seuls les Workers ayant le même certificat d’application que les TasksServers pourront<br />

télécharger <strong>de</strong>s tâches et déposer <strong>de</strong>s résultats.<br />

Au démarrage, un Worker sécurisé va commencer par créer <strong>de</strong>ux autres Workers. Grâce au mécanisme<br />

implicite <strong>de</strong> propagation dynamique du contexte <strong>de</strong> sécurité, chacun <strong>de</strong>s <strong>de</strong>ux nouveaux<br />

Workers aura un gestionnaire <strong>de</strong> sécurité qui contiendra la politique <strong>de</strong> sécurité <strong>de</strong> l’application<br />

ainsi qu’un certificat dérivé du certificat d’application. Ils disposeront ainsi <strong>de</strong>s mêmes possibilités<br />

(création <strong>de</strong> nouveaux Workers et téléchargement <strong>de</strong>s tâches) que leur parent. Les avantages<br />

<strong>de</strong> cette approche décentralisée sont doubles :<br />

– Elle permet <strong>une</strong> croissance exponentielle du nombre <strong>de</strong> Workers,<br />

– mais surtout <strong>de</strong> distribuer efficacement le coût <strong>de</strong> la génération <strong>de</strong>s certificats sur tous les<br />

Workers.<br />

L’utilisation <strong>de</strong> l’<strong>architecture</strong> pair-à-pair a permis <strong>de</strong> tester notre mécanisme <strong>de</strong> sécurité sur<br />

un système dont la gestion <strong>de</strong> la sécurité peut être considérée comme décentralisée et dynamique.<br />

Les exemples nous ont permis <strong>de</strong> montrer les réactions du mécanisme <strong>de</strong> propagation<br />

dynamique du contexte <strong>de</strong> sécurité couplé avec la combinaison <strong>de</strong>s politiques <strong>de</strong> sécurité au sein<br />

d’un environnement pair-à-pair. L’analyse <strong>de</strong>s divers cas survenant lors <strong>de</strong> l’utilisation du système<br />

pair-à-pair montre que notre modèle <strong>de</strong> sécurité peut être utilisé dans un environnement<br />

dynamique.<br />

6.6 Tolérance aux pannes et sécurité<br />

L’ensemble <strong>de</strong>s diverses ressources utilisables par <strong>une</strong> application utilisant la bibliothèque<br />

est vaste. Il est possible <strong>de</strong> déployer <strong>une</strong> application sur <strong>une</strong> machine multiprocesseur, sur <strong>de</strong>s<br />

grilles <strong>de</strong> calcul ou encore sur <strong>de</strong>s réseaux ad-hoc créés à partir d’ordinateurs <strong>de</strong> bureau. Toutes<br />

ces ressources ne disposent pas <strong>de</strong>s mêmes taux <strong>de</strong> fiabilité. Ainsi, il est plus probable <strong>de</strong> voir<br />

disparaître un ordinateur <strong>de</strong> bureau suite à son redémarrage par son utilisateur principal pour<br />

<strong>une</strong> raison donnée ou sa déconnexion du réseau que <strong>de</strong> perdre <strong>une</strong> machine appartenant à <strong>une</strong><br />

grille <strong>de</strong> calcul pour ces mêmes raisons. Ainsi, du fait <strong>de</strong> la nature volatile <strong>de</strong>s ressources, <strong>une</strong> application<br />

peut perdre <strong>une</strong> partie d’elle même et <strong>de</strong> ses données suite à l’extinction d’<strong>une</strong> machine<br />

donnée. Dans ce contexte, l’utilisation d’un protocole <strong>de</strong> tolérance aux pannes se révèle plus que<br />

nécessaire afin <strong>de</strong> palier à la volatilité <strong>de</strong>s ressources et <strong>de</strong> permettre <strong>de</strong> minimiser l’impact <strong>de</strong><br />

la perte d’<strong>une</strong> partie <strong>de</strong> l’application sur le temps <strong>de</strong> calcul global <strong>de</strong> l’application.<br />

Il est intéressant <strong>de</strong> noter qu’il n’existe pas qu’un seul type <strong>de</strong> panne mais plusieurs ; elles<br />

sont classées en quatre catégories majeures [70] que nous présentons brièvement :<br />

– les pannes franches (crash, fail-stop), que l’on appelle aussi arrêt sur défaillance. C’est le cas<br />

le plus simple : on considère qu’un processus peut être dans <strong>de</strong>ux états, soit il fonctionne et<br />

donne le résultat correct, soit il ne fait rien. Il s’agit du type <strong>de</strong> panne actuellement supporté<br />

par le mécanisme <strong>de</strong> tolérance aux pannes <strong>de</strong> ProActive ;<br />

– les pannes par omission (transient, omission failures). Dans ce cas, on considère que le<br />

système peut perdre <strong>de</strong>s messages. Ce modèle peut servir à représenter <strong>de</strong>s défaillances du<br />

réseau plutôt que <strong>de</strong>s processus ;<br />

– les pannes <strong>de</strong> temporisation (timing, performance failures). Ce sont les comportements<br />

anormaux par rapport à un temps, comme par exemple l’expiration d’un délai <strong>de</strong> gar<strong>de</strong> ;<br />

– les pannes arbitraires, ou byzantines (malicious, byzantine failures). Cette classe représente<br />

toutes les autres pannes : le processus peut alors faire “n’importe quoi”, y compris<br />

avoir un comportement malveillant.<br />

Le protocole <strong>de</strong> tolérance aux pannes intégré dans la bibliothèque se classe parmi les protocoles<br />

<strong>de</strong> points <strong>de</strong> reprise induits par message, avec reprise asynchrone [11]. Son fonctionnement<br />

est le suivant : chaque objet actif prend périodiquement un point <strong>de</strong> reprise. Ce point <strong>de</strong> reprise<br />

est numéroté dans l’ordre croissant. Chaque message émis par un objet actif est annoté du nu-<br />

115

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

Saved successfully!

Ooh no, something went wrong!