En esta tesis se propone una metodología para la certi?cación de programas Java que está basadaen la lógica de reescritura, un marco formal lógico y semántico muy general, implementado e?cientemente en el lenguaje de programación funcional Maude. Se consideran propiedades de seguridad (safety), es decir, propiedades de un sistema que son de?nidas en términos de que no ocurranciertos eventos. Dichas propiedades se caracterizan como problemas de inalcanzabilidad en la lógica de reescritura. Las propiedades de seguridad (safety) se expresan en el estilo de JML, un lenguaje estándar de especi?cación de módulos Java. Con el ?n de obtener un procedimiento de decisión utilizamosm o de los con un número ?nito de estados que obtenemos mediante el uso de la interpretación abstracta. Partiendo de una especi?cación de la semántica de Java escrita en Maude, se desarrolla una semántica operacional abstracta con un número ?nito de estados, también escrita en Maude, que resulta apropiada para la veri?cación de programas. Como subproducto de la veri?cación se entrega un certi?cado de seguridad, que consiste en un conjunto de demostraciones basadas en reescritura, que pueden ser comprobadas fácilmente por el consumidor del código mediante el uso de un motor de reescritura estándar. La técnica de código portador de demostración (proof-carrying code) basada en abstracción, denominada JavaPCC, ha sido implementada y probada con éxito en varios ejemplos,lo cual de muestra la viabilidadd en uestro enfoque.
In this thesis we propose an abstraction based certification technique for Java programs which is based on rewriting logic, a very general logical and semantic framework efficiently implemented in the functional programming language Maude. We focus on safety properties, i.e. properties of a system that are defined in terms of certain events not happening, which we characterize as unreachability problems in rewriting logic. The safety policy is expressed in the style of JML, a standard property specification language for Java modules. In order to provide a decision procedure, we enforce finite-state models of programs by using abstract interpretation. Starting from a specification of the Java semantics written in Maude, we develop an abstraction based, finite-state operational semantics also written in Maude which is appropriate for program verification. As a by-product of the verification based on abstraction, a dependable safety certificate is delivered which consists of a set of rewriting proofs that can be easily checked by the code consumer by using a standard rewriting logic engine. The abstraction based proof-carrying code technique, called JavaPCC, has been implemented and successfully tested on several examples, which demonstrate the feasibility of our approach. We analyse local properties of Java methods: i.e. properties of methods regarding their parameters and results. We also study global confidentiality properties of complete Java classes, by initially considering non--interference and, then, erasure with and without non--interference. Non--interference is a semantic program property that assigns confidentiality levels to data objects and prevents illicit information flows from occurring from high to low security levels. In this thesis, we present a novel security model for global non--interference which approximates non--interference as a safety property.
© 2001-2024 Fundación Dialnet · Todos los derechos reservados