Sûreté des abstractions et sessions sécurisées dans les langages distribués
Institution:
Paris 7Disciplines:
Directors:
Abstract EN:
Distributed Systems have now a critical role in our society and in our industry. This thesis explores two ways to help programmers achieve strong safety and security guarantees for their distributed programs. First, we study the generalization of abstract data types in distributed programming. We start with a pre-existing type System that we make more flexible by adding subtyping. This models distributed Systems phenomena such as programs and libraries updates. Our safety properties are guaranteed if ail participants are well-typed and the network is reliable. Our System can then ensure that the local properties of abstract types are preserved in a distributed environment. Our second part focuses on sessions, a choreography construction that helps structure application-level interactions between multiple participants. We propose a programming language with distributed sessions, and a compiler whose purpose is to generate automatically for each session a cryptographic protocol. This protocol gives the programmer of an independent party of a distributed System the guarantee to follow the session specification, despite any low-level attempt by coalitions of remote peers to deviate from their roles.
Abstract FR:
Les systèmes répartis, ou systèmes distribués, tiennent aujourd'hui un rôle critique dans notre société et dans notre industrie. Cette thèse explore deux approches permettant aux programmeurs d'obtenir des garanties fortes de sûreté et de sécurité pour leurs programmes distribués. Dans un premier temps, nous étudions la généralisation des types abstraits de données ⁺ ₊la programmation distribuée. Nous partons d'un système de typage préexistant que nous rendons plus flexible par l'ajout de sous-typage. Ceci permet de prendre en compte certains phénomènes comme les mises à jour de programmes et de bibliothèques. Nos propriétés de sûreté sont garanties lorsque tous les participants sont bien typés et le réseau est fiable. Notre système permet alors de s'assurer que les propriétés locales des types abstraits sont préservées dans le contexte distribué. Notre seconde partie s'intéresse aux sessions, une construction permettant de chorégraphier les interactions entre de multiples participants. Nous proposons un langage de programmation distribué avec sessions, et un compilateur dont l'objet est de générer automatiquement pour chaque session un protocole cryptographique. Ce protocole garantit un programmeur d'une des parties indépendantes d'un système distribué de ne pas être vulnérable aux actions que le réseau ou d'autres participants corrompus pourraient effectuer pour dévier du comportement prévu par la session.