Thèse de doctorat en Informatique
Sous la direction de Nikolaï Kosmatov et de Virgile Prevosto.
Soutenue le 30-11-2022
à université Paris-Saclay , dans le cadre de École doctorale Sciences et technologies de l'information et de la communication , en partenariat avec Faculté des sciences d'Orsay (référent) , Université Paris-Saclay. Graduate School Informatique et sciences du numérique (2020-....) (graduate school) et de Laboratoire d'intégration des systèmes et des technologies (Gif-sur-Yvette, Essonne ; 2001-....) (laboratoire) .
Le président du jury était Pascale Le Gall.
Le jury était composé de Roland Groz, Ioannis Parissis, Antoine Rollet.
Les rapporteurs étaient Roland Groz, Ioannis Parissis.
La vérification de logiciels représente un défi important à l’heure où ces derniers sont présents partout dans notre vie quotidienne. La technique la plus employée pour s’assurer qu’un logiciel répond à certaines exigences reste le test, c’est à dire exécuter le programmes sur un certain nombres d’entrées représentatives. Un enjeu majeur est alors de s’assurer que ces jeux d’entrée couvrent suffisamment de situations différentes.De nombreuses propositions ont été faites, appelées critères de couvertures, qui définissent des objectifs de tests, par lesquels doit passer au moins une exécution au cours du test. Dans cette thèse, nous examinons différentes possibilités pour combiner les méthodes formelles (techniques mathématiques) et le test, dans l’objectif d’améliorer l’efficacité de ce dernier. Nous nous sommes principalement intéressés aux critères de flot de données, qui observent le comportement des définitions et utilisations des variables du programme, et en particulier à la détection des objectifs polluants. Nous avons proposé plusieurs techniques, avec leurs implémentations et évaluations sur des exemples de programmes C réel. Nous étudions ensuite l’impact que ces objectifs de flot de données peuvent avoir sur la génération de test. Enfin, nous terminons en concevant une méthode permettant d’utiliser la détection d’objectifs polluants pour vérifier l’efficacité des contre-mesures contre les attaques par injection de fautes, et de trouver ainsi les erreurs dans leur implémentation. Cette méthode a été appliquée le bootloader de WooKey, un périphérique de stockage chiffré.
Testing techniques for advanced test coverage criteria
At a time where software are omnipresent in our daily life, verifying their safety and security present an important challenge for the industry. The most used technique to ensure that a software meets certain requirements is testing, where we run the program with some controlled input sets. A major issue is then to ensure that these input sets cover enough different situations. Many proposals have been made, called coverage criteria, which define test objectives through which at least one execution must pass during tests. In this thesis, we examine different possibilities to combine formal methods (mathematical techniques) and testing in order to improve the efficiency of the testing process. We focused our efforts on dataflow criteria, which observe the behavior of definitions and uses of each variables in the program, and the detection of polluting objectives for these criteria.We proposed several techniques, with their implementations and evaluations on real C programs. We then studied the impact of these dataflow criteria on test generation. Finally, we conclude by designing a method, using polluting objectives detection, to verify the effectiveness of countermeasures against fault injection attacks, and thus find errors in their implementation. This method was applied to the bootloader of WooKey, an encrypted storage device.
Il est disponible au sein de la bibliothèque de l'établissement de soutenance.