La sécurité matérielle des cartes à puce et des autres microcontrôleurs est l'un des éléments clefs de la sécurité des informations sensibles qu'ils manipulent. La littérature scientifique a produit un grand nombre de publications visant à étudier et à renforcer la sécurité des cartes à puce. L'étude des vulnérabilités est un préalable indispensable au renforcement des garanties de sécurité de ces matériels informatiques particuliers. Or parmi les sources potentielles de vulnérabilités, le matériel utilisé peut s'avérer, en lui-même, un élément prépondérant.

Trois familles de vulnérabilités matérielles sont distinguées. La première est la famille de vulnérabilités aux attaques non-invasives. Les attaques non-invasives sont les attaques qui n'entrainent pas la destruction du matériel (i.e. la carte à puce). La seconde famille est celles des vulnérabilités aux attaques invasives. Dans ce cas, l'attaque opérée permet effectivement de voler l'information, mais le matériel est détruit. Enfin, la troisième famille de vulnérabilité est celle des attaques semi-invasives. En réponse à ces problèmes de sécurité, il est possible de distinguer deux sortes de solutions, selon qu'elles reposent sur des procédés entièrement logiciels, ou qu'elles impliquent la conception et l'usage de matériels spécifiques.

Problématique de sécurité matérielle Les cartes à puces sont des cibles pour plusieurs raisonsWitteman, « Smartcard security threats », page 12 : elles sont faciles à obtenir et peu chères ; les attaquants peuvent facilement en acquérir un grand nombre pour s'entrainer ; elles sont portables : il est facile pour un attaquant de les soumettre à un environnement hostile en contrôlant certaines conditions physiques ; le succès d'une attaque peut permettre l'accès à des données particulièrement sensibles.

Les fabricants sont très conscients des enjeux et prêtent une attention particulière à la sécurité de leur produit. En pratique, une sécurité totale est inatteignable. Concepteurs et attaquants des systèmes de sécurité développent en permanence de nouvelles techniques. Les cartes à puces sont des dispositifs réalisés pour embarquer des données potentiellement critiques et sont donc destinées à être inviolables. Typiquement, un cas d'attaque sur une carte à puce consiste à déterminer la valeur d'une clé cryptographique qu'elle contientAnderson,.

Il existe une taxinomie pour classer les attaquants : Classe 1 (étrangers intelligents) les membres de cette classe ont d'importantes connaissances générales mais ne disposent que d'une connaissance limitée du système technique. Par ailleurs ils n'ont accès qu'à des matériels modérément sophistiqués et ils se concentrent davantage sur la recherche de failles existantes plutôt que de chercher à en provoquer une. Classe 2 (initiés) les « initiés » ont les connaissances techniques et l'expérience acquise spécifiquement sur le matériel étudié. Ils ont potentiellement des degrés variables de compréhension des différentes parties du système mais disposent des moyens d'accès aux connaissances relatives à la plupart d'entre elles. Ils disposent de plus, généralement, d'outils sophistiqués et des matériels d'analyses. Classe 3 (organismes financés) les « organismes financés » peuvent créer des équipes de spécialistes possédant des compétences complémentaires, appuyés par d'importantes ressources financières. Ils sont capables de faire de l'analyse en profondeur du système, d'imaginer des attaques sophistiquées et utilisent les outils d'analyse les plus récents. Ils peuvent utiliser des attaquants de la classe 2 dans leurs équipes.

De même, qu'il existe différents types d'attaquants, il existe différents types d'attaquesWitteman, « Attack Statistics », page 20 nécessitant des moyens plus ou moins importants : Classed'attaque Équipement Coût Chancede succès Ordre de tempsde développement Ordre de tempsd'exécution Logique PC $1-10K Faible Semaines Minutes Non-invasives PC, Oscilloscope $10-100K Moyenne Mois Heures Invasives PC, Station d'analyse, SEM, FIB, Microscope, Laboratoire chimique, etc. $100K-1M Élevée Mois Jours

Attaques non-invasives

Les attaques non-invasives consistent en l'analyse d'informations provenant de la carte sans affecter son intégrité. L'objectif de cette section est de décrire différents types d'attaques non-invasives : il peut s'agir soit d'attaque passive ou d'attaque active. Les attaques passives, aussi appelées attaques par canal auxiliaire (side-channel attacks) ne nécessitent aucune interaction avec le matériel attaqué mais consistent en l'observation des signaux et/ou des émissions électromagnétiques. Il s'agit par exemple des attaques par analyse de la puissance consommée ou par analyse de temps. Les attaques actives, comme par brute-force ou "glitch", nécessitent en revanche de modifier certains signaux, comme la consommation de la carteSkorobogatov, « 4 Non-invasive attacks », page 52.

Attaque par analyse de temps

Principe thumb|upright=1.5|alt=Principe de l'attaque par analyse de temps| Apparu pour la première fois dans la littérature scientifique en 1998Kocher, ce type d'attaque consiste à analyser le temps que prennent certaines étapes d'un algorithme cryptographique afin de récupérer des informations de celui-ci.

De nombreux algorithmes cryptographiques ont été jugés vulnérables à ce type d'attaquesSkorobogatov, « 4.2 Timing attacks », page 54.

Le fondement de cette attaque repose sur le fait que, à des fins d'optimisation de l'implémentation logicielle, certaines opérations d'algorithmes cryptographiques s'exécutent en un temps non-constant. Ces optimisations consistent par exemple, en l'évitement d'opération inutiles ou l'utilisation de mémoire cacheQuisquater, « Introduction »Kocher, « Introduction ». Les temps n'étant pas constants, pour mener cette attaque, l'attaquant a besoin de recueillir un ensemble de messages ainsi que leur délai de traitement (le délai entre la requête et la réponse par exemple).

Une fois que l'attaquant a obtenu un ensemble suffisant de messages, l'analyse précise du temps requis pour effectuer certaines opérations sur une clé privée permet de retrouver des informations comme des exposants de l'algorithme Diffie-Hellman, des facteurs d'une clé RSA ou de casser d'autres crypto-systèmes. Contre un système vulnérable, ce type d'attaque est très intéressant du point de vue du temps de calcul et ne nécessite qu'une connaissance de l'algorithme de cryptageKocher, « Abstract ».

Exemple algorithmique : les micro-contrôleurs à mot de passe Cet exemple d'attaque est celui donné par S. Skorobogatov dans sa thèse dédiée aux attaques semi-invasivesSkorobogatov, « Introduction », page 8.

Les attaques par analyse de temps peuvent s'appliquer aux micro-contrôleurs dont la sécurité est basée sur des mots de passe ou pour accéder à des systèmes de contrôle qui utilisent des cartes ou des clés avec un numéro de série fixe comme les Dallas iButton.

Une erreur commune dans ce type de systèmes est la manière dont le numéro de série de la clé entrée est vérifié dans la base de données.

Très souvent, les systèmes comparent chaque octet de la clé avec une entrée dans la base de données et s'arrêtent dès qu'une différence est trouvée pour passer à l'entrée suivante de la base de données jusqu'à la fin de celle-ci.

De cette manière, l'attaquant peut mesurer la durée entre l'entrée de la dernière clé et la demande d'une autre clé et découvrir le nombre de correspondances trouvées. Après un nombre d'essais relativement faible, l'attaquant sera en mesure de trouver l'une des clés correspondantes.

Exemple cryptanalytique : analyse cryptographique d'un exponentiateur modulaire simple

Cet exemple d'attaque est celui donné par Kocher lorsqu'il a énoncé le principe de l'attaqueKocher,« Cryptanalysis of a Simple Modular Exponentiator ». Les opérations sur les clés privées effectuées par les algorithmes RSA lors d'un schéma d'échange Diffie-Hellman consistent essentiellement à effectuer des opérations du type :

Où n est public et où y peut être découvert par une écoute clandestine. Le but de l'attaquant étant de trouver x, la clé secrète. Pour que l'attaque fonctionne, l'attaquant nécessite que la victime calcule pour plusieurs valeurs de y où y, n et le temps de calcul sont connus de l'attaquant. Ces informations peuvent être obtenues par l'écoute clandestine passive d'un protocole interactif étant donné que l'attaquant peut alors enregistrer les messages reçus par la victime et mesurer le temps nécessaire pour répondre à chaque y.

L'attaque peut être adaptée pour fonctionner avec virtuellement n'importe quelle implémentation qui ne fonctionne pas en un temps constant, mais est présentée ici en utilisant l'algorithme exponentiateur modulaire simple détaillé ci-dessous. Let = 1. For K = 0 upto w - 1: If (bit k of x) is 1 then Let = ( - y). Else Let . Let = . EndFor Return L'attaque permet à un attaquant connaissant les bits d'exposant allant de 0 à (b-1) de trouver b. Pour ce faire, il suffit de démarrer avec b ayant une valeur de 0, et de répéter l'attaque jusqu'à une connaissance complète de l'exposant.

Étant donné que les b premiers bits de l'exposant sont connus, l'attaquant peut calculer les b premières itérations de la boucle For pour trouver la valeur de . L'itération suivante nécessite le premier bit inconnu de l'exposant. Si le bit a une valeur de 1, sera calculé, sinon l'opération sera ignorée.

Supposons que le système cible utilise une fonction de multiplication modulaire qui est normalement très rapide, mais qui dans certains cas, prend beaucoup plus de temps qu'une exponentiation modulaire complète. Pour quelques valeurs de et y, le temps de calcul de sera très long, et en utilisant sa connaissance du système cible, l'attaquant peut déterminer quelles sont ces valeurs.

Si le temps total de l'exponentiation modulaire est rapide alors que est lent, le bit d'exposant b doit être zéro. À l'inverse, si une opération lente conduit toujours à une exponentiation modulaire lente, le bit d'exposant est probablement à 1.

Une fois le bit d'exposant b connu, l'attaquant peut vérifier que le temps total nécessaire à l'opération est lent chaque fois que = est attendu comme lent. Le même lot de mesures de temps peut être réutilisé pour trouver les bits suivants de l'exposant.

Attaque par force brute

Principe En cryptographie, l'attaque par force brute peut se définir comme l'essai méthodique d'un grand nombre de clés afin de trouver la clé d'un système. En général, cette attaque est effectuée par une ou plusieurs machines, suivant un schéma défini et surveillant un éventuel succèsSkorobogatov, « 4.3 Brute force attacks », page 55.

Si elle s'applique en cryptographie, l'attaque par force brute peut également s'appliquer au matériel semi-conducteur. En effet, l'attaque par force brute peut par exemple s'appliquer à des architectures matérielles implémentées en un ASIC ou un CPLD. Dans ce cas de figure, l'attaquant essaye d'appliquer toutes les combinaisons logiques possibles en entrée du matériel et observe les sorties générées.

Une autre application possible de la force brute consiste à appliquer un voltage élevé (normalement le double de l'alimentation) aux broches de la puce et de vérifier si l'une d'elles a pour fonction de, par exemple, placer le matériel en mode test ou programmation. Dans les faits, ce genre de broche peut être rapidement trouvées à l'aide du multimètre digital car elles ne possèdent par de diode de protection sur l'alimentation.

Exemple cryptographique : la protection par mot de passe des micro-contrôleurs de la famille MSP430 Cet exemple d'attaque est celui donné par S. Skorobogatov dans sa thèse dédiée aux attaques semi-invasives.