23/01/2003
Vincent Simonet (INRIA Rocquencourt)
Inférence de flots d'information pour ML

L'analyse de flots d'information consiste à déterminer si un programme satisfait certaines propriétés de confidentialité ou d'intégrité vis-à-vis des données qu'il manipule, en analysant les dépendances entre ses entrées et ses sorties : par exemple, si une entrée est considérée secrète, on souhaitera généralement que des sorties publiques n'en dépendent pas. Une solution naturelle consiste à effectuer cette analyse à l'aide d'un système de types annotés par des niveaux d'information, afin de pouvoir s'assurer du bon comportement d'un programme avant son exécution. Lors de l'exposé, nous nous intéresserons au développement d'un telle analyse par typage statique pour le langage Caml. Nous présenterons tout d'abord sa formalisation, ainsi que la preuve de sa correction, sur le noyau du langage, Core ML (c'est-à-dire un lambda-calcul doté d'un let polymorphe, de références, d'exceptions et de primitives). Il s'agit d'un système de types à la ML avec contraintes et doté de sous-typage. Sa correction, exprimée par un énoncé de non-interférence, est ramenée à la preuve d'une propriété de subject-reduction pour un langage non standard dans lequel on peut raisonner sur les points communs entre deux exécutions distinctes d'un programme.