Interstices


  De la recherche

Des attaques informatiques utilisant la physique

Quand on parle de sécurité informatique, la plupart des gens pensent aux mathématiques et à la cryptographie au sens logique théorique, mais peu pensent à la physique. Or dans la physique se cachent actuellement de nombreuses failles de sécurité, extrêmement difficiles à anticiper.

Banc d

Banc d'injection de fautes du LHS (Laboratoire Haute Sécurité) de Rennes.

Commençons par une simple énigme. Une pièce contient une ampoule éteinte, vous êtes à l'extérieur de cette pièce avec trois interrupteurs sur position « off ». Vous pouvez manipuler comme vous le souhaitez les interrupteurs mais vous ne pouvez entrer qu'une seule fois dans la pièce. Comment déterminer quel interrupteur allume l'ampoule ?

La solution de cette énigme est la suivante :
Allumez un premier interrupteur et attendez quelques minutes avant de l'éteindre. Ensuite, actionnez un deuxième interrupteur et entrez dans la pièce. Si l'ampoule est allumée, c'est le deuxième interrupteur que vous venez juste d'actionner qui dirige. Sinon, l'ampoule est éteinte. Touchez la. Si l'ampoule a été allumée, elle est encore chaude. Dans ce cas l'interrupteur la commandant est le premier que vous avez manipulé. Si l'ampoule est froide elle n'a jamais été allumée, il s'agit du dernier interrupteur que vous n'avez pas touché.

Si vous n'avez pas trouvé la solution à cette énigme, c'est que vous n'avez pas pensé à prendre la température de l'ampoule en considération. Vous avez raisonné de manière logique sur les possibilités on/off des interrupteurs et donc de manière uniquement théorique.

Quand on parle de sécurité informatique, la plupart des gens pensent aux mathématiques et à la cryptographie au sens logique théorique, mais peu pensent à la physique. Or, nos téléphones portables, nos cartes bancaires, nos ordinateurs, nos tablettes... sont constitués de circuits électroniques qui sont réels et non des outils théoriques. Aussi respectent-ils les lois de la physique liées au temps, à l'électricité, à la température, etc. C'est dans la physique que se cachent actuellement de nombreuses failles de sécurité, extrêmement difficiles à anticiper.

Cryptographie et cryptanalyse

La cryptologie, étymologiquement la science du secret, regroupe la cryptographie et la cryptanalyse.

Pour protéger des données, on utilise généralement de la cryptographie. En cryptographie, un algorithme de chiffrement est une méthode mathématique permettant de rendre un message illisible. Il ne s'agit pas de dissimuler le message, ce qui est de la stéganographie, mais de le chiffrer, à l'aide d'une clé de chiffrement, en quelque chose d'incompréhensible pour qui ne possède pas la clé de déchiffrement. Les données transformées sont dites chiffrées.

Historiquement, Jules César fut un des premiers personnages à utiliser un algorithme de chiffrement pour protéger ses communications. Il utilisait un chiffrement par décalage des lettres de l'alphabet. Dans le cas du chiffrement de César, la clé est un décalage de trois lettres vers la droite. Ainsi A est remplacée par D, B par E, ainsi de suite jusqu'à W par Z, puis X est remplacée par A, etc.

Deux grandes familles se distinguent : la cryptographie symétrique et asymétrique. La cryptographie symétrique utilise la même clé secrète pour chiffrer et déchiffrer, comme par exemple dans le DES (Data Encryption Standard) ou l'AES (Advanced Encryption Standard). Dans le cas où la cryptographie symétrique est utilisée pour la transmission de données sécurisées, cela suppose que l'émetteur et le destinataire du message partagent une même clé secrète sur laquelle ils se sont entendus. Se pose alors le problème de comment transmettre cette même clé secrète de manière sécurisée.

Si deux individus, nommons-les Alice et Bob, souhaitent communiquer de manière sécurisée en chiffrant leurs communications mais n'ont pas la possibilité de se rencontrer physiquement pour s'échanger une clé secrète, comment peuvent-ils faire ?

La cryptographie asymétrique a été inventée pour faire face à cette problématique. Elle utilise une clé dite publique pour chiffrer et une clé secrète pour déchiffrer. Alice génère deux clés : une clé publique et une clé privée. La clé publique peut être transmise librement à Bob. Bob utilise la clé publique d'Alice pour chiffrer son message avant de l'envoyer. Alice reçoit le message de Bob et le déchiffre avec sa clé de déchiffrement dite privée. La clé publique ne permet pas de déchiffrer le message. Seule la clé privée gardée secrète par Alice permet le déchiffrement du message de Bob. Les exemples de chiffrement asymétriques les plus connus sont : le RSA (algorithme de Rivest Shamir Adleman) ou l'ECC (Elliptic Curves Cryptography).

Les algorithmes cryptographiques doivent résister aux attaques algébriques, c'est-à-dire qu'il ne doit pas exister de biais logique permettant de retrouver la clé ou le texte clair à partir du texte chiffré. Le niveau de sécurité des algorithmes cryptographiques est mesuré en fonction du nombre d'opérations nécessaires pour des recherches exhaustives sur toutes les clés possibles. En d'autres termes, le nombre de clés de déchiffrement possibles doit être suffisamment élevé pour qu'aucun ordinateur ne puisse toutes les tester en un temps raisonnable. Dans l'exemple du chiffrement de César, il n'y a que 25 clés possibles, car 26 lettres dans notre alphabet, il est évident que ce chiffrement est donc très faible.

Le niveau de sécurité dépend toujours de l'information à protéger. Prenons un exemple : imaginons que nous soyons en guerre ; vous savez que le camp adverse met environ trois jours à décrypter tous les messages interceptés. Vous souhaitez envoyer un message à vos troupes : « Attaquez l'ennemi demain matin à 9 heures ». Vous pouvez parfaitement envoyer le message avec ce niveau de sécurité, dans trois jours l'ennemi aura largement eu le temps de constater l'attaque. L'information contenue dans votre message sera obsolète.

Par ailleurs, il faut penser que la sécurité doit rester fonctionnelle. Ajouter de la sécurité en informatique coûte du temps et de l'argent. Dans le milieu bancaire par exemple, la carte de paiement doit rester à un prix abordable, sinon les clients n'auront pas les moyens de se l'offrir. De plus, une transaction ne doit pas dépasser quelques secondes. Sinon, imaginez le temps perdu en caisse dans un supermarché, vous pouvez être sûr que les clients choisiront alors un autre mode de paiement (chèques ou espèces).

La cryptanalyse est la science qui consiste à tenter de décrypter des informations sans posséder la clé de déchiffrement. Depuis des siècles, une guerre sans fin est ouverte entre cryptographes, cherchant de nouveaux algorithmes toujours plus efficaces pour chiffrer les informations, et cryptanalystes, cherchant toujours de nouvelles failles.

chiffrement

Schéma de la cryptographie et de la cryptanalyse.

Ces dernières années, une nouvelle forme de cryptanalyse est née. Si les algorithmes de chiffrement sont conçus pour être robustes à la cryptanalyse au sens mathématique du terme, une fois ces algorithmes appliqués par un circuit électronique, un attaquant peut analyser les failles physiques de ce dernier. On parle alors d'attaques physiques. C'est ce que nous allons détailler.

Les attaques par canaux auxiliaires

L'idée présente dans l'énigme de l'ampoule en introduction est simple : une ampoule allumée a pour but d'éclairer, mais en plus de cela elle chauffe. L'éclairage est le but de l'ampoule, la chaleur est une conséquence physique incontournable. Pour les circuits de nos appareils, c'est la même chose. Quelle que soit la tâche demandée (jouer à un jeu sur une tablette, téléphoner, recevoir des mails, effectuer un paiement avec sa carte bleue), les circuits vont consommer du courant, chauffer, émettre un rayonnement électromagnétique, etc. L'analyse des phénomènes physiques d'un circuit afin de retrouver des données protégées est un domaine de recherche à part entière, appelé les attaques par observation ou par canaux auxiliaires. Plus précisément, on parle de fuite physique d'information par un canal auxiliaire.

Les premières attaques de ce genre analysaient le temps de calcul. Prenons un exemple simple pour illustrer. Supposons que vous devez tirer au sort un calcul à effectuer, et que l'on vous demande de lever la main dès que vous avez fini de calculer. L'un des calculs est très simple : $A=2+2$, le second beaucoup plus compliqué à faire de tête : $B=\int_{-0.7}^{1/2}{e^{x}\cdot \cos({\sqrt{\pi/2}})+\frac{42^{x-1}}{x-1}}dx$.
Sans connaître l'énoncé que vous avez pioché, à la vitesse à laquelle vous levez la main, je sais différencier si vous avez le sujet A ou le sujet B. Bien que les performances actuelles nous donnent parfois l'impression que tous les calculs sont instantanés, pour un circuit c'est exactement la même chose. Plus le calcul est long et compliqué, plus le circuit met de temps à l'exécuter.

Une des premières attaques en temps était d'analyser le temps de réponse d'une carte à puce (type paiement) pour tester un code PIN. Le code PIN (Personnal Identity Number) d'une carte à puce est le code que vous devez taper pour confirmer que vous êtes l'utilisateur légitime de la carte. Dans le domaine de la carte bancaire, celui-ci est demandé pour payer en caisse ou pour retirer de l'argent à un distributeur. Une implémentation basique de vérification du code PIN est de ne pas tester tous les chiffres. Si le code PIN est 1 2 3 4 et que l'utilisateur tape 0 0 0 0, dès le premier chiffre proposé la réponse est « faux ». En analysant ce temps de réponse, on peut alors tester toutes les 10 possibilités pour le premier chiffre du PIN,  puis les 10 possibilités du suivant, etc., il n'y a plus que 10 x 4 = 40 essais à faire. Ce qui n'a rien à voir avec tester les 104 = 10000 possibilités du code PIN. C'est pourquoi les algorithmes de vérification de code PIN doivent se faire en temps constant. La carte à puce doit mettre le même temps à répondre « vrai » que « faux » et ce quel que soit le nombre d'erreurs sur le PIN.

Actuellement, d'autres phénomènes physiques que le temps sont analysés tels que la température, la consommation de courant ou le rayonnement électromagnétique. Ils dépendent directement des données liées au calcul d'un circuit. En informatique, les données sont toujours traitées en binaire, c'est-à-dire représentées avec des 0 et 1. La table ASCII est le « dictionnaire » permettant d'encoder tous les caractères courants en binaire. Or le 0 et le 1 sont des nombres, encore une notion mathématique et abstraite ! La question est alors : comment un ordinateur ou un téléphone manipule-t-il des 0 et des 1 ? La réponse est la tension électrique ; une tension faible symbolise un 0 et une tension plus élevée un 1. Aussi la consommation de courant dans n'importe quel circuit électronique dépend-elle directement des valeurs binaires manipulées lors d'un calcul. On dit qu'elle « fuit du poids de Hamming », le poids de Hamming étant le nombre de 1 binaire pour coder une donnée. Nous sommes bien passés d'un monde théorique à un monde physique.

Concrètement, à l'aide d'un oscilloscope, un attaquant collecte des mesures de consommation de courant en se branchant directement sur le circuit ou son rayonnement électromagnétique (c'est une mesure assez proche de la consommation de courant) à l'aide d'une sonde électromagnétique (EM). L'avantage de la sonde EM est qu'elle n'a pas besoin d'être en contact avec le circuit, aussi celui-ci n'a-t-il aucun moyen de détecter une attaque. C'est le choix que nous avons fait au LHS (Laboratoire de Haute Sécurité) d'Inria Rennes. Les mesures des paramètres physiques dépendent à la fois du circuit attaqué, mais également de l'appareil de mesure, c'est pour cela que ce type d'attaques est difficile à anticiper. Le coût d'un banc attaque est variable, pouvant aller de quelques milliers d'euros à plusieurs millions.

ema

Banc d'acquisition de courbes électromagnétiques du LHS de Rennes.

Dans un contexte de cryptanalyse symétrique, l'attaque la plus connue est la CPA (Correlation Power Analysis). L'idée est de fractionner la clé de chiffrement et de l'attaquer morceau par morceau. Cette fragmentation permet de n'avoir qu'un petit nombre d'hypothèses. Le poids de Hamming de ces hypothèses est alors corrélé aux mesures prises par l'attaquant. Si le nombre de courbes est suffisamment élevé, la bonne hypothèse aura la corrélation la plus proche de 1. L'attaque est réitérée pour les différents fragments de clé jusqu'à l'obtention de la clé en sa totalité. Et si un attaquant a la clé, il peut alors déchiffrer toutes les données.

Les attaques par injection de fautes

L'autre famille des attaques physiques est celle des attaques par injection de fautes. Elles exploitent l'effet d'une perturbation intentionnelle sur le fonctionnement du circuit. Pour faire une analogie, c'est un peu comme si on vous demandait de réciter une poésie apprise par cœur, et qu'au milieu de votre récitation quelqu'un venait vous taper violemment sur la tête, ou venait vous chatouiller. Il est compréhensible que dans ces conditions vous poussiez un cri ne faisant pas partie du poème et que vous ayez du mal à poursuivre la fin de votre poème. Cet acte aura modifié votre comportement. Pour un circuit c'est la même chose, certains phénomènes physiques peuvent entraîner une perturbation du comportement du circuit appelée faute. Deux cas se distinguent alors, le comportement normal du circuit et son comportement perturbé.

À l'origine, les attaques par injection de fautes se sont inspirées du domaine spatial. En effet, dans l'espace les satellites subissent des radiations cosmiques qui peuvent perturber leurs calculs. Ces fautes ne sont pas du tout intentionnelles ni à but malveillant, mais mettent tout de même en péril le bon déroulement des opérations. Aussi est-il venu à l'idée des attaquants d'injecter sciemment des fautes dans des circuits. L'exploitation de ces fautes est devenue une technique de cryptanalyse à part entière.

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. Au LHS, nous utilisons un banc d'attaque qui permet d'envoyer des impulsions électromagnétiques qui modifient la tension localement. Ces outils jouent sur différents paramètres physiques. La modification de l'horloge interne joue sur le temps de calcul, et ainsi désynchronise les calculs dans un circuit. Une faute laser influence les cellules mémoires d'un circuit. L'injection d'ondes électromagnétiques ralentit la vitesse de transmission des données. Aussi d'un point de vue binaire, des 1 vont devenir des 0 ou l'inverse. Comme dans les attaques par canaux auxiliaires, ces attaques ne se basent pas du tout sur la structure théorique des algorithmes mis en place, mais utilisent une faille physique. En cryptanalyse, l'analyse de faute la plus utilisée est la DFA (Differential Faults Analysis). L'attaquant compare le comportement perturbé au non perturbé pour retrouver une clé de chiffrement. Les fautes sont également très utilisées pour outrepasser des protections, comme sauter (au sens ignorer) une instruction sécurisée, ou fixer des valeurs, etc. Dans le cas de notre carte bancaire et de son code PIN, une faute bien maîtrisée peut permettre de bloquer la vérification d'un code PIN à « vrai », quel que soit le code tapé par l'utilisateur.

Anticipation et protection

Heureusement, face à toutes ces nouvelles attaques, des solutions existent. Elle sont souvent spécifiques à un type d'attaques. Pour reprendre l'exemple de l'ampoule, une contremesure simple serait de remplacer l'ampoule par une LED (une LED ne chauffe pas). Ainsi il n'y a plus de fuite d'information par le canal auxiliaire qu'est la température.

L'anticipation et la protection des attaques physiques est un sujet de recherche à part entière, au croisement de l'informatique, de la micro-électronique et des mathématiques. En ce qui concerne les attaques par observation, les contremesures dépendent de la fuite. Nous avons vu que contre les attaques en temps, un algorithme doit s'exécuter en temps constant. À la fabrication d'un circuit, les fondeurs peuvent s'arranger pour limiter les fuites dans les calculs de chiffrement. Les valeurs de clé peuvent être masquées avec d'autres valeurs pour que la fuite ne soit plus corrélée avec leur seul poids de Hamming. Des calculs différents peuvent être effectués en parallèle. D'autres calculs inutiles peuvent intervenir. Tout ceci ayant pour but de bruiter la fuite, c'est-à-dire de rendre les mesures faites sur le circuit inutilisables. L'instant durant lequel est manipulée la clé peut changer d'une exécution à une autre pour désynchroniser les courbes.

Pour se protéger des attaques en fautes, les protections sont différentes. Il est important de préciser que la difficulté des attaques par injection de fautes réside dans la difficulté à contrôler l'effet des fautes injectées. Par ailleurs, avec des outils puissants comme un laser, il est possible d'endommager le circuit. Aussi certaines protections consistent-elles à tenter de détecter physiquement une attaque. D'autres consistent tout simplement à vérifier les calculs en les faisant s'exécuter plusieurs fois, en partant du principe que généralement il est difficile de réussir deux fois la même injection. Ce type de protection est très utilisé. Néanmoins il a un inconvénient majeur qui est qu'en dupliquant les calculs, on multiplie aussi les fuites d'un point de vue attaque par canaux auxiliaires.

Il est difficile d'anticiper toutes les menaces physiques d'un circuit. C'est pourquoi le circuit à la protection parfaite n'existe pas encore et n'existera peut-être jamais. La lutte entre cryptographes et cryptanalystes se poursuit encore et toujours, se complexifiant sans cesse.

Tags