Research
  
Until 2009, I have been a PhD student in the Moscova team at INRIA Rocquencourt and the new INRIA-MSR joint centre.
See my new webpage for 
updated information.
Research Interests
I am interested in giving to programmers language tools such as new primitives,
type systems, compilers, etc., that make it easier to write robust, safe and
secure distributed programs and, at the same time, provide strong (formal)
guarantees about the resulting code (distributed type safety and enforcement of
security properties).
  
  
  Keywords: Programming languages, semantics, type systems, concurrency, language-based
  security, mechanized proofs.
  
  
Co-authors: 
Karthik
  Bhargavan, 
Ricardo Corin, 
Cédric Fournet, 
James J. Leifer.
Papers
Cryptographic Protocol Synthesis and Verification for Multiparty
  Sessions
   Extended abstract
    [ pdf
    ] 
  
  
  Joint work with Karthikeyan Bhargavan, Ricardo Corin, Cédric 
Fournet, 
and
  James Leifer. 
  
  In
  
22nd IEEE Computer Security Foundations Symposium (CSF22), July 
2009.
   
  
Project 
web
  page.  
  
  
    Specifications and generated code for the session examples of 
the paper.
  
We present the design and implementation of a compiler that, given 
high-level
multiparty session de- scriptions, generates custom cryptographic 
protocols.
Our sessions specify pre-arranged patterns of mes- sage exchanges and 
data
accesses between distributed participants. They provide each participant 
with
strong security guarantees for all their messages.  Our compiler 
generates code
for sending and receiv- ing these messages, with cryptographic 
operations and
checks, in order to enforce these guarantees against any adversary that 
may
control both the network and some session participants.  We verify that 
the
generated code is secure by relying on a recent type system for
cryptography. Most of the proof is performed by mechanized type checking 
and
does not rely on the correctness of our compiler.  We obtain the 
strongest
session security guarantees to date in a model that captures the 
executable
details of protocol code. We illustrate and evaluate our approach on a 
series of
protocols inspired by web services.
   
 
A Secure Compiler for Session Abstractions
   Journal article
    [ pdf
    ] 
  
  
  In 
Journal of Computer Security, 2008-11-19, p. 573-636.
  
  Joint work with Karthikeyan Bhargavan, Ricardo Corin, Cédric Fournet, and
  James Leifer. 
  
 This full paper merges the results from the following two papers, provides the
  proofs, and includes additional details and examples. (It is a slighly
  extended version of a paper to appear in the Journal of Computer Security).
 
A protocol compiler for secure sessions in ML
   Extended abstract
    [ pdf
    ] 
    Slides [pdf
    ]
  
  
  Joint work with Ricardo Corin.
  
  In G. Barthe and C. Fournet, editors, 
TGC'07, Sophia Antipolis, France, Lecture Notes in
  Computer Science, Springer Verlag, November 2007
   
  
Project web
  page.  
  
 
  Distributed applications can be structured using sessions
  that specify flows of messages between roles. We design a small specific
  language to declare sessions. We then build a compiler, called s2ml, that
  transforms these declara- tions down to ML modules securely implementing the
  sessions. Every run of a well-typed program executing a session through its
  generated module is guaran- teed to follow the session specification, despite
  any low-level attempt by coali- tions of remote peers to deviate from their
  roles. We detail the inner workings of our compiler, along with our design
  choices, and illustrate the usage of s2ml with two examples: a simple remote
  procedure call session, and a complex ses- sion for a conference management
  system.
  
 
Secure Implementations for Typed Session Abstractions
   Extended abstract
    [ pdf
    ] 
  
   
  Joint work with Karthikeyan Bhargavan, Ricardo Corin, Cédric Fournet, and
  James Leifer. 
  
  
20th IEEE Computer Security Foundations Symposium (CSF20), pp 170--186. July 2007
  
  Project web page.
  
  Distributed applications can be structured as parties that exchange
  messages according to some pre-arranged communication
  patterns. These sessions (or contracts, or protocols) simplify
  distributed programming: when coding a role for a given session,
  each party just has to follow the intended message flow, under the
  assumption that the other parties are also compliant. In an
  adversarial setting, remote parties may not be trusted to play their
  role. Hence, defensive implementations also have to monitor one
  another, in order to detect any deviation from the assigned roles of
  a session. This task involves low-level coding below session
  abstractions, thus giving up most of their benefits. We explore
  language-based support for sessions. We extend the ML language with
  session types that express flows of messages between roles, such
  that well-typed programs always play their roles. We compile session
  type declarations to cryptographic communication protocols that can
  shield programs from any low-level attempt by coalitions of remote
  peers to deviate from their roles.  
 
Abstraction Preservation and Subtyping in Distributed Languages
   Extended abstract
    [ pdf
    | ps.gz
    ] 
  
  Proc. ICFP 2006. © ACM, 2006.
  
  (Please contact me for the slides or the technical report.)
  
  Joint work with 
James
  J. Leifer.
  
  In most programming languages, type abstraction is guaranteed by syntactic
  scoping in a single program, but is not preserved by marshalling during
  distributed communication. A solution is to generate hash types at compile
  time that consist of a fingerprint of the source code implementing the data
  type. These hash types can be tupled with a marshalled value and compared
  efficiently at unmarshall time to guarantee abstraction safety. In this paper,
  we extend a core calculus of ML-like modules, functions, distributed
  communication, and hash types, to integrate structural subtyping, user-
  declared subtyping between abstract types, and bounded existential types. Our
  semantics makes two contributions: (1) the explicit tracking of the
  interaction between abstraction boundaries and subtyping; (2) support for
  user-declared module upgrades with propagation of the resulting subhashing
  relation throughout the network during communication. We prove type
  preservation, progress, determinacy, and erasure for our system.
 
Masters Thesis
Stage M2 au MPRI (Masters Thesis) : Sûreté globale des abstractions et
sous-typage dans un langage distribué (in French)
   
    [ Rapport pdf (662ko)
    | Transparents pdf (384ko)
    ] 
  
  
  Stage effectué sous la direction de 
James J. Leifer et 
Jean-Jacques Lévy.
 
Software
s2ml Compiler
A secure session to ML (Ocaml/F#) compiler prototype.
See 
the project
  web page for details and download link.