Verification of confidentiality policies for mobile code
Institution:
NiceDisciplines:
Directors:
Abstract EN:
Information flow policies guarantee confidentiality through the absence of undesirable information leakages during program executions. This work proposes specification and verification static techniques for information flow policies in several settings. The work is composed of three major parts. In the first part, we propose formulations for specification of information flow policies over deterministic and non-deterministic programs that can be applied to logically characterize confidentiality policies in temporal and programming logics. We show the applicability of our approach in several languages, including a language with parallel composition and a language with shared mutable data structures. In the second part, we propose the specification of non-interference, a particular information flow policy, for an unstructured Java-like Virtual Machine (JVM) language that includes objects, methods, classes with inheritance, and exceptions. We define a type system that insures that typable programs hold the specified property. In order to provide an application of language-based-security in the context of mobile code, in the third part of this work, we propose a type system for non-interference of Java-like programs and show a connection between source and JVM code typability, in the presence of an untrusted non-optimizing compiler.
Abstract FR:
Les politiques de flux d’information garantissent la confidentialité à travers l’absence de fuites d’information non-désirables pendant l’exécution des programmes. Ce travail propose des techniques statiques de spécification et de vérification pour les politiques de flux d’information. Trois majeurs parties composent ce travail. Dans la première partie, nous proposons des formulations pour la spécification des politiques de flux d’information au sein de programmes déterministes et non-déterministes, et qui peuvent être appliqués afin de caractériser logiquement des politiques de confidentialité dans des logiques temporelles et de programmation. Nous démontrons l’applicabilité de notre approche dans le contexte de plusieurs langages incluant un langage permettant la composition parallèle et un langage possédant des structures de données partagées et mutables. Dans la deuxième partie, nous proposons la spécification de la non-interférence, une politique de flux d’information particulière, pour un langage non-structuré semblable à la machine virtuelle Java (JVM) et qui inclut des objets, des méthodes, des classes avec héritage, et des exceptions. Nous définissons un système de type qui assure que les programmes typables tiennent la propriété spécifiée. Afin de fournir une application de la sécurité des langages dans le contexte de code mobile, nous proposons un système de type pour la non-interférence des programmes semblables aux programmes Java et montrons une connexion entre la typabilité d’un code source et celle d’un code machine de la JVM, en présence d’un compilateur non-optimisant et non-fiable.