Thèse soutenue

Sécurisation à la compilation de logiciels contre les attaques en fautes

FR  |  
EN
Auteur / Autrice : Thierno Barry
Direction : Bruno Robisson
Type : Thèse de doctorat
Discipline(s) : Microélectronique
Date : Soutenance le 24/11/2017
Etablissement(s) : Lyon
Ecole(s) doctorale(s) : École doctorale Sciences Ingénierie Santé (Saint-Etienne)
Partenaire(s) de recherche : Laboratoire : Centre Microélectronique de Provence - Site Georges Charpak (CMP-GC) / CMP-ENSMSE
Jury : Examinateurs / Examinatrices : Bruno Robisson, Sylvain Guilley, Erven Rohou, Marie-Laure Potet, Arnaud De Grandmaison, Albert Henri Cohen, Karine Heydemann, Damien Couroussé
Rapporteurs / Rapporteuses : Sylvain Guilley, Erven Rohou

Résumé

FR  |  
EN

Les systèmes embarqués sont de plus en plus présents dans notre quotidien (e.g. cartes de crédits, smartphones, passeports biométriques). Compte tenu de la sensibilité́ des données qu’ils manipulent, la sécurité́ de ces systèmes est aujourd’hui une préoccupation majeure pour les industrielles et les organismes étatiques. Il est établi qu’une injection de faute dans un système embarqué permet de compromettre la sécurité́ des données qu’il contient, par exemple obtenir une clé́ secrète ou outrepasser un mécanisme d’authentification.L’objet de cette thèse est la génération automatisée de protections logicielles contre les attaques par injection de fautes sur les systèmes embarqués. Les approches source et binaire consistent à insérer les protections respectivement dans le code source et binaire de l’application. Cette thèse explore l’utilisation d’une approche compilation consistant à intégrer les protections dans le compilateur.Nous proposons un compilateur basé sur LLVM permettant l’application de plusieurs schémas de protection : (1) un schéma de tolérance aux sauts d’instructions, (2) un schéma d’intégrité́ de flot de contrôle (CFI) permettant de garantir la validité́ du chemin d’exécution suivi et (3) un schéma combinant CFI et intégrité́ des instructions, garantissant à la fois la validité́ du chemin d’exécution suivi et aussi qu’aucune instruction le long de ce chemin n’a été́ sautée ou altérée. Notre approche, basée sur un compilateur modifié, permet de faire coexister protection de code et optimisation de code, permettant ainsi de générer un code binaire sécurisé́ et optimisé en termes d’empreinte mémoire et de temps d’exécution. Nous avons développé́ un simulateur de faute afin de valider la robustesse de nos implémentations vis-à-vis des modèles de fautes considérés.Cette thèse montre que l’approche compilation est un bon compromis entre l’approche source qui ne garantit pas la conservation des propriétés de sécurité́ dans le code binaire dû aux optimisations réalisées par le compilateur et l’approche binaire qui impacte considérablement les performances de l’application sécurisée dû aux différentes transformations nécessaires.