Você está na página 1de 2

Compilacin y Certificacin de Cdigo mediante Anlisis Esttico de Flujo de Control y de Datos

Un Compilador Certificante genera, adems del cdigo ejecutable, una prueba o demostracin de que dicho cdigo no puede violar la poltica de seguridad preestablecida para su consumidor. Al consumidor le basta entonces someter exitosamente al cdigo recibido a su prueba, para poder asegurar que su ejecucin le resultara segura. Esta tesis se desarroll dentro de un proyecto destinado a experimentar la construccin de compiladores certificantes basados en las tcnicas de Anlisis Esttico de Flujo de Control y Datos, La presente es la primera de dichas tesis (dirigida al entorno del productor). En ella se presenta a CCMini (Certifying Compiler for Mini), un compilador certificante para un subconjunto del lenguaje C, que garantiza que los programas que acepta no pueden leer variables no inicializadas y que en ellos no hay accesos a arreglos fuera de rango. Como lenguaje de cdigo intermedio de CCMini se introducen los arboles sintcticos abstractos (ASA). Los ASA tiene una semntica clara que facilita la realizacin de los diversos anlisis estticos requeridos para generar la prueba de seguridad. Sobre el ASA del programa fuente, CCMini realiza el anlisis esttico, introduce anotaciones y verifica la seguridad del programa. Luego, si el programa es seguro, genera la informacin para el consumidor; informacin que consiste en el ASA anotado y en el esquema de la prueba. En los casos en que no se pueda determinar la seguridad de una computacin especificada dentro del ASA (problema que no es decidible en general) CCMini anotara una indicacin de verificacin en tiempo de ejecucin. Con esta informacin el receptor correr la prueba y si esta es exitosa generara cdigo objeto y podr ejecutarlo en forma segura. Hacer confiable la prctica del uso seguro de cdigo mvil. La certificacin de cdigo es una tcnica desarrollada para garantizar y demostrar estticamente que el software posee ciertas cualidades. En particular, esta tcnica se concentra en el anlisis de cualidades crticas, tales como seguridad de tipos y seguridad de memoria. Problemtica de seguridad del cdigo mvil y entre cuyas tcnicas para garantizar la seguridad del consumidor se encuentra Proof-Carrying Code (PCC) [52]. Una alternativa prometedora para realizar la certificacin de cdigo consiste en utilizar compiladores certificantes En esta tesis se presenta a CCMini (Certifying Compiler for Mini), un compilador certificante para un subconjunto del lenguaje C, que garantiza que los programas compilados no leen variables no inicializadas y que no acceden a posiciones no definidas sobre los arreglos. El proceso de verificacin on es realizado sobre arboles sintcticos abstractos (ASA) utilizando tcnicas de anlisis esttico. En particular, se utilizan las tcnicas de anlisis de flujo de control y de datos.

Como resultado de esta tesis se presenta a CCMini (Certifying Compiler for Mini), un compilador certificante para el subconjunto del lenguaje C, que garantiza que los programas compilados no leen variables no inicializadas y que no acceden a posiciones no definidas sobre los arreglos. El proceso de verificacin es realizado sobre arboles sintcticos abstractos (ASA) utilizando tcnicas de anlisis esttico, en enfocado a las tcnicas de anlisis de flujo de control y de datos.

Luego se define el lenguaje fuente del compilador, denominado Mini. El prximo paso consisti en establecer el cdigo intermedio que se utilizara, un rbol sintctico abstracto (ASA). Finalmente se implementaron los mdulos correspondientes al Generador de Cdigo Intermedio, el Generador de Anotaciones, el Certificador y el Generador del Esquema de Prueba.

Este prototipo de compilador certificante posee las siguientes caractersticas: seguridad, independencia de la plataforma, generacin de cdigo eficiente, verificaciones de seguridad simples. Adems, solo descarta aquellos programas que se ha probado fehacientemente que son inseguros. Es decir, si el compilador certific el cdigo entonces puede ser ejecutado de manera segura. Adems, como se mencion anteriormente, se espera que el prototipo del compilador pueda ser utilizado independientemente del framework de PCC-SA.

El Generador de Cdigo Intermedio Este mdulo toma como entrada un archivo con un
programa Mini y genera un rbol sintctico abstracto (ASA). Para realizar esto, primero, se efectan a los anlisis lxico y sintctico del cdigo fuente. Con estos anlisis se verifica que el cdigo fuente es efectivamente Mini Paralelamente al parsing del cdigo fuente se efecta un anlisis semntico simple.

El Generador de Anotaciones aplica varios anlisis estticos de flujo de control y de datos sobre el ASA y genera un rbol sintctico abstracto anotado. Estas anotaciones incluyen invariantes de ciclos, cotas de cada variable e informacin de inicializacin de variables. Para el caso de programas reales se realiz una observacin informal de programas C. Los programas seleccionados fueron: el navegador de internet Mozilla 1.7.8, el compilador de C gcc 3.3.5, el procesador de texto AbiWord 2.5.5 y (4) el kernel 2.6.11 del sistema operativo linux utilizado por Gentoo. Todas Estas aplicaciones tienen su cdigo libre bajo licencia GNU.

Você também pode gostar