Sécurité matérielle des cartes à puce
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 raisons[1] :
- 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és développent en permanence de nouvelles techniques[1]. 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 contient[2].
Il existe une taxinomie pour classer les attaquants[2] :
- 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'attaques[3] nécessitant des moyens plus ou moins importants :
Classe d'attaque | Équipement | Coût | Chance de succès | Ordre de temps de développement | Ordre de temps d'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 par exemple la consommation de la carte[4].
Principe
Apparu pour la première fois dans la littérature scientifique en 1998[5], 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'attaques[6].
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 cache[7] - [8]. 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)[6].
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 cryptage[9].
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-invasives[10].
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'attaque[11].
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.
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ès[12].
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[12].
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[12].
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[12].
Dans le schéma de protection des mots de passe utilisé dans la micro-contrôleurs de la famille MSP430 256 bits sont utilisés pour mémoriser le mot de passe, ce qui pourrait être suffisant pour se prémunir d'une attaque par force brute.
Cela dit, l'espace utilisé pour mémoriser le mot de passe est alloué aux mêmes adresses mémoire que les vecteurs d'interruption du processeur. Premièrement, cela réduit le domaine de recherche, étant donné que les vecteurs pointent toujours vers les mêmes adresses de la mémoire. Deuxièmement, quand le logiciel est mis à jour, seule une petite partie du mot de passe est mise à jour étant donné que la majorité des sous-routines d'interruption pointées par les vecteurs resteront probablement à la même adresse. Tout cela ayant pour résultat que si l'attaquant a connaissance d'un des mots de passe précédents, il peut facilement effectuer une recherche systématique et trouver le mot de passe en un temps raisonnable.
Principe général
L'attaque par "Analyse de consommation" consiste en l'étude de la consommation électrique de la carte à puce.
Les composants électroniques consomment de l'énergie durant leurs opérations. Le total de l'énergie consommée par une puce est très dépendant du processus en cours d'exécution. La mesure de la consommation électrique peut donc révéler des informations sur les opérations en cours[13]. Pour mesurer la consommation du circuit, une petite résistance (50 ohm par exemple) est insérée en série avec l'arrivée électrique ou avec la terre. La différence de voltage à travers la résistance divisée par la résistance donne le courant[14].
Il existe deux principaux types d'attaques basés sur l'analyse de consommation de la carte à puce : les attaques par analyse de consommation simple, et les attaques par analyse de consommation différentielle. Les secondes sont généralement plus puissantes que les premières car elles ne nécessitent que peu d'informations pour être effectives.
Analyse de consommation simple (SPA)
L'analyse de puissance simple consiste en une observation directe de la consommation électrique durant des opérations de cryptages ou d'autres opérations sensibles de sécurité. Une attaque SPA peut révéler des informations aussi bien sur l'opération en cours d'exécution que sur les données traitées. Si un attaquant connaît l'algorithme cryptographique utilisé (et plus précisément son implémentation sur le matériel analysé), il peut facilement obtenir certains bits d'informations en observant les séquences d'instructions CPU, comme les boucles et les branchements conditionnels[15].
Une trace se réfère à un ensemble de mesures de consommation d'énergie relevées lors d'une opération de chiffrement.
Par exemple, une opération de 1 milliseconde échantillonnés à 5 MHz donne une trace contenant 5000 points.
La figure ci-contre montre une trace issue d'une carte à puce typique alors qu'elle effectue une opération de DES. Notez que le 16 tours DES sont clairement visibles[16].
Analyse de consommation différentielle (DPA)
Alors que les attaques de type SPA utilisent principalement l'inspection visuelle pour identifier les variations de consommation pertinentes, les attaques différentielles utilisent l'analyse statistiques et des techniques de correction d'erreur pour extraire les informations relatives aux clés secrètes[17].
L'attaque par analyse de consommation différentielle, inventée par P. Kocher et al. est plus puissante qu'une attaque SPA, car elle nécessite moins d'informations sur l'implémentation de l'algorithme de la part de l'attaquant. Par ailleurs, cette technique gagne en performance par l'utilisation d'analyses statistiques pour aider à retrouver des informations des canaux auxiliaires[18].
La mise en œuvre d'une attaque DPA implique deux phases :
- la collection des données ;
- l'analyse des données.
Principe
Une puce peut laisser filtrer des informations de différentes façons. Les radiations électromagnétiques peuvent être l'une d'entre elles.
Étant donné que les transistors génèrent, lors de leur fonctionnement, des émissions électromagnétiques, il est donc possible d'effectuer une attaque par analyse des rayonnements électromagnétiques permettant d'obtenir des résultats similaires à une attaque par analyse de la puissance[19] - [20].
Les cartes à puces sont principalement concernées par ce type d'attaques car, si elles sont protégées contre beaucoup de type d'attaques non invasives, elles ne peuvent détecter du matériel d'écoute. De plus, celles-ci émettent beaucoup d'informations car les accès mémoire sont fréquents[21].
Dans un processeur synchrone, les modifications liées à l'évolution de l'horloge caractérisent le système[2]. Les transferts de données sur le bus ont une consommation proportionnelle au nombre de bits ayant changé entre deux cycles. De ce fait, l'analyse électromagnétique est très fortement dépendante de l'architecture de la puce[21].
Si la signature spectrale est dépendante de l'architecture, certains comportements sont identiques d'un processeur à un autre. Un accès mémoire par exemple active une pompe de charge qui a pour effet de produire un pic spécifique dans le spectre électromagnétique et directement lié au contrôle de l'oscillateur[22].
Exemple de mise en pratique
La présente section détaille un exemple de mise en pratique réalisée par Jean-Jacques Quisquater et Davide Samyde[23].
Pour ce faire, un capteur sensible aux champs électromagnétiques a été placé près du processeur, sous la carte à puce. Dans le cadre de cette expérience, le capteur était une simple bobine plate, de cette manière, les variations du champ électromagnétique induisent un courant aux extrémités. Ce courant trahit directement les radiations électromagnétiques émises par la puce.
Le rayonnement électromagnétique peut alors être décomposé en deux composantes primaires :
- un champ électrique ;
- un champ magnétique.
Le champ électrique échoue pour les basses fréquences (moins de 10 MHz) mais transporte des informations différentes de celles transmises par le champ magnétique. De 10 à 80Mhz, la composante magnétique n'est pas filtrée par les fils de liaison.
Mise en place du système
Une fausse carte est insérée dans le lecteur comme une vraie le serait. Cette copie d'une carte, dont les contacts se trouvent au même endroit que ceux d'une vraie carte, peut faire ressortir les signaux de commande. De cette manière, les signaux sont transmis au lecteur via un connecteur de carte à puce traditionnel. La carte dont les radiations doivent être mesurées est, elle, placée dans un second lecteur contenant, lui, des bobines plates. Sous les connecteurs de la carte réelle, trois bobines sont présentes. Deux d'entre elles se trouvent 3 millimètres sous le micro module et sont positionnées comme spécifié dans les normes ISO et AFNOR, et la plus large se trouve en position centrale. De cette manière, les radiations émises par la carte doivent croiser l'une des 3 bobines. Le diamètre total des bobines n'excède pas 2 centimètres. Sur le côté du lecteur, on trouve un connecteur permettant de relier un analyseur de spectre ou un oscilloscope. Obtenue avec ce dispositif, une simple mesure avec de l'analyseur de spectre permet de percevoir un ordre de grandeur du champ rayonné par la puce.
Attaques par perturbation ("glitch")
Le principe d'une attaque "glitch", est de générer délibérément des malfonctions afin de changer l'état de certains composants. Le but est généralement de remplacer une instruction machine critique avec une autre. Les attaques "glitch" peuvent aussi être utilisées afin de corrompre les données transférées entre les registres et la mémoire[24].
Si on effectue une attaque par perturbation sur l'horloge (une impulsion d'horloge plus lente) ou sur la puissance électrique délivrée (une variation rapide du voltage), cela n'affectera que certains transistors dans la puce. En variant les paramètres, le CPU peut être amené à exécuter un nombre complètement différent d'instructions, incluant parfois des instructions qui ne sont même pas supportées par le micro-code. Par ailleurs, si on ne sait pas à l'avance quelle variation peut causer quelle mauvaise instruction, il est particulièrement simple d'effectuer une recherche exhaustive.
Une procédure que l'on retrouve couramment dans les crypto-processeurs consiste en une boucle qui écrit le contenu d'une mémoire limitée sur un port série :
- 1 b = answer_address
- 2 a = answer_length
- 3 if (a == 0) goto 8
- 4 transmit(*b)
- 5 b = b + 1
- 6 a = a - 1
- 7 goto 3
- 8 ...
Il est possible de chercher une perturbation qui augmente le compteur du programme normalement, mais soit transforme le saut conditionnel de la ligne 3, ou la variable de décrémentation de la ligne 6 en autre chose.
Trouver la bonne perturbation nécessite de répéter l'opération un grand nombre de fois. Tous les signaux envoyés doivent arriver exactement au même moment après le reset pour que les tests fonctionnent. Un grand nombre de perturbations peut être testé pour chaque cycle d'horloge, alors qu'une seule peut générer l'envoi d'un bit supplémentaire sur le port série. Le fait de répéter cette perturbation, une fois celle-ci trouvée, va permettre de boucler dans la mémoire qui, avec un peu de chance, inclura la clé que l'on cherche[25].
Généralement, les perturbations sont effectuées au niveau de la puissance électrique ou de l'horloge, cependant il peut également s'agir d'un champ électrique externe, ou encore d'une pulsation électromagnétique[26].
Rémanence des données
Les processeurs de sécurité stockent habituellement leur clé matérielle dans une RAM statique, qui n'est plus alimentée si le dispositif est violé. Il est largement connu qu'à une température de -20 °C le contenu d'une SRAM peut être "gelé" ; cependant, beaucoup de dispositifs considèrent une température en dessous de cette limite comme une condition de violation du matériel. Des expériences ont été effectuées pour établir la relation entre la température et la conservation des données dans des mémoires SRAM modernes[27].
Skorobogatov montre dans sa thèse que contrairement à ce qui est communément admis, de nombreuses puces retiennent les données pendant une période de temps relativement longue à une température supérieure à -20 °C. La température à laquelle 80 % des données restent en mémoire pendant une minute varie énormément entre les puces. Certaines nécessitent d'être refroidies à -50 °C, alors que d'autres conservent leurs données pendant cette période à température ambiante. La durée de rémanence des données peut être réduite de manière importante si on connecte la prise Vcc à la terre au lieu de la laisser juste déconnectée[28].
Attaques Invasives
Les attaques invasives sont généralement les attaques les plus coûteuses, tant sur le plan du temps que des matériels[29]. Elles consistent à pénétrer physiquement le système afin d'opérer des observations directes ou encore des modifications. Il s'agit d'attaques extrêmement performantes, qui présentent cependant l'inconvénient majeur d'être destructives : une fois l'attaque effectuée, le matériel est modifié de manière irréversible[30].
Préparation de l'attaque
Les attaques invasives nécessitent un accès physique aux composants internes à la carte pour être réalisées. Il est donc nécessaire, avant de pouvoir réaliser une attaque de ce type, de révéler les circuits de la puce. Le processus de "préparation" d'une attaque invasive ne nécessite que peu de matériel et d'expérience, et peut donc être effectué par n'importe qui, pour peu qu'il dispose du matériel nécessaire[31]. En outre, il est bien entendu que ces opérations nécessitant l'utilisation d'acide fortement concentré requièrent de prendre certaines précautions : utilisation d'une hotte ventilée, de lunettes de protections, etc.
Décapsulation
La première opération consiste à enlever la puce de son emballage. Pour cela, on chauffe la carte en plastique jusqu'à ce qu'elle devienne flexible : la colle ramollit et le module de la puce peut alors être enlevé par pliage de la carte[32]. Il faut ensuite réaliser un creux par érosion mécanique de la puce, afin que l'acide n'agisse que sur une zone bien délimitée.
L'acide utilisé pour dissoudre le package est de l'acide nitrique fumant soit une solution de NO2 dans de l'acide nitrique concentré HNO3 (> 95 %) . Il s'agit d'un puissant agent oxydant qui dissout rapidement le plastique et agit aussi sur le cuivre et l'argent présent dans les circuits de la puce. Parfois un mélange à base d'acide nitrique fumant et d'acide sulfurique H2SO4 est utilisé pour accélérer la réaction avec certains types de plastique. La solution acide est normalement appliquée en petite quantité avec une pipette dans le trou formé dans la puce qui a été préchauffée à environ 60 °C. Après 10 à 30 secondes la puce est nettoyée à l'acétone afin d'enlever les produits de la réaction. Le processus est ensuite répété autant que nécessaire jusqu'à ce que la résine d'epoxy noire qui renferme la puce de silicium soit dissoute. Par ailleurs, il est possible de chauffer l'acide pour accélérer la réaction[33].
En outre, il est important de réaliser cette opération dans un environnement très sec, car la présence d'eau pourrait corroder les circuits en aluminium exposés[32].
Les résidus d'acide peuvent ensuite être enlevés de la surface de la puce par un bain à ultrason. Pour cela, la puce est placée dans un bac avec de l'acétone et ensuite soumise à un traitement à ultrason pendant 1 à 3 minutes[33].
La puce est donc maintenant nettoyée et pleinement opérationnelle.
Deprocessing
Le processus à l'opposé de la fabrication de la puce est appelé "deprocessing". Une puce CMOS standard possède de nombreuses couches. La couche la plus profonde du substrat constitue le transistor. Une couche d'oxyde isole la porte de la zone active des transistors. Une couche de polysilicium en haut de celle-ci forme les portes et les interconnexions. Une couche intercalaire d'oxyde isole les couches conductrices. Les couches métalliques, généralement faites d'aluminium (Al), forment les circuits et sont connectées avec les autres couches par des broches (Al, W Ti). Enfin, une couche de passivation faite d'oxyde de silicium SiO2 ou de nitrure protège l'ensemble de la structure de l'humidité et de l'air qui pourrait endommager la puce. Dans un emballage en plastique, la couche de passivation est recouverte d'une couche de polymère, habituellement polyimide, pour la protéger durant la création de l'emballage[34].
Il existe deux principales applications au deprocessing d'une puce. La première est d'enlever la couche de passivation, et d'exposer la couche de métal supérieure pour une attaque par microsonde. La seconde est d'accéder aux couches les plus profondes afin d'étudier la structure interne de la puce[34].
Il existe différentes manières de procéder : par gravure chimique, par gravure plasma, ou encore par érosion mécanique. Dans le cas de l'attaque chimique, chaque couche est enlevée avec un produit spécifique, et le procédé effectue des coupures non souhaitées[34].
La méthode au plasma utilise des radicaux pour créer un gaz dans une chambre spéciale. Ils réagissent avec le matériau à la surface en créant des produits volatils qui sont aspirés hors de la chambre. Seules les surfaces touchées par les ions sont enlevées, les côtés perpendiculaires à leurs chemins ne sont pas touchés[34].
Enfin, l'érosion manuelle est réalisée en utilisant un matériau abrasif. C'est un procédé gourmand en temps qui nécessite des machines spéciales pour maintenir une surface plane. L'avantage de cette méthode est sa capacité à enlever couche par couche et à voir les fonctionnalités dans une zone d'intérêt qui se situe dans le même plan[34].
Concernant les gravures au plasma ou chimique, chaque type de matériau nécessite un produit différent pour la gravure. Le tableau suivant les résume :
Matériau de la couche | Produit utilisé pour une gravure chimique | Produit utilisé pour une gravure plasma |
---|---|---|
Si | HF+HNO3+KOH | CF4, C2F6, SF6 |
PolySi | HF+CH3COOH+HNO3 | CF4, SF6 |
SiO2 | HF,HF+NH4OH | CF4,CF4+O2,CHF3 |
Al | HCl,H2O2+H2SO4,HPO3+HNO3+CH3COOH,KOH | CCl4, BCL3 |
W, Ti | HF+HNO3, H2O2+H2SO4,H2O2 | CF4 |
Si3N4 | HF+HNO3, HPO3, Nitrietch | CF4 |
Polyimide | H2O2,H2O2+H2SO4 | CF4, CF4+O2 |
Suppression de la couche de passivation
Une fois la puce décapsulée, la couche supérieure d'interconnexion en aluminium est encore recouverte par une couche de passivation (généralement en oxyde de silice ou en nitrure), qui protège la puce de l'environnement et de la dissipation des ions. Cette couche doit être enlevée avec précaution avant que des sondes puissent établir un contact. La technique de dépassivation la plus simple consiste à utiliser un cutter laser. Correctement dosés, les flash laser enlèvent la matière de la couche de passivation. Le trou résultant dans la couche peut être suffisamment petit pour qu'un seul fil du bus soit exposé. Cela évite des contacts accidentels avec les fils voisins et le trou stabilise également la position de la sonde, la rendant moins sensibles aux vibrations et aux variations de température[35].
Rétro-ingénierie
La rétro-ingénierie consiste à analyser et comprendre la structure et la fonction des dispositifs internes à un système. Dans le cas d'une attaque sur une carte à puce, il s'agit de déterminer l'architecture de la puce. Celle-ci a été fabriquée en superposant des couches de composants, il est donc nécessaire d'enlever les couches une par une et de les photographier afin de pouvoir déterminer la structure générale[36].
Les structures basiques comme les circuits de données et d'adresse, peuvent être identifiées rapidement en étudiant les schémas de connexions et en traçant les lignes qui relient de manière visible les différents modules (ROM, RAM, EEPROM, ALU, décodeur d'instruction, etc). Tous les modules sont généralement connectés au bus principal par des bus facilement reconnaissables. L'attaquant doit connaître les architectures des circuits intégrés, mais cette information se retrouve facilement dans de nombreux ouvrages[37].
Micro-sondage ("microprobing")
Un autre type d'attaque invasive consiste à utiliser des micro-sondes pour se connecter aux circuits internes de la puce afin de recevoir certaines données, ou encore d'en envoyer[38].
Station de micro-sondage
Une attaque de ce type nécessite beaucoup de matériel, typiquement : un microscope, des micro-manipulateurs, différents types de sondes, un dispositif de test. Le microscope doit avoir 3-4 objectifs pour pouvoir obtenir différents grossissements et profondeurs de champs. Un faible grossissement avec un champ important est utilisé pour une localisation globale de la sonde, alors qu'un fort grossissement et utilisé pour placer précisément la pointe sur le fil conducteur. La puce est normalement placée sur un dispositif de test qui est contrôlé par ordinateur[39].
Des micro-contrôleurs sont installés sur une plateforme autour de la platine de test. Ils permettent de bouger la pointe d'une sonde avec une précision de l'ordre du micron. La sonde peut soit être passive ou active[39].
Une sonde passive peut être utilisée soit pour détecter un signal, soit pour en injecter un, mais elle doit être reliée à un oscilloscope ce qui lui conférence une impédance faible et une haute capacité électrique. On ne peut donc pas utiliser une sonde passive sur les circuits internes la puce, excepté les bus qui sont généralement bufferisés. Une autre application de ces sondes consiste à les relier aux plots de connexion de la puce décapsulée[39].
Une sonde active possède un transistor à effet de champ près de la pointe. Elle offre une large bande passante avec peu de capacité électrique et une forte résistance[39].
Les pointes des sondes sont fabriquées en fil de tungstène taillés à un diamètre inférieur à 0.1 µm pour la fin de la pointe, afin de pouvoir être connectées sur de très petits circuits[39].
Description de l'attaque
Généralement pour l'extraction d'informations, comme le contenu de la mémoire ou la clé secrète, un micro-sondage est effectué sur le bus de donnée du CPU. Il est difficile d'observer le bus entier à un instant donné et certaines techniques sont utilisées pour surmonter ce problème. Par exemple, la même transaction ou lecture de mémoire peut être répété plusieurs fois et deux à quatre sondes sont utilisés pour observer les signaux qui sont combinés pour offrir une trace complète du bus[40].
Sonde Ionique Focalisée (FIB)
Pour les semi-conducteurs de 0.5 µm, ou des technologies encore plus fines, des outils plus sophistiqués sont nécessaires pour établir des contacts sur les fils de connexion. L'outil idéal pour cela est une sonde ionique focalisée (FIB). Elle peut être utilisée non seulement pour créer des points de sondage, mais également pour afficher et réparer, voir créer de nouveaux circuits[41].
Un FIB consiste en une chambre à vide avec un canon à particules comparable à un microscope électronique à balayage, à l'exception près qu'au lieu des électrons, des ions de gallium sont accélérés et envoyés à partir d'une cathode en métal liquide dans un faisceau qui peut être de 5 à 10 nm de diamètre. Les FIB peuvent afficher des images des échantillons avec une résolution de 10 nm. En augmentant le faisceau, une puce peut être enlevée avec une résolution identique. Il est également possible d'obtenir des gravures plus profondes en injectant un gaz comme l'iode par une aiguille qui est disposée à environ 0.5 mm de la surface de la puce. Le gaz est absorbé par la surface et réagit avec le matériel à enlever pour former un composé volatil qui peut être pompé. En utilisant cette technique, des trous peuvent être creusés pour permettre l'accès aux couches plus profondes métalliques, sans endommager les structures alentour. Par ailleurs, en injectant un gaz organométallique à base de platine qui se décompose, sur la surface de la puce par le faisceau, le platine se redépose pour établir de nouveaux contacts. En utilisant d'autres gaz, même des isolants peuvent être déposés pour établir des contacts entre la surface et la couche métallique, sans contact avec les couches de protection.
Le technicien utilisant le FIB peut naviguer en aveugle à la surface de la puce avec une précision inférieure à 0.1 µm même si la puce a été planarisée et ne possède aucune structure reconnaissable. Les puces peuvent également être polies par la face arrière jusqu'à une épaisseur de 10-20 µm. L'utilisation de l'imagerie infra-rouge permet de localiser individuellement les transistors et d'établir des contacts avec à travers le silicium[42].
Enfin, bien que les FIB soient extrêmement chères, il est relativement facile pour un attaquant de louer l'utilisation d'une station dans différents laboratoires ou entreprises[41].
Instantanée de la mémoire
Une réaction chimique avec la couche de métal supérieure d'une puce décapsulée peut être utilisée pour identifier les lignes connectées à l'alimentation. À partir de cette information, il est possible d'obtenir le contenu des cellules de mémoire, comme la clé secrète d'un système cryptographique[43].
Architecture d'une cellule de mémoire
Une cellule standard de mémoire statique est constituée de six transistors. Quatre d'entre eux construisent une fonction non. Chaque sortie des fonctions est connectée à l'entrée d'une autre. Les fonctions de lecture et d'écriture des cellules sont réalisées par les deux transistors restants. Pour réaliser une valeur particulière dans une cellule, la valeur est placée dans un bus, son inverse dans le bus inverse. La programmation se fait en choisissant le bus. Comme le transmetteur du circuit d'écriture est plus puissant que les transistors dans la cellule, l'ancien état est remplacé par celui inséré dans le bus. Des amplificateurs sont utilisés pour lire une cellule. Ils reconnaissent l'état d'une cellule, par le bus sélectionné[44].
Si la cellule contient un 1, le bus est connecté au pôle positif de l'alimentation (VCC) et le bus inverse à la terre (GND) ; inversement si la cellule contient 0. Sur certaines puces, les lignes de bus contenant les valeurs et l'inverse de la cellule, sont réalisés sur la couche métallique supérieure, ainsi donc que les lignes indiquant si la cellule contient 0 ou 1. Si la couche métallique est exposée, on peut donc obtenir l'information par électrolyse[45].
Description de l'attaque
Une électrolyse est réalisée pour attaquer le dispositif. Comme la distance entre les lignes métalliques, qui agiront comme des anodes et cathodes, est très petite, un liquide faiblement conducteur est nécessaire. Cela réduira les dégâts causés par l'écoulement du liquide. De l'eau pure est faiblement conductrice, c'est pourquoi de l'eau distillée est utilisée. La conductivité de l'eau courante est bien plus importante car elle contient des sels minéraux dissous et des ions libres. Par ailleurs, pour que l'électrolyse ait lieu correctement, il est nécessaire que le liquide entre en contact direct avec la surface métallique de la puce, la couche de passivation doit donc être enlevée[46].
Avec une petite pipette, de l'eau distillée est déposée sur la surface d'une puce alimentée. Pour éviter des interférences, l'eau ne doit pas toucher les connecteurs. En agissant ainsi, le micro-contrôleur de la puce pourra encore écrire et lire des valeurs pendant quelques minutes, après quoi des erreurs apparaîtront dans certaines cellules[47].
Immédiatement après que l'eau ait atteint la surface, une réaction chimique commence qui est détectable par la libération d'un gaz. Si une valeur ne change pas durant la procédure, la coloration de la cellule ne change pas, même si les lignes métalliques sont exposées à l'eau quelques secondes ou même quelques minutes. Cependant, dans les cellules dont les valeurs ont changé alors qu'elles étaient touchées par l'eau, les deux bus ont agi comme une anode et une cathode : ils présentent tous les deux la même coloration[47].
Si le programme effectue un calcul, il est donc possible de distinguer les cellules mémoires dont les données ont été modifiées, de celles qui sont restées statiques. En outre, le changement de couleur est un processus irréversible, une fois que la couleur d'une ligne a changé, il est impossible d'inverser le processus. L'attaque ne peut donc être effectuée qu'une seule fois[47].
Attaques Semi-Invasives
Les attaques semi-invasives nécessitent d'avoir accès à la surface de la puce, donc d'effectuer un "depackaging" de la puce, mais aucune connexion directe à la surface métallique n'est nécessaire. Elles sont donc moins coûteuses que les attaques invasives, nécessitent moins de matériel, et permettent d'obtenir des résultats rapidement[48].
Attaque par injection de fautes
Quand un attaquant possède un accès physique à un dispositif, il peut essayer d'introduire directement des erreurs matérielles. Il est possible, par exemple, d'extraire la clé secrète d'un dispositif en introduisant des erreurs (par exemple une signature RSA erronée) dans la puce cryptographique[49].
Or, l'éclairage au laser d'un transistor cible peut permettre de lui faire introduire des erreurs. Ce type d'attaque est intéressant et ne nécessite pas d'équipement laser coûteux[50].
Exemple d'attaque de RSA par injection de faute
Exemple directement inspiré de On the Importance of Eliminating Errors in Cryptographic par Boneh et al[51].
Considérons un système utilisant RSA pour générer des signatures de manière naïve. Soit le produit de deux grands entiers premiers. Pour signer un message en utilisant RSA, le système calcule où est un exposant secret. Le message est supposé être un entier compris entre 1 et . La sécurité d'un tel système consiste en la difficulté, pour un attaquant de factoriser .
La partie coûteuse du calcul d'une signature RSA, est l'exponentiation modulaire de . Pour éviter ça, certaines implémentations effectuent le calcul comme suit : elles effectuent d'abord le calcul et .
En ayant d'abord calculé deux nombres tels que :
et
on peut calculer : .
L'attaque sur les signatures RSA présentées ici, consiste à obtenir les facteurs de N. Une fois que le modulus est factorisé, le système est considéré comme cassé. L'attaque est basée sur l'obtention de deux signatures du même message. La première est une signature correcte, la seconde une signature comportant une erreur.
Soit le message et la signature correcte du message. Soit la signature erronée. Rappelons que et .
Supposons que par un quelconque événement une erreur ait lieu durant le calcul de ou . Pour l'exemple, supposons que l'erreur ait lieu dans (soit ) et pas dans (soit . Alors :
et donc peut être facilement factorisable.
Pour résumer, l'utilisation d'une signature erronée et d'une correcte permet la factorisation du modulus de RSA.
Attaque par rayonnement ultraviolet
Une attaque par rayonnement ultraviolet peut être divisée en deux phases : localiser le fusible et le réinitialiser à l'aide d'un rayon ultraviolet[52].
Contre-Mesures
Génération d'aléa dans l'horloge
Beaucoup de techniques d'attaques non-invasives nécessitent que l'attaquant prédise le temps que va mettre une instruction à s'exécuter. Un processeur strictement déterministe qui exécute la même instruction c cycles d'horloge après chaque reset - si on lui fournit la même entrée à chaque cycle - permet cela facilement[53].
Une contre-mesure évidente est d'insérer des délais aléatoires entre chaque réaction observable et chaque opération critique qui peut être la cible d'une attaque. Si le port série constitue le seul canal observable, alors quelques appels à des délais aléatoires contrôlés par un générateur matériel de bruit devrait suffire. Cependant, si les attaquants peuvent utiliser des techniques de références croisées pour déterminer en temps réel à quelle instruction correspond quelle fluctuation, presque toutes les instructions deviennent observables et peuvent être localisées, les délais ne suffiront pas alors[53].
Il est fortement recommandé d'introduire des temps aléatoires au niveau des cycles d'horloge. Un générateur de séquence de bits aléatoire qui agit au niveau du signal d'une horloge externe devrait être utilisé pour générer un signal interne[53].
Dispersion des informations
Cette technique est basée sur le principe bien connu du partage de secret où chaque bit du calcul original est divisé de manière probabiliste entre différentes parties de manière que chaque sous-ensemble de ces parties soit statistiquement indépendant du bit en cours d'encodage, et donc ne comporte aucune information sur ce bit. Le calcul des primitives cryptographiques s'effectue uniquement en accédant de manière aléatoires aux différentes parties à chaque moment, avec des étapes intermédiaires de calcul du partage du résultat. Répartir le bit entre différents lots partagés de manière probabiliste renforce l'incertitude de l'attaquant et le force à prendre en compte le signal de l'ensemble des points de distribution à partir desquels les lots sont accessibles[54].
Compteur d'erreur
On suppose que le nombre de fautes « naturelles » qui apparaissent dans la durée de vie d'un système est très inférieur au nombre de cryptogrammes erronés requis pour une attaque par faute. La désactivation du circuit peut être réalisée par un simple compteur qui compte le nombre d'erreurs détectées. Quand une limite prédéterminée est atteinte, le dispositif supprime la clé secrète de sa mémoire pour prévenir de nouvelles attaques. La limite du compteur peut être ajustée en fonction du système et de la durée de vie attendue du dispositif. Un des critères les plus importants pour cette méthode consiste à ce que la couverture d'erreur du code soit la plus importante possible tout en maintenant un coût matériel raisonnable[55].
Redondance des calculs
Une autre possibilité pour lutter contre les attaques par fautes consiste à vérifier les parties critiques du programme et les résultats cryptographiques. Effectuer deux fois les calculs et comparer les résultats obtenus est une manière de vérifier la validité des résultats. Il est cependant possible que la même erreur ait été injectée deux fois et ne soit pas détectée[56].
Il est plus fiable (lorsque c'est possible) d'effectuer le calcul des données entrantes à partir du résultat et de les comparer avec les données entrantes d'origine. Une opération inverse est généralement différent est plus difficile à manipuler dans la direction opposée. Afin de garantir le maximum de sécurité, il est important de regarder attentivement quelle partie du code est critique du point de vue de la sécurité[56].
Sécurité par l'obscurité
Il existe de nombreuses contre-mesures contre la rétro-ingénierie, la principale réside dans le principe de sécurité par l'obscurité : pour qu'un attaquant ait le moins d'information possible sur un système, on dissimule les informations. Dans le cas des cartes à puce, cela passe par différentes mesures.
Glue logique
Tout d'abord, tout le matériel électronique des cartes à puces est désormais embarqué dans une seule et unique puce[57], ce qui limite les possibilités de rétro-ingénierie à l'œil nu. On parle alors de glue logique : tous les composants sont regroupés, "collés" ensemble.
Cela augmente la difficulté pour un attaquant souhaitant faire de la rétro-ingénierie, mais également pour les attaques nécessitant la mise en place de sondes, ou encore la destruction d'un fusible de sécurité.
Démarquage des puces
Par ailleurs, une contre-mesure évidente dans le cas de circuits mettant en jeu des puces électroniques consiste à enlever les informations permettant d'identifier les puces en question, soit leur numéro de série, la référence du fabricant, etc. L'attaquant a donc moins d'informations sur lesquelles se baser pour identifier la nature du circuit à compromettre.
Miniaturisation
Grâce aux progrès de la miniaturisation, il est désormais possible d'agglomérer un grand nombre de transistors sur une surface extrêmement petite. Cette capacité permet aux fabricants de cartes à puces, de réaliser des puces en plusieurs couches, chaque couche contenant un certain nombre de composants différents, les couches étant interconnectées les unes aux autres. L'architecture de la puce est alors en trois dimensions, ce qui rend la tâche de rétro-ingénierie d'un attaquant beaucoup plus ardue, ainsi que toutes les attaques invasives ou même semi-invasives.
Mélange des circuits et de la mémoire
Une autre possibilité pour embrouiller l'attaquant consiste à mélanger les circuits, à réaliser un labyrinthe avec les différents chemins de connexions[58]. L'attaquant aura plus de mal à comprendre quels sont les entrées et les sorties des différents modules et donc, comment fonctionne le système. Par ailleurs, il sera beaucoup plus difficile de modifier le circuit s'il est mélangé.
En outre, il est possible de disperser aléatoirement les transistors associés aux registres mémoires dans la puce de silicium. Ainsi, effectuer un instantané de la mémoire devient plus difficile pour un attaquant, et si jamais il y arrive il ne saura pas forcément dans quel ordre il doit lire les données récupérées[59].
Ajout de sondes
Les techniques d'attaques par perturbations et autres attaques par canal auxiliaire essaient toutes de changer l'environnement de la carte. La stratégie développée contre ces attaques consiste dans l'utilisation de sondes sur le voltage, la fréquence et la température des circuits. Malheureusement, des paramètres de sonde strictement définis affectent l'utilisation et peuvent causer des mauvais fonctionnements dans certains terminaux, ou sous certains climats. Par ailleurs, il n'est pas possible pour des sondes de détecter tous les signaux injectés[60].
Ajout d'une couche protectrice
L'ajout d'une couche métallique faisant office de bouclier au-dessus de la puce peut permettre de contourner la plupart des attaques invasives ou semi-invasives[61].
Références
- Witteman, « Smartcard security threats », page 12
- Anderson,
- Witteman, « Attack Statistics », page 20
- Skorobogatov, « 4 Non-invasive attacks », page 52
- Kocher
- Skorobogatov, « 4.2 Timing attacks », page 54
- Quisquater, « Introduction »
- Kocher, « Introduction »
- Kocher, « Abstract »
- Skorobogatov, « Introduction », page 8
- Kocher,« Cryptanalysis of a Simple Modular Exponentiator »
- Skorobogatov, « 4.3 Brute force attacks », page 55
- Witteman, « Side channel security threats », page 6
- Kocher 2, « Differential Power Analysis (DPA) », page 1
- Skorobogatov, « 4.4 Power analysis », page 56
- Kocher 2, « Differential Power Analysis (DPA) », page 2
- Kocher 2, « Differential Power Analysis (DPA) », page 3
- Messerges, « 2.4 Power analysis », page 5
- Quisquater 1, « Abstract », page 1
- Witteman, « Smartcard security », page 17
- Quisquater 1, « 1. Introduction », page 2
- Quisquater 1, « 2. Context », page 2
- Quisquater 1, « 3. Principles », page 3
- Kömmerling, « 2.2.1 Glitch attacks »
- Anderson, « 2.1 Non-invasive attacks »
- Skorobogatov, « 4.5 Glitch Attacks », page 59
- Skorobogatov, « 4.6 Data Remanence », page 62
- Skorobogatov, « 4.6 Data Remanence », page 65
- Witteman, « Attack statistics », page 20
- Witteman, « Physical Attacks », page 5
- Skorobogatov, « 5. invasives attacks », page 73
- Kömmerling, « 2.1.1 Depackaging of smartcards », page 3
- Skorobogatov, « 5.1.1 Decapsulation », page 75
- Skorobogatov, « 5.1.2 Deprocessing », page 77
- Skorobogatov, « 3.3 Invasive attacks », page 49
- Skorobogatov, « 5.2 Reverse engineering », page 79
- Kömmerling, « 2.1.2 Layout Reconstruction », page 4
- Witteman, « Probe stations », page 5
- Skorobogatov, « 5.3 Microprobing », page 83
- Skorobogatov, « 5.3 Microprobing », page 85
- Anderson« 2.3 Advanced Attack Techniques », page 5
- Skorobogatov, « 5.3.2 FIB Workstation », page 88
- Schmidt, « Abstract », page 1
- Schmidt, « 2. Target device », page 2
- Schmidt, « 2. Target device », page 3
- Schmidt, « 3. Electrolysis », page 4
- Schmidt, « 5. Results », page 5
- Skorobogatov, « Chapter 6 Semi-invasive attacks », page 89
- Boneh, « Introduction », page 2
- Skorobogatov, « 6.4 Fault injection attacks », page 100
- Boneh, « RSA's vulnerability to hardware faults », pages 3,4
- Skorobogatov, « 6.1 UV attacks », page 90
- Kömmerling, « 3.1 Randomized clock signal », page 9
- Chari, « Introduction », page 2
- Karpovsky, « Introduction », page 2
- Witteman, « Countermeasures for Power Glitching and Other Types of Side Channel Manipulation », page 10
- Witteman, « Physical attacks », page 4
- Witteman, « Countermeasures against physical attacks », page 6
- Skorobogatov 2002, « 5. Countermeasures », page 4
- Witteman, « Countermeasures for power glitching and other types of side-channel manipulation », page 9
- Skorobogatov, « 6. Countermeasures », page 9
Bibliographie
Sources bibliographiques référencées dans le texte
- (en) Sergei P Skorobogatov, « Semi-invasive attacks-a new approach to hardware security analysis », Technical report, University of Cambridge, Computer Laboratory, 15 JJ Thomson Avenue, Cambridge CB3 0FD, United Kingdom, (ISSN 1476-2986, lire en ligne [PDF])
- (en) Marc Witteman, « Advances in smartcard security », Information Security Bulletin, vol. 7, , p. 11–22 (lire en ligne [PDF])
- (en) Paul Kocher, « Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems », Advances in Cryptology — CRYPTO ’96, Springer Berlin / Heidelberg, vol. 1109, , p. 104-113 (ISBN 3-540-61512-1, DOI 10.1007/3-540-49677-7_31, lire en ligne [PDF])
- (en) Paul Kocher, Joshua Jaffe, and Benjamin Jun., « Introduction to differential power analysis and related attacks », Cryptography Research, (lire en ligne [PDF])
- (en) Jean-Jacques Quisquater, « ElectroMagnetic Analysis (EMA): Measures and Counter-measures for Smart Cards », Smart Card Programming and Security, Springer Berlin / Heidelberg, vol. 2140, , p. 200-210 (ISBN 3-540-42610-8)
- (en) Jörn-Marc Schmidt, « A Chemical Memory Snapshot », Smart Card Research and Advanced Applications, Springer Berlin / Heidelberg, vol. 5189, , p. 283-289 (ISBN 978-3-540-85892-8)
- (en) Jean-Jacques Quisquater, « A Practical Implementation of the Timing Attack », Smart Card. Research and Applications, Springer Berlin / Heidelberg, vol. 1820, , p. 167-182 (ISBN 3-540-67923-5)
- (en) R. Anderson, « Low cost attacks on tamper resistant devices », Security Protocols, Springer Berlin / Heidelberg, vol. 1361, , p. 125–136 (ISBN 3-540-64040-1, lire en ligne)
- (en) T. S Messerges, « Examining smart-card security under the threat of power analysis attacks », IEEE Transactions on Computers, , p. 541–552 (ISSN 0018-9340)
- (en) S. M Yen, « A countermeasure against one physical cryptanalysis may benefit another attack », Lecture Notes in Computer Science, vol. 2288, , p. 414–427 (ISSN 0302-9743)
- (en) R. Anderson, « Tamper Resistance - a Cautionary Note », The Second USENIX Workshop on Electronic Commerce Proceedings, , p. 1-11 (ISBN 1-880446-83-9, lire en ligne)
- (en) Jean-Jacques Quisquater, « ElectroMagnetic Analysis (EMA): Measures and Counter-measures for Smart Cards », Smart Card Programming and Security, Springer Berlin / Heidelberg, vol. 2140, , p. 200-210 (ISBN 3-540-42610-8)
- (en) D. Boneh, « On the Importance of Checking Cryptographic Protocols for Faults », Computations Journal of Cryptology: The Journal of the International Association for Cryptologic Research, vol. 14, , p. 101–119
- (en) M. Karpovsky, « Robust protection against fault-injection attacks on smart cards implementing the advanced encryption standard », Dependable Systems and Networks, 2004 International Conference on, , p. 93–101 (ISBN 0769520529)
- (en) Oliver Kömmerling, « Design principles for tamper-resistant smartcard processors », Proceedings of the USENIX Workshop on Smartcard Technology on USENIX Workshop on Smartcard Technology, Berkeley, CA, USA, USENIX Association, , p. 2–2
- (en) S. Chari, « Towards sound approaches to counteract power-analysis attacks », Advances in Cryptology—CRYPTO’99, , p. 791–791 (ISBN 3-540-66347-9)
- (en) S. Skorobogatov, « Optical fault induction attacks », Cryptographic Hardware and Embedded Systems-CHES 2002, , p. 31–48 (ISBN 3-540-00409-2)
Autres sources bibliographiques
- (en) Jörn-Marc Schmidt et Christophe Herbst, « A Practical Fault Attack on Square and Multiply », 2008 5th Workshop on Fault Diagnosis and Tolerance in Cryptography, Washington, DC, USA, , p. 53-58 (DOI 10.1109/FDTC.2008.10)
- (en) C. Cormier et G. Grimonprez, « A RISC microprocessor for contactless smart cards », EUROMICRO 97. 'New Frontiers of Information Technology'., Proceedings of the 23rd EUROMICRO Conference, , p. 658-663
- (en) E. Vetillard, « Combined Attacks and Countermeasures », Smart Card Research and Advanced Application, , p. 133–147
- (en) D. de Waleffe et J. J Quisquater, « CORSAIR: A smart card for public key cryptosystems », Advances in Cryptology-CRYPT0’90, , p. 503–513
- (en) D. Naccache et D. M'Raihi, « Cryptographic smart cards », IEEE Micro, vol. 16, no 3, , p. 14, 16-24 (ISSN 0272-1732, DOI 10.1109/40.502402)
- (en) E. Biham et A. Shamir, « Differential fault analysis of secret key cryptosystems », Advances in Cryptology—CRYPTO'97, , p. 513–525
- (en) C. Schnorr, « Efficient identification and signatures for smart cards », Advances in Cryptology—Crypto’89 Proceedings, , p. 239–252
- (en) C. P Schnorr, « Efficient signature generation by smart cards », Journal of cryptology, vol. 4, no 3, , p. 161–174 (ISSN 0933-2790)
- (en) T. S Messerges, « Examining smart-card security under the threat of power analysis attacks », IEEE Transactions on Computers, , p. 541–552 (ISSN 0018-9340)
- (en) D. Maher, « Fault induction attacks, tamper resistance, and hostile reverse engineering in perspective », Financial Cryptography, , p. 109–121
- (en) M. Joye et J.J Quisquater, « Hessian elliptic curves and side-channel attacks », Cryptographic Hardware and Embedded Systems—CHES 2001, , p. 402–410
- (en) « High-security integrated-circuit card - Google Patent Search » (consulté le )
- (en) M. Renaudin, F. Bouesse, Ph. Proust, J. P Tual, L. Sourgen et F. Germain, « High Security Smartcards », Proceedings of the conference on Design, automation and test in Europe - Volume 1, Washington, DC, USA, IEEE Computer Society, , p. 10228– (ISBN 0-7695-2085-5, OCLC 809806428)
- (en) M. Renaudin, F. Bouesse, J.P. Tual, P. Proust et F. Germain, « High security smartcards », Proceedings of the conference on Design, automation and test in Europe-Volume 1, , p. 10228 (ISBN 0769520855)
- (en) C. Giraud, E. Knudsen et M. Tunstall, « Improved Fault Analysis of Signature Schemes », Smart Card Research and Advanced Application, , p. 164–181
- (en) S. Moore, R. Anderson, P. Cunningham, R. Mullins et G. Taylor, « Improving smart card security using self-timed circuits », Asynchronous Circuits and Systems, 2002. Proceedings. Eighth International Symposium on, , p. 211–218 (ISBN 0769515401)
- (en) T. Römer et J. P Seifert, « Information leakage attacks against smart card implementations of the elliptic curve digital signature algorithm », Smart Card Programming and Security, , p. 211–219
- (en) T. S Messerges, E. A Dabbish et R. H Sloan, « Investigations of power analysis attacks on smartcards », Proceedings of the USENIX Workshop on Smartcard Technology on USENIX Workshop on Smartcard Technology, , p. 17
- (en) J-F Dhem, Design of an efficient public-key cryptographic library for RISC-based smart cards, (lire en ligne)
- (en) D. Samyde, S. Skorobogatov, R. Anderson et J. J Quisquater, « On a new way to read data from memory », Security in Storage Workshop, 2002. Proceedings. First International IEEE, , p. 65–69 (ISBN 0769518885)
- (en) T. S Messerges, « Power analysis attack countermeasures and their weaknesses », Communications, Electromagnetics, Propagation and Signal Processing Workshop,
- (en) A. Shamir, « Protecting smart cards from passive power analysis with detached power supplies », Cryptographic Hardware and Embedded Systems—CHES 2000, , p. 121–132
- (en) « Protective inorganic and DLC ... - Google Patent Search » (consulté le )
- (en) J. S Coron, « Resistance against differential power analysis for elliptic curve cryptosystems », Cryptographic Hardware and Embedded Systems, , p. 725–725
- (en) P. Rakers, L. Connell, T. Collins et D. Russell, « Secure contactless smartcard ASIC with DPA protection », IEEE Journal of Solid-State Circuits, vol. 36, no 3, , p. 559-565 (ISSN 0018-9200, DOI 10.1109/4.910496)
- (en) Peter Gutmann, « Secure deletion of data from magnetic and solid-state memory », Proceedings of the 6th conference on USENIX Security Symposium, Focusing on Applications of Cryptography - Volume 6, San Jose, California, USENIX Association, , p. 8-8
- (en) P. Kocher, R. Lee, G. McGraw, A. Raghunathan et S. Moderator-Ravi, « Security as a new dimension in embedded system design », Proceedings of the 41st annual Design Automation Conference, , p. 753–760 (ISBN 1581138288)
- (en) L. Guillou et M. Ugon, « Smart Card a Highly Reliable and Portable Security Device », Advances in Cryptology—CRYPTO’86, , p. 464–479
- (en) « Smart-card based access control ... - Google Patent Search » (consulté le )
- (en) H. Handschuh et P. Paillier, « Smart card crypto-coprocessors for public-key cryptography », Smart Card. Research and Applications, , p. 372–379
- (en) Howard Gobioff, Sean Smith et J. D. Tygar, Smart Cards in Hostile Environments, Carnegie Mellon University Computer Science technical report,
- (en) S. Chari, J. Rao et P. Rohatgi, « Template attacks », Cryptographic Hardware and Embedded Systems-CHES 2002, , p. 51–62
- (en) A. T.M Disputes et I. SCIIIK, « Why Cryptosystems Fail », Communication of the ACM, vol. 37, no 11, , p. 32-40