Le CEA LETI et l’IRT Nanoelec à travers le projet « Technologie et outil pour composants de confiance » repense la sécurité des processeurs et développe une architecture de processeur sécurisée basée sur le jeu d’instruction RISC-V. L’équipe projet travaille sur la définition et la spécification de plusieurs contremesures contre des attaques qui exploitent des vulnérabilités matérielles ou logicielles. En l’occurrence, les attaques par canaux auxiliaires, injection de fautes, buffer overflow, cold boot, …
Le sujet proposé pour cette alternance vise à travailler sur des modèles logiciels de ces contremesures puis de les intégrer dans un émulateur/simulateur. Des outils comme Gem5 ou TinyEMU sont des bons candidats pour cet exercice.
Selon le profil du candidat(e) et le cahier de charge de sa formation, les objectifs de l’alternance peuvent être orientés vers la couche logicielle ou matérielle du SOC vu que les contremesures apportent des modifications sur les deux couches. On peut distinguer alors deux orientations de l’alternance :
1. Orientation logicielle
Dans le cadre du développement d’un CPU 64 bits RISC-V manipulant des données et instructions chiffrées, la tâche principale sera la mise en œuvre d’un modèle de mémoire RAM chiffrée. Il faudra pour cela adapter le code du simulateur pour accéder aux signaux nécessaires au chiffrement (comme par exemple le mode de privilège en cours). Une fois le composant sécurisé intégré, il faudra valider son fonctionnement à l’aide de tests. On vérifiera par exemple que le système d’exploitation (Linux) fonctionne correctement et que des corruptions mémoire peuvent être détectées.
2. Orientation matérielle
Dans le processus d’implémentation matérielle de ces contremesures et leur intégration dans le cœur Ariane (CVA6) de l’OpenHW group, l’étape de la validation fonctionnelle est très importante. Cette dernière passe par tester les modèles comportementaux du RTL implémenté par les outils comme QuestaSim ou Verilator mais aussi par l’exécution des familles de tests RISCV en simulation et sur une cible FPGA où le cœur est émulé. Dans un but d’automatisation de cette validation fonctionnelle, le sujet proposé peut être orienter pour travailler sur des modèles logiciels de ces contremesures pour générer des traces qui doivent être comparées avec les traces Verilator ou Questasim d’une façon automatisée.
L’alternance sera organisée de la manière suivante :
· Prise en main du simulateur, de la toolchain de compilation RISC-V, de l’architecture actuelle du processeur sécurisé
· Développement du modèle logiciel des contremesures
· Intégration e validation du modèle
· Exploitation des résultats
Pour prendre en main ce sujet, le candidat ou la candidate devra être à l’aise en programmation (C/C++ et Python). L’environnement de développement actuel est sous Linux, ce qui nécessite d’être à l’aise avec le shell et le scripting (Bash, Makefile). Enfin, il faudra être capable de comprendre les solutions à mettre en œuvre à partir de spécifications et de discussions avec l’équipe. Il sera apprécié que le candidat ou la candidate soit capable de fournir un regard critique sur ses développements et éventuellement puisse partager des suggestions d’améliorations.