Thèse soutenue

Développement et certification en Coq/MathComp d'optimisations Datalog pour la vérification réseau

FR  |  
EN
Auteur / Autrice : Pierre-Léo Bégay
Direction : Jean-François MoninPierre Crégut
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 23/11/2021
Etablissement(s) : Université Grenoble Alpes
Ecole(s) doctorale(s) : École doctorale mathématiques, sciences et technologies de l'information, informatique (Grenoble ; 199.-....)
Partenaire(s) de recherche : Laboratoire : Laboratoire Verimag (Grenoble)
Equipe de recherche : Preuves et Analyses de Code pour la Sûreté et la Sécurité
Jury : Président / Présidente : David Monniaux
Examinateurs / Examinatrices : Stéphane Devismes, Ştefania-Gabriela Dumbravă, Stéphane Grumbach
Rapporteurs / Rapporteuses : Evelyne Contejean, Damien Pous

Mots clés

FR  |  
EN

Résumé

FR  |  
EN

Au cours des dernières décennies, le monde est devenu de plus en plus numérique. Cette tendance ne s’est pas inversée en 2020 ou 2021, les services professionnels et personnels étant de plus en plus fournis et utilisés au travers d’ordinateurs, tablettes ou téléphones portables.Cet intense basculement numérique implique que les pannes réseaux sont plus coûteuses et nuisibles que jamais, voire parfois critiques. Nous insistons sur le fait que les pannes mentionnées et auxquelles nous nous intéressons ne sont pas le résultat d’attaques externes – qui par ailleurs arrivent toutes les semaines, sinon tous les jours et dans des proportions industrielles –, mais sont simplement des bugs.Ces bugs sont avant tout dus à l’incroyable complexité de la conception de réseaux, qui elle-même vient de la nature hautement distribuée de ces derniers. De plus, la communauté réseau s’est longtemps basée sur une culture bricolo, dans le sens où elle ne disposait pas de fondations formelles, et donc des possibilités que l’existence et l’étude de telles fondations permet.Durant les dix à quinze dernières années, des chercheurs et chercheuses avec un passif en théorie des langages de programmation ont commencé à s’intéresser au réseau, et à la façon dont ils pourraient appliquer leurs outils et approches théoriques à ce domaine. Combinée à l’augmentation critique des besoins en sûreté (et sécurité), cette situation a mené à l’introduction de méthodes formelles pour le réseau. Cette tendance a également été renforcée par les dernières avancées en méthodes formelles, à la fois en termes de techniques de modélisation et d’efficacité concrète (voir par exemple les solvers rapides comme Z3).Parmi les outils crées, on trouve Network Optimized Datalog (NoD), un moteur Datalog developpé chez Microsoft conçu pour gérer des programmes qui décrivent, sous la forme de clauses de horn, le comportement d’un réseau donné. Bien qu’étant un pas dans la bonne direction, utiliser ce moteur demande aux ingénieurs réseaux d’écrire manuellement un codage de chaque réseau analysé, ce qui est en soi un processus complexe et risqué.De plus, NoD ne passe pas à l’échelle en utilisant des traductions naïves de réseaux de taille industrielle. En pratique, les auteurs se basent sur des programmes qui contiennent beaucoup de valeurs en dur, en utilisant des transformations (au niveau Datalog) manuelles, pas totalement claires et non-documentées. Cet angle mort dans un outil par ailleurs remarquable nous a poussé à travailler sur la conception et l’automatisation de transformations de programme similaires, cette fois avec une formalisation complète.Cependant, avoir une formalisation d’opérations non-triviales n’est pas suffisant pour avoir confiance en elles. Le but de notre travail a donc été la vérification formelle de cette transformation dans l’assistant de preuve Coq, en utilisant (et étendant légèrement) une implémentation Coq de Datalog préexistante.Bien qu’inspiré par le cadre de la vérification réseau, notre travail n’y est pas circonscrit. Concrètement, les analyses et réécritures que nous proposons peuvent être utilisées – et pertinentes – dans d’autres contextes. De plus, nous pensons que ce travail apporte un nouvel éclairage concernant la sémantique et l’étude formelle de programmes Datalog, éclairage qui pourrait servir comme base de travaux futurs, potentiellement dans d’autres contextes.