Précédent : Fondements
scientifiques Remonter : PROJET
SATURNE, Système réparti tolérant Suivant :
Logiciels
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 dans le domaine du spatial, de l'avionique
ou du nucléaire sont en accord avec cette problématique et avec
ses objectifs.
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]).
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.
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é.