Projet Saturne

previous up next contents
Précédent : Fondements scientifiques Remonter : PROJET SATURNE, Système réparti tolérant Suivant : Logiciels



Grands domaines d'application

Systèmes de contrôle-commande critiques



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


Mots-clés : micronoyau, injection de faute, validation, détection d'erreur


Résumé : La connaissance du comportement d'un micronoyau du commerce en présence de fautes est un pré-requis à son utilisation dans les noyaux de systèmes opératoires critiques. L'utilisation de techniques d'injection de fautes permet de caractériser le comportement défaillant d'un tel composant de base. Une approche "boîte blanche" s'avère nécessaire dès lors que l'on souhaite améliorer ce comportement en définissant des mécanismes de détection complémentaires. Nos travaux abordent les deux aspects du problème et suivent une approche suffisamment générique pour être applicable à différents micronoyaux du commerce. Les résultats ont pour objectif d'être applicables dans différents domaines industriels tels que l'avionique, le ferroviaire, le nucléaire, etc.


Les systèmes de contrôle-commande dans le nucléaire ou le ferroviaire, par exemple, ou embarqués du type avionique nouvelle (ARINC 653) recherchent des solutions économiques plus compétitives sans pénaliser la sécurité-innocuité du système résultant. Un second aspect est la flexibilité de l'architecture qui doit permettre une adaptabilité du système et son évolution non seulement du point de vue fonctionnel, mais aussi du point de vue non-fonctionnel. Ce dernier point fait apparaître des besoins de spécialisation en fonction du contexte applicatif et de conditions opérationnelles.

La réutilisation de composants logiciels et matériels sur étagère est un premier axe d'investigation. La technologie micronoyau qui a fait ses preuves dans le domaine des télécommunications, en particulier, permet de concevoir les couches basses d'un système opératoire de façon très modulaire. Elle est donc très attractive mais nécessite la prise en compte des comportements défaillants du micronoyau au niveau supérieur,c'est-à-dire au niveau services de base installés sur le micronoyau. L'injection de fautes constitue une approche bien connue qui permet de caractériser le comportement d'un logiciel ou d'un matériel en présence de fautes. Offrir un environnement de validation basé sur l'injection de faute au niveau logiciel est un objectif de nos travaux et une attente dans le monde industriel.

Améliorer le comportement du micronoyau en présence de faute revient à complémenter ces mécanismes internes de détection. Il nécessite une bonne connaissance et une visibilité de ses mécanismes internes. Ce dernier aspect est aussi nécessaire dès que l'on s'intéresse aux aspects temps-réels qui vont de pair avec ce type de système. Une vision ``boîte blanche'' telle que nous le préconisons dans nos études semble incontournable. Le calcul des temps pire d'exécution, en particulier de temps de traversée du noyau, souligne cette nécessité. La modélisation comportementale des fonctions internes (similaires dans les micronoyaux du commerce) permet de définir souvent formellement le comportement du micronoyau en l'absence de faute. La mise en place d'une telle approche nécessite une vision ``boite blanche'' telle qu'exprimée ci-dessus. D'un point de vue industriel, les résultats préliminaires et les objectifs de nos travaux sont d'un grand intérêt car ils permettront d'améliorer la confiance nécessaire à des applications de cette nature. Nos partenaires au sein du $\cal LIS$ dans le domaine du spatial, de l'avionique ou du nucléaire sont en accord avec cette problématique et avec ses objectifs.

Logiciels embarqués



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


Mots-clés : Systèmes embarqués tolérants aux fautes, applications critiques, partionnement, politique d'intégrité, confinement d'erreur


Résumé : L'une des préoccupations majeures dans les systèmes embarqués aujourd'hui consiste à s'assurer de la continuité des services critiques. De nombreuses méthodes (telle que la validation intensive des entités logicielles) sont mises en oeuvre pour assurer cette propriété. Notre approche consiste à mettre en oeuvre une politique d'intégrité dont le rôle est d'empêcher la propagation d'erreur depuis des tâches peu critiques vers des tâches de très haute criticité. Cette politique définit des règles de contrôle d'accès appliqués aux flux d'information entre les différents objets du système.


L'utilisation intensive et généralisée de l'informatique s'est étendue à l'ensemble des domaines critiques. Cette évolution s'accompagne bien entendu d'une complexité grandissante des architectures matérielles utilisées et d'une diversité croissante des tâches qui sont imparties aux logiciels.

Dans la plupart des applications coexistent des fonctions critiques (par exemple le pilotage d'un avion) et des fonctions non-critiques (par exemple la gestion de la vidéo des passagers). Dans la mesure où les fonctions non-critiques peuvent perturber (en monopolisant les ressources) ou contaminer (par propagation d'erreurs) les fonctions critiques, la solution industrielle actuelle consiste à appliquer aux logiciels non-critiques les méthodes de développement et de vérification exigées pour les logiciels critiques (normes ou standards propres à chaque domaine d'application tel que l'avionique, le nucléaire, le ferroviaire...). On peut envisager au contraire d'autoriser la coexistence de logiciels validés à des niveaux différents, en utilisant des mécanismes de protection adéquats.

Notre approche se propose d'empêcher que des tâches très critiques ne puissent être perturbées par des tâches qui le sont moins. Dans ce but, on assure d'une part le partage et la protection des ressources communes à tous les logiciels (par exemple la protection mémoire sur une même machine, afin d'assurer l'isolation physique entre les espaces d'adressage des processus, le temps CPU, grâce à l'implémentation de chiens de gardes temporels, ou des mécanismes d'allocation du réseau) et d'autre part la médiation entre les logiciels. C'est sur ces points que porte la politique d'intégrité multiniveau que nous avons développée. Cette politique repose sur la définition du niveau d'intégrité d'un logiciel. Ce niveau d'intégrité est lié au niveau de criticité du logiciel, et par conséquent au niveau de confiance (obtenu grâce à la validation) que l'on a dans son fonctionnement. Ainsi, plus un logiciel est critique, plus il est validé, plus le niveau de confiance que l'on porte dans son fonctionnement est élevé, et plus son niveau d'intégrité est élevé. Une telle classification des logiciels en niveaux d'intégrité est déjà utilisée pour définir les conditions requises pour la production des composants dans les systèmes critiques (par exemple les «niveaux d'intégrité» de la norme CEI 1508 [IEC95]).

Systèmes ouverts tolérant les fautes



Participants : Jean-Charles Fabre , Marc-Olivier Killijian


Mots-clés : réflexivité, protocoles à métaobjets, CORBA, réutilisation


Résumé : La combinaison de mécanismes de sûreté de fonctionnement, en général et de tolérance aux fautes en particulier est souvent très délicate dans le développement industriel d'un système. L'implication du programmeur d'application fragilise souvent leur mise en oeuvre. De plus, les besoins de réutilisation de mécanismes existant devrait présenter un intérêt économique. La technologie objet émerge actuellement dans le domaine du développement de systèmes tolérant les fautes. C'est l'utilisation d'approches réflexives qui semble aujourd'hui les plus à même de satisfaire les besoins précédents. Les efforts de recherches et les résultats acquis par le projet sont une première étape significative. Cette approche s'appuyant sur des architectures réparties actuelles bâties sur grand réseau et basées sur CORBA constitue une voie très prometteuse pour l'éclosion de ces techniques dans le monde industriel.


La conception et la mise en oeuvre de systèmes sûrs de fonctionnement se heurtent à différentes contraintes qui actuellement ne reposent pas uniquement sur la maîtrise de mécanismes complexes, de tolérance aux fautes en particulier, permettant de les réaliser. En effet, le coût inhérent à la construction d'un système réparti, en général, impose une approche suffisamment flexible pour qu'à partir de composants élémentaires des familles de systèmes soient réalisables pour un contexte applicatif donné.

Aujourd'hui, les systèmes répartis s'organisent selon une hiérarchie de réseaux, réseaux locaux et à grande échelle, qui imposent une prise en compte de leur contraintes et propriétés associées dans la conception de l'architecture logicielle. C'est le cas pour des grands systèmes du type contrôle de trafic aérien, téléphonie mobile, système d'information, systèmes bancaires, etc. Le système opératoire doit être configurable et les applications doivent pouvoir prendre en compte et intégrer des techniques de tolérance aux fautes, de sécurité-confidentialité des communications, et des mécanismes de communication de groupe différentes en fonction de leur environnement opérationnel. D'autre part, la mobilité devenant un concept de base des architectures considérées, les propriétés non-fonctionnelles doivent pouvoir être associées aux objets de façon dynamique.

L'industrie du logiciel cherche alors à capitaliser les développements antérieurs et s'intéresse aux approches permettant de les spécialiser pour tel ou tel environnement applicatif. D'autre part, du point de vue de la maintenance et de l'évolution du système à moindre coût, il est clair que les adaptations tant du point de vue des mécanismes que des applications doivent être faites sans impact réciproque. Un autre aspect incontournable dans la réalisation de systèmes répartis concerne l'émergence de standards de fait, en particulier au niveau des supports d'exécution tels que CORBA. Ceux-ci doivent être pris en compte pour améliorer l'ouverture du système résultant et sa pérennité vis-à-vis des évolutions possibles sinon probables de son contexte applicatif et environnemental. Le degré de réutilisation des applications dépend de la transparence et de l'indépendance des mécanismes. Cette indépendance peut être réciproquement mise à profit pour concevoir de nouveaux mécanismes à partir de mécanismes existants. Un exemple d'utilisation est de pouvoir réutiliser des mécanismes et les spécialiser pour des applications sur réseau local et sur grand réseau.

Les études effectuées dans le projet, en combinant les notions de protocole à métaobjet et d'héritage, sont une contribution à cette problématique. L'utilisation de standards d'architectures, tels que CORBA, est déterminante pour leur diffusion dans l'industrie. Notre premier domaine d'application visé est celui des services dans le domaine des télécommunications.

Sécurité des systèmes d'information



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 de la sécurité que nous proposons s'applique tout d'abord dans le contexte des systèmes d'information. Elle permet d'étudier et d'améliorer la sécurité de ces systèmes d'information sans compromettre le fonctionnement normal de l'organisation qui les utilise par la mise en place de règles obligatoires. Enfin, cette méthodologie trouve également une application dans le cadre des systèmes informatique. En effet, elle offre l'opportunité de concevoir des outils efficaces de surveillance de la sécurité opérationnelle du système.


La méthodologie proposée s'applique tout d'abord à l'étude des systèmes d'information usuels, tels que ceux que l'on rencontre dans la plupart des organisations. Dans ce contexte, un système d'information désigne à la fois un système de traitement des données et les individus qui l'utilisent au sein de l'organisation. Actuellement, ces systèmes deviennent de plus en plus vitaux pour la plupart des entreprises. Pourtant, dans le même temps, ces systèmes deviennent de plus en plus vulnérables en raison de l'apparition de nouveaux services comme le partage d'informations, l'ouverture sur des réseaux publics, ou l'utilisation d'applications personnelles de plus en plus puissantes. Dans cette situation, le principal besoin des administrateurs de sécurité est alors d'obtenir et de maintenir un niveau de sécurité satisfaisant, sans compromettre la flexibilité ou les fonctionnalités du système sur lesquelles reposent le fonctionnement et la compétitivité de l'organisation. La méthode que nous proposons vise à gérer ce compromis. En effet, elle permet aux administrateurs de sécurité d'évaluer le niveau de sécurité atteint par l'organisation en fonctionnement, et de comparer l'impact sur la sécurité de modifications éventuelles de son fonctionnement. Dans le cadre plus spécifique des systèmes informatiques, cette méthodologie offre également l'opportunité de réaliser une surveillance régulière de la sécurité opérationnelle du système. Dans un système informatique, le comportement des utilisateurs généralement plus préoccupés par la réalisation des opérations que par l'impact de leurs actions sur la sécurité globale est en effet la cause de l'apparition de la majorité des vulnérabilités du système pendant sa vie opérationnelle. De tels événements concernant la sécurité peuvent être extrêmement nombreux dans un système informatique de grande taille, comme le montrent les outils conventionnels permettant de rechercher les failles d'un système Unix. Une mesure quantitative de la sécurité permet alors d'identifier, parmi tous ces événements, ceux qui ont un impact significatif sur la sécurité du système dans son ensemble, compte tenu de ses objectifs de sécurité, et de tous les scénarios permettant de mettre en défaut ces objectifs en exploitant une ou plusieurs vulnérabilités. Ce sont ces événements qui nécessitent alors une réaction de la part des administrateurs de sécurité.



previous up next contents Précédent : Fondements scientifiques Remonter : PROJET SATURNE, Système réparti tolérant Suivant : Logiciels