Compilación y certificación de código mediante análisis estático de flujo de control y de datos

Bavera, Francisco

Supervisor(es): Aguirre, Jorge - Tasistro, Alvaro

Resumen:

En la última década el uso de las TIC ha irrumpido en forma explosiva en todas las áreas de actividad humana y han sido incorporadas a una, cada vez más, amplia gama de aplicaciones y artefactos. Paralelamente ha crecido de la misma forma el uso de Código Móvil; esto es, de código que es generado por un productor y usado por uno o numerosos consumidores. La distribución de software por Internet es el ejemplo más evidente, pero el uso de código móvil para la transmisión de actualizaciones o de nuevas versiones de código se extiende a la telefonía celular, a las tarjetas inteligentes y a todas las áreas donde pueda resultar importante la incorporación de nuevas funcionalidades a dispositivos controlados por software. La migración de código brinda una manera automática, de costo mínimo, para resolver la distribución o substitución de código para enormes cantidades de destinatarios. Sin embargo esta técnica también entraña graves riesgos, ya que el software migrado puede comprometer la seguridad de sus numerosos destinatarios, tanto por fallas de programación, como por maliciosas intenciones. La búsqueda de soluciones para este problema ha dado origen a activas líneas de investigación, dentro de las que se cuentan las referidas a la producción de Compiladores Certificantes, iniciadas con la introducción del Proof-Carrying Code (PCC) por G. Necula y P. Lee en 1996. Un Compilador Certificante genera, además del código ejecutable, una prueba o demostración de que dicho código no puede violar la política de seguridad preestablecida para su consumidor. Al consumidor le basta entonces someter exitosamente al código recibido a su prueba, para poder asegurar que su ejecución le resultara segura. Algunas líneas de investigación sobre compilación certificante se basan en frameworks lógicos y utilizan demostradores de teoremas, otras en modelar la seguridad mediante un sistema de tipos. Las primeras tienen la dificultad de que las pruebas son de alta complejidad, generalmente exponenciales, y muchas veces necesitan asistencia humana; mientras que las últimas, aún, sólo pueden aplicarse a políticas seguridad sumamente restringidas. Esta tesis se desarrolló dentro de un proyecto destinado a experimentar la construcción de compiladores certificantes basados en las técnicas de Análisis Estático de Flujo de Control y Datos, de difundido uso en la construcción de compiladores optimizantes. Se esperaba que este enfoque permitiera obtener soluciones lineales respecto de la longitud del programa fuente, tanto para la verificación de las pruebas obtenidas como para su generación. En dicho proyecto se definió un marco para el desarrollo de compiladores certificantes y sus correspondientes entornos de ejecución segura, al que se denominó Proof-Carrying Code based-on Static Analysis (PCC-SA). La definición, prototipación y evaluación de PCC-SA se dividió en dos tesis de maestría del INCO, Universidad de la República, Uruguay. Ambas tesis compartieron el relevamiento del Estado del Arte, el diseño general, la definición del lenguaje fuente y la evaluación global del framework, ientras que una se ocupó específicamente del diseño y la prototipación de las componentes del productor de código y la otra de las componentes del consumidor. 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 código intermedio de CCMini se introducen los ´arboles sintácticos abstractos (ASA). Los ASA tiene una semántica clara que facilita la realización de los diversos análisis estáticos requeridos para generar la prueba de seguridad. Sobre el ASA del programa fuente, CCMini realiza el análisis estático, introduce anotaciones y verifica la seguridad del programa. Luego, si el programa es seguro, genera la información para el consumidor; información 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 computación especificada dentro del ASA (problema que no es decidible en general) CCMini anotar a una indicación de verificación en tiempo de ejecución. Con esta información el receptor correr a la prueba y si esta es exitosa generara código objeto y podrá ejecutarlo en forma segura. En la otra tesis del proyecto, que ya fue defendida, se mostraban varios casos de estudio que corroboraban la hipótesis de que tanto el proceso de generación de las pruebas como el de su verificación tenían un comportamiento lineal respecto de la longitud de los programas fuente. En esta tesis se demuestra que en el peor caso las técnicas usadas tienen un comportamiento cuadrático. Además se demuestra que la complejidad en casos reales (tanto del proceso de generación de la prueba, como el de verificación) es lineal respecto de la longitud del programa fuente. Esta demostración esta basada en la definición de una familia de programas C, a los que se llama linealmente acotables, y los cuales satisfacen algunas propiedades que se demostraron. Finalmente se inspecciona una conjunto de programas C de bibliotecas de uso universal, conjunto que comprende más de 4.000.000 de líneas de código y más de 90.000 funciones, convalidándose la hipótesis del comportamiento lineal de PCC-SA en la práctica ya que esta inspección permitió observar que estos programas pertenecen a la familia definida.


Detalles Bibliográficos
2006
Compiladores Certificantes
Verificación de Programas
Seguridad
Código Móvil Seguro
Lenguajes de Programación
Proof-Carrying Code
Español
Universidad de la República
COLIBRI
http://hdl.handle.net/20.500.12008/2978
Acceso abierto
Licencia Creative Commons Atribución – No Comercial – Sin Derivadas (CC BY-NC-ND 4.0)
_version_ 1807523181241565184
author Bavera, Francisco
author_facet Bavera, Francisco
author_role author
bitstream.checksum.fl_str_mv 528b6a3c8c7d0c6e28129d576e989607
9833653f73f7853880c94a6fead477b1
4afdbb8c545fd630ea7db775da747b2f
9da0b6dfac957114c6a7714714b86306
1158bdcb1b623bf0896e2a0df5bba170
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
bitstream.url.fl_str_mv http://localhost:8080/xmlui/bitstream/20.500.12008/2978/5/license.txt
http://localhost:8080/xmlui/bitstream/20.500.12008/2978/2/license_text
http://localhost:8080/xmlui/bitstream/20.500.12008/2978/3/license_url
http://localhost:8080/xmlui/bitstream/20.500.12008/2978/4/license_rdf
http://localhost:8080/xmlui/bitstream/20.500.12008/2978/1/tesis-bavera.pdf
collection COLIBRI
dc.creator.advisor.none.fl_str_mv Aguirre, Jorge
Tasistro, Alvaro
dc.creator.none.fl_str_mv Bavera, Francisco
dc.date.accessioned.none.fl_str_mv 2014-11-24T22:37:10Z
dc.date.available.none.fl_str_mv 2014-11-24T22:37:10Z
dc.date.issued.es.fl_str_mv 2006
dc.date.submitted.es.fl_str_mv 20141202
dc.description.abstract.none.fl_txt_mv En la última década el uso de las TIC ha irrumpido en forma explosiva en todas las áreas de actividad humana y han sido incorporadas a una, cada vez más, amplia gama de aplicaciones y artefactos. Paralelamente ha crecido de la misma forma el uso de Código Móvil; esto es, de código que es generado por un productor y usado por uno o numerosos consumidores. La distribución de software por Internet es el ejemplo más evidente, pero el uso de código móvil para la transmisión de actualizaciones o de nuevas versiones de código se extiende a la telefonía celular, a las tarjetas inteligentes y a todas las áreas donde pueda resultar importante la incorporación de nuevas funcionalidades a dispositivos controlados por software. La migración de código brinda una manera automática, de costo mínimo, para resolver la distribución o substitución de código para enormes cantidades de destinatarios. Sin embargo esta técnica también entraña graves riesgos, ya que el software migrado puede comprometer la seguridad de sus numerosos destinatarios, tanto por fallas de programación, como por maliciosas intenciones. La búsqueda de soluciones para este problema ha dado origen a activas líneas de investigación, dentro de las que se cuentan las referidas a la producción de Compiladores Certificantes, iniciadas con la introducción del Proof-Carrying Code (PCC) por G. Necula y P. Lee en 1996. Un Compilador Certificante genera, además del código ejecutable, una prueba o demostración de que dicho código no puede violar la política de seguridad preestablecida para su consumidor. Al consumidor le basta entonces someter exitosamente al código recibido a su prueba, para poder asegurar que su ejecución le resultara segura. Algunas líneas de investigación sobre compilación certificante se basan en frameworks lógicos y utilizan demostradores de teoremas, otras en modelar la seguridad mediante un sistema de tipos. Las primeras tienen la dificultad de que las pruebas son de alta complejidad, generalmente exponenciales, y muchas veces necesitan asistencia humana; mientras que las últimas, aún, sólo pueden aplicarse a políticas seguridad sumamente restringidas. Esta tesis se desarrolló dentro de un proyecto destinado a experimentar la construcción de compiladores certificantes basados en las técnicas de Análisis Estático de Flujo de Control y Datos, de difundido uso en la construcción de compiladores optimizantes. Se esperaba que este enfoque permitiera obtener soluciones lineales respecto de la longitud del programa fuente, tanto para la verificación de las pruebas obtenidas como para su generación. En dicho proyecto se definió un marco para el desarrollo de compiladores certificantes y sus correspondientes entornos de ejecución segura, al que se denominó Proof-Carrying Code based-on Static Analysis (PCC-SA). La definición, prototipación y evaluación de PCC-SA se dividió en dos tesis de maestría del INCO, Universidad de la República, Uruguay. Ambas tesis compartieron el relevamiento del Estado del Arte, el diseño general, la definición del lenguaje fuente y la evaluación global del framework, ientras que una se ocupó específicamente del diseño y la prototipación de las componentes del productor de código y la otra de las componentes del consumidor. 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 código intermedio de CCMini se introducen los ´arboles sintácticos abstractos (ASA). Los ASA tiene una semántica clara que facilita la realización de los diversos análisis estáticos requeridos para generar la prueba de seguridad. Sobre el ASA del programa fuente, CCMini realiza el análisis estático, introduce anotaciones y verifica la seguridad del programa. Luego, si el programa es seguro, genera la información para el consumidor; información 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 computación especificada dentro del ASA (problema que no es decidible en general) CCMini anotar a una indicación de verificación en tiempo de ejecución. Con esta información el receptor correr a la prueba y si esta es exitosa generara código objeto y podrá ejecutarlo en forma segura. En la otra tesis del proyecto, que ya fue defendida, se mostraban varios casos de estudio que corroboraban la hipótesis de que tanto el proceso de generación de las pruebas como el de su verificación tenían un comportamiento lineal respecto de la longitud de los programas fuente. En esta tesis se demuestra que en el peor caso las técnicas usadas tienen un comportamiento cuadrático. Además se demuestra que la complejidad en casos reales (tanto del proceso de generación de la prueba, como el de verificación) es lineal respecto de la longitud del programa fuente. Esta demostración esta basada en la definición de una familia de programas C, a los que se llama linealmente acotables, y los cuales satisfacen algunas propiedades que se demostraron. Finalmente se inspecciona una conjunto de programas C de bibliotecas de uso universal, conjunto que comprende más de 4.000.000 de líneas de código y más de 90.000 funciones, convalidándose la hipótesis del comportamiento lineal de PCC-SA en la práctica ya que esta inspección permitió observar que estos programas pertenecen a la familia definida.
dc.format.extent.es.fl_str_mv 73 p.
dc.format.mimetype.es.fl_str_mv application/pdf
dc.identifier.citation.es.fl_str_mv BAVERA, F. "Compilación y certificación de código mediante análisis estático de flujo de control y de datos". Tesis de maestría, Universidad de la República (Uruguay). Facultad de Ingeniería. Instituto de Computación – PEDECIBA, 2006.
dc.identifier.uri.none.fl_str_mv http://hdl.handle.net/20.500.12008/2978
dc.language.iso.none.fl_str_mv es
spa
dc.publisher.es.fl_str_mv UR. FI-INCO,
dc.rights.license.none.fl_str_mv Licencia Creative Commons Atribución – No Comercial – Sin Derivadas (CC BY-NC-ND 4.0)
dc.rights.none.fl_str_mv info:eu-repo/semantics/openAccess
dc.source.none.fl_str_mv reponame:COLIBRI
instname:Universidad de la República
instacron:Universidad de la República
dc.subject.es.fl_str_mv Compiladores Certificantes
Verificación de Programas
Seguridad
Código Móvil Seguro
Lenguajes de Programación
Proof-Carrying Code
dc.title.none.fl_str_mv Compilación y certificación de código mediante análisis estático de flujo de control y de datos
dc.type.es.fl_str_mv Tesis de maestría
dc.type.none.fl_str_mv info:eu-repo/semantics/masterThesis
dc.type.version.none.fl_str_mv info:eu-repo/semantics/acceptedVersion
description En la última década el uso de las TIC ha irrumpido en forma explosiva en todas las áreas de actividad humana y han sido incorporadas a una, cada vez más, amplia gama de aplicaciones y artefactos. Paralelamente ha crecido de la misma forma el uso de Código Móvil; esto es, de código que es generado por un productor y usado por uno o numerosos consumidores. La distribución de software por Internet es el ejemplo más evidente, pero el uso de código móvil para la transmisión de actualizaciones o de nuevas versiones de código se extiende a la telefonía celular, a las tarjetas inteligentes y a todas las áreas donde pueda resultar importante la incorporación de nuevas funcionalidades a dispositivos controlados por software. La migración de código brinda una manera automática, de costo mínimo, para resolver la distribución o substitución de código para enormes cantidades de destinatarios. Sin embargo esta técnica también entraña graves riesgos, ya que el software migrado puede comprometer la seguridad de sus numerosos destinatarios, tanto por fallas de programación, como por maliciosas intenciones. La búsqueda de soluciones para este problema ha dado origen a activas líneas de investigación, dentro de las que se cuentan las referidas a la producción de Compiladores Certificantes, iniciadas con la introducción del Proof-Carrying Code (PCC) por G. Necula y P. Lee en 1996. Un Compilador Certificante genera, además del código ejecutable, una prueba o demostración de que dicho código no puede violar la política de seguridad preestablecida para su consumidor. Al consumidor le basta entonces someter exitosamente al código recibido a su prueba, para poder asegurar que su ejecución le resultara segura. Algunas líneas de investigación sobre compilación certificante se basan en frameworks lógicos y utilizan demostradores de teoremas, otras en modelar la seguridad mediante un sistema de tipos. Las primeras tienen la dificultad de que las pruebas son de alta complejidad, generalmente exponenciales, y muchas veces necesitan asistencia humana; mientras que las últimas, aún, sólo pueden aplicarse a políticas seguridad sumamente restringidas. Esta tesis se desarrolló dentro de un proyecto destinado a experimentar la construcción de compiladores certificantes basados en las técnicas de Análisis Estático de Flujo de Control y Datos, de difundido uso en la construcción de compiladores optimizantes. Se esperaba que este enfoque permitiera obtener soluciones lineales respecto de la longitud del programa fuente, tanto para la verificación de las pruebas obtenidas como para su generación. En dicho proyecto se definió un marco para el desarrollo de compiladores certificantes y sus correspondientes entornos de ejecución segura, al que se denominó Proof-Carrying Code based-on Static Analysis (PCC-SA). La definición, prototipación y evaluación de PCC-SA se dividió en dos tesis de maestría del INCO, Universidad de la República, Uruguay. Ambas tesis compartieron el relevamiento del Estado del Arte, el diseño general, la definición del lenguaje fuente y la evaluación global del framework, ientras que una se ocupó específicamente del diseño y la prototipación de las componentes del productor de código y la otra de las componentes del consumidor. 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 código intermedio de CCMini se introducen los ´arboles sintácticos abstractos (ASA). Los ASA tiene una semántica clara que facilita la realización de los diversos análisis estáticos requeridos para generar la prueba de seguridad. Sobre el ASA del programa fuente, CCMini realiza el análisis estático, introduce anotaciones y verifica la seguridad del programa. Luego, si el programa es seguro, genera la información para el consumidor; información 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 computación especificada dentro del ASA (problema que no es decidible en general) CCMini anotar a una indicación de verificación en tiempo de ejecución. Con esta información el receptor correr a la prueba y si esta es exitosa generara código objeto y podrá ejecutarlo en forma segura. En la otra tesis del proyecto, que ya fue defendida, se mostraban varios casos de estudio que corroboraban la hipótesis de que tanto el proceso de generación de las pruebas como el de su verificación tenían un comportamiento lineal respecto de la longitud de los programas fuente. En esta tesis se demuestra que en el peor caso las técnicas usadas tienen un comportamiento cuadrático. Además se demuestra que la complejidad en casos reales (tanto del proceso de generación de la prueba, como el de verificación) es lineal respecto de la longitud del programa fuente. Esta demostración esta basada en la definición de una familia de programas C, a los que se llama linealmente acotables, y los cuales satisfacen algunas propiedades que se demostraron. Finalmente se inspecciona una conjunto de programas C de bibliotecas de uso universal, conjunto que comprende más de 4.000.000 de líneas de código y más de 90.000 funciones, convalidándose la hipótesis del comportamiento lineal de PCC-SA en la práctica ya que esta inspección permitió observar que estos programas pertenecen a la familia definida.
eu_rights_str_mv openAccess
format masterThesis
id COLIBRI_17f0834d63a1857395f7a17a3ddeae58
identifier_str_mv BAVERA, F. "Compilación y certificación de código mediante análisis estático de flujo de control y de datos". Tesis de maestría, Universidad de la República (Uruguay). Facultad de Ingeniería. Instituto de Computación – PEDECIBA, 2006.
instacron_str Universidad de la República
institution Universidad de la República
instname_str Universidad de la República
language spa
language_invalid_str_mv es
network_acronym_str COLIBRI
network_name_str COLIBRI
oai_identifier_str oai:colibri.udelar.edu.uy:20.500.12008/2978
publishDate 2006
reponame_str COLIBRI
repository.mail.fl_str_mv mabel.seroubian@seciu.edu.uy
repository.name.fl_str_mv COLIBRI - Universidad de la República
repository_id_str 4771
rights_invalid_str_mv Licencia Creative Commons Atribución – No Comercial – Sin Derivadas (CC BY-NC-ND 4.0)
spelling 2014-11-24T22:37:10Z2014-11-24T22:37:10Z200620141202BAVERA, F. "Compilación y certificación de código mediante análisis estático de flujo de control y de datos". Tesis de maestría, Universidad de la República (Uruguay). Facultad de Ingeniería. Instituto de Computación – PEDECIBA, 2006.http://hdl.handle.net/20.500.12008/2978En la última década el uso de las TIC ha irrumpido en forma explosiva en todas las áreas de actividad humana y han sido incorporadas a una, cada vez más, amplia gama de aplicaciones y artefactos. Paralelamente ha crecido de la misma forma el uso de Código Móvil; esto es, de código que es generado por un productor y usado por uno o numerosos consumidores. La distribución de software por Internet es el ejemplo más evidente, pero el uso de código móvil para la transmisión de actualizaciones o de nuevas versiones de código se extiende a la telefonía celular, a las tarjetas inteligentes y a todas las áreas donde pueda resultar importante la incorporación de nuevas funcionalidades a dispositivos controlados por software. La migración de código brinda una manera automática, de costo mínimo, para resolver la distribución o substitución de código para enormes cantidades de destinatarios. Sin embargo esta técnica también entraña graves riesgos, ya que el software migrado puede comprometer la seguridad de sus numerosos destinatarios, tanto por fallas de programación, como por maliciosas intenciones. La búsqueda de soluciones para este problema ha dado origen a activas líneas de investigación, dentro de las que se cuentan las referidas a la producción de Compiladores Certificantes, iniciadas con la introducción del Proof-Carrying Code (PCC) por G. Necula y P. Lee en 1996. Un Compilador Certificante genera, además del código ejecutable, una prueba o demostración de que dicho código no puede violar la política de seguridad preestablecida para su consumidor. Al consumidor le basta entonces someter exitosamente al código recibido a su prueba, para poder asegurar que su ejecución le resultara segura. Algunas líneas de investigación sobre compilación certificante se basan en frameworks lógicos y utilizan demostradores de teoremas, otras en modelar la seguridad mediante un sistema de tipos. Las primeras tienen la dificultad de que las pruebas son de alta complejidad, generalmente exponenciales, y muchas veces necesitan asistencia humana; mientras que las últimas, aún, sólo pueden aplicarse a políticas seguridad sumamente restringidas. Esta tesis se desarrolló dentro de un proyecto destinado a experimentar la construcción de compiladores certificantes basados en las técnicas de Análisis Estático de Flujo de Control y Datos, de difundido uso en la construcción de compiladores optimizantes. Se esperaba que este enfoque permitiera obtener soluciones lineales respecto de la longitud del programa fuente, tanto para la verificación de las pruebas obtenidas como para su generación. En dicho proyecto se definió un marco para el desarrollo de compiladores certificantes y sus correspondientes entornos de ejecución segura, al que se denominó Proof-Carrying Code based-on Static Analysis (PCC-SA). La definición, prototipación y evaluación de PCC-SA se dividió en dos tesis de maestría del INCO, Universidad de la República, Uruguay. Ambas tesis compartieron el relevamiento del Estado del Arte, el diseño general, la definición del lenguaje fuente y la evaluación global del framework, ientras que una se ocupó específicamente del diseño y la prototipación de las componentes del productor de código y la otra de las componentes del consumidor. 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 código intermedio de CCMini se introducen los ´arboles sintácticos abstractos (ASA). Los ASA tiene una semántica clara que facilita la realización de los diversos análisis estáticos requeridos para generar la prueba de seguridad. Sobre el ASA del programa fuente, CCMini realiza el análisis estático, introduce anotaciones y verifica la seguridad del programa. Luego, si el programa es seguro, genera la información para el consumidor; información 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 computación especificada dentro del ASA (problema que no es decidible en general) CCMini anotar a una indicación de verificación en tiempo de ejecución. Con esta información el receptor correr a la prueba y si esta es exitosa generara código objeto y podrá ejecutarlo en forma segura. En la otra tesis del proyecto, que ya fue defendida, se mostraban varios casos de estudio que corroboraban la hipótesis de que tanto el proceso de generación de las pruebas como el de su verificación tenían un comportamiento lineal respecto de la longitud de los programas fuente. En esta tesis se demuestra que en el peor caso las técnicas usadas tienen un comportamiento cuadrático. Además se demuestra que la complejidad en casos reales (tanto del proceso de generación de la prueba, como el de verificación) es lineal respecto de la longitud del programa fuente. Esta demostración esta basada en la definición de una familia de programas C, a los que se llama linealmente acotables, y los cuales satisfacen algunas propiedades que se demostraron. Finalmente se inspecciona una conjunto de programas C de bibliotecas de uso universal, conjunto que comprende más de 4.000.000 de líneas de código y más de 90.000 funciones, convalidándose la hipótesis del comportamiento lineal de PCC-SA en la práctica ya que esta inspección permitió observar que estos programas pertenecen a la familia definida.Made available in DSpace on 2014-11-24T22:37:10Z (GMT). No. of bitstreams: 5 tesis-bavera.pdf: 1231874 bytes, checksum: 1158bdcb1b623bf0896e2a0df5bba170 (MD5) license_text: 21936 bytes, checksum: 9833653f73f7853880c94a6fead477b1 (MD5) license_url: 49 bytes, checksum: 4afdbb8c545fd630ea7db775da747b2f (MD5) license_rdf: 23148 bytes, checksum: 9da0b6dfac957114c6a7714714b86306 (MD5) license.txt: 4244 bytes, checksum: 528b6a3c8c7d0c6e28129d576e989607 (MD5) Previous issue date: 200673 p.application/pdfesspaUR. FI-INCO,Las obras depositadas en el Repositorio se rigen por la Ordenanza de los Derechos de la Propiedad Intelectual de la Universidad De La República. (Res. Nº 91 de C.D.C. de 8/III/1994 – D.O. 7/IV/1994) y por la Ordenanza del Repositorio Abierto de la Universidad de la República (Res. Nº 16 de C.D.C. de 07/10/2014)info:eu-repo/semantics/openAccessLicencia Creative Commons Atribución – No Comercial – Sin Derivadas (CC BY-NC-ND 4.0)Compiladores CertificantesVerificación de ProgramasSeguridadCódigo Móvil SeguroLenguajes de ProgramaciónProof-Carrying CodeCompilación y certificación de código mediante análisis estático de flujo de control y de datosTesis de maestríainfo:eu-repo/semantics/masterThesisinfo:eu-repo/semantics/acceptedVersionreponame:COLIBRIinstname:Universidad de la Repúblicainstacron:Universidad de la RepúblicaBavera, FranciscoAguirre, JorgeTasistro, AlvaroUniversidad de la República (Uruguay). Facultad de Ingeniería. Instituto de Computación – PEDECIBAMagíster en InformáticaLICENSElicense.txttext/plain4244http://localhost:8080/xmlui/bitstream/20.500.12008/2978/5/license.txt528b6a3c8c7d0c6e28129d576e989607MD55CC-LICENSElicense_textapplication/octet-stream21936http://localhost:8080/xmlui/bitstream/20.500.12008/2978/2/license_text9833653f73f7853880c94a6fead477b1MD52license_urlapplication/octet-stream49http://localhost:8080/xmlui/bitstream/20.500.12008/2978/3/license_url4afdbb8c545fd630ea7db775da747b2fMD53license_rdfapplication/octet-stream23148http://localhost:8080/xmlui/bitstream/20.500.12008/2978/4/license_rdf9da0b6dfac957114c6a7714714b86306MD54ORIGINALtesis-bavera.pdfapplication/pdf1231874http://localhost:8080/xmlui/bitstream/20.500.12008/2978/1/tesis-bavera.pdf1158bdcb1b623bf0896e2a0df5bba170MD5120.500.12008/29782014-11-24 20:37:10.447oai:colibri.udelar.edu.uy:20.500.12008/2978VGVybWlub3MgeSBjb25kaWNpb25lcyByZWxhdGl2YXMgYWwgZGVwb3NpdG8gZGUgb2JyYXMNCg0KDQpMYXMgb2JyYXMgZGVwb3NpdGFkYXMgZW4gZWwgUmVwb3NpdG9yaW8gc2UgcmlnZW4gcG9yIGxhIE9yZGVuYW56YSBkZSBsb3MgRGVyZWNob3MgZGUgbGEgUHJvcGllZGFkIEludGVsZWN0dWFsICBkZSBsYSBVbml2ZXJzaWRhZCBEZSBMYSBSZXDvv71ibGljYS4gKFJlcy4gTu+/vSA5MSBkZSBDLkQuQy4gZGUgOC9JSUkvMTk5NCDvv70gRC5PLiA3L0lWLzE5OTQpIHkgIHBvciBsYSBPcmRlbmFuemEgZGVsIFJlcG9zaXRvcmlvIEFiaWVydG8gZGUgbGEgVW5pdmVyc2lkYWQgZGUgbGEgUmVw77+9YmxpY2EgKFJlcy4gTu+/vSAxNiBkZSBDLkQuQy4gZGUgMDcvMTAvMjAxNCkuIA0KDQpBY2VwdGFuZG8gZWwgYXV0b3IgZXN0b3MgdO+/vXJtaW5vcyB5IGNvbmRpY2lvbmVzIGRlIGRlcO+/vXNpdG8gZW4gQ09MSUJSSSwgbGEgVW5pdmVyc2lkYWQgZGUgUmVw77+9YmxpY2EgcHJvY2VkZXLvv70gYTogIA0KDQphKSBhcmNoaXZhciBt77+9cyBkZSB1bmEgY29waWEgZGUgbGEgb2JyYSBlbiBsb3Mgc2Vydmlkb3JlcyBkZSBsYSBVbml2ZXJzaWRhZCBhIGxvcyBlZmVjdG9zIGRlIGdhcmFudGl6YXIgYWNjZXNvLCBzZWd1cmlkYWQgeSBwcmVzZXJ2YWNp77+9bg0KYikgY29udmVydGlyIGxhIG9icmEgYSBvdHJvcyBmb3JtYXRvcyBzaSBmdWVyYSBuZWNlc2FyaW8gIHBhcmEgZmFjaWxpdGFyIHN1IHByZXNlcnZhY2nvv71uIHkgYWNjZXNpYmlsaWRhZCBzaW4gYWx0ZXJhciBzdSBjb250ZW5pZG8uDQpjKSByZWFsaXphciBsYSBjb211bmljYWNp77+9biBw77+9YmxpY2EgeSBkaXNwb25lciBlbCBhY2Nlc28gbGlicmUgeSBncmF0dWl0byBhIHRyYXbvv71zIGRlIEludGVybmV0IG1lZGlhbnRlIGxhIHB1YmxpY2Fjae+/vW4gZGUgbGEgb2JyYSBiYWpvIGxhIGxpY2VuY2lhIENyZWF0aXZlIENvbW1vbnMgc2VsZWNjaW9uYWRhIHBvciBlbCBwcm9waW8gYXV0b3IuDQoNCg0KRW4gY2FzbyBxdWUgZWwgYXV0b3IgaGF5YSBkaWZ1bmRpZG8geSBkYWRvIGEgcHVibGljaWRhZCBhIGxhIG9icmEgZW4gZm9ybWEgcHJldmlhLCAgcG9kcu+/vSBzb2xpY2l0YXIgdW4gcGVy77+9b2RvIGRlIGVtYmFyZ28gc29icmUgbGEgZGlzcG9uaWJpbGlkYWQgcO+/vWJsaWNhIGRlIGxhIG1pc21hLCBlbCBjdWFsIGNvbWVuemFy77+9IGEgcGFydGlyIGRlIGxhIGFjZXB0YWNp77+9biBkZSBlc3RlIGRvY3VtZW50byB5IGhhc3RhIGxhIGZlY2hhIHF1ZSBpbmRpcXVlIC4NCg0KRWwgYXV0b3IgYXNlZ3VyYSBxdWUgbGEgb2JyYSBubyBpbmZyaWdlIG5pbmfvv71uIGRlcmVjaG8gc29icmUgdGVyY2Vyb3MsIHlhIHNlYSBkZSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBjdWFscXVpZXIgb3Ryby4NCg0KRWwgYXV0b3IgZ2FyYW50aXphIHF1ZSBzaSBlbCBkb2N1bWVudG8gY29udGllbmUgbWF0ZXJpYWxlcyBkZSBsb3MgY3VhbGVzIG5vIHRpZW5lIGxvcyBkZXJlY2hvcyBkZSBhdXRvciwgIGhhIG9idGVuaWRvIGVsIHBlcm1pc28gZGVsIHByb3BpZXRhcmlvIGRlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciwgeSBxdWUgZXNlIG1hdGVyaWFsIGN1eW9zIGRlcmVjaG9zIHNvbiBkZSB0ZXJjZXJvcyBlc3Tvv70gY2xhcmFtZW50ZSBpZGVudGlmaWNhZG8geSByZWNvbm9jaWRvIGVuIGVsIHRleHRvIG8gY29udGVuaWRvIGRlbCBkb2N1bWVudG8gZGVwb3NpdGFkbyBlbiBlbCBSZXBvc2l0b3Jpby4NCg0KRW4gb2JyYXMgZGUgYXV0b3Lvv71hIG3vv71sdGlwbGUgL3NlIHByZXN1bWUvIHF1ZSBlbCBhdXRvciBkZXBvc2l0YW50ZSBkZWNsYXJhIHF1ZSBoYSByZWNhYmFkbyBlbCBjb25zZW50aW1pZW50byBkZSB0b2RvcyBsb3MgYXV0b3JlcyBwYXJhIHB1YmxpY2FybGEgZW4gZWwgUmVwb3NpdG9yaW8sIHNpZW5kbyDvv71zdGUgZWwg77+9bmljbyByZXNwb25zYWJsZSBmcmVudGUgYSBjdWFscXVpZXIgdGlwbyBkZSByZWNsYW1hY2nvv71uIGRlIGxvcyBvdHJvcyBjb2F1dG9yZXMuDQoNCkVsIGF1dG9yIHNlcu+/vSByZXNwb25zYWJsZSBkZWwgY29udGVuaWRvIGRlIGxvcyBkb2N1bWVudG9zIHF1ZSBkZXBvc2l0YS4gTGEgVURFTEFSIG5vIHNlcu+/vSByZXNwb25zYWJsZSBwb3IgbGFzIGV2ZW50dWFsZXMgdmlvbGFjaW9uZXMgYWwgZGVyZWNobyBkZSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgZW4gcXVlIHB1ZWRhIGluY3VycmlyIGVsIGF1dG9yLg0KDQpBbnRlIGN1YWxxdWllciBkZW51bmNpYSBkZSB2aW9sYWNp77+9biBkZSBkZXJlY2hvcyBkZSBwcm9waWVkYWQgaW50ZWxlY3R1YWwsIGxhIFVERUxBUiAgYWRvcHRhcu+/vSB0b2RhcyBsYXMgbWVkaWRhcyBuZWNlc2FyaWFzIHBhcmEgZXZpdGFyIGxhIGNvbnRpbnVhY2nvv71uIGRlIGRpY2hhIGluZnJhY2Np77+9biwgbGFzIHF1ZSBwb2Ry77+9biBpbmNsdWlyIGVsIHJldGlybyBkZWwgYWNjZXNvIGEgbG9zIGNvbnRlbmlkb3MgeS9vIG1ldGFkYXRvcyBkZWwgZG9jdW1lbnRvIHJlc3BlY3Rpdm8uDQoNCkxhIG9icmEgc2UgcG9uZHLvv70gYSBkaXNwb3NpY2nvv71uIGRlbCBw77+9YmxpY28gYSB0cmF277+9cyBkZSBsYXMgbGljZW5jaWFzIENyZWF0aXZlIENvbW1vbnMsIGVsIGF1dG9yIHBvZHLvv70gc2VsZWNjaW9uYXIgdW5hIGRlIGxhcyA2IGxpY2VuY2lhcyBkaXNwb25pYmxlczoNCg0KDQpBdHJpYnVjae+/vW4gKENDIC0gQnkpOiBQZXJtaXRlIHVzYXIgbGEgb2JyYSB5IGdlbmVyYXIgb2JyYXMgZGVyaXZhZGFzLCBpbmNsdXNvIGNvbiBmaW5lcyBjb21lcmNpYWxlcywgc2llbXByZSBxdWUgc2UgcmVjb25vemNhIGFsIGF1dG9yLg0KDQpBdHJpYnVjae+/vW4g77+9IENvbXBhcnRpciBJZ3VhbCAoQ0MgLSBCeS1TQSk6IFBlcm1pdGUgdXNhciBsYSBvYnJhIHkgZ2VuZXJhciBvYnJhcyBkZXJpdmFkYXMsIGluY2x1c28gY29uIGZpbmVzIGNvbWVyY2lhbGVzLCBwZXJvIGxhIGRpc3RyaWJ1Y2nvv71uIGRlIGxhcyBvYnJhcyBkZXJpdmFkYXMgZGViZSBoYWNlcnNlIG1lZGlhbnRlIHVuYSBsaWNlbmNpYSBpZO+/vW50aWNhIGEgbGEgZGUgbGEgb2JyYSBvcmlnaW5hbCwgcmVjb25vY2llbmRvIGEgbG9zIGF1dG9yZXMuDQoNCkF0cmlidWNp77+9biDvv70gTm8gQ29tZXJjaWFsIChDQyAtIEJ5LU5DKTogUGVybWl0ZSB1c2FyIGxhIG9icmEgeSBnZW5lcmFyIG9icmFzIGRlcml2YWRhcywgc2llbXByZSB5IGN1YW5kbyBlc29zIHVzb3Mgbm8gdGVuZ2FuIGZpbmVzIGNvbWVyY2lhbGVzLCByZWNvbm9jaWVuZG8gYWwgYXV0b3IuDQoNCkF0cmlidWNp77+9biDvv70gU2luIERlcml2YWRhcyAoQ0MgLSBCeS1ORCk6IFBlcm1pdGUgZWwgdXNvIGRlIGxhIG9icmEsIGluY2x1c28gY29uIGZpbmVzIGNvbWVyY2lhbGVzLCBwZXJvIG5vIHNlIHBlcm1pdGUgZ2VuZXJhciBvYnJhcyBkZXJpdmFkYXMsIGRlYmllbmRvIHJlY29ub2NlciBhbCBhdXRvci4NCg0KQXRyaWJ1Y2nvv71uIO+/vSBObyBDb21lcmNpYWwg77+9IENvbXBhcnRpciBJZ3VhbCAoQ0Mg77+9IEJ5LU5DLVNBKTogUGVybWl0ZSB1c2FyIGxhIG9icmEgeSBnZW5lcmFyIG9icmFzIGRlcml2YWRhcywgc2llbXByZSB5IGN1YW5kbyBlc29zIHVzb3Mgbm8gdGVuZ2FuIGZpbmVzIGNvbWVyY2lhbGVzIHkgbGEgZGlzdHJpYnVjae+/vW4gZGUgbGFzIG9icmFzIGRlcml2YWRhcyBzZSBoYWdhIG1lZGlhbnRlIGxpY2VuY2lhIGlk77+9bnRpY2EgYSBsYSBkZSBsYSBvYnJhIG9yaWdpbmFsLCByZWNvbm9jaWVuZG8gYSBsb3MgYXV0b3Jlcy4NCg0KQXRyaWJ1Y2nvv71uIO+/vSBObyBDb21lcmNpYWwg77+9IFNpbiBEZXJpdmFkYXMgKENDIC0gQnktTkMtTkQpOiBQZXJtaXRlIHVzYXIgbGEgb2JyYSwgcGVybyBubyBzZSBwZXJtaXRlIGdlbmVyYXIgb2JyYXMgZGVyaXZhZGFzIHkgbm8gc2UgcGVybWl0ZSB1c28gY29uIGZpbmVzIGNvbWVyY2lhbGVzLCBkZWJpZW5kbyByZWNvbm9jZXIgYWwgYXV0b3IuDQoNCkxvcyB1c29zIHByZXZpc3RvcyBlbiBsYXMgbGljZW5jaWFzIGluY2x1eWVuIGxhIGVuYWplbmFjae+/vW4sIHJlcHJvZHVjY2nvv71uLCBjb211bmljYWNp77+9biwgcHVibGljYWNp77+9biwgZGlzdHJpYnVjae+/vW4geSBwdWVzdGEgYSBkaXNwb3NpY2nvv71uIGRlbCBw77+9YmxpY28uIExhIGNyZWFjae+/vW4gZGUgb2JyYXMgZGVyaXZhZGFzIGluY2x1eWUgbGEgYWRhcHRhY2nvv71uLCB0cmFkdWNjae+/vW4geSBlbCByZW1peC4NCg0KQ3VhbmRvIHNlIHNlbGVjY2lvbmUgdW5hIGxpY2VuY2lhIHF1ZSBoYWJpbGl0ZSB1c29zIGNvbWVyY2lhbGVzLCBlbCBkZXDvv71zaXRvIGRlYmVy77+9IHNlciBhY29tcGHvv71hZG8gZGVsIGF2YWwgZGVsIGplcmFyY2Egbe+/vXhpbW8gZGVsIFNlcnZpY2lvIGNvcnJlc3BvbmRpZW50ZS4NCg0KDQoNCg0KDQoNCg0KDQo=Universidadhttps://udelar.edu.uy/https://www.colibri.udelar.edu.uy/oai/requestmabel.seroubian@seciu.edu.uyUruguayopendoar:47712024-07-25T14:44:22.906391COLIBRI - Universidad de la Repúblicafalse
spellingShingle Compilación y certificación de código mediante análisis estático de flujo de control y de datos
Bavera, Francisco
Compiladores Certificantes
Verificación de Programas
Seguridad
Código Móvil Seguro
Lenguajes de Programación
Proof-Carrying Code
status_str acceptedVersion
title Compilación y certificación de código mediante análisis estático de flujo de control y de datos
title_full Compilación y certificación de código mediante análisis estático de flujo de control y de datos
title_fullStr Compilación y certificación de código mediante análisis estático de flujo de control y de datos
title_full_unstemmed Compilación y certificación de código mediante análisis estático de flujo de control y de datos
title_short Compilación y certificación de código mediante análisis estático de flujo de control y de datos
title_sort Compilación y certificación de código mediante análisis estático de flujo de control y de datos
topic Compiladores Certificantes
Verificación de Programas
Seguridad
Código Móvil Seguro
Lenguajes de Programación
Proof-Carrying Code
url http://hdl.handle.net/20.500.12008/2978