• Aide
  • Eurêkoi Eurêkoi

Livre

Les cartes à puce

Résumé

Présentation des fondamentaux de la carte à puce et ses domaines d'applications, des systèmes d'exploitation embarqués, de la manière de programmer les cartes dans le langage Java Card, des techniques mises en oeuvre pour garantir leur sécurité face aux attaques physiques et logiques, ainsi que les méthodes formelles pour faire de la carte un objet de confiance.


  • Contributeur(s)
  • Éditeur(s)
  • Date
    • 2013
  • Notes
    • Index
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (326 p.) : illustrations en noir et blanc ; 24 x 16 cm
  • Collections
  • Sujet(s)
  • ISBN
    • 978-2-7462-3913-5
  • Indice
    • 621.45 Microélectronique (transistors, composants, circuits intégrés)
  • Quatrième de couverture
    • Informatique et Systèmes d'Information

      Devenue un objet usuel du quotidien, la carte à puce fait intervenir de très nombreuses technologies informatiques. Cet ouvrage présente les concepts fondamentaux de la carte à puce et ses domaines d'applications. Il nous révèle les caractéristiques des systèmes d'exploitation embarqués, la manière de programmer les cartes dans le langage Java Card, les techniques mises en oeuvre pour garantir leur sécurité face aux attaques physiques et logiques, ainsi que les méthodes formelles pour faire de la carte un objet de confiance.

      Le fonctionnement interne de la carte SIM dans les téléphones mobiles est décrit en détail. Le passeport biométrique et le paiement mobile sont traités à travers la technologie RFID/NFC qui ouvre la voie à de nouvelles applications du sans contact.


  • Tables des matières
      • Les cartes à puce

      • Samia bouzefrane

      • Pierre Paradinas

      • hermes science

      • Lavoisier

      • Préface17
      • Marc Lassus
      • Introduction19
      • Pierre Paradinas
      • Chapitre 1. Les systèmes d'exploitation de la carte à microprocesseur29
      • Gilles Grimaux et Michaël Hauspie
      • 1.1. Rôle des systèmes d'exploitation encartés29
      • 1.1.1. Un système d'exploitation comme les autres29
      • 1.1.2. Gérer le matériel encarté31
      • 1.1.3. Architecture des systèmes d'exploitation33
      • 1.1.4. Un support pour l'inteprétation des requêtes APDU39
      • 1.1.5. Gestion des mémoires42
      • 1.1.5.1. Gestion autour de la ROM42
      • 1.1.5.2. Gestion de la RAM45
      • 1.1.5.3. Gestion de la mémoire persistante48
      • 1.1.6. La programmation du microprocesseur52
      • 1.2. Quelle abstraction pour quelle carte ?54
      • 1.2.1. Abstraction de la mémoire persistante55
      • 1.2.1.1. Le modèle des systèmes de fichiers ISO55
      • 1.2.1.2. Le modèle des systèmes de base de données ISO56
      • 1.2.1.3. Les objets persistants de Java Card57
      • 1.2.2. Abstraction du support de communication59
      • 1.2.3. Abstraction du microprocesseur et machines virtuelles59
      • 1.2.3.1. Introduction des machines virtuelles60
      • 1.2.3.2. Cycle de vie des applications post-issuance60
      • 1.2.3.3. Traitement du code applicatif, dans et hors de la carte62
      • 1.3. Quelques systèmes d'exploitation singuliers63
      • 1.3.1. BasicCard63
      • 1.3.2. MULTOS64
      • 1.3.3. SOSSE - Simple Operating System for Smartcard Education65
      • 1.3.4. CAMILLE65
      • 1.3.5. SMEWS66
      • 1.3.6. La carte CQL66
      • 1.4. Bibliographie67
      • Chapitre 2. La carte SIM et ses applications dans la téléphonie mobile69
      • Grégory Bussard et Patrick Biglet
      • 2.1. Introduction aux réseaux de téléphonie mobile69
      • 2.1.1. Un aperçu du développement des réseaux69
      • 2.1.2. Les services proposés70
      • 2.1.3. L'architecture d'un réseau GSM71
      • 2.2. Le rôle de la carte SIM dans le réseau71
      • 2.2.1. Un élément de mobilité71
      • 2.2.2. Un dispositif de sécurisation72
      • 2.2.3. Un portefeuille d'applications interopérables73
      • 2.3. Le fonctionnement d'une carte SIM73
      • 2.3.1. La gestion des données73
      • 2.3.1.1. Le modèle logique de données73
      • 2.3.1.2. Le schéma de protection des données75
      • 2.3.1.3. Les fonctions d'accès aux données77
      • 2.3.1.4. Les principales données stockées dans la carte77
      • 2.3.2. Les services de sécurité78
      • 2.3.2.1. L'authentification au réseau78
      • 2.3.2.2. Le chiffrement des communications80
      • 2.3.2.3. Les fonctions d'accès aux services de sécurité80
      • 2.3.3. Les applications à valeur ajoutée81
      • 2.3.3.1. La technologie SIM Toolkit81
      • 2.3.3.2. Les éléments du framework84
      • 2.3.3.3. Le principe de proactivité et les fonctions d'accès aux applications87
      • 2.3.3.4. Quelques exemples d'applications89
      • 2.4. La gestion à distance de la carte SIM90
      • 2.4.1. Le principe de la gestion over-the-air90
      • 2.4.2. Les mécanismes de sécurisation90
      • 2.4.2.1. L'authentification91
      • 2.4.2.2. La confidentialité91
      • 2.4.2.3. L'intégrité91
      • 2.4.2.4. La protection contre les attaques par rejeu91
      • 2.4.3. Les cas d'utilisation92
      • 2.4.3.1. La mise à jour de données92
      • 2.4.3.2. Le chargement d'applications92
      • 2.4.4. Une évolution technologique : le protocole CAT-TP93
      • 2.5. L'évolution de la carte dans les réseaux de nouvelles générations93
      • 2.5.1. Réseau CDMA et carte RUIM93
      • 2.5.2. Réseau 3G et carte USIM94
      • 2.5.3. Réseau 4G et carte ISIM95
      • 2.5.4. Les marchés spécifiques96
      • 2.5.4.1. Le marché « Mobile TV »96
      • 2.5.4.2. Le marché Machine-to-Machine96
      • 2.6. Bibliographie97
      • Chapitre 3. Java Card et son évolution99
      • Eric Vétillard et Samia Bouzefrane
      • 3.1. Les cartes multi-applicatives avant Java Card99
      • 3.1.1. Les premières cartes multi-applicatives : MPCOS et les données multiples99
      • 3.1.2. Les scripts SIM Toolkit propriétaires99
      • 3.2. Java Card 1.0 et 2.0 : l'exploration100
      • 3.2.1. Java Card 1.0 : on peut utiliser Java !100
      • 3.2.2. Java Card 2.0 : applets, isolation et persistance101
      • 3.3. Java Card 2.1 : la maturité102
      • 3.3.1. Interopérabilité et portabilité102
      • 3.4. Un modèle simple et efficace104
      • 3.5. L'API Java Card105
      • 3.5.1. java.lang105
      • 3.5.2. javacard.framework105
      • 3.5.3. javacard.security107
      • 3.5.4. javacardx.crypto107
      • 3.6. Exemple d'application108
      • 3.6.1. Exemple d'applet Java Card108
      • 3.6.2. Exemple de Client Java Standard109
      • 3.7. Etapes de développement111
      • 3.8. Java Card 3.0 : l'avenir112
      • 3.8.1. Segmentation du marché112
      • 3.9. Java Card Connected : trop ambitieux ?113
      • 3.10. Java Card en 2013115
      • 3.10.1. Java Card est partout115
      • 3.10.2. Défis à venir116
      • 3.11. Bibliographie117
      • Chapitre 4. Cryptographie et protocoles cryptographiques pour les cartes à puce119
      • Jean-Jacques Quisquater
      • 4.1. Début de la cryptographie dans la carte à puce120
      • 4.2. Pourquoi la cryptographie et laquelle ?120
      • 4.2.1. Les primitives cryptographiques à clé secrète ou symétriques124
      • 4.2.2. Les primitives cryptographiques à clé publique ou asymétriques124
      • 4.2.3. Fonctions de hachage cryptographique125
      • 4.3. Comment la cryptographie fut-elle introduite ?126
      • 4.4. La télévision à péage130
      • 4.5. La carte SIM130
      • 4.6. Les standards EMV pour les cartes de paiement131
      • 4.7. Les cartes d'identité131
      • 4.8. Les passeports : les normes ICAO132
      • 4.9. Le futur132
      • 4.10. Conclusion132
      • 4.11. Bibliographie133
      • Chapitre 5. Attaques physiques135
      • Bruno Robisson et Hugues Thiebeauld
      • 5.1. Introduction135
      • 5.2. Description de la menace136
      • 5.2.1. Objectif de l'attaquant et enjeux136
      • 5.2.2. L'attaquant137
      • 5.3. Techniques expérimentales138
      • 5.3.1. Inspection139
      • 5.3.2. Observation139
      • 5.3.2.1. Temps de réponse139
      • 5.3.2.2. Alimentation139
      • 5.3.2.3. Champ électromagnétique140
      • 5.3.2.4. Microsonde140
      • 5.3.3. Perturbation141
      • 5.3.3.1. Fréquence d'horloge141
      • 5.3.3.2. Alimentation141
      • 5.3.3.3. Champ électromagnétique142
      • 5.3.3.4. Lumière142
      • 5.3.3.5. Microsonde et modification143
      • 5.4. Extraction d'information143
      • 5.4.1. Concepts et notations144
      • 5.4.1.1. Observables144
      • 5.4.1.2. Relations144
      • 5.4.1.3. Exemples de relations entre observables146
      • 5.4.2. Scénario 1 : cryptanalyse physique147
      • 5.4.2.1. Mode opératoire147
      • 5.4.2.2. Exemple simple152
      • 5.4.2.3. Exemples de la littérature154
      • 5.4.3. Scénario 2 : rétro-ingénierie157
      • 5.4.3.1. Principe157
      • 5.4.3.2. Exemple simple158
      • 5.5. Protections159
      • 5.5.1. Protections contre les attaques par observation159
      • 5.5.1.1. Equilibrage160
      • 5.5.1.2. Filtrage160
      • 5.5.1.3. Ajout de bruit160
      • 5.5.2. Protection contre les attaques en faute161
      • 5.5.2.1. Détecter/réagir161
      • 5.5.2.2. Absorber162
      • 5.5.2.3. Corriger162
      • 5.5.2.4. Ajouter du bruit162
      • 5.5.3. Combinaisons de protections162
      • 5.6. Quantification de la menace163
      • 5.7. Bibliographie165
      • Chapitre 6. La sécurité logique171
      • Guillaum Barbu, Guillaume Bouffard et Julien Iguchi-Cartigny
      • 6.1. Introduction171
      • 6.1.1. Java Card172
      • 6.1.2. Le vérifieur de bytecode174
      • 6.1.3. Le pare-feu175
      • 6.1.4. Le mécanisme de partage175
      • 6.1.5. Le fichier CAP176
      • 6.1.6. Les classes d'attaque177
      • 6.1.6.1. Les attaques logicielles « pures »177
      • 6.1.6.2. Les attaques par logiciel incorrect177
      • 6.1.6.3. Les attaques combinées logiciel/matériel179
      • 6.2. Attaques logicielles pures180
      • 6.2.1. Abus du mécanisme de transaction180
      • 6.2.2. Attaque sur l'interface de partage181
      • 6.3. Attaques par logiciel incorrect182
      • 6.3.1. Introduction de NOP182
      • 6.3.2. Attaque sur la résoluion des statiques183
      • 6.3.3. EMAN1 : réalisation d'un cheval de Troie dans une carte185
      • 6.3.4. EMAN2 : modification de l'en-tête de la pile Java Card187
      • 6.3.4.1. Caractérisation de la pile Java Card187
      • 6.3.4.2. Corrumption de la pile Java Card188
      • 6.3.5. Attaque sur la résolution des méthodes190
      • 6.4. Attaques combinées190
      • 6.4.1. Introduction sur l'injection de NOP durant l'exécution191
      • 6.4.2. Perturbation de la machine virtuelle Java Card192
      • 6.4.3. Perturbation des données manipulées par la JCVM194
      • 6.4.4. EMAN4 : perturbation du flot de contrôle d'une application embarquée195
      • 6.4.5. Corruption des frames dans un contexte de multithreading196
      • 6.5. Possibilités d'exploitation de ces attaques198
      • 6.6. Conclusion198
      • 6.7. Bibliographie199
      • Chapitre 7. Mise en oeuvre d'une application, choix de solutions, performances201
      • Samia Bouzefrance, Damien Sauveron, Julien Cordry et Khaled Garri
      • 7.1. Introduction201
      • 7.2. PC/SC : communication entre le PC et la carte202
      • 7.3. L'architecture203
      • 7.4. Les différentes implémentations205
      • 7.4.1. Microsoft PC/SC205
      • 7.4.2. pcsc-lite207
      • 7.5. Les wrappers208
      • 7.6. Exemple d'un outil de développement Java Card 2208
      • 7.6.1. Etape d'installation208
      • 7.6.2. Etapes de configuration et d'implémentation209
      • 7.6.2.1. Configuration du fichier ManagerConfig.xml211
      • 7.6.2.2. Ecrire le code de l'applet SampleT est Applet.java211
      • 7.6.2.3. Compiler l'applet212
      • 7.6.2.4. Ecrire le programme client213
      • 7.6.2.5. Installation de l'applet sur la carte214
      • 7.7. Qu'est-ce que Java Card RMI ?214
      • 7.7.1. Rappel de Java RMI215
      • 7.7.2. Principe de Java Card RMI216
      • 7.8. Comment développer une application JCRMI côté serveur (carte) ?216
      • 7.8.1. L'interface de l'objet distant217
      • 7.8.2. Implémenter l'interface de l'objet distant218
      • 7.8.3. Paramètres des méthodes distantes219
      • 7.8.4. Génération du Stub219
      • 7.8.5. Comment construire l'applet serveur220
      • 7.9. Comment développer une application JCRMI côté client (terminal) ?222
      • 7.9.1. Les différentes opérations effectuées par le client222
      • 7.9.1.1. Initialisation d'un CardAccessor222
      • 7.9.1.2. Connexion à la plate-forme JCRMI222
      • 7.9.1.3. Sélection de l'applet serveur223
      • 7.9.1.4. Obtenir la référence de l'objet distant223
      • 7.9.1.5. Utiliser l'objet distant dans les invocations223
      • 7.9.1.6. Se déconnecter de la carte en libérant ses ressources223
      • 7.9.2. La structure finale du client223
      • 7.9.3. Communication d'un client avec un serveur en utilisant JCRMI224
      • 7.10. Conclusion225
      • 7.11. Globalplatform226
      • 7.11.1. Pourquoi GlobalPlatform ?226
      • 7.11.2. L'architecture GlobalPlatform embarquée227
      • 7.11.2.1. L'environnement d'exécution (RTE)228
      • 7.11.2.2. Le système de confiance (Trusted Framework)229
      • 7.11.2.3. Les domaines de sécurité (Security Domains)230
      • 7.11.2.4. Les API GlobalPlatform231
      • 7.11.3. Les mécanismes de sécurité de GlobalPlatform231
      • 7.11.3.1. La sécurité des communications231
      • 7.11.3.2. La signature des applications235
      • 7.11.3.3. La gestion de la vérification de détenteur de la carte (CVM)235
      • 7.11.4. Un exemple pratique236
      • 7.11.5. Perspectives237
      • 7.12. Accédez aux lecteurs et cartes en Java238
      • 7.13. Performances239
      • 7.14. Types de benchmarks240
      • 7.15. Etat de l'art de la mesure de performance des plates-formes Java Card241
      • 7.15.1. Castellá241
      • 7.15.2. Markantonakis241
      • 7.15.3. Erdmann242
      • 7.15.4. Fischer243
      • 7.15.5. Rehioui243
      • 7.15.6. Papapanagiotoy244
      • 7.15.7. Mostowski244
      • 7.15.8. Tews245
      • 7.16. Exemple de l'outil mesure245
      • 7.16.1. Approche générale utilisée246
      • 7.16.2. Principe d'isolation du temps d'exécution247
      • 7.16.3. Les outils de mesure248
      • 7.16.3.1. Le module Calibrate248
      • 7.16.3.2. Le module Bench249
      • 7.16.3.3. Le module Filter249
      • 7.16.3.4. Le module Extractor250
      • 7.16.3.5. Le module Profiler250
      • 7.17. Conclusion251
      • 7.18. Bibliographie251
      • Chapitre 8. Méthodes formelles et certification255
      • Stéphanie Motré, Pierre Courtieu et Jean-Louis Lanet
      • 8.1. Techniques de vérification formelle256
      • 8.2. Spécification et vérification formelle dans le cadre de la carte à puce257
      • 8.2.1. Les assistants à la preuve259
      • 8.2.2. Coq260
      • 8.2.3. Exemple : une preuve du vérificateur de bytecode260
      • 8.2.3.1. Un aperçu du bytecode261
      • 8.2.3.2. Formalisation de la VM en Coq263
      • 8.2.3.3. Conclusion264
      • 8.2.4. Z et B265
      • 8.2.4.1. Concepts266
      • 8.2.4.2. Modélisation266
      • 8.2.4.3. Preuve268
      • 8.2.4.4. De l'usage de B pour démontrer une équivalence de comportement269
      • 8.2.5. La preuve de correction sous hypothèse de faute273
      • 8.2.6. Vérification de modèle275
      • 8.2.6.1. Flot illicite d'informations275
      • 8.2.7. Test à partir de modèles276
      • 8.3. Certification277
      • 8.3.1. Critères communs278
      • 8.3.2. Assurance280
      • 8.3.2.1. ASE - Cible de sécurité280
      • 8.3.2.2. ADV - Développement282
      • 8.3.2.3. AGD - Guides282
      • 8.3.2.4. ALC - Support du cycle de vie283
      • 8.3.2.5. ATE- Tests284
      • 8.3.2.6. AVA - Etude de vulnérabilité284
      • 8.3.2.7. Les méthodes formelles dans les critères communs285
      • 8.4. Conclusion286
      • 8.5. Bibliographie286
      • Chapitre 9. La sécurité du sans-contact et ses spécificités291
      • Gildas Avoine, Xavier Carpent, Benjamin Martin et Tania Martin
      • 9.1. La technologie du sans-contact291
      • 9.1.1. L'identification par radiofréquence291
      • 9.1.2. Premiers pas vers l'invasion électronique292
      • 9.1.3. Caractéristiques des tags293
      • 9.1.3.1. Source d'énergie293
      • 9.1.3.2. Fréquence294
      • 9.1.3.3. Distance de communication295
      • 9.1.3.4. Mémoire295
      • 9.1.3.5. Capacité de calcul295
      • 9.1.4. Exemples de configurations296
      • 9.1.5. Les standards296
      • 9.1.5.1. ISO/IEC 14443 et ISO/IEC 15693297
      • 9.1.5.2. EPC Class 1 Gen 2297
      • 9.1.5.3. NFC297
      • 9.1.6. La mise en pratique298
      • 9.2. Application299
      • 9.2.1. Contrôle d'accès299
      • 9.2.1.1. Ticket de ski299
      • 9.2.1.2. Transport en commun300
      • 9.2.1.3. Automobile301
      • 9.2.1.4. Péage routier301
      • 9.2.2. Pistage et suivi de production302
      • 9.2.2.1. Identification animale302
      • 9.2.2.2. Bibliothèque303
      • 9.2.2.3. Suivi dans une chaîne logistique304
      • 9.2.3. Passeport et applications sécurisées304
      • 9.2.3.1. Passeport électronique304
      • 9.2.3.2. Paiement sans contact304
      • 9.3. Sécurité306
      • 9.3.1. Enjeux306
      • 9.3.2. Menaces306
      • 9.3.2.1. Usurpation d'identité307
      • 9.3.2.2. Recouvrement de données307
      • 9.3.2.3. Fraude sur la distance et attaques par relai307
      • 9.3.2.4. Déni de service307
      • 9.3.3. Protocoles usuels308
      • 9.3.4. Attaques sur des systèmes réels311
      • 9.4. Vie privée et RFID313
      • 9.4.1. Vie privée dans les systèmes d'information313
      • 9.4.1.1. Généralités313
      • 9.4.1.2. Contexte légal en France et en Europe313
      • 9.4.2. Vie privée dans les systèmes RFID314
      • 9.4.2.1. Problématique314
      • 9.4.2.2. Fuite d'informations315
      • 9.4.2.3. Traçabilité malicieuse315
      • 9.4.3. Quelques exemples de problèmes de vie privée en RFID316
      • 9.4.4. Solutions pratiques et théoriques317
      • 9.4.4.1. Au niveau physique317
      • 9.4.4.2. Au niveau des protocoles318
      • 9.4.5. Méthodes théoriques pour analyser la vie privée en RFID319
      • 9.5. Bibliographie320
      • Index325

  • Origine de la notice:
    • Electre
  • Disponible - 621.45 CAR

    Niveau 3 - Techniques