Télécharger le fichier pdf d’un mémoire de fin d’études
Les speci cations et certi cations
La securit des applications sur carte
Element securis
Dans cette partie, nous allons exposer les failles existantes sur l’usage de la carte `a puce. Malgr´e une s´ecurit´e importante et un audit s´ecurit´e, nous pouvons voir que des attaques sur ce syst`eme existent [32]. Certaines attaques sont sp´ecialis´ees pour une transaction avec ou sans contact physique. Nous pouvons aussi distinguer les attaques invasives (impliquant une destruction partielle ou compl`ete de la carte) et les attaques non invasives.
Attaques invasives ou semi-invasives :
Ce type d’attaque met en p´eril l’int´egrit´e physique de la puce `a micro-circuit. Les attaques pr´esent´ees ici sont pr´esent´ees dans [33].
Par injection de fautes :
Cette attaque est une attaque semi-invasive car elle n´ecessite un acc`es direct `a la carte `a puce. Il s’agit de perturber le fonctionnement d’une carte `a puce en modifiant une donn´ee pr´ecise. Par exemple, on peut faire varier la tension d’alimentation (power glitch), l’horloge ou encore la temp´erature. Une autre m´ethode consiste `a imposer `a la puce un laser, un faisceau d’ion, un rayon X, etc. Concr`etement, plusieurs techniques ([34] ou [35]) sont connues :
{ Application de lumi`ere laser sur le processeur introduit par [36]
{ Attaque de Bellcore sur le chiffrement RSA (nomm´e par les initiales de ses trois inventeurs) comme dans [35]
{ D´efaillance ´electronique (glitch) appliqu´e sur un calcul RSA, historiquement la premi`ere m´ethode [37] { Attaque de type « Differential fault analysis » (DFA) [37]
La r´ealisation de cette attaque est donc variable d’un syst`eme `a l’autre. Il faut effectuer de nombreux essais, de diff´erentes sortes, afin d’obtenir des r´esultats concluants.
Par conditions anormales Cette attaque varie de l’attaque pr´ec´edente par la dur´ee de la modification apport´ee [38]. Ici, on fait fonctionner la carte `a puce en dehors de ses conditions op´erationnelles. L’attaquant peut modifier la tension ou la fr´equence d’alimentation ainsi que la temp´erature facilement. Cependant, ces attaques ne semblent pas efficaces car des d´etecteurs de conditions anormales sont pr´esents dans la carte `a puce.
Par rayonnement : Afin de modifier l’ex´ecution des applications d’une carte `a puce, on peut aussi utiliser un rayonnement ´electromagn´etique. Cette attaque est semi-invasive car l’attaquant doit acc´eder `a la puce. On applique donc un rayonnement durant l’ex´ecution de l’application (ce qui diff`ere de l’injection de faute) [39].
Par les composants : Ces attaques [40] sont compl`etement invasives car n´ecessitent l’´etude d’un composant pr´ecis de la carte `a puce. On doit donc d´esassembler la carte `a puce et celle-ci ne sera plus utilisable par la suite. Cette premi`ere ´etape se d´eroule chimiquement ou physiquement. Il existe plusieurs outils possibles en vue de cette attaque [40] :
{ Focused Ion Beam (FIB). Cet outil permet d’´etudier un composant avec un microscope ainsi que de retirer de la mati`ere `a la carte `a puce.
{ Electron Beam Tester (EBT). Cet outil permet de lire la valeur du potentiel `a un endroit donn´e de la carte. { Microprobing : acc`es `a la puce.
L’attaquant cherche `a trouver les syst`emes de s´ecurit´e (impl´ementations, informations contenues dans la puce) pr´esents sur un composant en particulier. Par exemple, il est possible de lire les bits sur le bus m´emoire lorsqu’on sait qu’une donn´ee int´eressante y transite.
Attaques non invasives
Ce type d’attaque n’alt`ere pas la puce `a micro-circuit mais consiste `a observer le fonctionnement d’une application.
Par canaux cach´es :
Une attaque sur carte `a puce consiste `a ´etudier le fonctionnement du circuit ´electronique. Plusieurs donn´ees peuvent ^etre utilis´ees telles que la consommation du courant, les ´emissions ´electromagn´etiques ou encore le temps d’ex´ecution. Les attaques par canaux cach´es utilisent les failles mat´erielles de l’impl´ementation pour r´ecup´erer des informations sur le secret utilis´e [41]. On peut ainsi lister plusieurs techniques majeures :
{ consommation du courant : Simple Power Attack / Differential Power Attack / High Order Differential Power Analysis avec par exemple [42]
{ ´emissions ´electromagn´etiques : Simple Electromagnetic Attack / Differential
Electromagnetic Attack [43]
{ le temps d’ex´ecution dans [44]
Skimming : L’attaque dite de » skimming » [45] est une attaque simple `a mettre en place, d’o`u son utilisation importante. Il s’agit de r´ecup´erer des informations d’une carte `a puce en pla¸cant un ´el´ement entre le lecteur de carte `a puce et la carte `a puce (`a condition d’avoir la possibilit´e de cr´eer un ´el´ement d’´ecoute d’´epaisseur inf´erieure `a 0,1 mm). Cet ´el´ement a pour but de capturer les donn´ees tel que le num´ero de carte. Sur la figure 1.12, on voit cet ´el´ement sur la photo en haut `a droite. La seconde partie de l’attaque est l’utilisation d’une cam´era (voir la fl`eche noire visible sur la premi`ere image de la figure 1.12). On peut ainsi r´ecup´erer le code PIN (Personal Identification Number) du porteur et se faire passer pour le porteur de la carte, m^eme si g´en´eralement il s’agit uniquement de la lecture et la r´ecup´eration de la piste.
Introduction
Contrairement aux m´ethodes formelles tels que la v´erification de mod`ele ou le th´eor`eme de preuve, nous v´erifions `a la vol´ee des s´equences d’´el´ements APDU par rapport `a un oracle, et ceci durant la transaction. En fait, dans les ´etudes [79] [66] [65] [68] or [78], la v´erification n´ecessite un mod`ele formel ou l’acc`es au code source. Avec notre language, nous pouvons d´efinir des comportements th´eoriques (locaux ou globaux) utilisant seulement les donn´ees transmises.
D´efinition
Le langage nous permet de d´efinir `a la fois des machines `a ´etats, permettant de suivre le comportement global d’une application, mais aussi de les partitionner, permettant de suivre le comportement local d’une application. Nous pr´esentons les ´el´ements de base, puis les ´el´ements nous permettant de d´efinir les machines `a ´etats e enfin les ´el´ements nous permettant de d´efinir des comportements locaux. Ce language est d´ecrit en langage de balisage extensible (XML) [135].
El´ements de base
Nous avons d´efini deux types d’´el´ements de base sans lesquels la repr´esentation des donn´ees n’est pas possible. Dans un premier temps, nous avons les ´el´ements repr´esentant la communication APDU :
{ Instruction : repr´esente les octets CLA et INS d’une commande APDU { Parameters : repr´esente les octets P1 et P2 d’une commande APDU { Status : repr´esente les octets SW1 et SW2 d’une commande APDU
Le second type permet de repr´esenter les relations entre plusieurs ´el´ements :
{ And : tous les ´el´ements sont vrais { Or : au moins un ´el´ement est vrai { Nor : tous les ´el´ements sont faux
Afin de compl´eter la repr´esentation des commandes et r´eponses, nous pouvons compl´eter les ´el´ements repr´esentant les instructions, les param`etres et les status words, ´el´ements obligatoires lors d’une communication unitaire commande et r´eponse APDU (un couple APDU). La repr´esentation d’une partie ou de la totalit´e des donn´ees transmises (i.e. les donn´ees contenues dans UDC et UDR). Avec des donn´ees de type TLV, nous pouvons aller plus loin et traiter une partie de la donn´ee compl`ete. De plus, l’appel `a des fonctions externes est possible et permet une utilisation sp´ecifique d’une partie des donn´ees ou d’une association de donn´ees (garder en m´emoire une partie, effectuer des op´erations sur des donn´ees transitant sur plusieurs couples APDU).
Le second type permet de repr´esenter les relations entre plusieurs ´el´ements :
{ Cdata : correspond `a l’UDR entier
{ Rdata : correspond `a l’UDC entier
{ Tag : correspond `a un ´el´ement de type Tag Longueur Valeur (TLV)
{ nom : nom du tag (exemple : 0x9F27) { valeur : valeur de l’´el´ement (exemple : 0x40)
{ mask : permet d’appliquer un masque sur un ´el´ement
{ call : permet l’appel `a une fonction de traitement de donn´ees suppl´ementaires
|
Table des matières
Introduction
1 Positionnement du probleme
1.1 Contexte de l’´etude
1.1.1 Une transaction ´electronique
1.1.2 La mon´etique
1.1.3 Les sp´ecifications et certifications
1.2 La s´ecurit´e des applications sur carte
1.2.1 El´ement s´ecuris´e
1.2.2 Norme ISO/IEC 7816
1.2.3 Communication PC/SC :
1.2.4 Les sp´ecifications EMV
1.2.5 Sp´ecifications propri´etaires
1.2.6 JavaCard
1.2.7 GlobalPlatform
1.2.8 Discussion
1.3 Attaques sur une transaction de paiement
1.3.1 Attaques invasives ou semi-invasives :
1.3.2 Attaques non invasives
1.3.3 Transactions sans contact
1.3.4 R´ecapitulatif :
1.4 Evaluation d’applications
1.4.1 Introduction
1.4.2 D´efinitions
1.4.3 Le cas du logiciel
1.4.4 Le cycle de vie de l’application carte
1.5 Objectifs de la th`ese
1.6 Conclusion
2 Une m´ethodologie d’analyse d’applications sur carte `a puce
2.1 Introduction
2.2 Etat de l’art
2.2.1 M´ethodes d’analyse sur carte `a puce
2.2.2 Outils d’analyse de la carte `a puce
2.2.3 Solutions acad´emiques : outils de d´eveloppement
2.2.4 Construction de l’oracle
2.2.5 Discussion
2.3 Repr´esentation de l’application et de son comportement
2.3.1 Introduction
2.3.2 D´efinition
2.3.3 El´ements de base
2.3.4 Repr´esenter le comportement global
2.3.5 Repr´esenter le comportement local
2.3.6 Mod`ele de repr´esentation
2.4 Observation de comportements globaux et locaux d’une application
2.4.1 Contexte
2.4.2 Inspirations
2.4.3 Analyse temporelle sur la communication APDU
2.4.4 D´etection d’anomalie gr^ace `a l’observation de la communication
2.5 Analyse par la d´etection de violation de propri´et´e
2.5.1 Introduction
2.5.2 D´efinition de propri´et´e
2.5.3 D´etection de violation
2.6 Illustrations de la m´ethodologie
2.6.1 Mise en place de la m´ethodologie
2.6.2 Cas 1 : Observation de l’application de paiement EMV
2.6.3 Cas 2 : Analyse d’une application PME
2.6.4 Discussion
2.7 Conclusion
3 De la g´en´eration d’oracle aux usages
3.1 Introduction
3.2 Etat de l’art
3.3 M´ethodes de g´en´eration d’oracle
3.3.1 M´ethode de g´en´eration th´eorique ou triviale
3.3.2 M´ethode de g´en´eration de laboratoire bas´ee sur la r´etro-ing´enierie et la constitution d’un mod`ele
3.3.3 M´ethode de g´en´eration directe et intelligente bas´ee sur la r´etroing´enierie en mode bo^ıte noire
3.4 Applications d’usage
3.4.1 Cas 1 : Outil d’analyse d’une application carte utilisant un terminal externe `a WSCT
3.4.2 Cas 2 : Utilisation pour l’enseignement du d´eveloppement et de l’´evaluation d’applet JavaCard
3.5 Conclusion
Conclusions et perspectives
Publications de l’auteur
Bibliographie
Télécharger le rapport complet