Les puces ou circuits électroniques sont au cœur de nombreux dispositifs de la vie courante : cartes bancaires, cartes Vitale, smart phones, ordinateurs, montres connectées, systèmes biomédicaux, calculateurs de bord automobiles, badges/clés électroniques, etc. Il n’est pas rare d’en posséder une demi-douzaine dans nos poches et sacs et d’en côtoyer bien plus chaque jour.

Les données qu’elles contiennent sont souvent personnelles (informations médicales, financières, administratives, correspondance privée, etc.) ou critiques pour la sécurité des utilisateurs (voitures, avions, accès à des locaux dangereux, etc.).

Or, ces puces doivent être protégées dès leur conception et tout au long de leur utilisation contre différents types d’attaques.

## Comment attaquer les puces électroniques ?

Les attaques mathématiques et informatiques exploitent d’éventuelles faiblesses des systèmes de sécurité (trop faible nombre de combinaisons, virus, faille dans un protocole soit la vulnérabilité dans un code par exemple, etc.) ou de communication (transmission Internet peu sécurisée, authentification faible, etc.).

Les attaques physiques par observation exploitent le fait qu’un attaquant puisse s’approcher assez près de la puce pour mesurer certaines grandeurs physiques comme son temps de calcul, le courant électrique qu’elle consomme ou le rayonnement électromagnétique qu’elle émet à l’extérieur.

Il existe d’autres types d’attaques physiques, telles que les attaques au laser, que nous ne couvrirons pas dans cet article.

## Attaques par observation du temps de calcul

Les premières grandes attaques de ce type remontent aux années 90 (voir ce site web ou cette publication). Certains anciens systèmes de vérification de codes secrets étaient vulnérables. Pour chaque nouveau chiffre entré par l’utilisateur, la puce le comparait avec le chiffre correspondant du code secret. En cas d’égalité, la puce passait au chiffre suivant. Mais en cas de différence, elle affichait immédiatement le message « code erroné ».

Ainsi, on pouvait essayer chaque chiffre possible à chaque position et déterminer quand le message d’erreur apparaissait ou pas. Pour chaque bon chiffre, la puce passait à la position suivante et calculait donc plus longtemps.

Pour un code de n chiffres entre 0 et 9, il y a théoriquement 10n combinaisons possibles.

Pour n=4 chiffres, on a 104 = 10*10*10*10 = 10 000 combinaisons.

Avec ces mauvais systèmes, seulement 10*n essais étaient nécessaires pour retrouver la bonne combinaison. Dans l’exemple n=4, cela donne 40 essais ce qui est ridiculement petit devant 10 000 combinaisons.

## Attaques par observation de la consommation d’énergie

Les puces électroniques consomment du courant électrique pour effectuer les calculs et acheminer les informations. Cette consommation électrique dépend de nombreux éléments et en particulier de la complexité des calculs effectués. Par exemple, une addition est plus simple à effectuer qu’une multiplication et donc consomme moins d’énergie.

Ainsi, un attaquant capable de mesurer finement les variations, souvent toutes petites, de la consommation d’énergie d’un circuit peut essayer d’en déduire des informations sur ce qui est fait dans le circuit.

Ces attaques sont analogues aux techniques utilisées, et popularisées dans de nombreux films, pour ouvrir un coffre fort en écoutant les cliquetis de la serrure avec un stéthoscope. Les bonnes et mauvaises positions de la molette n’engendrent pas tout à fait le même type de son. L’attaquant, bien entraîné, peut alors distinguer les deux types de sons lorsqu’il tourne la serrure et en déduire les bonnes positions.

Pour l’observation de la consommation d’une puce, le principe est similaire. On mesure très fréquemment le courant consommé (au lieu des sons) avec une sonde de mesure et un oscilloscope (au lieu d’un stéthoscope).

Si les opérations effectuées dans la puce différent en fonction d’informations secrètes, elles engendrent une variation de la consommation d’énergie mesurable à l’extérieur. En analysant cette variation, on en déduit la valeur secrète. Ces attaques fonctionnent à condition de pouvoir se « brancher » sur les pattes d’alimentation de la puce. Mais ceci n’est pas toujours faisable en pratique.

## Attaques par observation du rayonnement électromagnétique

Une puce est composée de nombreux transistors, ses organes de calcul, et de fils conducteurs. Tous ces éléments propagent des courants électriques qui engendrent des rayonnements ou émanations électromagnétiques. Le rayonnement émis par un circuit a une faible portée car il correspond à de très faibles courants.

Mais dans le bus, le métro, des files d’attente de magasin ou de cinéma, il est possible de s’approcher à quelques centimètres de la cible. On peut alors mesurer le rayonnement électromagnétique en s’approchant la puce ou la carte électronique sur laquelle elle est soudée.

Une plateforme d’attaque typique utilise plusieurs instruments illustrés sur la figure ci-dessous :

- une sonde électromagnétique, c’est une sorte de petite antenne spécialisée pour ce type de mesures ;

- un amplificateur qui intensifie les faibles signaux mesurés par la sonde ;

- un oscilloscope qui transforme les signaux amplifiés en valeurs numériques exploitables par l’ordinateur.

<figure><img src="image_1.png" /><figcaption>Petite plate-forme de mesure du rayonnement électromagnétique utilisée en enseignement (l’image de droite est un zoom de la partie en bas à droite de l’image de gauche). Arnaud Tisserand (CNRS, Lab-STICC, UBS)</figcaption></figure>

Pouvoir mesurer des petites variations du rayonnement électromagnétique renseigne sur ce qui se passe dans la puce. Si les variations mesurées à l’extérieur sont liées à différentes opérations effectuées dans la puce et si ces dernières sont liées aux informations secrètes, alors l’attaque peut révéler ces informations.

La figure ci-dessous est un exemple de trace électromagnétique mesurée sur une petite plate-forme d’analyse utilisée en enseignement. L’axe horizontal représente le temps, l’axe vertical représente l’intensité du rayonnement électromagnétique.

<figure><img src="image_2.png" /><figcaption>Exemple de trace mesurée. Arnaud Tisserand (CNRS, Lab-STICC, UBS)</figcaption></figure>

Supposons le programme informatique présenté sur la figure ci-dessous. Supposons que l’opération OP1 est plus simple, et donc consomme moins, que OP2. La trace de la figure ci-dessus nous renseignement immédiatement sur la valeur du bit aux différents instants notés A et B. À l’instant A, le rayonnement semble plus faible que pour l’instant B. Donc OP1 doit être effectuée à l’instant A et OP2 à l’instant B. On en déduit que le bit secret vaut 1 à l’instant A et 0 à B.

<figure><img src="image_3.png" /><figcaption>Programme qui effectue l’opération OP1 quand le bit vaut 1 ou bien l’opération OP2 quand le bit vaut 0 (la partie droite est une illustration graphique de cet algorithme). Arnaud Tisserand (CNRS, Lab-STICC, UBS)</figcaption></figure>

Toutes les attaques présentées dans cet article sont des versions très simples de ce qui est fait en pratique. On utilise des outils mathématiques, comme les statistiques, et informatiques, comme l’apprentissage automatique, pour renforcer les attaques qui deviennent alors redoutables quand le circuit n’est pas protégé un minimum.

## Comment protéger les puces électroniques ?

Il existe tout un ensemble de techniques pour se prémunir des attaques physiques par observation. On parle de protections ou de contre-mesures. L’idée principale est de casser le lien qui existe entre les informations secrètes manipulées dans la puce et l’exploitation des mesures effectuées à l’extérieur de la puce. Pour briser ce lien, on peut par exemple : limiter fortement le nombre de tentatives lors de la vérification de codes secrets ou de mots de passe, rendre l’activité électrique de la puce constante dans le temps (il n’y a plus de variations mesurables), utiliser des techniques mathématiques pour donner un aspect aléatoire aux opérations effectuées.