Cogito est une chaîne de compilation qui permet d’appliquer automatiquement des contre-mesures afin d’accroître la sécurité des logiciels et des données embarquées dans les systèmes électroniques contre les attaques par canal auxiliaire et par injection de fautes.
Les logiciels embarqués dans les systèmes électroniques, tels que les cartes à puces, les objets connectés ou les smartphones, sont amenés à collecter, stocker et traiter des données sensibles. Or, ces logiciels se révèlent, en particulier, vulnérables à une classe d’attaques appelée attaques matérielles qui sont les attaques par canaux auxiliaires et celles par injection de fautes.
Les premières procèdent par l’observation du comportement physique du système (e.g., consommation électrique) lors de l’exécution du logiciel. Les deuxièmes provoquent des perturbations physiques, par exemple, en injectant des parasites sur le signal d’alimentation ou d’horloge du processeur. Ces attaques en fautes visent à détourner le logiciel de son fonctionnement normal dans le but de divulguer de l’information cachée ou de court-circuiter des protections.
Cogito sécurise les applications embarquées contre ce type d’attaques en intégrant automatiquement, lors de la phase de compilation, des contremesures dans les logiciels potentiellement vulnérables. Cette approche de sécurisation du logiciel lors de la compilation conduit à :
Les contremesures proposées par Cogito sont variées et nombreuses. Le CEA-List a développé des briques logicielles reposant sur des techniques qu’il a lui-même brevetées, comme la sécurisation basée sur le polymorphisme de code. Cette technique consiste à générer des variations de comportement du logiciel sans modifier ses propriétés fonctionnelles afin de réduire fortement l’efficacité des attaques.
Cogito est une chaîne de compilation qui s’appuie sur la plateforme LLVM.
Les forces principales de l’outil sont :
Banc de mesure de rayonnement électromagnétique observé avec une sonde et un oscilloscope. L’enjeu de Cogito est, par exemple, d’empêcher ce vecteur d’attaques.