Advertisement

Cryptographie : comment ma carte à puce résiste-t-elle aux attaques ?

<span class="caption">Les cartes à puces sont utilisées partout&nbsp;: cartes bleues, téléphones, transports…</span> <span class="attribution"><a class="link " href="https://www.shutterstock.com/fr/image-photo/sim-card-tweezers-563217385" rel="nofollow noopener" target="_blank" data-ylk="slk:N E O S i A M / Shutterstock;elm:context_link;itc:0;sec:content-canvas">N E O S i A M / Shutterstock</a></span>

Une solution pour protéger son argent contre le vol est de le mettre dans un coffre-fort, basé sur la solidité du coffre et du mécanisme de protection, par exemple un cadenas et une clé. Vous ouvrirez le coffre… si vous avez la bonne clé.

En informatique, un cryptosystème est l’équivalent du coffre-fort : basé sur la solidité d’un mécanisme de protection dit « cryptographique » et la connaissance d’une donnée particulière que l’on appelle également « clé ». Ce système sert à protéger des données stockées ou échangées, par exemple des informations d’identité, bancaires ou empreinte digitale.

Lorsqu’on essaie de déchiffrer un message en cachette parce qu’on ne connaît pas la clé, on fait de la « cryptanalyse » : c’est la manière utilisée pour mettre en défaut un cryptosystème, c’est-à-dire de l’attaquer.

Comment marche une carte à puce ?

Les premiers mécanismes cryptographiques que l’on connaît remontent à l’Antiquité. Ces mécanismes visaient à garantir la confidentialité des messages échangés en temps de guerre : pour éviter qu’un adversaire ne les lise, ceux-ci étaient préalablement chiffrés. À cette époque, le chiffrement et le déchiffrement pouvaient être effectués « à la main » par une personne possédant l’information secrète et la clé pour la déchiffrer. Pour les cryptosystèmes les plus anciens, la clé pouvait être par exemple un bâton du bon diamètre, la « scytale »,

ou un simple code secret, comme le chiffre « pigpen » des francs-maçons.

<span class="caption">Grille de chiffrement « pigpen », avec le code correspondant à « wikipedia » en bas.</span> <span class="attribution"><a class="link " href="https://fr.wikipedia.org/wiki/Chiffre_des_francs-ma%C3%A7ons#/media/Fichier:Pigpen_for_Wikipedia.png" rel="nofollow noopener" target="_blank" data-ylk="slk:Dake/Wikimedia;elm:context_link;itc:0;sec:content-canvas">Dake/Wikimedia</a></span>

L’histoire des codes secrets a beaucoup évolué au fil du temps, et de nos jours le chiffrement d’un message ne se fait plus « à la main », mais nécessite la puissance de calcul des ordinateurs et sa fiabilité est assurée par des principes mathématiques prouvés. Les clés secrètes sont devenues des séquences de plusieurs centaines, voire milliers de bits… c’est-à-dire un nombre de plus de mille chiffres.

L’évolution de la cryptographie a également permis de répondre à d’autres besoins de nos temps modernes : la confidentialité permet d’assurer que l’information ne soit pas divulguée, l’intégrité permet d’assurer qu’elle n’est pas modifiée, l’authentification permet d’assurer que la communication s’effectue avec la bonne personne ou le bon système et la non-répudiation empêche de nier le fait d’avoir bien été l’auteur d’un certain message.

Par exemple, lorsque nous effectuons un achat dans une boutique, nous souhaitons autoriser une transaction du bon montant, de notre compte vers celui du bon marchand, tout en gardant inaccessibles nos informations privées. Le marchand lui, souhaite être payé par le bon client, et ne souhaite pas que quelques minutes plus tard le client puisse nier d’avoir effectivement payé. La carte bancaire qui effectue des communications chiffrées avec le terminal du marchand joue un rôle important dans l’affaire, permettant de garantir une bonne partie de ces besoins.

La carte à puce, grâce à sa mémoire interne et sa capacité de calcul autonome, peut être en effet utilisée comme cryptosystème. Elle peut stocker des clés, ainsi que toute sorte de donnée électronique, et, une fois connectée à un terminal qui l’alimente en énergie, elle a la capacité d’effectuer des calculs cryptographiques.

C’est en réalité un petit ordinateur intégré dans une puce de quelques millimètres carrés. C’est pour cela qu’on l’appelle « système embarqué ».

Des failles dans le coffre-fort

Malgré tout, cela n’est pas toujours suffisant. Posséder un bon coffre-fort n’a pas d’intérêt, si sa combinaison traîne sur un papier posé à côté ou si la clé du cadenas est juste glissée sous le paillasson.

Il peut aussi exister des failles dans un cryptosystème si tout n’a pas été bien pensé. Afin d’assurer la confiance dans leur produit, les développeurs de cartes à puce demandent un certificat auprès d’un organisme de confiance. L’Agence Nationale de la Sécurité des Systèmes d’Information (ANSSI) est le schéma de certification étatique français, mais il existe aussi des schémas dans d’autres pays, ainsi que des schémas privés. Le certificat est attribué au développeur sur la base d’un rapport technique d’évaluation.

Le développeur s’adresse donc à un laboratoire comme le nôtre, le le CESTI du CEA-Leti situé à Grenoble, constitué d’une équipe d’experts aux compétences complémentaires – les « évaluateurs » – qui va plancher sur la sécurité du système embarqué dans son ensemble, afin de vérifier que tout a bien été pensé et qu’aucune faille n’existe. Aujourd’hui, les systèmes embarqués sont présents dans beaucoup d’applications, telles que les clés de voiture, les badges d’accès ou les cartes de transport, mais seules les cartes à puce ayant un certificat de bon niveau sont susceptibles d’être utilisées dans des marchés à haut risque, par exemple les cartes bancaires ou les passeports électroniques. Les évaluateurs s’assurent aussi que le produit est conforme aux spécifications et que le système n’a pas de faille de conception : cela revient à s’assurer que le métal du coffre-fort a la bonne épaisseur et que la combinaison est assez complexe par exemple.

Quelles stratégies pour attaquer un cryptosystème ?

Mais ce n’est pas tout. La fiabilité dépend aussi de l’environnement du cryptosystème. Posséder un bon coffre-fort n’a pas d’intérêt, si un attaquant près du coffre est capable de faire exploser la porte à l’aide de dynamite, ou d’écouter les sons émis par la gâchette de la serrure avec un stéthoscope. Il faudrait soit garantir que le coffre-fort est bien enfermé et inaccessible, soit montrer qu’il peut résister à toutes les attaques d’un adversaire déterminé et très inventif.

<span class="caption">Une carte SIM vue aux rayons X.</span> <span class="attribution"><a class="link " href="https://commons.wikimedia.org/wiki/File:SIM-Card_X-ray_contrast.jpg" rel="nofollow noopener" target="_blank" data-ylk="slk:Joerns/Wikimedia;elm:context_link;itc:0;sec:content-canvas">Joerns/Wikimedia</a>, <a class="link " href="http://creativecommons.org/licenses/by-sa/4.0/" rel="nofollow noopener" target="_blank" data-ylk="slk:CC BY-SA;elm:context_link;itc:0;sec:content-canvas">CC BY-SA</a></span>

Dans le cas d’un système embarqué tel que la carte à puce, il est difficile de s’assurer de son caractère inatteignable. En effet, tout le monde a dans sa poche une carte bancaire, une carte vitale ou un passeport. Une carte à puce même bien protégée est un objet qui circule dans un monde potentiellement hostile, où un attaquant peut décider d’« exploser sa carte » ou d’« écouter les sons émis par la puce ». Un pirate moderne utilisera plutôt un laser pour perturber le bon fonctionnement de la puce et obtenir des effets non appropriés, tandis que la mesure du courant de consommation via un oscilloscope remplacera avantageusement le stéthoscope. Avec un peu de finesse, ces techniques peuvent s’avérer payantes.

Les attaques connues sur les cartes à puce sont classées en deux catégories : les attaques logicielles, où l’adversaire utilise les bogues du système, et les attaques physiques, par perturbation ou par observation, où il a la possibilité d’agir sur l’environnement du système.

Imaginons par exemple qu’une carte bancaire vérifie que le code PIN saisi par un utilisateur soit correct : interrompre cette vérification grâce à un faisceau lumineux (le fameux laser), qui va perturber la puce au bon moment, peut faire accepter par la carte n’importe quel PIN. C’est une attaque « par perturbation ».

Un peu plus discrète, une attaque « par observation » va par exemple consister à mesurer le temps de réaction de la puce lorsqu’elle vérifie le fameux PIN : imaginons que la vérification s’arrête quand le premier chiffre du PIN saisi est faux (pas la peine de vérifier les chiffres suivants !), elle mettra alors plus de temps si seul le dernier chiffre est faux. Le temps de réponse aidera l’attaquant à trouver le bon PIN.

Dans le même esprit d’« observation », la consommation de puissance d’une puce peut être mesurée à l’aide d’un oscilloscope pendant qu’elle effectue un calcul cryptographique complexe : la puce consomme plus ou moins selon la nature du calcul qui est exécuté. Lorsque ce calcul utilise des morceaux de clé, la consommation varie suivant les valeurs de ces morceaux qu’on peut donc deviner en observant la consommation.

En tant qu’évaluatrices de la sécurité d’une carte à puce, nous nous mettons dans la peau d’un hypothétique attaquant et nous tentons d’imaginer toutes les façons d’accéder au cryptosystème et de le mettre en défaut.

La version originale de cet article a été publiée sur La Conversation, un site d'actualités à but non lucratif dédié au partage d'idées entre experts universitaires et grand public.

Lire la suite: