1,354 research outputs found

    Mécanisme de contrÎle du flot d'information dans un programme : approche par typage trivalué

    Get PDF
    Ce mĂ©moire prĂ©sente un mĂ©canisme d’application de politiques de sĂ©curitĂ© grĂące Ă  une analyse de types trivaluĂ©e sur un langage impĂ©ratif. Notre analyse a pour but de rĂ©duire les faux positifs gĂ©nĂ©rĂ©s par l’analyse statique, tout en prĂ©parant les programmes analysĂ©s Ă  ĂȘtre instrumentĂ©s. Les faux positifs se produisent dans l’analyse de systĂšmes informatiques Ă  temps rĂ©el quand il manque de l’information au moment de la compilation, par exemple un nom de fichier, et par consĂ©quent, son niveau de sĂ©curitĂ©. Notre approche visant Ă  rĂ©pondre Ă  la question « Y a-t’il violation de la propriĂ©tĂ© de non-interfĂ©rence dans le programme ? », l’idĂ©e clĂ© est de distinguer les rĂ©ponses nĂ©gatives des rĂ©ponses incertaines. Au lieu de rejeter le programme systĂ©matiquement en cas d’incertitude, nous typons les instructions avec un type additionnel, unknown, indiquant l’incertitude. Notre travail est fait en prĂ©paration Ă  un mĂ©canisme d’application hybride, combinant l’analyse statique par l’analyse de types et l’analyse dynamique par l’instrumentation de code. Durant l’étape d’analyse statique, les rĂ©ponses positives et nĂ©gatives sont traitĂ©es de maniĂšre standard, tandis que les rĂ©ponses incertaines sont clairement annotĂ©es du type incertain, prĂ©parant ainsi pour un Ă©ventuel passage Ă  la deuxiĂšme Ă©tape : l’instrumentation. Une preuve que notre systĂšme de types est cohĂ©rent est donnĂ©e, ceci en montrant qu’il satisfait la non-interfĂ©rence. Les programmes interagissent Ă  travers les canaux de communication. Notre contribution rĂ©side dans la manipulation de trois types de sĂ©curitĂ©, mais aussi dans le traitement des variables et canaux de communication de maniĂšre particuliĂšre. Les niveaux de sĂ©curitĂ© sont associĂ©s aux canaux plutĂŽt qu’aux variables dont les niveaux de sĂ©curitĂ© varient selon l’information qu’elles contiennent

    Étude des architectures de sĂ©curitĂ© de systĂšmes autonomes. Formalisation et Ă©valuation en Event-B

    Get PDF
    La recherche de la sĂ»retĂ© de fonctionnement des systĂšmes complexes impose une dĂ©marche de conception rigoureuse. Les travaux de cette thĂšse s’inscrivent dans le cadre la modĂ©lisation formelle des systĂšmes de contrĂŽle autonomes tolĂ©rants aux fautes. Le premier objectif a Ă©tĂ© de proposer une formalisation d’une architecture gĂ©nĂ©rique en couches fonctionnelles qui couvre toutes les activitĂ©s essentielles du systĂšme de contrĂŽle et qui intĂšgre des mĂ©canismes de sĂ©curitĂ©. Le second objectif a Ă©tĂ© de fournir une mĂ©thode et des outils pour Ă©valuer qualitativement les exigences de sĂ©curitĂ©. Le cadre formel de modĂ©lisation et d’évaluation repose sur le formalisme Event-B. La modĂ©lisation Event-B proposĂ©e tire son originalitĂ© d’une prise en compte par raffinements successifs des Ă©changes et des relations entre les couches de l’architecture Ă©tudiĂ©e. Par ailleurs, les exigences de sĂ©curitĂ© sont spĂ©cifiĂ©es Ă  l’aide d’invariants et de thĂ©orĂšmes. Le respect de ces exigences dĂ©pend de propriĂ©tĂ©s intrinsĂšques au systĂšme dĂ©crites sous forme d’axiomes. Les preuves que le principe d’architecture proposĂ© satisfait bien les exigences de sĂ©curitĂ© attendue ont Ă©tĂ© rĂ©alisĂ©es avec les outils de preuve de la plateforme Rodin. L’ensemble des propriĂ©tĂ©s fonctionnelles et des propriĂ©tĂ©s relatives aux mĂ©canismes de tolĂ©rance aux fautes, ainsi modĂ©lisĂ©es en Event-B, renforce la pertinence de la modĂ©lisation adoptĂ©e pour une analyse de sĂ©curitĂ©. Cette approche est par la suite mise en Ɠuvre sur un cas d’étude d’un drone ONERA

    CSP dynamiques pour la génération de tests de systÚmes réactifs

    Get PDF
    International audienceNon disponibl

    Étude formelle de l'implĂ©mentation du code des impĂŽts

    Get PDF
    National audienceThe tax code, as a legislative text, defines a mathematical function that computes the income tax of a fiscal household. In order to collect taxes, this function is implemented as an algorithm by the Direction Générale des Finances Publiques (DGFiP), using a domain specific language called M (standing for "Macro-language"). We propose a formal semantics of the M language, tested thanks to data published by the DGFiP. This formalization, coupled with the public release by the DGFiP of the codebase used to compute the income tax, allowed us to produce a fully formalized artifact encoding the fragment of the tax code describing the income tax computation. We demonstrate the usefulness of such a formalization thanks to a prototype that uses an SMT solver to infer meta-properties on the income tax computation. These meta-properties could complete and refine the existing economical analysis of the redistributive effects of the income tax, as well as various social benefits. More generally, a systematic formalization of the algorithmic fragments of the law would raise the assurance level on the coherence of the French socio-fiscal system. This work has led to the development of three software artifacts: a mechanized semantics for M, an interpreter and compiler for M based on this semantics (written in OCaml), and a Python prototype of encoding the income tax computation into the Z3 SMT solver.Le code des impÎts définit dans son texte législatif une fonction mathématique per-mettant de calculer l'impÎt sur le revenu d'un foyer fiscal. Afin de recouvrer l'impÎt, cette fonction est implémentée sous la forme d'un algorithme par la Direction Générale des Finances Publiques (DGFiP), en utilisant un langage dédié appelé M (pour macro-langage). Nous proposons une sémantique formelle du langage M, testée grùce aux données publiées par la DGFiP. Cette formalisation, couplée à la publication par la DGFiP de la base de code M calculant l'impÎt, nous donne accÚs à une formalisation complÚte de la portion du code des impÎts définissant l'algorithme de calcul de l'impÎt sur le revenu. Nous démontrons l'utilité d'une telle formalisation grùce à un prototype à base de solveurs SMT permet-tant d'inférer des méta-propriétés sur le calcul de l'impÎt. Ces méta-propriétés peuvent ensuite compléter et affiner les analyses économiques existantes sur les effets redistributifs de l'impÎt sur le revenu, mais aussi de diverses allocations. Plus généralement, une for-malisation systématique des portions algorithmiques de la loi permettrait d'augmenter le niveau d'assurance sur la cohérence du systÚme socio-fiscal français. Trois artefacts logiciels accompagnent cet article : une formalisation mécanisée de la sémantique du langage M, un compilateur pour le langage M basé sur cette sémantique, ainsi que le prototype d'encodage du code des impÎts dans le solveur SMT Z3

    Contraintes sur les réels et contraintes sur les flottants: contributions.

    Get PDF
    Mes recherches ont principalement portĂ© sur la programmation par contraintes, avec deux thĂšmes de prĂ©dilection, les contraintes sur les rĂ©els et les contraintes sur les flottants.Sur les rĂ©els, ces travaux se caractĂ©risent principalement par l’utilisation rigoureuse de relaxations linĂ©aires pour la rĂ©solution de systĂšmes de contraintes sur les rĂ©els et d’optimisation globale d’une fonction rĂ©elle soumise Ă  un ensemble de contraintes sur les rĂ©els. Dans le premier cas, notre approche s’appuie sur un filtrage global qui capture le sous-systĂšme linĂ©aire augmentĂ© d’un certain nombre de relaxations linĂ©aires de termes non linĂ©aires. Dans le second cas, les relaxations linĂ©aires sont utilisĂ©es afin de dĂ©terminer une borne infĂ©rieure de la fonction objectif. Dans les deux cas, le calcul des coefficients des relaxations linĂ©aires est effectuĂ© par des procĂ©dures rigoureuses garantes de la prĂ©servation de l’ensemble des solutions du problĂšme initial, et le systĂšme linĂ©aire obtenu est rĂ©solu Ă  l’aide d’un simplexe dont le minimum global est lui aussi calculĂ© de maniĂšre rigoureuse.Sur les flottants, ces recherches se sont traduites par l'introduction des contraintes sur les flottants. Ce type de contraintes particuliĂšres n’avait pas d’existence avant ces travaux. Elles sont pourtant nĂ©cessairement pour traiter des expressions faisant appel Ă  des calculs sur les flottants, chose Ă  laquelle de plus en plus de programmes font appel. Ces recherches partent de l’introduction d’un cadre pour les traiter correctement, pour s’attacher ensuite Ă  amĂ©liorer le fonctionnement d’un solveur sur les flottants, que ce soit en introduisant une forme de filtrage plus performante basĂ©e sur une consistance de type 2B, en amĂ©liorant le fonctionnement de projections particuliĂšres telles que l’addition et la soustraction, en plongeant les contraintes sur les flottants dans les rĂ©els, ou en faisant collaborer contraintes sur les flottants et interprĂ©tation abstraite. Une application Ă  la dĂ©tection de fausses alarmes illustre le fonctionnement des outils dĂ©veloppĂ©s sur un exemple industriel

    Développement prouvé de composants formels pour un générateur de code embarqué critique pré-qualifié

    Get PDF
    Nous nous intéressons au développement prouvé de composants formels pour un générateur de code pré-qualifié. Ce dernier produit un code séquentiel (C et Ada) pour des modÚles d'entrée qui combinent les flots de données et de contrÎle et qui présentent des possibilités d'exécution concurrente (Simulink/Stateflow et Scicos). Le développement prouvé permet de réduire le coût des tests et d'augmenter l'assurance des outils développés avec cette approche vis-à-vis de la qualification. Les phases de spécification, de développement et de vérification des outils développés sont effectuées avec l'assistant de preuve Coq. Ce dernier permet d'extraire le contenu calculatoire des composants en préservant les propriétés prouvées en Coq. Ce code extrait est ensuite intégré dans une chaßne complÚte de développement (chaßne de GeneAuto). Nous présentons un cadre formel, inspiré de l'analyse statique, qui s'appuie sur la sémantique abstraite et qui est instanciable sur plusieurs composants du générateur de code. Nous nous basons sur les ensembles partiellement ordonnés et sur le calcul de point fixe pour définir le cadre et effectuer les différentes analyses des composants du générateur de code. Ce cadre formel comporte toutes les preuves communes aux composants et indépendantes des analyses effectuées. Deux composants sont étudiés : l'ordonnanceur et le typeur des modÚles d'entrée.We are interested in the proved development of formal components for a pre-qualified code generator. This produces a sequential code (C and Ada) for input models that combine data and control flows, with potential concurrent execution (Simulink/Stateflow and Scicos). The proved development reduces test cost and increases insurance of components developed with this approach regarding the qualification. Phases of specification, development and verification of the developed components are done with the Coq proof assistant. This allows to extract the computational content of the components preserving the properties proved in Coq. The extracted code is then integrated into the complete development tool-chain (GeneAuto tool-chain). We present a formal framework, inspired from static analysis, based on the abstract semantics which is instantiable to several components of the code generator. We rely on partially ordered sets and fixed-point to define de formal framework and to perform the various analysis of components of the code generator. This formal framework includes all proofs common to the components and independent from the performed analyses. Two components are studied : the scheduler and the type checker of input models.TOULOUSE-INP (315552154) / SudocSudocFranceF

    Développement prouvé de composants formels pour un générateur de code embarqué critique pré-qualifié

    Get PDF
    Nous nous intéressons au développement prouvé de composants formels pour un générateur de code pré-qualifié. Ce dernier produit un code séquentiel (C et Ada) pour des modÚles d'entrée qui combinent les flots de données et de contrÎle et qui présentent des possibilités d'exécution concurrente (Simulink/Stateflow et Scicos). Le développement prouvé permet de réduire le coût des tests et d'augmenter l'assurance des outils développés avec cette approche vis-à-vis de la qualification. Les phases de spécification, de développement et de vérification des outils développés sont effectuées avec l'assistant de preuve Coq. Ce dernier permet d'extraire le contenu calculatoire des composants en préservant les propriétés prouvées en Coq. Ce code extrait est ensuite intégré dans une chaßne complÚte de développement (chaßne de GeneAuto). Nous présentons un cadre formel, inspiré de l'analyse statique, qui s'appuie sur la sémantique abstraite et qui est instanciable sur plusieurs composants du générateur de code. Nous nous basons sur les ensembles partiellement ordonnés et sur le calcul de point fixe pour définir le cadre et effectuer les différentes analyses des composants du générateur de code. Ce cadre formel comporte toutes les preuves communes aux composants et indépendantes des analyses effectuées. Deux composants sont étudiés : l'ordonnanceur et le typeur des modÚles d'entrée. ABSTRACT : We are interested in the proved development of formal components for a pre-qualified code generator. This produces a sequential code (C and Ada) for input models that combine data and control flows, with potential concurrent execution (Simulink/Stateflow and Scicos). The proved development reduces test cost and increases insurance of components developed with this approach regarding the qualification. Phases of specification, development and verification of the developed components are done with the Coq proof assistant. This allows to extract the computational content of the components preserving the properties proved in Coq. The extracted code is then integrated into the complete development tool-chain (GeneAuto tool-chain). We present a formal framework, inspired from static analysis, based on the abstract semantics which is instantiable to several components of the code generator. We rely on partially ordered sets and fixed-point to define de formal framework and to perform the various analysis of components of the code generator. This formal framework includes all proofs common to the components and independent from the performed analyses. Two components are studied : the scheduler and the type checker of input models
    • 

    corecore