Tesis:

Automation and Modularity of Cryptographic Proofs in the Computational Model


  • Autor: CRESPO, Juan Manuel

  • Título: Automation and Modularity of Cryptographic Proofs in the Computational Model

  • Fecha: 2016

  • Materia: Sin materia definida

  • Escuela: FACULTAD DE INFORMATICA

  • Departamentos: LENGUAJES Y SISTEMAS INFORMATICOS E INGENIERIA DE SOFTWARE

  • Acceso electrónico: http://oa.upm.es/42973/

  • Director/a 1º: BARTHE, Gilles

  • Resumen: Cryptography is a small but crucial part of information security. The design of secure cryptographic primitives and protocols is an extremely difficult task and the rigorous analysis of such constructions is of paramount importance. In order to reduce the complexity of the analysis of such constructions and to provide structure to proofs of security, cryptographers have advocated for describing the probabilistic experiments representing the security properties and the underlying assumptions as programs (games) in a probabilistic language, and structuring the proofs as sequence of such programs. More recently, this methodology drew attention of the programming language and program verification community and relying on standard methods well-known in these communities, interactive tools were built to support this kind of reasoning. Among these, CertiCrypt and EasyCrypt were developed. The core component of these tools is a set of program logics that, in combination, allow to justify the validity of each transition in the sequence of games. This approach was widely applied and classical results of cryptography were reproduced and validated using the tools. However, while this approach is indeed attractive in many aspects and drew the attention of part of the community, its adoption remained limited. From our point of view, there are two factors that have hindered the adoption: - Overhead: the effort required to obtain a machine-checked proof in these tools is significantly larger than the one invested in a pen-and-paper proof. Essentially the whole proof needs to be worked out to a much higher level of detail and transitions deemed trivial when performing a semi-formal argument sometimes become tedious. - Learning curve: the background required to carry-out these machine-checked proofs does not necessarily match the one of the intended users, namely, cryptographers. Deep understanding of how the program logics work, experience in program verification and in interactive theorem are fundamental to be able to complete these proofs. In this thesis, we explore two complementary approaches that can mitigate the overhead of machine checked cryptography proofs, and to make their construction and development more accesible to cryptographers: fully automated analysis and modularity of cryptography proofs in the computational model. We propose a novel combination of symbolic and computational methods to achieve automated analysis of classes of constructions, without sacrificing the rigor of the code-based approach, and enabling for the first time the use of program synthesis in cryptographic design with computational guarantees. We develop a generic proof of one-round authenticated key exchange protocols that can be applied to a large set of protocols and we performed a fine-grained analysis that allows to obtain proofs under weaker assumptions. The initial cost of developing the proof is justified by its multiple applications and it constitutes a cost-effective way of developing such proofs. RESUMEN La criptografía es una parte pequeña pero muy importante de la seguridad informática. El diseño de primitivas y protocolos criptográficos es una tarea extremadamente difícil y el análisis riguroso de estas construcciones es por lo tanto muy importante. Con el objetivo de reducir la complejidad del análisis de seguridad de dichas construcciones, y para estructurar las pruebas de seguridad, los criptógrafos han propuesto describir las pruebas de seguridad como experimentos probabilísticos representando las propiedades de seguridad y las hipótesis subyacentes como programas (juegos) en un lenguaje de programación probabilístico y estructurar las pruebas como secuencias de programas. Mas recientemente, esta metodología atrajo la atención de la comunidad de lenguajes de programación y verificación de programas. Utilizando técnicas estándar muy comunes en estas comunidades, herramientas interactivas para formalizar este tipo de pruebas. CertiCrypt e EasyCrypt son dos de estas herramientas y utilizan una serie de lógicas de programas que, en combinación, permiten justificar la validez de cada transición en la secuencia de juegos. Este enfoque fue aplicado a resultados clásicos de criptografía y los resultados fueron formalizados utilizando la herramienta. Sin embargo, mientras este enfoque es atractivo en muchos aspectos y atrajo la atención de parte de la comunidad de criptografía, su adopción permaneció relativamente limitada. Desde nuestro punto de vista, hay dos factores que han disminuido el interés: - Esfuerzo extra: el esfuerzo requerido para obtener una prueba mecanizada en estas herramientas es significativamente mas alto que el necesario en una prueba de papel-y-lápiz. Básicamente, la prueba tiene que realizarse de una manera mucho mas detallada y algunas transiciones generalmente consideradas triviales en un argumento semi-formal se vuelven largas y tediosas. - Curva de aprendizaje: el conocimiento de dominio necesario para desarrollar las pruebas mecanizadas no encaja necesaria mente con la experiencia del criptógrafo promedio. Un íntimo entendimiento de los detalles de cómo funcionan las lógicas de programa, experiencia en verificación de programas y experiencia con asistentes de prueba interactivos son fundamentales para poder completar las pruebas. En esta tesis, exploramos dos enfoques complementarios que pueden mitigar el esfuerzo extra necesario para el desarrollo de pruebas de criptografía y para hacer su construcción mas accesible a los criptógrafos: análisis automático y modularidad de pruebas criptográficas en el modelo computacional. En primer lugar, proponemos una combinación de métodos simbólicos y computacionales para obtener un análisis automático de la seguridad de clases de construcciones, sin sacrificar el rigor de las pruebas mecanizadas, y permitiendo por primera vez la utilización de técnicas de síntesis de programa para obtener construcciones con garantías computacionales automáticamente. En segundo lugar, desarrollamos una prueba genérica de protocolos de intercambio autenticado de claves que puede ser aplicada a una gran cantidad de protocolos y desarrollados un análisis de seguridad detallado que permite obtener pruebas bajo hipótesis más débiles. El costo inicial del desarrollo de esta prueba esta bien justificado por sus múltiples aplicaciones y constituye un ejemplo de cómo desarrollar pruebas con una buena relación de costo-beneficio.