Description
Date depot: 1 janvier 1900
Titre: Sécurisation de programmes assembleur face aux attaques visant les processeurs embarqués
Directrice de thèse:
Emmanuelle ENCRENAZ (LIP6)
Domaine scientifique: Sciences et technologies de l'information et de la communication
Thématique CNRS : Non defini
Resumé:
Cette thèse s'intéresse à la sécurité des programmes embarqués sur microcontrôleur face aux attaques en faute. Elle propose une contre-mesure au niveau assembleur basée sur un modèle de fautes obtenu par l'expérimentation.
Pour définir un modèle de fautes, un processeur de type Cortex-M3 a été choisi et une technique d'injection de fautes par impulsion électromagnétique a été utilisée. Une première étape de caractérisation des effets de la technique d'injection a d'abord été réalisée. Celle-ci a ensuite permis de montrer que les fautes réalisées étaient dues à la corruption des transferts sur les bus entre la mémoire Flash et le pipeline du processeur. Ce type de fautes a donc permis de réaliser des remplacements d'instructions, des sauts d'instructions ainsi que des modifications de données chargées depuis la mémoire Flash.
Si le remplacement d'une instruction par une autre bien spécifique est très difficile à contrôler, le cas où une instruction n'a simplement pas été exécutée a été observé fréquemment et semble bien plus facilement réalisable. Or, au niveau d'un programme embarqué, de nombreuses attaques simples sont possibles grâce au saut d'une instruction, et il est relativement aisé de trouver de tels points faibles. Une contre-mesure permettant d'empêcher ces attaques simples par saut d'instruction a été construite. Elle propose une séquence de remplacement pour chaque instruction du jeu d'instructions. Celle-ci peut s'appliquer automatiquement à un code déjà compilé via une transformation d'assembleur vers assembleur. Une vérification formelle de cette contre-mesure a également été réalisée à l'aide d'outils de model-checking. La vérification a consisté à garantir le fait que les séquences de remplacement ont le même effet que l'instruction qu'elles remplacent, y compris avec une possible injection de faute au cours de la séquence de remplacement.
La contre-mesure proposée limite théoriquement les attaques sur le flot de contrôle d'un programme en protégeant les instructions mais ne protège pas les chargements de données depuis la mémoire Flash. Pour cela, elle peut être combinée avec une autre contre-mesure au niveau assembleur qui réalise une détection de fautes. Un premier test expérimental de ces deux contre-mesures, à la fois sur des instructions isolées et sur des codes complexes issus d'une implémentation de FreeRTOS, a été réalisé. La contre-mesure de tolérance proposée semble efficace, mais globalement moins que celle de détection également étudiée. Cependant, elle se révèle être un très bon complément pour cette contre-mesure de détection et permet d'en corriger certains défauts.
Doctorant.e: Moro Nicolas