La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Applications Terminales pour Cartes à puce

Présentations similaires


Présentation au sujet: "Applications Terminales pour Cartes à puce"— Transcription de la présentation:

1 Applications Terminales pour Cartes à puce
BERNARDET William PHAM-TRONG Toàn Étude d’approfondissement RICM3

2 Plan de la présentation
Introduction : Contexte d’utilisation des cartes à puces Protocoles T0 et T1 La technologie PC/SC - MUSCLE La technologie OCF Comparaison entre les deux standards Conclusion 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

3 Le contexte industriel
Les enjeux économiques Facilité de développement Déploiement Carte multi-services 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

4 Contexte d’utilisation des cartes à puces
Pourquoi une interface? ??? 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

5 Contexte d’utilisation des cartes à puces
Pourquoi une interface? API PCSC OCF 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

6 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
La carte à puce Alimentation électrique Initialisation Communication 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

7 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
Protocole T0 Définie dans ISO 7816. Orienté caractères. Asynchrone half-duplex. Gestion d’erreur rudimentaire (basée sur le hardware). 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

8 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
Protocole T0 – Entête Nom Taille Description CLA 1octet Classe de la commande INS Code de l’instruction P1 Paramètre 1 P2 Paramètre 2 P3 Taille des données envoyé, ou quantité de données attendu en réponse 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

9 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
Protocole T0 – Retour Nom Caractère Description ACK INS Acquittement ___ Le transfert peu continuer. NULL 0x60 La carte est occupée. SW1 0x6x or 0x9x Le lecteur va recevoir une autre information sur l ’état de la carte 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

10 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
Protocole T1 Définie dans ISO 7816 Orienté blocs. Asynchrone half-duplex. Constitué d’un prologue et d’un épilogue. Gestion d’erreurs plus évoluée. 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

11 Protocole T1 - Trame Prologue Informations Epilogue Adresse du noeud (NAD) Protocol Control Byte (PCB) Taille (LEN) APDU or Control Information (INF) Error Detection Code (EDC) 1 octet 0 to 254 octets 1 or 2 octets 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

12 La technologie PC/SC – MUSCLE
Partenariat entre plusieurs entreprises Originellement sur plate-forme Windows Porté sur Unix et OS X grâce à MUSCLE Langage d’implantation non défini 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

13 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
Architecture PC/SC 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

14 1. Architecture générale
Interfaces de communication terminal/carte à puce. Interface du pilote de lecteur de carte à puce. API : du gestionnaire de ressources. d’accès à la carte à puce. de certains services. 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

15 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
Architecture PC/SC 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

16 2. Communication au niveau physique
Reprise de la norme ISO. Format de la carte Spécifications électriques Définition des protocoles de communication T0 et T1. 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

17 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
Architecture PC/SC 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

18 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
Pilote du lecteur Énumération des fonctionnalités supportées. Gestion de la communication(T0 & T1). Gestion mécanique de la carte à puce. 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

19 3. API du pilote du lecteur
// fonctionalité RESPONSECODE IFD_Get_Capabilities(); RESPONSECODE IFD_Set_Capabilities( ); // Gestion T0 & T1 RESPONSECODE IFD_Set_Protocol_Parameters(); // Gestion de l’energie RESPONSECODE IFD_Power_ICC(); // gestion de la mecanique RESPONSECODE IFD_Swallow_ICC(); RESPONSECODE IFD_Eject_ICC(); RESPONSECODE IFD_Confiscate_ICC(); // Communication RESPONSECODE IFD_Transmit_to_ICC(); // etat du lecteur RESPONSECODE IFD_Is_ICC_Present(); RESPONSECODE IFD_Is_ICC_Absent(); 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

20 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
Architecture PC/SC 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

21 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
4. Connexion des IFD RS232 USB PS2 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

22 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
Architecture PC/SC 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

23 5. Interface IFD / Ressource Manager(1/5)
Définition de l’interface du gestionnaire de ressource.(class RESOURCEMANAGER) De l’accès à la carte à puce. (class SCARDCOMM) 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

24 5. Interface IFD / Ressource Manager(2/5)
Class RESOURCEMANAGER{ HANDLE hContext; RESOURCEMANAGER(); ~RESOURCEMANAGER(); RESPONSECODE EstablishContext(…); RESPONSECODE ReleaseContext(); } 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

25 5. Interface IFD / Ressource Manager(3/5)
Class RESOURCEDB extends RESOURCEDBQUERY private RESOURCEMANAGER resmgr; RESOURCEDB(IN RESOURCEMANAGER resmgr); ~RESOURCEDB();   RESPONSECODE IntroduceReader(…); RESPONSECODE ForgetReader(…); RESPONSECODE IntroduceReaderGroup(…); RESPONSECODE ForgetReaderGroup(…); RESPONSECODE AddReaderToGroup(…); RESPONSECODE RemoveReaderFromGroup(); RESPONSECODE IntroduceCardType(); RESPONSECODE ForgetCardType(); } 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

26 5. Interface IFD / Ressource Manager(4/5)
Class SCARDTRACK{ private RESOURCEMANAGER resmgr; SCARDTRACK(IN RESOURCEMANAGER resmgr); ~SCARDTRACK(); RESPONSECODE LocateCards( IN STR[] CardsType, IN OUT SCARD_READERSTATE[] ReaderStates); RESPONSECODE GetStatusChange(…); RESPONSECODE Cancel(); ) 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

27 5. Interface IFD / Ressource Manager(5/5)
Class SCARDCOMM{ private RESOURCEMANAGER resmgr; private HANDLE hCard; SCARDCOMM(RESOURCEMANAGER resmgr) ~SCARDCOMM() RESPONSECODE Connect(…); RESPONSECODE Reconnect(…); RESPONSECODE Disconnect(…); RESPONSECODE Status() ; RESPONSECODE BeginTransaction() ; RESPONSECODE EndTransaction(…); RESPONSECODE Cancel(); RESPONSECODE Transmit(…); RESPONSECODE Control(…); RESPONSECODE GetReaderCapabilities (…); RESPONSECODE SetReaderCapabilities (…); } 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

28 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
Architecture PC/SC 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

29 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
6. Les services (1/2) Abstraction de la carte à puce. Système de fichier. Authentification. Cryptage…. 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

30 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
6. Les services (2/2) Class SCARD{ HANDLE hContext; SCARD(); ~SCARD(); RESPONSECODE CreateFileAccess(OUT FileAccess); RESPONSECODE CreateCHVerification(OUT CHVerification); RESPONSECODE CreateCardAuth(OUT CardAuth); RESPONSECODE CreateCryptProv(OUT CryptProv); RESPONSECODE AttachByHandle(IN HANDLE); RESPONSECODE AttachByIFD(IN STR,IN FLAGS); RESPONSECODE Detach(); RESPONSECODE Reconnect(IN FLAGS); RESPONSECODE Lock();   RESPONSECODE Unlock(); } 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

31 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
Architecture PC/SC 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

32 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
7. Applications Liste de conseils de programmation. Études de cas. Décrit un service de cryptographie minimal.(sur l’ICC) 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

33 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
Exemple try { PcscRM prm = new PcscRM(PcscRM.SCARD_SCOPE_USER); String readers[] = prm.listReaders(null); PcscReaderState[] prs = {new PcscReaderState()}; prs[0].CurrentState = PcscReaderState.SCARD_STATE_EMPTY; prs[0].EventState = PcscReaderState.SCARD_STATE_PRESENT; prs[0].Reader = "Bull Smart TLP 0"; // lecteur // Attente d’une insertion pendant 10s prm.getStatusChange(10000, prs); //connexion PcscCardReader pcr = prm.cardConnect(prs[0].Reader, prm.SCARD_SHARE_EXCLUSIVE, (PcscIOHeader.SCARD_PROTOCOL_T0 | PcscIOHeader.SCARD_PROTOCOL_T1)); byte cmdBuf[] = {0x02,(byte)0x3F,0x00}; CommandAPDU cmdAPDU=new CommandAPDU((byte)0xA4,(byte)0xA4,(byte)0x00,(byte)0x00,cmdBuf); ResponseAPDUrspAPDU=pcr.transmit(cmdAPDU); }catch (Exception ne) { System.out.println(‘Error :  ’+ ne); } 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

34 La technologie OCF(OpenCard Framework)
Partenariat entre plusieurs entreprises Orienté objet Basé sur système Java 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

35 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
L’architecture d’OCF 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

36 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
Exemple de code Initialisation SmartCard.start (); Insertion de la carte public void cardInserted(CardTerminalEvent ctEvent) try { fileService = (FileAccessCardService) card.getCardService(FileAccessCardService.class, true); signatureService = (SignatureCardService) card.getCardService(SignatureCardService.class, true); SBCHVDialog dialog = new SBCHVDialog(); fileService.setCHVDialog(dialog); signatureService.setCHVDialog(dialog); } catch(Exception e) { e.printStackTrace(); } 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

37 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
Exemple de code Génération d ’une signature électronique // specification de la clé qu ’on va utiliser PrivateKeyFile kf = new PrivateKeyFile (new CardFilePath(":C110"), keyNumber); // Appel de la méthode de la carte qui va générer la signature signature = signatureService.signData(kf, JCAStandardNames.SHA1_RSA, JCAStandardNames.ZERO_PADDING, data); Lecture d ’un fichier // montage de la racine du système de fichier CardFile root = new CardFile(fileService); // Instanciation de « file » dont le contenu est celui de « :C009 » CardFile file = new CardFile(root, ":C009"); // Création d ’un DataInputStream via un CardFileInputStream DataInputStream dis = new DataInputStream(new CardFileInputStream(file)); // Création d ’un fichier de même longueur que « file » byte[] cardHolderData = new byte[file.getLength()]; // lecture du contenu du fichier dis.read(cardHolderData); // fermeture dis.close(); 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

38 Comparaison entre les deux standards
Environnement d’exécution. Environement de prog. Other Java C++ Windows UNIX & OS X PCSC MUSCLE OCF Hardware et OS 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

39 Comparaison entre les deux standards
Avantages Inconvénients PC/SC MUSCLE Multi-langages. Portable grâce à MUSCLE. Orienté lecteur. Securité. Au départ, dédié à un environnement OCF Portable,(systèmes embarqués) Simple a mettre en œuvre. Orienté internet. Accès aux cartes. Lenteur de Java. Nécessité de ressources importantes. 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

40 Comparaison entre les deux standards
13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

41 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
Conclusion Les cartes à puces une technologie d’avenir. Perspectives… 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE

42 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE
Questions?????????? 13/11/2018 Bernardet - Pham-Trong - PCSC, OCF, MUSCLE


Télécharger ppt "Applications Terminales pour Cartes à puce"

Présentations similaires


Annonces Google