Habilitation à diriger des recherches

La soutenance a eu lieu le 28 août 2024, à Minatec, Grenoble, et en visio-conférence.

Mémoire: Application outillée de contre-mesures contre les attaques matérielles (PDF)

Slides de soutenance (PDF)

Jury

Rapporteurs     Guy Gogniat   professeur à l'Université Bretagne Sud
Guillaume Hiet professeur à CentraleSupélec Rennes
Ingrid Verbauwhede professeure à KU Leuven
Examinateurs Aurélien Francillon professeur à EURECOM
Karine Heydemann experte sécurité à Thalès DIS, chercheuse associée au LIP6
David Hély professeur à LCIS, Université Grenoble Alpes
Marie-Laure Potet professeure à Université Grenoble Alpes

Résumé

Ce mémoire d'habilitation porte sur la sécurisation des systèmes embarqués contre les attaques par canal auxiliaire et par injection de fautes. Les attaques par canal auxiliaire exploitent des observations physiques du circuit en fonctionnement pour inférer des informations additionnelles, non prévues dans un modèle d'attaquant en cryptanalyse pure, permettant d'altérer une propriété de sécurité, typiquement la confidentialité d'informations manipulées pendant un calcul. Les attaques par injection de fautes exploitent des perturbations physiques du circuit pour induire des effets inattendus dans son fonctionnement. Les conséquences logiques de ces perturbations matérielles permettent d'outrepasser la sécurité du système attaqué, par exemple faire fuir un secret ou obtenir des droits d'administration.

La première partie du mémoire s'intéresse au potentiel du compilateur pour l'application de contre-mesures logicielles contre les attaques matérielles. Cette question est traitée sous deux aspects. (i) Montrer qu'il est possible d'exploiter le compilateur pour l'application de contre-mesures. Cette question n'est pas triviale puisqu'un compilateur traditionnel s'intéresse seulement aux propriétés fonctionnelles du programme cible, alors que, pour l'application de contre-mesures, on s'intéresse à des propriétés de sécurité, non fonctionnelles. Cette question concerne également l'optimisation de la contre-mesure elle-même et du code ciblé par la protection. (ii) L'utilisation du compilateur comme levier pour la sécurisation de programmes: on exploite le compilateur pour augmenter le potentiel d'une contre-mesure ou pour la rendre paramétrable, donc rendre son application plus flexible. Le compilateur peut ainsi permettre l'implémentation de contre-mesures qui seraient autrement impossibles à mettre en œuvre.

Dans l'objectif d'adresser des modèles d'attaquants plus puissants, la deuxième partie du mémoire aborde la conception conjointe, logicielle et matérielle, de schémas de protection. Cette problématique est traitée sous deux aspects. (i) Comment exploiter des contre-mesures matérielles et les articuler avec des contre-mesures logicielles pour obtenir une protection à la couverture large permettant de couvrir un scenario d'attaque complet, depuis l'analyse préliminaire de la cible jusqu'à l'exploitation de techniques d’attaque spécifiques. (ii) Comment articuler un schéma de protection logiciel avec des contre-mesures matérielles pour obtenir un niveau de protection global élevé contre les injections de fautes, de manière à assurer l'intégrité complète du chemin d'instructions d'un processeur, en particulier les signaux de contrôle de sa micro-architecture.

Mots clés : sécurité matérielle, canal auxiliaire, injection de faute, compilation, micro-architecture des processeurs

Abstract

This dissertation deals with securing embedded systems against side-channel and fault injection attacks. Side-channel attacks exploit physical observations of the circuit in operation to infer additional information that is not exploitable in a pure cryptanalysis attacker model, making it possible to alter a security property, typically the confidentiality of information manipulated during a computation. Fault injection attacks exploit physical perturbations of the circuit to induce unexpected effects in its operation. The logical consequences of these perturbations can be used to override the security of the system under attack, e.g. to leak a secret or escalate privileges.

The first part of the dissertation focuses on the role of the compiler in a toolchain for securing software against hardware attacks, in particular, the compiler's potential for applying software countermeasures. This question is addressed from two angles. (i) Show that it is possible to rely on a (modified) compiler for the application of countermeasures. This question is not trivial since a traditional compiler is only interested in the functional properties of the target program, whereas the application of countermeasures deals with non-functional, security properties. This axis also concerns the optimization of the countermeasure itself and the code targeted by the protection. (ii) Using the compiler as a lever for program security: The aim is to increase the potential of a countermeasure, or to make the countermeasure parameterizable and therefore flexible in application. The compiler can also be used to support countermeasures that would otherwise be difficult to implement in practice.

With the aim of addressing more powerful attacker models, the second part of the dissertation addresses the joint design, in software and hardware, of protection schemes. This problem is addressed from two angles. (i) How to exploit hardware countermeasures and articulate them with software countermeasures to obtain full-coverage protection, enabling a complete attack scenario to be covered, from the target analysis phase to the exploitation of analysis techniques. (ii) How to articulate a software protection scheme with hardware protection elements to obtain a high level of protection against fault injections, so as to provide complete integrity of a processor's instruction path, in particular the control signals of its micro-architecture.

Keywords: hardware security, side-channel, fault injection, compilation, processor microarchitecture