Catégorie : Electronique

  • Une « glaise électronique » re-modelable a volonté !

    Concevoir les puces de demain grâce aux FPGA*s, une « glaise électronique » re-modelable a volonté, nous explique Bruno Levy.  Bruno est Directeur de Recherche Inria au sein du projet ParMA de l’Inria Saclay et du Laboratoires de Mathématiques d’Orsay. Il conduit des recherches en physique numérique et en cosmologie. Il joue également le rôle d’ambassadeur pour Risc-V.  Pierre Paradinas.

    (*) FPGA : Pour « Field Programmable Gate Array », à savoir, ensemble de portes logiques programmable « sur le terrain » …

    Créé par l’auteur avec DALL-E, depuis chat.bing.com.

    « S’il te plait, dessine moi la super-puce du futur pour l’IA de demain ? »
    « Ça, c’est la caisse, la super-puce que tu veux est dedans ! » (D’après St Exupéry et Igor Carron)

    La micro-electronique : des milliards de connexions sans s’emmêler les fils ! Les circuits intégrés, ou « puces », sont d’incroyables réalisations technologiques. Ils ont été inventés en 1958 par Jack Kilby dans l’objectif de simplifier la fabrication des circuits électroniques. Cette industrie était alors confrontée au problème d’arriver à fabriquer de manière fiable un grand nombre d’éléments. Le plus gros problème était posé par le nombre considérables de fils censés connecter les composants entre eux ! En gravant directement par un procédé photographique les composants et leurs connexions dans un morceau de semi-conducteur de quelques millimètres carrés, son invention révolutionne ce domaine, car elle a permis non-seulement d’automatiser le processus de fabrication, mais également de miniaturiser la taille des circuits et leur consommation énergétique de manière spectaculaire. Grâce à son invention, il propose une dizaine d’années plus tard, en 1972, la première calculatrice de poche. Dans la même période (en 1971), la firme Intel, à présent bien connue, sort une puce révolutionnaire, le Intel 4004, qui contient un ordinateur quasi complet (le tout premier microprocesseur), également dans l’objectif de fabriquer des calculatrices de poches. En quelques décennies, cette technologie progresse plus rapidement que n’importe quelle autre. Les premières puces des années 70 comportaient quelques milliers d’éléments (des transistors), connectés par des fils de quelques micromètres d’épaisseur (dans un millimètre on casait 1000 fils, ce qui était déjà considérable, mais attendez la suite…). Les puces d’aujourd’hui les plus performances comportent des centaines de milliards de transistors, et les fils font quelques nanomètres de large (dans un millimètre, on case maintenant un million de fils).

    Comment fabrique-t-on une puce ? Il y a un petit problème : arriver à structurer la matière à l’échelle atomique ne peut pas se faire dans un garage ! Pour donner une idée de la finesse de gravure (quelques nanomètres), on peut garder à l’esprit que la lumière visible a une longueur d’onde entre 300 et 500 nanomètres. Autrement dit, dans l’intervalle minuscule correspondant à une seule longueur d’onde électromagnétique de lumière visible, on sait graver une centaine de fils !!! Alors avec quoi peut-on réaliser ce tour de force ? Toujours avec des ondes électromagnétiques, mais de très très petite longueur d’onde, émises par un laser, à savoir des ultra-violets très énergétiques (qui sont une forme de « lumière » invisible), appelés EUV pour Extreme Ultra Violets. La firme néerlandaise ASML maîtrise cette technologie et équipe les principaux fabricants de puces (appelés des « fondeurs »), dont le Taïwanais TSMC, Samsung et Intel, avec sa machine (à plusieurs centaines de millions d’Euros, grosse comme un autobus, bourrée de technologie) qui permet de graver la matière à l’échelle atomique . La machine, et surtout l’usine autour de celle-ci, coûtent ensemble plusieurs dizaines de milliards d’Euros ! A moins d’être elle-même un fondeur (comme Intel), une entreprise conceptrice de puces va donc en général dépendre de l’une de ces entreprises, qui a déjà réalisé les investissements colossaux, et qui va fabriquer les puces à partir de son design. Cela a été le cas par exemple de Nvidia (qui fabrique à présent la plupart des puces pour l’IA), qui a fait fabriquer ses trois premières générations de puces graphiques dans la fin des années 1990 par le fondeur Franco-Italien ST-Microelectronics (qui gravait alors en 500 nanomètres, puis 350 nanomètres), pour passer ensuite au Taïwanais TSMC, qui avait déjà à l’époque un processus plus performant.

    Représentation de l’intérieur d’un FPGA, constitué d’un grand nombre de portes logiques, de cellules de mémoire et d’aiguillages permettant de les connecter. Ici, le circuit correspond à FemtoRV, un petit processeur Risc-V conçu par l’auteur.

    Et les petits acteurs ? Comment un petit acteur concepteur de puces peut-il accéder à cette technologie ? Le coût en faisant appel à un fondeur reste important, car pour chaque puce plusieurs étapes de développement sont à réaliser, comme la création des masques, sortes de « négatifs photo » permettant de créer par projection les circuits sur la puce. Afin de réaliser des prototypes, ou encore quand les exigences de performances sont moins importantes, il serait bien d’avoir une sorte de « boite » remplie de portes logiques, de fils et de cellules mémoires (comme sur l’illustration sous le titre), et de pouvoir rebrancher à volonté tous ces éléments au gré de l’imagination du concepteur. C’est exactement ce que permet de réaliser un FPGA. Un tel FPGA se présente sous la forme d’un circuit intégré, avec à l’intérieur tous ces éléments génériques, et un très grand nombre d’ « aiguillages » reconfigurables par logiciel (voir la figure). On peut le considérer comme une « glaise électronique », modelable à façon, permettant de réaliser n’importe quel circuit logique, à l’aide de langages de description spécialisés.

    Il existe une grande variété de FPGA, des plus petits, à quelques dizaines d’Euros, comportant quelques milliers d’éléments logiques, jusqu’au plus gros, à plusieurs milliers d’Euros, comportant des millions d’éléments. Ceci rend le « ticket d’entrée » bien moins onéreux. Combinées avec la disponibilité de FPGAs à faible coût, deux autres nouveautés favorisent considérablement l’émergence de petits acteurs dans ce domaine :

    • tout d’abord, l’apparition d’outils Open-Source, tels que Yosys et NextPNR, qui remplacent de grosses suites logicielles monolithiques par un ensemble d’outils simples, faciles à utiliser et réactifs. Ceci rend cette technologie accessible non-seulement aux petits acteurs, mais également à toute une communauté de hobbyistes, de manière similaire à ce qui s’est passé pour l’impression 3D.
    • d’autre part, le standard ouvert RiscV fournit à tous ces projets une norme libre de droit, facilitant l’émergence d’un écosystème de composants compatibles entre eux (c.f. cet article sur binaire ). Il est assez facile de réaliser un processeur Risc-V à partir d’un FPGA (tutoriel réalisé par l’auteur ici ).
    • et enfin, des initiatives comme TinyTapeOut, qui permettent à tout un chacun de s’initier à la fabrication de circuit intégrés, en intégrant les projets de plusieurs personnes sur une seule puce afin de réduire les coûts de production.

    Pourquoi est-ce intéressant et qu’est-ce que ça change ? Au-delà d’introduire plus de « bio-diversité » dans un domaine jusqu’à présent dominé par quelques acteurs, certains domaines peuvent grandement bénéficier de la possibilité de créer facilement des circuits électroniques : par exemple, les expériences réalisées à l’aide de l’accélérateur à particules LHC (Large Hadron Collider) du CERN génèrent un très grand volume de données, qui nécessite une électronique spécialisée pour leur traitement. D’autres domaines d’application nécessitent de contrôler très exactement le temps, d’une manière telle que seule un circuit spécialisé peut le faire. Enfin, un grand nombre de gadgets de type « Internet des Objets » possède à l’intérieur un système informatique complet, tournant sous Linux, ce qui représente un ensemble de problèmes en termes de sécurité informatique. Ceci est résumé dans cet article qui décrit un scénario fictif, où des brosses à dents connectés sont utilisées pour organiser une attaque par déni de service. Même si ce scénario était fictif, il reste malheureusement très réaliste ! Grâce aux FPGAs, il sera possible de remplacer tous ces petits ordinateurs génériques de l’Internet des objets par des versions spécialisées, à la fois plus économes en énergie et moins sensibles aux attaques informatiques.

    Et demain, une convergence entre le soft et le hard ? Avec les FPGAs, on assiste à une évolution où la frontière entre le soft (le logiciel) et le hard (le matériel) est de plus en plus ténue. Si on imagine qu’elle devienne totalement poreuse, on voit alors des ordinateurs qui reconfigurent automatiquement leurs circuits en fonction du programme à exécuter, afin d’être plus efficace et/ou de consommer moins d’énergie. Intel et AMD explorent déjà cette voie, en intégrant un FPGA dans un microprocesseur, ce qui permet de définir pour ce dernier de nouvelles instructions à volonté. En extrapolant encore plus loin cette vision, on pourra imaginer dans un futur proche une grande variété de schémas de conceptions et de modèles d’exécution, permettant de remplacer la puissance brute de calcul par plus de créativité et d’intelligence, réelle ou artificielle !

    Créé par l’auteur avec DALL-E, depuis chat.bing.com.

    Alors, de quoi rêvent les FPGAs … ?

    de moutons électriques, bien évidement !

    Bruno Lévy, Inria

     

  • Un nouveau RISC-V

    Binaire a demandé à Bruno Levy, de nous parler d’un processeur spécifique le RISC-V. Ce processeur ouvert/libre pourrait rebattre les cartes des coeurs de processeurs. Bruno Levy est chercheur Inria, spécialiste des optimisations mathématiques, il  a rejoint la nouvelle équipe projet PARMA (une machine mathématique à remonter le temps pour explorer l’univers). Bruno est aussi l’un des ambassadeurs du RISC-V, nous lui avons ouvert nos colonnes. Pierre Paradinas

    Risc-V, une nouvelle donne dans le monde des micro-processeurs

    Les micro-processeurs, au coeur du numérique… Véritable concentrés de technologie, objets les plus complexes jamais conçu par l’être humain, constitués de milliards d’éléments, mais guère plus grands qu’une tête d’épingle, les microprocesseurs sont omniprésents dans notre quotidien. Que ça soit pour envoyer la photographie du petit dernier à la famille, pour réserver un billet de train, pour nous assister dans la conduite de nos véhicules, et même pour optimiser la consommation d’eau du lave vaisselle, de plus en plus rares sont les gestes du quotidien qui n’impliquent pas de près ou de loin des microprocesseurs. Une évolution majeure, nommée RISC-V, est susceptible de changer en profondeur la donne pour ces objets de haute technologie au coeur de notre quotidien.

    Le jeu d’instructions, l’« alphabet » du microprocesseur. En quelque sorte, pour nos appareils numériques, le microprocesseur joue le rôle du « chef d’orchestre », jocoeuruant  la « partition » – un programme – qui décrit le fonctionnement de l’appareil.  Ce programme est écrit dans un langage, qui a son propre « alphabet », constitué d’instructions élémentaires, très simples, encodées sous forme de nombres dans la mémoire de l’ordinateur. De la même manière qu’il existe plusieurs alphabets (mandarin, cantonais, japonais, latin, grec, cyrillique …), il existe plusieurs jeux d’instructions différents : x86 pour les processeurs Intel, ARM très utilisé pour les téléphones portables et les Macs, AVR utilisé par des microcontroleurs dans les systèmes embarqués … Et parmi ces jeux d’instruction, il existe deux grandes classes, les jeux d’instructions dits CISC (pour Complex Instruction Set), qui comportent un grand nombre d’instructions élémentaires, ou encore un grand nombre de lettres différentes dans leur « alphabet » (comme dans les alphabets chinois qui comportent des milliers d’idéogrammes). C’est le cas des processeurs x86 Intel,  dont les dernières évolutions supportent plusieurs milliers d’instructions différentes, la documentation comportant plus de 5000 pages, réparties dans 10 volumes (!). L’autre grande famille de jeux d’instruction, appelée RISC (pour Reduced Instruction Set) se fonde sur un « alphabet » plus restreint, avec tout au plus une petite centaine d’instructions différentes, qui ressemble plus à l’alphabet latin ou grec. D’une certaine manière, les instructions CISC correspondent plus à des syllables qu’à des lettres, et il faudra plusieurs instructions RISC pour faire la même chose.

    Ecosystème et normalisation : tout seul, le microprocesseur ne peut rien faire ! Il ne peut vivre qu’au sein d’un réseau d’acteurs différents, fournissant à la fois l’environnement matériel (les ordinateurs ou gadgets électroniques autour du microprocesseur, les périphériques, …) et l’environnement logiciel (les logiciels, le système d’exploitation, les langages de programmation…). Ce qui permet à toute cette chaîne d’acteurs de travailler ensemble, c’est la normalisation du jeu d’instruction (Instruction Set Architecture), un document qui décrit dans le détail chaque instruction élémentaire et ce qu’elle est censée faire. C’est en quelque sorte le « contrat » que passe le micro-processeur (et son fabriquant) avec les autres acteurs, garant du fait que tout ce petit monde saura « se parler » et travailler ensemble. Par exemple, le jeu d’instruction ARM de l’entreprise britannique du même nom est utilisé par beaucoup d’acteur, notamment Apple, Samsung, Qualcomm, MediaTek, Nvidia. Pour obtenir le droit d’utiliser le jeu d’instruction ARM, ces acteurs doivent payer un « ticket d’entrée », à savoir une licence, 1 ou 2 % du prix de vente de la puce, reversé à ARM.  Mais ARM a été rachetée par l’entreprise Japonaise SoftBank (pour 32 milliards de dollars), qui prévoit d’augmenter significativement le prix de la licence. Nvidia prévoyait à son tour de racheter ARM à Softbank (pour 40 milliards de dollars), projet finalement abandonné après que la FTC américaine ait saisi la justice.  Les rachats sont monnaie courante dans le monde des microprocesseurs, comme le rachat d’Atmel par Microchip en 2016 (fabriquant de micro-controlleurs pour les systèmes embarqués). Ces rachats font peser à chaque fois des grandes incertitudes sur les clients utilisant ces microprocesseurs dans leur produit. C’est particulièrement le cas de produits de type « internet des objets », utilisant des microcontrôleurs à quelques centimes d’Euros pièce, pour lesquels le prix d’une licence peut représenter une part significative du coût de revient.

    Berkeley Lab’s Wang Hall – computer research facility -July 6, 2015, Photo credit: Berkeley Lab, Roy Kaltschmidt

     

     RISC-V, un jeu d’instruction et une organisation qui pourraient changer la donne : RISC-V est à la fois une architecture de jeu d’instruction et une organisation visant à développer l’écosystème d’acteurs autour de ce jeu d’instructions. Issue de travaux de recherche académiques, la première mouture du jeu d’instruction a été conçue en 2010. Le jeu d’instruction en lui-même est issu des travaux d’Asanovic, Lee et Waterman au Parallel Computing Lab de l’Université de Berkeley, dirigé par Patterson. Il a été soutenu par différentes sources de financement, par des industriels (dont Intel et Microsoft), par l’état de Californie et par un projet DARPA. En 2015 est créée la fondation RISCV-International, une association à but non lucratif ayant pour objectif de développer le standard et de stimuler l’émergence d’un écosystèmes d’acteurs pour créer du matériel et du logiciel autour du standard.   Afin de mieux garantir son indépendance, l’association a déménagé en Suisse à Zurich en 2020.

    Yunsup Lee holding RISC V prototype chip. At UC Berkeley Par Lab Winter Retreat, January 2013.

     

    Des petits et des grands microprocesseurs : Du plus petit microcontrôleur intégré au lave-vaisselle jusqu’au grands centres de calculs qui brassent des péta-octets de données, les microprocesseurs peuvent avoir des fonctionnalités et des puissances de calcul très différentes. Malgré cela, tous ces secteurs sont susceptibles d’être impactés par RISC-V. Le jeu d’instruction est conçu en « oignon », avec un « alphabet » pour les tâches les plus simples, et des  « lettres en plus » pour certaines tâches spécialisées. Par exemple, un mathématicien va utiliser en plus des 26 lettres de l’alphabet des symboles spéciaux. Il en va de même dans la norme RISC-V, qui introduit des instructions spéciales pour le calcul. Et pour que tout le monde continue à se comprendre, il est possible pour un processeur de base de comprendre ces instructions supplémentaires en les traduisant à la volée, grâce à un logiciel spécial. Cela prend un peu plus de temps, mais cela fonctionne, et tout le monde reste compatible. D’autre part, la norme RISC-V prévoit la possibilité d’ajouter des instructions. Par exemple, il sera possible de créer des instructions spécifiques pour accélérer les calculs en IA, ou encore pour assurer des propriétés renforcées de sécurité informatique.

    Et après, quels enjeux pour le futur ?

    En ouvrant la conception de micro-processeurs qui était jusqu’à maintenant contrôlée par quelques gros acteurs, et en offrant des garanties sur la libre utilisation du jeu d’instruction, la norme RISC-V va favoriser l’émergence de petits acteurs dans le monde des micro-processeurs. Une plus grande « bio-diversité » est susceptible de conduire vers plus d’innovation, tant dans les usages que dans l’architecture de ces micro-processeurs : le microprocesseur est une véritable petite « ville », à l’échelle microscopique (et même nano-scopique!), avec ses routes, qui acheminent les données, son réseau électrique qui distribue le courant, ses usines qui traitent les données. Ces « villes » sont conçues par des architectes (c’est le même nom qui leur est donné), à l’aide d’outils logiciels d’aide à la conception (la chaîne EDA, pour Electronic Design and Automation). Cette chaîne d’outil est également en train de s’ouvrir, avec l’émergence de logiciels open-source et d’approches nouvelles, comme l’introduction de l’intelligence artificielle pour optimiser le plan global de la « ville », utilisé par Google pour sa prochaine génération de processeurs. Dans un futur proche, la frontière entre le matériel et le logiciel va devenir de plus en plus floue, avec des nouvelles générations de micro-processeurs plus efficaces, plus économes en énergie, mieux adaptés aux différents usages. Dans cette nouvelle donne, les deux principaux enjeux seront la création et l’accès aux nouveaux outils EDA d’aide à la conception de microprocesseur, et surtout la formation de la nouvelle génération d’architectes, à savoir des ingénieurs « parlant couramment » ces nouveaux paradigmes, outils et langages de description du matériel, qui vont devenir rapidement assez différents des langages de programmation pratiqués par les ingénieurs du numérique actuel.

    Bruno Levy, DR-Inria, https://bsky.app/profile/brunolevy01.bsky.social ou https://www.linkedin.com/in/blevy/

    Pour aller plus loin

  • Quand la physique s’en mêle : les attaques matérielles

    Grâce aux auteurs du Livre blanc sur la cybersécurité qu’Inria a publié en 2019, nous vous proposons une série d’articles sur cette question majeure. Après avoir traité des aspects liés aux problèmes théoriques sous-jacents, aux  méthodes de vérification ou aux protocoles cryptographiques, nous abordons aujourd’hui les attaques matérielles moins connues du grand public mais tout aussi importantes. Jean-Louis Lannet (Inria Rennes) nous en présente les tenants et les aboutissants. Pascal Guitton

    La sécurité informatique est un monde complexe offrant de multiples facettes. Nous sommes relativement habitués à voir des attaques contre nos systèmes informatiques menées via des logiciels malveillants. Mais il faut également compter sur une autre forme d’attaque, liée au support physique d’exécution des logiciels. Un logiciel ne peut en effet s’exécuter que sur du matériel (processeur, les mémoires, les périphériques, etc.), qui peut lui aussi être la cible d’attaques.

    Depuis quand ?

    A l’origine de ce type d’attaque, on trouve la conquête spatiale. En effet, dès que l’électronique a commencé à voyager dans l’espace, des phénomènes aléatoires se sont produits. Le comportement de l’électronique n’était plus celui attendu, le rayonnement solaire venant perturber l’électronique. Une particule, c’est de l’énergie, et quand elle touche de l’électronique, de l’énergie se rajoute à celle utilisée pour faire fonctionner les processeurs, les mémoires, etc. Mais cette particule arrive de manière non contrôlée et donc aléatoire. On parle alors de faute injectée. Très tôt, la prédiction de ces phénomènes a été un enjeu pour la recherche. L’un des plus anciens articles scientifiques sur ce sujet (1967) concerne la simulation de l’injection de faute dans un calculateur de la fusée Saturn 5.

    La fusée Saturn V – Extrait du site Wikipedia

    Il y a une vingtaine d’années, des chercheurs ont revisité ce phénomène en essayant de l’utiliser non plus de manière aléatoire mais de manière contrôlée afin d’obtenir des effets ciblés. Les techniques utilisées à cette fin sont diverses, plus ou moins simples, plus ou moins coûteuses. En général, l’attaquant doit pouvoir accéder physiquement à la cible. Les moyens pour injecter une faute dans un circuit sont divers et variés : laser, modification de la tension, modification de l’horloge interne du circuit, etc. Nous ne parlerons pas ici des attaques matérielles réalisées par logiciel, comme Spectre, Meltdown ou Clockscrew.

    Comment ?

    Les attaques par illumination laser consistent à éclairer intensément le silicium du composant à l’aide d’un laser ou d’un simple flash d’appareil photo. L’énergie transportée par la source lumineuse est absorbée par les électrons du silicium qui constituent le circuit. Ces attaques demandent un équipement coûteux ainsi que l’ouverture de la puce cible (retirer l’enrobage autour de la puce proprement dite pour que la lumière atteigne la puce). La précision de ces attaques est inégalée, il est même possible dans certains cas de choisir le transistor à perturber en identifiant précisément les cibles grâce à un microscope électronique.

    Un autre vecteur d’attaque beaucoup plus simple à mettre en œuvre consiste à perturber l’horloge d’un ordinateur qui permet de cadencer l’exécution des instructions : à chaque top  d’horloge, le processeur exécute l’instruction en cours. Si un cycle d’horloge est raccourci en dessous du temps nécessaire aux signaux pour se stabiliser, alors le processeur abandonne l’exécution courante et commence à exécuter l’instruction suivante. De cette manière, une perturbation temporaire de la fréquence d’horloge peut permettre le « saut » d’une ou plusieurs instructions. Il suffit pour cela de superposer un signal d’horloge supplémentaire au signal d’origine.

    La perturbation de la tension d’alimentation pendant un temps suffisamment court génère une erreur au même titre que la perturbation de l’horloge. En effet, afin de lire ou d’écrire une valeur en mémoire, un niveau de tension minimum est requis par le système. Si la tension n’est pas suffisante lors du front d’horloge, l’action n’est pas réalisée ou une valeur erronée sera renvoyée ; le flot d’exécution normal peut alors être contourné.

    L’injection électromagnétique consiste à produire un champ électromagnétique intense à proximité des composants soit sous la forme d’une impulsion ou d’un train d’impulsions. Ceci permet d’altérer les valeurs stockées ou transmises (registres, bus, etc.). La difficulté réside ici dans la multitude de paramètres qui doivent être pris en compte : distance et inclinaison de la sonde, orientation du champ, puissance de l’émission, forme de l’impulsion, etc.

    Champ électromagnétique – Extrait du site Wikipedia

    Dans quel but?

    Au final, quelle que soit la technique utilisée, l’attaquant a la possibilité de modifier le comportement du programme, qui ne va pas réaliser la suite d’instructions prévue mais autre chose. L’effet de la faute sur l’exécution du programme peut être très varié, l’injection pouvant se faire, soit sur le bus de communication, soit directement dans la mémoire. Ainsi le saut d’une instruction peut être bénéfique pour l’attaquant. Si un accès à une ressource est précédé d’un test visant à contrôler si l’utilisateur a le droit d’y accéder, alors viser cette instruction permet à l’attaquant d’obtenir l’accès même sans détenir ce droit.

    S’il cible un registre qui mémorise une variable de type vrai/faux, il peut facilement changer sa valeur. En effet, en informatique, on code la valeur « faux » par zéro et « vrai » correspond à toutes les autres valeurs. Il suffit lors de l’écriture de cette valeur de perturber l’écriture pour obtenir une valeur aléatoire et donc forcément vraie. De même, l’attaquant peut éliminer une action d’écriture. Si par exemple, un compteur d’essais est borné à trois, à l’image du nombre d’essais possibles lors de la saisie du code PIN d’une carte bancaire, il suffit de perturber le circuit lors de l’écriture pour « oublier  » la décrémentation du compteur et donc permettre de multiples essais.

    Ce type d’attaque présente un côté magique. En réalité, les taux de succès sont assez faibles et une injection nécessite de maîtriser de très nombreux paramètres dont les deux principaux sont la localisation spatiale et temporelle de la faute injectée. La première implique une cartographie (balayage spatial) pour connaître les endroits sensibles à cibler, la seconde un balayage temporel pour déclencher le comportement attendu au bon moment. Pour la seconde, l’attaquant incrémente le délai avec un pas correspondant à une instruction. Ceci permet de balayer une trace d’exécution. Le lecteur attentif aura relevé le mot délai. Et c’est le point faible de ces attaques, car il est très difficile d’obtenir un point de déclenchement servant de référence à partir duquel on synchronise l’injection.

    Il va de soi que certains composants ont des protections matérielles très efficaces pour lutter contre ces attaques. L’industrie de la carte à puce est en pointe dans ce domaine. Les composants utilisés sont très spécifiques, ils sont dits « tamper resitant » c’est-à-dire qu’ils résistent plus longtemps à ce type d’attaque. L’expertise nécessaire pour les attaquer est donc beaucoup plus élevée que celle requise par exemple pour attaquer des consoles de jeux (elles sont particulièrement visées par ce type d’attaque car le propriétaire peut s’octroyer des droits pour charger des programmes non prévus).

    Pour se protéger, on peut aussi chercher à programmer des logiciels ayant la capacité à résister à ces attaques. Le programmeur se doit d’incorporer de la redondance, soit temporelle, soit spatiale. La redondance temporelle consiste à exécuter deux fois le même calcul. Si le programme dispose des mêmes données d’entrée, il doit forcément aboutir à deux résultats identiques. Si ce n’est pas le cas, c’est que probablement une attaque a eu lieu. La redondance spatiale va consister à écrire une variable dans deux emplacements séparés. La probabilité qu’une attaque parvienne à affecter les deux emplacements est beaucoup plus faible. Il faut bien entendu écrire aux deux emplacements mais aussi lire et comparer les deux registres avant toute utilisation. On voit donc que programmer de manière sécurisée complexifie la tâche du programmeur. Il va en outre devoir se « battre » contre les compilateurs, qui sont suffisamment intelligents pour détecter que le programmeur fait deux fois la même chose et donc supprimer un des deux calculs pour des raisons d’optimisation.

    Il reste une question importante : est-on capable de prédire qu’un logiciel peut avoir un comportement hostile en cas d’attaque par faute ? C’est exactement ce que cherchaient à montrer les chercheurs d’IBM en 1967. L’idée est de caractériser la puissance de l’attaquant (ce qu’il peut faire) et d’évaluer toutes les combinaisons de ses capacités sur le programme. La première chose à faire consiste à comprendre le modèle de faute de l’attaquant sur un matériel donné. C’est généralement par expérimentation que l’on arrive à démontrer que telle ou telle faute est possible. Cela génère un problème combinatoire car il faut essayer tous les cas possibles, ce qui devient très rapidement impossible dès que l’on sort d’exemples simples. Il faut juste admettre que, là, l’attaquant a une longueur d’avance sur le défenseur. Mais le défenseur peut utiliser du matériel résistant aux fautes, ce qui est le cas des cartes à puce particulièrement bien protégées contre ces attaques.

    Prototype de carte puce par Roland Moreno en 1975 – Extrait du site Wikipedia

    Pour finir

    En conclusion, l’exécution d’un programme dépend du bon fonctionnement du matériel sous-jacent. Ce dernier peut être la cible d’attaques spécifiques donnant accès à des biens ou des services illégalement. Tous les systèmes accessibles physiquement par l’attaquant sont exposés au risque, en particulier ceux embarqués dans les dispositifs de l’Internet des objets. En dehors du monde des cartes à puce qui sont efficacement protégées, peu de concepteurs prennent en compte ce type d’attaque. Certaines fonctions critiques, comme le paiement, sont développées dans des systèmes qui ne sont pas suffisamment protégés, comme nos téléphones mobiles. La protection contre ces attaques se fait soit par du matériel spécifique soit par une écriture spécifique de logiciel incluant de la redondance. Ce type d’attaques est efficace mais il faut noter que la réussite d’une attaque est généralement faible due au grand nombre de paramètres que l’attaquant doit maîtriser. La réalisation de ces attaques nécessite des compétences spécifiques, de nombreuses heures d’expérimentation, ainsi que du matériel coûteux. Le coût prohibitif pour l’attaquant est donc une chance pour le défenseur, lui laissant un peu d’avance.

    Jean-Louis Lanet (Inria, Rennes)