Projet Saturne

previous up next contents
Précédent : Présentation générale et objectifs Remonter : PROJET SATURNE, Système réparti tolérant Suivant : Grands domaines d'application



Fondements scientifiques

Développement orienté objet



Participants : Jean-Charles Fabre , Marc-Olivier Killijian , Arnaud Ladrech , Grégory Lajon , Juan-Carlos Ruiz-Garcia , Tanja Van Achteren


Mots-clés : Tolérance aux fautes, sécurité, réflexivité, protocole à métaobjet


Résumé : La technologie objet et plus particulièrement l'utilisation de protocole à métaobjets permet de définir et de réaliser des architectures de systèmes tolérant les fautes plus flexibles que suivant des approches traditionnelles. L'association de mécanismes peut se faire de façon transparente aux applications, les mécanismes peuvent être composés en fonction des besoins, les classes de base définies peuvent être réutilisées pour définir de nouveaux mécanismes.

Le développement d'applications sûres de fonctionnement nécessite la définition et l'intégration aisée de mécanismes permettant de mettre en oeuvre des caractéristiques méta-fonctionnelles (redondance, authentification, chiffrement, communication à distance). L'utilisation de techniques de développement orienté-objet présente de multiples intérêts, tant au niveau de la conception que de la mise en oeuvre. En particulier, la propriété de réflexivité de certains langages à objets présente un triple avantage :

Le développement d'applications réparties mêlant des mécanismes de tolérance aux fautes et de sécurité-confidentialité en suivant cette approche fait l'objet de nos travaux actuels. Nous l'avons abordé sous deux angles :

L'utilisation de cette approche permet ainsi d'aborder de façon claire la réutilisation et la composition de mécanismes. C'est un axe de recherche très prometteur tant d'un point de vue économique que sur le plan des possibilités de spécialisation et d'évolution des systèmes tolérant les fautes. Des perspectives nouvelles s'ouvrent avec la notion de réflexivité à la compilation qui permet de définir des protocoles à métaobjets plus riches que celui utilisé dans nos travaux actuels [3]. La définition d'un protocole à métaobjet propre à la tolérance aux fautes et considérant les standards de fait en matière d'architecture et de programmation répartie tel que CORBA constitue un axe prioritaire.

Validation de micronoyaux du commerce



Participants : Jean-Charles Fabre , Jean Arlat , Manuel Rodriguez-Moreno , Frédéric Salles


Mots-clés : Systèmes critiques, technologie micronoyaux, validation, injection de faute


Résumé : L'utilisation de micronoyau du commerce pour concevoir et réaliser des systèmes opératoires est actuellement envisagée pour des systèmes critiques (systèmes avioniques embarqués, systèmes de contrôle-commande, etc.). Les applications critiques ainsi que des fonctions du système s'exécutant sur ce logiciel de base posent le problème de sa validation. L'analyse de son comportement en présence de fautes doit reposer sur des techniques appropriées d'injection de faute et l'amélioration du comportement observé nécessite la définition de mécanismes de détection d'erreur complémentaires, en s'appuyant par exemple sur une modélisation fonctionnelle et comportementale de ses fonctionnalités. La motivation de ces travaux résulte de la tendance actuelle, lors du développement de systèmes critiques de favoriser l'utilisation de composants sur étagère (COTS, Commercial Off The Shelf), y compris au niveau des logiciels exécutifs (cf. [*]).

Compte tenu de leur flexibilité (assemblage de modules offrant un ensemble d'appels système élémentaires), les logiciels exécutifs à micronoyau de dernière génération (Chorus, Mach, Amoeba, VxWorks) semblent particulièrement adaptés. Cependant, leur intégration au sein de systèmes critiques est soumise à certaines réserves. Il est donc essentiel de pouvoir évaluer la confiance, en termes de sûreté de fonctionnement, que l'on peut accorder à ces composants qui, du fait même de leur processus de conception, ne sont souvent pas conformes aux contraintes imposées lors de la spécification du système hôte. Dans ce but, nos travaux ont cherché à caractériser le comportement défaillant du micronoyau en présence de fautes dont l'origine peut être interne ou externe. De ce point de vue, l'injection de fautes tient une place prépondérante. Son objectif est la validation de systèmes tolérant les fautes par rapport à une classe d'informations explicitement traitées par de tels systèmes : les fautes. Des campagnes d'injection de fautes (simulation de fautes physiques, fautes de conception, etc.) permettent de mesurer l'efficacité des mécanismes de détection interne et de classifier les comportements défaillants. Dans le but d'améliorer ces comportements pour qu'ils puissent être pris en compte par des mécanismes de tolérance aux fautes, des mécanismes complémentaires de protection doivent être définis et mis en oeuvre. Leur efficacité dépend des capacités de modélisation des classes de fonctions en l'absence de faute. Pour certaines classes (synchronisation par exemple), cette modélisation formelle est relativement simple. Par contre, pour d'autres classes de fonctions (ordonnancement par exemple) le problème est plus complexe. Du point de vue de l'implémentation de tels contrôles, il ressort des premières analyses qu'une vision "boîte blanche" est nécessaire. En effet, une analyse de la structuration interne et l'accès à certaines structures de données est obligatoire. Cette constatation rompt avec la vision classique "boîte noire" du logiciel sur étagère, tout au moins pour le logiciel de base dans un système critique.

Protection et noyaux de sécurité



Participants : Yves Deswarte , Jean-Charles Fabre , Vincent Nicomette , David Powell , Eric Totel


Résumé : La protection constitue aujourd'hui l'une des composantes majeures des systèmes distribués, que ce soit pour la conservation de la confidentialité ou de l'intégrité des données. Cette protection passe par la réalisation de noyaux de sécurité dont le rôle est de mettre en oeuvre des mécanismes de contrôle d'accès définis par des politiques de sécurité. Le but des schémas d'autorisation définis par ces politiques est d'assurer certaines propriétés de sécurité dans le domaine considéré.

Dans ces travaux, nous nous intéressons à la gestion des droits d'accès, basée sur la notion de noyau de sécurité. Un noyau de sécurité est un composant du système qui, s'il est sûr, garantit que la politique de sécurité est respectée. Ce noyau de sécurité met en oeuvre des mécanismes généraux (labels, capacités) sur des objets de fine granularité, tout en permettant une grande souplesse sur le choix de la politique de sécurité.

Nous avons élaboré un premier schéma d'autorisation mettant en oeuvre des noyaux de sécurité dans les systèmes d'objets distribués. Un système d'objets distribués est composé d'un ensemble d'objets dont la localisation est transparente aux utilisateurs. Certains de ces objets sont directement connus des utilisateurs (ce sont des objets persistants) et peuvent être invoqués grâce à des méthodes publiques. En revanche, il existe de nombreux objets temporaires, dédiés à la réalisation d'une action ponctuelle. De même, il existe des objets persistants mais dont la granularité est si fine que leur existence est totalement inconnue des utilisateurs d'un tel système.

Le schéma d'autorisation met en oeuvre deux niveaux de protection. La gestion des droits d'accès relatifs aux objets persistants et de forte granularité est prise en charge par un serveur d'autorisation. Le serveur d'autorisation est responsable de la fourniture aux utilisateurs des privilèges leur permettant d'accéder à des objets persistants. Ces privilèges seront délivrés seulement si l'utilisateur est autorisé à effectuer l'accès correspondant (le serveur d'autorisation gère une matrice de contrôle d'accès). Nous avons donné à ce serveur d'autorisation une grande souplesse quant à la gestion des droits d'accès, tout en garantissant au mieux le principe du moindre privilège.

Ce schéma d'autorisation est adaptable à différentes politiques de sécurité. En particulier, nous avons développé une politique obligatoire multi-niveau permettant de garantir des propriétés de confidentialité. Cette politique est une adaptation au modèle objet de la politique de Bell et LaPadula; comme elle affecte des labels aux différentes entités du système : habilitation pour les utilisateurs, classification pour les objets à état, intervalle de confiance pour les objets sans état et parenthèse pour les activités. La politique ainsi obtenue est plus souple que celle de Bell-LaPadula, en ce qu'elle autorise des flux d'information légitimes qui seraient interdits par une application directe de la politique de Bell-LaPadula. Mais elle est tout aussi efficace, puisqu'on peut montrer qu'elle interdit bien tous les flux d'information illégitimes.

Un autre schéma d'autorisation a été développé qui concerne cette fois la préservation de l'intégrité d'un système orienté objet, et en particulier vise à résoudre le problème de la coexistence de logiciels de criticité différente.

Evaluation quantitative de la sécurité



Participants : Yves Deswarte , Mohamed Kaâniche , Rodolphe Ortalo


Mots-clés : sécurité, évaluation quantitative, graphe des privilèges, logique modale


Résumé : La méthode d'évaluation quantitative de la sécurité que nous proposons repose tout d'abord sur une modélisation de la politique de sécurité dans le langage de la logique déontique. Cette spécification est complétée par une représentation des vulnérabilités du système sous la forme d'un graphe des privilèges. Ce graphe fait apparaître les différentes méthodes de transfert de privilèges existant dans le système d'information. Enfin, une mesure globale est obtenue à partir de ces représentations afin de fournir une évaluation quantitative de la sécurité du système d'information.

L'approche que nous proposons pour l'évaluation quantitative de la sécurité d'un système comprend trois grandes étapes. Tout d'abord, il s'agit d'obtenir une spécification des objectifs de sécurité, c'est-à-dire des propriétés de sécurité attendues du système. Ensuite, cette spécification est complétée par une description des vulnérabilités qui peuvent néanmoins persister dans le système réel, et ainsi permettre à un attaquant éventuel de mettre en défaut les objectifs de sécurité. Enfin dans une dernière étape, nous utilisons une mesure de la sécurité, définie de manière analogue à certaines mesures usuelles de fiabilité, pour évaluer quantitativement l'impact des ces vulnérabilités sur la sécurité du système, compte tenu des objectifs considérés.

Afin de spécifier les objectifs de sécurité des systèmes d'information, ainsi que les mécanismes relatifs à la sécurité, nous proposons d'utiliser un formalisme logique, la logique modale, et plus précisément une de ses branches, la logique déontique. L'atout principal de ce formalisme est de faire coexister dans un même langage logique les formules usuelles de la logique propositionnelle et la notion plus riche de nécessité (et son dual, la possibilité) susceptible de prendre une sémantique d'obligation (et de permission), sans empêcher la description d'autres propriétés fonctionnelles du système. Ce formalisme semble particulièrement adapté pour l'écriture formelle d'une politique de sécurité. Son expressivité permet en effet de combiner des opérateurs exprimant des contraintes fortes sur le système décrit (correspondant à ses objectifs de sécurité) et une description plus traditionnelle du fonctionnement des mécanismes de sécurité et des propriétés de l'état de protection réel (éventuellement imparfait du point de vue des objectifs de sécurité).

Notre approche pour l'évaluation de la sécurité repose sur une modélisation des vulnérabilités du système d'information sous forme d'un graphe des privilèges. Le graphe des privilèges est un modèle formel dans lequel les noeuds représentent des ensembles de droits (ou privilèges), et les arcs des transferts de privilèges. Ces transferts peuvent être licites (un utilisateur ayant les privilèges B fait confiance à celui ayant les privilèges A), ou implicites (B est un sous-ensemble de A), ou encore illicites (le transfert est une attaque élémentaire). Un poids peut être affecté à chaque transfert, selon la difficulté et/ou le temps nécessaire à un attaquant pour exploiter la méthode correspondant au transfert élémentaire de privilèges. Ce graphe peut être analysé pour identifier les possibilités de mettre en défaut les objectifs de sécurité du système. En effet, à partir de la politique de sécurité, il est possible d'identifier les attaquants éventuels, internes ou externes, et les cibles potentielles (ensembles de privilèges sensibles). La politique de sécurité peut être mise en défaut s'il existe au moins un chemin depuis l'ensemble des privilèges d'un attaquant jusqu'à une cible. A partir de ce graphe pondéré, il est possible d'évaluer la sécurité comme étant la difficulté pour les attaquants potentiels d'atteindre les cibles potentielles. L'évaluation quantitative effectuée sur des données expérimentales rassemblées dans un système informatique Unix de grande taille ont d'ores et déjà montré que l'évolution de la mesure permet d'identifier un certain nombre d'événements pertinents pour la sécurité et liés à la vie opérationnelle du système [8]. L'utilisation combinée d'un langage rigoureux et adaptable pour la spécification d'une politique de sécurité et d'une méthode d'évaluation quantitative adaptée à l'étude de la sécurité opérationnelle permet également d'envisager la mise en oeuvre de la méthode non seulement dans des systèmes informatiques, mais également dans le cadre de systèmes d'information tels que ceux que l'on rencontre dans les organisations. Il s'agit alors tout d'abord de proposer une méthodologie d'analyse de la sécurité qui permette de décrire les besoins de sécurité des organisations. Ensuite, il importe fournir à l'administrateur de sécurité les moyens d'évaluer la sécurité et d'étudier l'impact de modifications éventuelles du fonctionnement de l'organisation visant à réduire ou éliminer certaines vulnérabilités.


previous up next contents Précédent : Présentation générale et objectifs Remonter : PROJET SATURNE, Système réparti tolérant Suivant : Grands domaines d'application