Le problème de sécurité des systèmes électroniques a longtemps été vu et est encore vu sous l’angle de la sécurité logicielle. Avec l’ouverture des plateformes et l’augmentation des connexions, le matériel qui supporte le logiciel doit aussi proposer à l’utilisateur un niveau de sécurité correspondant à ses besoins. Soucieux de se protéger correctement, les industriels et les universitaires ont mené de larges travaux sur la sécurisation du matériel en particulier pour les composants programmables (microprocesseurs) et les composants spécifiques (ASIC). Mais, peu d’études se sont intéressées à la sécurisation des architectures reconfigurables. Pourtant, aujourd’hui, les composants reconfigurables du type FPGA deviennent de plus en plus pertinents pour l’industrie de l’électronique embarquée. Effectivement, d’une part, l’offre commerciale des circuits FPGA est large et correspond aux attentes des utilisateurs : circuits bas coûts, basse consommation de puissance, haute performance, embarquant des cœurs de processeur, haut débit, etc. D’autre part, la mise à jour matérielle est rendue possible grâce au concept de mise à jour matérielle des systèmes. Ce concept est particulièrement intéressant pour maintenir la sécurité des systèmes. Cependant, bien que de plus en plus utilisés dans les applications de sécurité des données (voir la solution de stockage sécurisé et mobile proposée par Bull www.monglobull.fr), les FPGA souffrent de failles de sécurité. Cet article propose de faire le point sur cette technologie et met en lumière le problème majeur de sécurité de la configuration des circuits FPGA SRAM et FLASH.
1. Introduction aux FPGA
1.1 Des circuits configurables
Les FPGA (Field Programmable Gate Array) sont des circuits numériques configurables [1-2]. A l’état initial, ils ne peuvent rien faire, mais disposent d’une importante quantité (dépendant de la technologie utilisée) de ressources matérielles opérationnelles dont on configure la fonction. Ces ressources sont, principalement, des blocs élémentaires logiques (pour réaliser des fonctions booléennes), des mémoires RAM, des opérateurs arithmétiques (qui travaillent en virgule fixe), des ressources de routage interne et des entrées/sorties. Ces ressources configurables sont reliées par un réseau dense de lignes de routage et de lignes de transport des horloges.
En plus de ces ressources, un FPGA est composé d’une mémoire interne de configuration. Chaque point de cette mémoire correspond à la configuration d’un élément d’une des ressources opérationnelles. Cette mémoire est, dans la plupart...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première