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.
Nicolas Belleville, Loïc Masure. Combining loop shuffling and code polymorphism for enhanced AES side-channel security. COSADE 2024 – 15th International Workshop on Constructive Side-Channel Analysis and Secure Design, Apr 2024, Gardanne, France. pp.260-280.
MAFIA: Protecting the Microarchitecture of Embedded Systems Against Fault Injection Attacks, T. Chamelot, D. Couroussé, and K. Heydemann. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems (TCAD), 2023.
A Tale of Resilience: On the Practical Security of Masked Software Implementations, L. Casalino, N. Belleville, D. Couroussé, and K. Heydeman. IEEE Access, 2023.
SCI-FI – Control Signal, Code, and Control Flow Integrity against Fault Injection Attacks, T. Chamelot, D. Couroussé, and K. Heydeman. Design, Automation & Test in Europe Conference (DATE), 2022.
Code Polymorphism Meets Code Encryption: Confidentiality and Side-Channel Protection of Software Components, L. Morel, D. Couroussé, and T. Hiscock ACM Digital Threats: Research and Practice (DTRAP), 2021.
PROSECCO: Formally-Proven Secure Compiled Code, N. Belleville, D. Couroussé, E. Encrenaz, K. Heydeman and Q. Meunier, in C&ESAR, 2021.
Maskara: Compilation of a Masking Countermeasure with Optimised Polynomial Interpolation, N. Belleville, D. Couroussé, K. Heydemann, Q. Meunier, and I. Ben El Ouahma. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems (TCAD), 2020.
Automated Software Protection for the Masses against Side-Channel Attacks, N. Belleville, D. Couroussé, K. Heydemann, and H.-P. Charles, ACM Transactions on Architecture and Code Optimization (TACO), vol. 15, no. 4, 2019.
Runtime Code Polymorphism as a Protection against Side Channel Attacks, D. Couroussé, T. Barry, B. Robisson, P. Jaillon, O. Potin, and J.-L. Lanet, in 10th IFIP International Conference on Information Security Theory and Practice (WISTP), 2016.