Thèse soutenue

Design de langage dédié orienté vers la preuve pour le logiciel critique
FR  |  
EN
Accès à la thèse
Auteur / Autrice : Denis Merigoux
Direction : Karthikeyan BhargavanJonathan Protzenko
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 13/12/2021
Etablissement(s) : Université Paris sciences et lettres
Ecole(s) doctorale(s) : École doctorale Sciences mathématiques de Paris centre (Paris ; 2000-....)
Partenaire(s) de recherche : Laboratoire : École normale supérieure (Paris ; 1985-....). Département d'informatique
établissement de préparation de la thèse : École normale supérieure (Paris ; 1985-....)
Jury : Président / Présidente : Xavier Leroy
Examinateurs / Examinatrices : Karthikeyan Bhargavan, Jonathan Protzenko, Bas Spitters, Derek Dreyer, Sarah B. Lawsky, Evelyne Contejean
Rapporteurs / Rapporteuses : Bas Spitters, Derek Dreyer

Mots clés

FR  |  
EN

Mots clés contrôlés

Résumé

FR  |  
EN

La vérification de programme consiste en l'analyse d'un programme informatique vu comme un artefact formel, afin de prouver l'absence de certaines catégories de bogues avant l’exécution. Mais pour utiliser un cadriciel de vérification de programmes, il faut auparavant traduire le code source originel du programme dans le langage formel du cadriciel. De plus, il est possible d'utiliser plusieurs cadriciels de vérification pour prouver des propriétés de plus en plus spécialisées à propos du programme. Pour répondre au besoin de traductions multiples du programme source vers différents cadriciels de vérification de programmes ayant chacun leur paradigme de preuve, nous défendons l'utilisation de langages dédiés orientés vers la preuve. Ces langages dédiés devraient être pensés comme une sur-couche au-dessus des cadriciels de preuves, avec un design qui incorpore et distribue les obligations de preuves entre les prouveurs. De plus, le programme originel est souvent déjà traduit depuis des spécifications d'exigences informelles liées au domaine d'activité afférent. Afin de raffermir le maillon le plus haut de la chaîne de confiance, nous soutenons que les langages dédiés orientés vers la preuve peuvent aider les experts du domaine à relire la spécification du programme, spécification à la base d'ultérieurs développements d'implantations vérifiées. Cette dissertation traite du design et de l'utilité des langages dédiés orientés vers la preuve au travers de cinq études de cas. Ces études de cas portent sur des domaines allant des implantations cryptographiques aux systèmes experts légaux, et sur des logiciels à haut niveau d'assurance actuellement utilisés en production. Chaque étude de cas donne son nom à l'un des chapitres de cette dissertation. LibSignal* est une implémentation vérifiée du protocole cryptographique Signal à destination du Web. Hacspec est un langage dédié pour les spécifications cryptographiques en Rust. Steel est un cadriciel de vérification de programmes utilisant la logique de séparation à l'intérieur de l'assistant de preuve F*. Mlang est un compilateur pour un langage dédié aux calculs fiscaux utilisé par la DGFiP. Enfin, Catala est un nouveau langage qui permet l'encodage de spécifications législatives dans un code source exécutable et analysable.