Projet ANR-13-INSE-0006 – COGITO : Runtime Code Generation to Secure Devices
Programme : Ingénierie Numérique et Sécurité (INS) 2013
Année de financement : 2013
Coordinateur du projet : Monsieur Damien COUROUSSÉ (Commissariat à l'Energie Atomique et aux Energies Alternatives)
Partenaires : Commissariat à l'énergie atomique et aux énergies alternatives; École nationale supérieure des mines de Saint-Étienne; Laboratoire public; Laboratoire X-LIM
Montant : 339812.0 euros
Date de début : 2013
Durée : 36 mois
Résumé : Ce projet concerne l'axe thématique 1, "Sécurité et sûreté des systèmes numériques". Considérant que le reverse engineering de code et le vol de données sensibles sont aujourd'hui les plus grandes menaces pour les composants sécurisés, COGITO propose une solution innovante qui met en perspective l'utilisation de la génération de code au runtime pour améliorer la sécurité dans les systèmes d'information embarqués.
La sécurité dans les systèmes embarqués et la génération de code au runtime sont, a priori, deux domaines technologiques inconciliables. D'une part, les composants sécurisés ont des contraintes fortes de coût de production, de consommation silicium et énergétique, et en tant que tels, offrent des ressources très limitées en calcul et en mémoire. De l'autre, la compilation est un processus gourmand en calcul, et la compilation dynamique demande une grande quantité de ressources de calcul et de mémoire au runtime. Cependant, l'objectif du projet COGITO est de démontrer qu'il est possible d'appliquer efficacement des techniques de génération de code au runtime et à bord d'un cryptoprocesseur, pour la sécurité des systèmes embarqués. Dans ce projet, nous définirons et validerons un mécanisme de protection unique qui implémente une large gamme de contre-mesures ad hoc et qui offre des moyens d'obfuscation de code efficaces. La mise en facteur d'un grand nombre de contre-mesures permet d'obtenir un meilleur compromis entre sécurité et performance que l'état de l'art.
Pour parvenir à cet objectif, les partenaires de COGITO ont pour plan d'adapter un outil pour la génération de code au runtime développé par le CEA, qui s'appelle deGoal. Cet outil est fondamentalement différent des techniques traditionnelles que sont l'interprétation et la compilation dynamique: des générateurs de code ad hoc sont compilés statiquement et embarqués dans la cible applicative, chaque générateur de code étant dédié à un kernel de calcul dont le code binaire sera écrit à la volée au runtime. En conséquence, ces générateurs de code demandent peu de ressources mémoire et sont très rapides, ce qui nous permet d'appliquer la génération de code au runtime à de petites architectures telles que les micro-contrôleurs utilisés dans les composants sécurisés, qui sont habituellement hors de portée des techniques standard de génération de code dynamique.
De plus, notre solution technologique s'interfacera facilement avec d'autres contre-mesures logicielles et matérielles de l'état de l'art.
Pour atteindre cet objectif, nous identifions trois tâches :
1. Faire une analyse détaillée des opportunités  apportées par la génération de code dynamique pour améliorer la sécurité dans les composants sécurisés, mais aussi ses menaces ou ses faiblesses.
2. Démontrer concrètement la faisabilité de l'utilisation de la génération de code au runtime pour les composants sécurisés. Pour remplir cette tâche, l'outil deGoal sera adapté.
3. Expérimenter, mesurer et valider l'efficacité de la génération de code au runtime pour des cas d'utilisation exemplaires du domaine de la sécurité.
En parallèle, la diffusion des résultats du projet sera assurée par un site internet dédié, par des publications dans des journaux spécialisés du domaine, par la participation à des conférences, des workshops et les évènements organisés par l'ANR, et par l'organisation d'un séminaire dédié à nos partenaires industriels qui aura lieu à la mi-parcours du projet.