Aller au contenu

Injecter une faute par onde électromagnétique : l'attaque sans contact

Injecter une faute par onde électromagnétique : l’attaque sans contact

Section intitulée « Injecter une faute par onde électromagnétique : l’attaque sans contact »

Un circuit intégré calcule juste parce qu’on lui garantit une alimentation stable, une horloge régulière et un environnement électromagnétique raisonnable. Retirez l’une de ces trois garanties pendant quelques nanosecondes, au bon instant, et il calcule faux. L’attaque ne vole aucun secret, ne lit aucune mémoire et n’exploite aucune vulnérabilité logicielle : elle fabrique une erreur de calcul, et laisse le programme en tirer les conséquences. C’est le revers exact des émanations compromettantes, où le champ électromagnétique sort du matériel et trahit ce qu’il fait. Ici, il entre.

→ Lire l’explication complète de la marmotte

Deux communautés, deux noms, un même phénomène

Section intitulée « Deux communautés, deux noms, un même phénomène »

Le sujet a été étudié pendant des décennies par deux groupes de chercheurs qui ne se parlaient pas, et qui lui ont donné deux noms. La thèse de Jose Lopes Esteves, soutenue au Conservatoire national des arts et métiers en 2023 et publiée par l’ANSSI, a le mérite de les comparer terme à terme ; c’est la référence francophone la plus complète sur le sujet et la source de cette page.

D’un côté, la communauté de la compatibilité électromagnétique, qui s’occupait depuis les années 1930 de garantir que les équipements électroniques ne se perturbent pas mutuellement, s’est intéressée à l’exploitation malveillante de cette susceptibilité sous le nom d’IEMI, interférences électromagnétiques intentionnelles. La norme leur donne en 2005 une définition qui détonne dans un corpus de compatibilité : « génération intentionnelle et malveillante d’énergie électromagnétique introduisant du bruit ou des signaux dans des systèmes électriques et électroniques, perturbant, embrouillant ou endommageant ces systèmes à des fins terroristes ou criminelles ». Un texte de normalisation technique qui parle d’attaquant est assez rare pour être noté.

De l’autre, la communauté cryptographique a cherché à faire fauter délibérément un circuit pour casser une implémentation, et a appelé cela EMFI, injection de faute électromagnétique. Les deux approches diffèrent sur un point décisif : la distance. L’EMFI suppose un attaquant qui a physiquement le circuit entre les mains, qui peut préparer la carte, mesurer, et se synchroniser finement sur l’activité de la cible ; l’IEMI considère un attaquant à distance variable, parfois des mètres, parfois des kilomètres, avec des sources puissantes et une synchronisation grossière. La thèse conclut qu’il reste de la place entre les deux pour des modèles de menace intermédiaires, moins gourmands en puissance et conservant une capacité de synchronisation. C’est précisément là que l’attaque devient intéressante pour un défenseur, parce que c’est là qu’elle sort du laboratoire.

Conduit ou rayonné : les deux façons d’injecter

Section intitulée « Conduit ou rayonné : les deux façons d’injecter »

L’injection conduite passe par les broches du circuit, à travers un câble ou une piste de circuit imprimé : l’attaquant a donc ouvert l’équipement, et souvent retiré les condensateurs de découplage qui le protégeaient. Les interfaces les plus efficaces, et donc les plus visées, sont les broches d’alimentation et d’horloge. En jouant sur l’horloge, on augmente ou diminue brièvement la fréquence, on modifie le rapport cyclique, on introduit localement des transitions trop tôt ou trop tard. En jouant sur l’alimentation, on fait varier la tension ou on introduit un court-circuit transitoire. Dans un circuit synchrone, ces variations désynchronisent des parties du circuit, violent des contraintes temporelles et produisent des fautes logiques.

Le détail économique compte : la thèse rappelle que ces plateformes ne sont plus réservées aux laboratoires, citant le ChipWhisperer à deux cent cinquante dollars et des montages à trente euros bâtis autour d’un commutateur rapide qui court-circuite brièvement la ligne d’alimentation. Un troisième vecteur, la polarisation du substrat, y injecte une tension statique pour modifier les tensions de seuil des transistors, ce qui suppose un boîtier décapsulé.

L’injection rayonnée est celle qui donne son titre à cette page, parce qu’elle se passe de contact. L’attaquant place une sonde à quelques millimètres de la surface du composant et y injecte un signal ; le couplage en champ proche génère des courants parasites dans les couches conductrices du circuit. Le papier fondateur, en 2002, utilisait le flash d’un appareil photo pour exciter la bobine d’une sonde artisanale. Trois paramètres gouvernent le résultat : la position de la sonde par rapport à la cible, les caractéristiques électromagnétiques de la sonde, et la forme du signal injecté. L’effet dépendant fortement de la position, le positionnement se fait en pratique sur un banc motorisé en deux axes, ce qui dit assez que l’on parle d’une attaque de laboratoire sur un équipement saisi, pas d’un geste discret dans un couloir. Détail amusant et instructif : quand la sonde est trop près, l’étincelle couple directement et détruit la cible, ce qui règle le problème de la confidentialité d’une manière peu élégante.

Ce qui rend le sujet exploitable, du côté de l’attaque comme de la défense, est l’usage de modèles de faute : des descriptions, à un niveau d’observation choisi, de ce que la perturbation fait au circuit. On ne raisonne pas sur des volts et des nanosecondes, on raisonne sur l’effet logique : un bit échantillonné à la mauvaise valeur, une contrainte temporelle violée sur une bascule, une instruction remplacée ou sautée, une lecture mémoire corrompue.

L’apport méthodologique revendiqué par la thèse est précisément là : une méthodologie d’analyse des effets reposant sur des modèles de faute au niveau logiciel, dont l’intérêt est de permettre de dériver directement les impacts pour la sécurité de l’information traitée, et de concevoir des contre-mesures et des stratégies de détection. C’est un point de vue d’ingénieur sécurité, pas de physicien : peu importe le mécanisme exact dans le silicium, ce qui compte est de savoir qu’une comparaison peut rendre un résultat faux, et donc qu’un programme qui fonde une décision de sécurité sur une seule comparaison est vulnérable. Le raisonnement est le même que celui qui fait des canaux auxiliaires un sujet d’implémentation et non de mathématiques, développé dans quand l’implémentation parle.

Quatre familles de résultats, documentées dans la littérature que recense la thèse. Elles sont décrites ici par leur effet, et c’est volontaire : il ne s’agit pas d’un mode opératoire.

La cryptanalyse physique, d’abord, historiquement première. L’analyse différentielle de fautes consiste à déduire de l’information sur une clé en comparant un chiffré correct et un chiffré fauté du même clair, sous une hypothèse de modèle de faute. Elle a été appliquée à DES en 1997, puis largement à AES. L’attaque dite de Bellcore casse une implémentation particulière de RSA, celle qui utilise le théorème des restes chinois, avec un seul calcul fauté ; le fonctionnement de RSA et de ses modes d’emploi est détaillé dans RSA, trappe, padding et usages restreints.

Le biaisage des générateurs d’aléa matériels, ensuite, qui est le résultat le plus élégant et le plus inquiétant. L’attaquant n’extrait rien : il réduit l’entropie de la suite produite. La thèse cite un travail où le biais d’un générateur à oscillateurs en anneau implanté sur circuit programmable a été contrôlé au point d’écrire, dans la distribution de sortie, le nom de la conférence où le résultat était présenté. L’exploitation est en cascade : un générateur biaisé casse le masquage qui protégeait une implémentation d’AES contre les canaux auxiliaires. Les propriétés attendues d’une source d’aléa, et ce que leur perte entraîne, sont l’objet de produire de l’aléa utilisable.

L’élévation de privilèges, troisième famille, sur des systèmes sur puce faisant tourner un système d’exploitation riche. Des travaux publiés obtiennent, par injection conduite en tension sur un processeur ARM, le démarrage d’un interpréteur de commandes privilégié depuis une application ordinaire, en corrompant le mécanisme du noyau qui vérifie le niveau de privilège. Le chiffre à retenir est le taux de succès : moins de 0,1 %. Une faute utile est rare, et c’est pour cela qu’il faut un accès physique répété, pas un passage.

Le contournement des vérifications, enfin, et c’est la famille qui concerne le plus les architectes. Une faute bien placée saute la vérification d’authenticité du code chargé pendant une étape de démarrage, et le démarrage sécurisé tombe ; la thèse recense de tels contournements sur plusieurs plateformes grand public, avec à la clé l’exécution de code choisi et l’extraction du microcode. Même mécanique contre les verrous des interfaces de débogage. Toute l’architecture de confiance décrite dans l’attestation distante et le démarrage mesuré suppose que ces vérifications s’exécutent, ce qui explique que les schémas de certification matérielle évaluent explicitement la résistance à l’injection de faute, comme le rappelle les certifications FIPS et Critères communs.

La thèse les range en cinq intentions : corriger la vulnérabilité, réduire la surface d’attaque, relever le profil d’attaquant nécessaire, réduire l’impact, détecter. Quatre techniques concrètes les servent.

Le blindage réduit l’efficacité du couplage entre la sonde et les parties conductrices de la cible, et oblige donc l’attaquant à augmenter sa puissance ou à se rapprocher, donc à décapsuler. Son intérêt dépend entièrement de son intégrité, et celle-ci peut être surveillée en continu par la cible, par mesure d’impédance pour un blindage passif ou de l’intégrité d’un signal pour un blindage actif. Un blindage qu’on ne surveille pas est un argument commercial.

Les capteurs intégrés au circuit détectent la perturbation ou son effet : antennes ou fils de liaison supplémentaires pour le rayonné, moniteurs de tension numériques pour l’alimentation et l’horloge, détecteurs de phase, voire des bascules utilisées comme détecteurs entièrement numériques. Détecter permet de jeter un résultat fauté, de recalculer, ou d’effacer les secrets. La thèse ne cache pas le prix : les capteurs souffrent de nombreux compromis, sur le calibrage, sur l’efficacité et sur le coût d’implantation.

La redondance fait le calcul critique deux ou trois fois et compare, en matériel ou en logiciel, et s’applique aussi aux données sous forme de codes correcteurs. C’est la contre-mesure la plus banale et la plus efficace contre une faute unique, et elle explique pourquoi une vérification de signature sérieuse ne se code jamais comme une seule comparaison.

L’intégrité du flot de contrôle, enfin, vérifie à l’exécution que les étapes critiques n’ont pas été sautées et se sont déroulées dans le bon ordre, par signature de blocs ou par compteurs d’étapes, parfois insérés à la compilation. S’y ajoute l’introduction d’aléa dans l’exécution, par polymorphisme de code, qui complique la synchronisation. Mention honorable pour ce qui ne marche pas : la thèse rapporte, sur la programmation dite infective destinée à contrer l’analyse différentielle de fautes, qu’il n’existe pas de schéma viable.

Après coup : une investigation presque muette, et un usage inattendu

Section intitulée « Après coup : une investigation presque muette, et un usage inattendu »

C’est le point le plus utile à savoir, et le plus rarement dit : on ne sait pratiquement pas établir après coup qu’une injection de faute a eu lieu. La thèse est explicite. L’essentiel de l’effort sur la détection se fait à l’exécution ; du point de vue de la sécurité d’un circuit, « la détection n’a de sens que si elle est faite en temps réel et déclenche une protection immédiate » ; et la détermination de l’occurrence d’une attaque par injection de faute en phase post-exploitation « semble hors du champ » des travaux de recherche.

La conséquence pratique est désagréable mais claire. Si une attaque par injection de faute a servi à contourner un démarrage sécurisé sur un équipement, l’enquête ne trouvera pas la trace de la faute : elle trouvera ses conséquences, c’est-à-dire du code non autorisé qui s’exécute, un microcode modifié, un verrou de débogage ouvert. L’hypothèse de l’injection se construit donc par élimination et par l’examen physique du matériel, traces de décapsulation, condensateurs manquants, soudures reprises, et non par un journal. Autant dire que la chaîne de conservation et l’examen physique, décrits dans la chaîne de conservation après incident, portent ici toute la charge de la preuve. Un équipement qui n’intègre pas de capteur, et qui ne journalise pas ses déclenchements, est définitivement muet sur le sujet.

Le retournement vaut d’être signalé : l’injection de faute est aussi étudiée comme outil d’investigation numérique, pour accéder à des données protégées sur un équipement saisi, en bénéficiant précisément d’un contournement de démarrage sécurisé ou d’une élévation de privilèges. L’outil d’attaque devient méthode d’expertise, ce qui est le destin assez classique des techniques de ce domaine.

Reste la perspective qui devrait intéresser les architectes plutôt que les laboratoires : le modèle d’attaquant peut s’éloigner. En exploitant la susceptibilité des étages d’entrée audio d’un téléphone, la thèse obtient un usage distant, silencieux et non autorisé d’un assistant vocal ; elle propose un canal de communication caché par interférence ; et elle explore un marquage électromagnétique permettant d’implanter de l’information dans une cible distante non coopérative, avec une application au suivi de drones. Aucune de ces trois choses ne demande de tenir le circuit dans la main. La frontière entre attaque de laboratoire et attaque de terrain bouge, et un capteur analogique exposé est une surface d’attaque comme une autre.

Sans redondance sur les vérifications critiques, une signature de microcode se valide sur une seule comparaison dont une faute unique inverse le résultat, et toute la chaîne de confiance du démarrage s’effondre sur un événement de quelques nanosecondes. Sans capteur intégré ni journalisation de ses déclenchements, l’équipement est définitivement incapable de dire qu’il a été fauté, et l’enquête se réduit à l’examen physique du boîtier. Sans blindage surveillé, le blindage ne fait que déplacer le seuil de puissance nécessaire, sans jamais le signaler à la cible. Sans contrôle d’intégrité du flot d’exécution, une instruction sautée ne laisse aucune anomalie observable, le programme poursuivant normalement avec un état interne faux. Et sans prise en compte des capteurs analogiques dans l’analyse de risque, un étage d’entrée audio devient un point d’injection distant, sans contact, sur un appareil que l’on croyait protégé par son boîtier fermé.

Une puce électronique fonctionne correctement parce qu’on lui fournit un courant stable et un rythme régulier, et parce qu’elle vit dans un environnement électrique calme. Si l’on perturbe brutalement l’un de ces trois éléments pendant une fraction de milliardième de seconde, elle se trompe : un chiffre change, une comparaison donne le mauvais résultat, une instruction est purement sautée. La puce ne s’arrête pas, elle continue avec l’erreur.

Il y a deux manières de provoquer cela : passer par les fils, en ouvrant l’appareil pour toucher les broches d’alimentation ou d’horloge, ou procéder sans contact, en approchant une petite bobine à quelques millimètres de la puce et en y envoyant une impulsion dont le champ induit des courants parasites à l’intérieur. C’est la seconde qui donne son nom à cette technique.

Ce que l’attaquant y gagne dépend de l’erreur qu’il obtient. Une erreur dans un calcul de chiffrement peut révéler la clé secrète en comparant un résultat juste et un résultat faux. Une erreur dans le générateur de hasard de la puce rend ses tirages prévisibles, ce qui casse d’autres protections au passage. Une erreur dans la vérification des droits d’un programme lui donne les droits d’administrateur. Et une erreur au moment où l’appareil vérifie la signature de son propre logiciel lui fait accepter un logiciel non autorisé. C’est rare : moins d’une tentative sur mille réussit, ce qui suppose d’avoir l’appareil en main et beaucoup de temps.

Les défenses tiennent en trois idées : blinder la puce pour rendre le couplage moins efficace et surveiller ce blindage ; mettre des capteurs à l’intérieur pour détecter la perturbation et refuser le résultat ou effacer les secrets ; refaire deux ou trois fois les calculs qui comptent, pour qu’une erreur unique soit repérée par comparaison. Dernier point, contrariant : on ne sait presque pas prouver après coup qu’une telle attaque a eu lieu, la détection n’ayant de sens qu’au moment où elle se produit. Plus tard, il ne reste que les conséquences, du logiciel non autorisé qui tourne, et les traces physiques laissées par celui qui a ouvert l’appareil.

À lire aussi

Pages voisines

: les deux pages se citent l’une l’autre.